SEIL/X4のマルチコア処理

SEIL/X4は搭載するイーサネットコントローラが持つReceive-Side Scaling(RSS)機能を用いて、マルチコアCPUを活かしたパケット転送の並列処理が可能です。
パケット転送処理は、図のようにCPUコアごとに受信してから送信するまでの処理を一つのパスとして並列化されています。イーサネットフレーム(またはVLANフレーム)を受信すると、ペイロード内のIPフローからハッシュ値を計算し、値ごとに受信キューに振り分けます。ハッシュ値が同じIPフローは同じパスで処理するため通信の傾向によってIPフローが偏るとCPUリソースを活かしきれない場合がありますが、ひとつのIPフローのフレームを複数のパスに振り分けると、わずかな処理時間の差によってフレームの送信順序が入れ替わり、TCPの再送機構等によりエンド間のアプリケーション層での通信速度が低下してしまう可能性があります。 このフレームの整列処理を単純化するためにも、ひとつのIPフローの全てのフレームは同一の処理パスを通るように設計されています。
並列処理可能なトラフィック
イーサネットインタフェースが受信したIPパケットを転送する場合に並列処理が働きます(受信したイーサネットフレームまたはVLANフレームのペイロードの先頭がIPヘッダの場合に、IPフローに基づく振り分けの対象になります)。
IPフローの単位
TCPパケットの場合は、IPヘッダの送信元アドレス、送信元ポート番号、送信先アドレス、および送信先ポート番号からハッシュ値を計算します。このため送受信アドレスおよびポート番号が全て同じ組み合わせの場合に同一フローとみなされます。
TCP以外のIPパケット(UDPを含む)の場合は、IPヘッダの送信元アドレスと送信先アドレスからハッシュ値を計算します。このため送受信アドレスの組み合わせが同じ場合に同一フローとみなされます。
注:

IP-IPやIPsec、およびL2TPv3等のVPNパケットは、対向装置毎に送信元アドレスと送信先アドレスの組み合わせが同一になるため、同一の対向からの受信トラフィックの処理は並列化されません。イーサネットインタフェースが受信した時点で並列処理の可否が決定するため、一つのVPNトンネル内の通信は全て同一のパスで処理されます。

並列処理されないトラフィック(1)

ペイロードがIPでないフレームを受信した場合には並列処理が働きません。

PPPoEフレームの受信は対応外となるため、PPPoEのWAN→LAN方向のトラフィックは並列処理できません。複数のPPPoEセッションを接続した場合でもすべて同じパスで処理されます。

LAN→WAN方向のトラフィックは、LAN側のイーサネットインタフェースが受信したフレームのペイロードがIPであれば、送信インタフェースがPPPoEであっても並列処理の対象になります。

並列処理されないトラフィック(2)
SEIL/X4自身がパケットの送信元となる通信は並列処理が働きません。
NTPやDHCPなどのサーバ機能のほか、IKE等の自身が通信を終端する機能、およびDNS中継やアプリケーションゲートウェイといった代理通信(プロキシ)機能の通信が該当します。
1. インタフェースごとの並列処理対応
インタフェース 並列処理対応
GE,VLANインタフェース 受信したフレームのペイロードの先頭がIPヘッダの場合に並列処理されます。
ブリッジインタフェース ブリッジに所属するGEまたはVLANインタフェースが受信したフレームのペイロードの先頭がIPヘッダの場合に並列処理されます。VLANタグ付きのフレームを透過的に転送する場合も、ペイロードの先頭がIPヘッダであれば並列処理されます。
PPPoEインタフェース PPPoEフレームの受信は並列処理非対応です。
PPPインタフェース モバイルデータ通信端末からの受信は並列処理非対応です。
PPPAC,IPsec,Tunnel,L2TPv3インタフェース GEポートから各プロトコルのパケットを受信した場合に、カプセル化されたIPパケットとして並列処理の振り分け対象になります。このためVPN対向ごとに1フローとなります。