ハッシュポリシー xmit_hash_policyオプション
はじめに
Linuxのネットワークボンディングのいくつかのモードで利用されるxmit_hash_policy
オプション(xmit
はtransmit
の略)の詳細をまとめた
オプションまとめ
Layer2
- Layer2の情報を利用したハッシュポリシー
- Layer2はOSI参照モデルのデータリンク層
xmit_hash_policy
オプションのデフォルト値- 802.3adに準拠したアルゴリズム
- 計算式
- hash値 = 送信元MACアドレス XOR 送信先MACアドレス XOR パケットタイプID
- 使うSlaveの番号 = (hash値 ÷ Slaveの数) の余り
Layer 2+3
- Layer2とLayer3の情報を利用したハッシュポリシー
- Layer3はOSI参照モデルのネットワーク層のこと
- 802.3adに準拠したアルゴリズム
- 計算式
- hash値1 = 送信元MACアドレス XOR 送信先MACアドレス XOR パケットタイプID
- hash値2 = hash値1 XOR 送信元IPアドレス XOR 送信先IPアドレス
- hash値3 = hash値2 XOR (hash値2を16bit右シフト)
- hash値 = hash値3 XOR (hash値3を8bit右シフト)
- 使うSlaveの番号 = (hash値 ÷ Slaveの数) の余り
- もし、プロトコルがIPv6だった場合、IPアドレスはまず
ipv6_addr_hash
を用いてハッシュ化される - 特にほとんどの宛先に到達するためにL3スイッチが必要な環境で、L2スイッチのみよりもバランスの取れたトラフィックの分散を提供することを目的としている
Layer 3+4
- Layer3とLayer4の情報を利用したハッシュポリシー
- Layer4はOSI参照モデルのトランスポート層のこと
- 計算式
- hash値1 = TCPヘッダーのSource Port(16bit)とDestination Port(16bit)を連結した値(32bit)
- hash値2 = hash値1 XOR 送信元IPアドレス XOR 送信先IPアドレス
- hash値3 = hash値2 XOR (hash値2を16bit右シフト)
- hash値 = hash値3 XOR (hash値3を8bit右シフト)
- 使うSlaveの番号 = (hash値 ÷ Slaveの数) の余り
- もし、プロトコルがIPv6だった場合、IPアドレスはまず
ipv6_addr_hash
を用いてハッシュ化される - 802.3ad に完全には準拠していない
- 詳細を調査中
encap 2+3
- Layer2+3と同じ計算式でSlave番号を求めるが、カプセル化を行うプロトコルで通信している場合、ヘッダーフィールドの値を取得するために
skb_flow_dissect
に依存しているため、内部ヘッダーを利用する可能性がある- カプセル化されたフローに従ってパケットが分散されるため、パフォーマンスが向上する可能性がある
encap 3+4
- Layer3+4と同じ計算式でSlave番号を求めるが、カプセル化を行うプロトコルで通信している場合、ヘッダーフィールドの値を取得するために
skb_flow_dissect
に依存しているため、内部ヘッダーを利用する可能性がある- カプセル化されたフローに従ってパケットが分散されるため、パフォーマンスが向上する可能性がある
ディスカッション
コメント一覧
まだ、コメントがありません