ファストパスとBSD

IPパケットフォワーディングの高速化手法として、ファストパスというものがあるらしい。
どこで始まったのか知らないが、少なくともYAMAHAのルータの機能として日本語での資料が存在している:
http://www.rtpro.yamaha.co.jp/RT/docs/fastpath/

要するに、パケット処理を割り込みコンテキストからキューイングし後でやって貰うのではなく、割り込みコンテキスト内で最小限に省略した形でやってしまえ、という事である。

これとほぼ同様と思われる機能がNetBSD/FreeBSDにも存在する。
それが、ipflow(netinet/ip_flow.c)である。

が、これでは機能面での不足を感じたのか、FreeBSDでは2003年よりip_flowをip_fastforward(netinet/ip_fastfwd.c)に置き換えている。

以下、ip_fastforwardの説明文。
Short description of ip_fastforward:

o adds full direct process-to-completion IPv4 forwarding code
o handles ip fragmentation incl. hw support (ip_flow did not)
o sends icmp needfrag to source if DF is set (ip_flow did not)
o supports ipfw and ipfilter (ip_flow did not)
o supports divert, ipfw fwd and ipfilter nat (ip_flow did not)
o returns anything it can't handle back to normal ip_input

中々と高機能である。