ipfw2 for dragonflybsd
Matthew Dillon
dillon at apollo.backplane.com
Thu Dec 4 10:38:25 PST 2014
On how to make NAT work, what I did in PF was this:
(a) When the port is not locked to a particular number, I simply iterate
ports until the toepliz hash for the translated address/port pair
winds up on the same cpu as the toeplez hash of the original.
This way both sides of the NAT conversation wind up on the same cpu
and no locking is required.
(b) If the translated port is locked (which is a feature that PF has,
for example), it may not be possible to match up the toeplez hash.
In this situation the state goes into a global table with a global
lock, and the state is individually locked by the filter.
More information about the Users
mailing list