ユーザ用ツール

サイト用ツール


os:10gbps_のパケット転送

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
os:10gbps_のパケット転送 [2023/11/02 18:52] – [FIB algorithm] seiriosos:10gbps_のパケット転送 [2023/11/02 19:22] (現在) – [FIB algorithm] seirios
行 19: 行 19:
 </code> </code>
  
-デフォルトで IPv4 はロックのかかるアルゴリズムになっていますので、経路表のエントリ数が多い場合には lockless のアルゴリズムを選びましょう。+デフォルトで IPv4 はロックのかかるアルゴリズムになっていますので、経路表のエントリ数が多い(1万以上?)場合には lockless のアルゴリズムを選びましょう。 
 +このあたりは、経路数、経路の更新頻度や通信量(経路表参照回数)に依存する部分なので、どれが良いとは一概に言えませんが、経路数が多いならば、bsearchよりRadix系を選択する方が良いことが多いと言えます。 
 + 
 +  * Lockless: bsearch4, radix[46]_lockless 
 +  * Lockあり: radix[46]
  
 なお、FreeBSD-13.2-RELEASE 及び、FreeBSD-14.0-RELEASEでは ''Options FIB_ALGO'' は GENERIC カーネルに入っています。 なお、FreeBSD-13.2-RELEASE 及び、FreeBSD-14.0-RELEASEでは ''Options FIB_ALGO'' は GENERIC カーネルに入っています。
 +
 +また、手元で確認した限りでは、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/14.0-RELEASEでは、GENERIC kernelにはRSSは含まれていません。必要に応じてkernelをbuildする必要があります。
 ==== TSO & LRO ==== ==== TSO & LRO ====
  
 10Gbps の NIC にはほとんどの場合、TSO (TCP Segment Offload) や LRO (Large Receive Offload) の機能がついています。 10Gbps の NIC にはほとんどの場合、TSO (TCP Segment Offload) や LRO (Large Receive Offload) の機能がついています。
 これらは大きなデータを転送する際にパケットの分割、統合を NIC 側で行ってくれるものです。 これらは大きなデータを転送する際にパケットの分割、統合を NIC 側で行ってくれるものです。
-ルータ場合は必要ないためこれらを off にします。もし、これらが働くと End-to-End の原則を破るため、良ないです+ルータとして構築する場合、TSO/LROはoffにするべきです。中継段でのパケットの再構成分割を行うことは望ましありません
  
 ifconfig のオプションに ''-tso -lro -vlanhwtso'' を付けておきます。 ifconfig のオプションに ''-tso -lro -vlanhwtso'' を付けておきます。
os/10gbps_のパケット転送.1698918753.txt.gz · 最終更新: 2023/11/02 18:52 by seirios

特に明示されていない限り、本Wikiの内容は次のライセンスに従います: 2-Clause BSD License
Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki