ipfw2 for dragonflybsd
bycn82
bycn82 at gmail.com
Thu Dec 4 23:39:27 PST 2014
*It will be good to have a try on this "lock-less NAT" in order to know the
performance. but IMHO, I think the performance will not be good especially
when the machines has lots of CPU. Anyway , next will be "lockless" for
"keep-state". maybe this weekend :)*
On Fri, Dec 5, 2014 at 3:11 PM, Sepherosa Ziehau <sepherosa at gmail.com>
wrote:
> On Fri, Dec 5, 2014 at 2:38 AM, Matthew Dillon
> <dillon at apollo.backplane.com> wrote:
> > 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.
> >
>
> In addition to what Matt has mentioned, I think lockless NAT could be
> implemented in the following way:
>
> - On output path install state for the current netisr. And rehash the
> packet then send to the target netisr, and install 'sibling state' in
> the target netisr; do the real output there.
> - Same applies to the input path; but do the protocol input in the
> target netisr.
>
> However, the result may not be better than or as good as
> per-cpu+global lock Matt implemented for the PF, since my way requires
> additional dispatch.
>
> Best Regards,
> sephe
>
> --
> Tomorrow Will Never Die
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.dragonflybsd.org/pipermail/users/attachments/20141205/b184ee3c/attachment-0003.htm>
More information about the Users
mailing list