Commit Graph

18 Commits

Author SHA1 Message Date
Nathan Skrzypczak
6d733a93b2 cnat: remove rwlock on ts
Type: improvement

Remove rwlock contention on timestamps. ~10% pps with
10k sessions. Use fixed-size-pools of increasing sizes
starting with 4K, and with a x2 step each time.
We don't free/shrink allocated pools.

Change-Id: I5fea51faba40430106c823275a6356e81709d118
Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2023-08-09 08:23:45 +00:00
Nathan Skrzypczak
897844d1e9 cnat: add ip/client bihash
This replace the cnat ip4/ip6 to client
lookups previously done with a regular
hash, by a bihash lookup.

Type: improvement

Do the client lookup in a bihash instead of
a hash.

Change-Id: I730c1893525c002b44ada8e290a36802835e88e9
Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2023-08-09 07:59:09 +00:00
Nathan Skrzypczak
6631032791 cnat: flag to disable rsession
This adds a flag on the translation
asking the VIP & input-feature nodes
not to create the return session when
translating / load-balancing an incoming
flow. This is needed with maglev & DSR

Type: feature

Change-Id: I699012310ddc59f6ceeeb4878638eac6da5128dc
Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2023-08-08 14:06:08 +00:00
Nathan Skrzypczak
f284c14c7b cnat: Add sctp support
This patch adds SCTP support in the CNat translation primitives.
It also exposes a clib_crc32c_with_init function allowing to set
the init value to start the crc32 with instead of 0.

Type: feature

Change-Id: I86add4cfcac08f2a5a34d1e1841122fafd349fe7
Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2022-10-17 16:25:01 +00:00
Nathan Skrzypczak
6de58f5fd0 cnat: maglev fixes & improvements
This fixes the maglev logic which previously
included a wrong simplication.
It moves the maglev logic to its own file,
and adds a test function in the debug cli.

Type: improvement

Change-Id: I2790ae2a26fc1c5739ff02f41d436bfcafd5b380
Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2022-01-30 15:23:09 +00:00
Nathan Skrzypczak
418abe2a25 cnat: maglev fixes
This fixes cnat_feature node LB
- use siblings instead of direct next_nodes
- only do the lookup if we have NO_NAT
- fix behavior in v6

Type: fix

Change-Id: Ie80c9912946bf55c30eadeb51340f4aec9bb297e
Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2021-03-15 17:36:23 +00:00
Nathan Skrzypczak
3fd77f7dea cnat: Prepare extended snat policies
Type: refactor

Change-Id: I9ca3333274d6f32b6aff57f0fb3d2049c066337a
Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2021-03-04 12:35:15 +00:00
Nathan Skrzypczak
4d237874e5 cnat: Add maglev support
* Backend choice in translations is controlled
by lb_type switch allowing to enable Maglev.
* Size of pool is set with cnat { maglev-len 1009 }

Type: feature

Change-Id: I956e19d70bc9f3b997b4f8042831164e4b559d17
Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2021-02-26 01:55:07 +00:00
Nathan Skrzypczak
27647a27c7 cnat: fixes & prepare maglev
Notable changes:
- ip[46]-cnat-snat is renamed to cnat-snat-ip[46]
- indent fixes
- common trace primitives
- bihash is now 40_56 with alias

Type: refactor

Change-Id: I0a82cfe3b40efd96473e51061d7135ffe412ddfc
Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2021-02-26 01:55:07 +00:00
Nathan Skrzypczak
208891c093 cnat: Fix throttle hash & cleanup
Type: fix

This fixes two issues :
- We used a hash to throttle RPC for adding fib entries,
but as we rely on a refcount, we cannot accept loosing an
entry, which could happen in case of a collision.
- On client cleanup we weren't freeing the fib entry correctly
which resulted in crashes when recreating an entry.
Added a test that ensures proper cleanup

Change-Id: Ie6660b0b02241f75092737410ae2299f8710d6b9
Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2021-01-28 13:34:15 +00:00
Neale Ranns
e4031131cc misc: Break the big IP header files to improve compile time
Type: refactor

Signed-off-by: Neale Ranns <neale.ranns@cisco.com>
Change-Id: Id1801519638a9b97175847d7ed58824fb83433d6
2020-10-28 16:55:35 +00:00
Neale Ranns
5a59b2bac4 ip: Move the IP6 fib into ip6_[m]fib.c
Type: improvement

reduce the compile time by moving the bihash includes out of ip[46].h

Signed-off-by: Neale Ranns <nranns@cisco.com>
Change-Id: I6b9216e10aff1013071f9238b3e1ebbdd205bd80
2020-10-19 20:59:54 +00:00
Nathan Skrzypczak
af897c5e3f cnat: Add DHCP support
Type: feature

Change-Id: I4bd50fd672ac35cf14ebda2b0b10ec0b9a208628
Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2020-09-25 19:55:39 +00:00
Nathan Skrzypczak
ce25b60de5 cnat: Introduce parametric source policy
Type: feature

Change-Id: I60ae9dd1c100b587d1902a20596b99a5c8a95df7
Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2020-09-25 19:55:39 +00:00
Nathan Skrzypczak
613b2c3c78 cnat: Add support for SNat ICMP
Type: feature

snat supports :
* echo request/reply by allocating an identifier
when translating echo requests
* icmp errors in the same manner as dnat

Change-Id: I684e983b0181f95c5eace5a984d40084e5625fa4
Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2020-09-25 19:55:39 +00:00
Nathan Skrzypczak
d63f73b839 cnat: Disable default scanner process
Type: feature

Change-Id: Iba9d9f384eaa35c5522e828e3cbe4516416294db
Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2020-09-23 12:02:12 +00:00
Nathan Skrzypczak
369e4e56e2 cnat: Fix typo in ts handling
Type: fix

Change-Id: I5287f6326726780c09e515eede0992bafb413bb2
Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2020-09-01 11:18:23 +00:00
Neale Ranns
29f3c7d2ec cnat: Destination based NAT
Type: feature

Signed-off-by: Neale Ranns <nranns@cisco.com>
Change-Id: I64a99a4fbc674212944247793fd5c1fb701408cb
2020-08-31 09:23:32 +00:00