os:10gbps_のパケット転送
差分
このページの2つのバージョン間の差分を表示します。
次のリビジョン | 前のリビジョン | ||
os:10gbps_のパケット転送 [2022/08/23 15:21] – 作成 yuichiro | os:10gbps_のパケット転送 [2023/11/02 19:22] (現在) – [FIB algorithm] seirios | ||
---|---|---|---|
行 19: | 行 19: | ||
</ | </ | ||
- | デフォルトで IPv4 はロックのかかるアルゴリズムになっていますので、経路表のエントリ数が多い場合には lockless のアルゴリズムを選びましょう。 | + | デフォルトで IPv4 はロックのかかるアルゴリズムになっていますので、経路表のエントリ数が多い(1万以上? |
+ | このあたりは、経路数、経路の更新頻度や通信量(経路表参照回数)に依存する部分なので、どれが良いとは一概に言えませんが、経路数が多いならば、bsearchよりRadix系を選択する方が良いことが多いと言えます。 | ||
- | なお、FreeBSD-14-Current | + | * Lockless: bsearch4, radix[46]_lockless |
+ | * Lockあり: radix[46] | ||
+ | |||
+ | なお、FreeBSD-13.2-RELEASE 及び、FreeBSD-14.0-RELEASEでは '' | ||
+ | |||
+ | また、手元で確認した限りでは、FreeBSD-13.2以降は、IPv4 が bsearch4、IPv6ではradix6_locklessが標準となっています。 | ||
==== RSS (Receive Side Scaling) ==== | ==== RSS (Receive Side Scaling) ==== | ||
行 33: | 行 39: | ||
- sysctl net.isr.bindthreads=1 を指定すること | - sysctl net.isr.bindthreads=1 を指定すること | ||
+ | なお、FreeBSD-13.2-RELEASE/ | ||
+ | ==== TSO & LRO ==== | ||
- | ==== FreeBSD 12系の話 ==== | + | 10Gbps |
+ | これらは大きなデータを転送する際にパケットの分割、統合を NIC 側で行ってくれるものです。 | ||
+ | ルータとして構築する場合、TSO/ | ||
- | `sysctl net.inet.ip.redirect=0` | + | ifconfig のオプションに '' |
- | これは、12系に限っては net.inet.ip.redirect=1 (デフォルト)だと fast forwarding | + | ==== FreeBSD |
- | 以下の commit で修正されました。 | + | '' |
+ | |||
+ | これは、12系以前では net.inet.ip.redirect=1 (デフォルト)だと fast forwarding のコードパスを通らないためです。 | ||
+ | |||
+ | 以下の commit でこの動作が変更されました。 | ||
https:// | https:// | ||
+ | |||
+ | IPv6 を転送する時には同様に '' |
os/10gbps_のパケット転送.1661235675.txt.gz · 最終更新: 2022/08/23 15:21 by yuichiro