# LAGおよびECMPパスの予測 ## 簡潔に、冗長に 有名OSの中でも、Junos、Arista EOS、Nokia SR OSは、ASICに直接合成プローブを発射し、ハードウェアが選択した出力メンバーを文字通り読み取ることができます。CiscoのIOS-XEとIOS-XRも同様の機能を持つように見えますが、CEFが制御プレーンRAMで計算したものを単にコピーするだけです。つまり、ASICチームがソルトビットをいじった瞬間に、これらの「正確なルート」コマンドは無効になってしまうのです。CumulusとSONiCは何も提供しません。結局、レジスタをスクレイピングするか、独自のPythonコードでSAIを調べることになります。標準ファンは RFC 5837 TTL 期限切れプローブを試すことができますが、ベンダーのサポートは不十分であり、これをトリガーするには依然としてインバンド トラフィックが必要です。 32メンバーのバンドル内のホットリンクを追跡する場合、「RPの判断」と「ASICの動作」の違いは、今夜寝るか、午前2時にSEにページングするかの違いに相当します。IOS-XEは、特定のフローがメンバー1に到達したことを報告します。しかし、タップでキャプチャされた実際のフローは、メンバー3に最大の負荷がかかっていることを示しています。エンジニアは、QoSやポリシングポリシーの不具合を探すのに何時間も費やします。データプレーンプローブを使用すれば、転送エンジンに直接問い合わせることができます。答えは明白です。 手順は、恥ずかしくなるほどシンプルです。 1. フローを定義する5つのタプルを取得します。MPLSタグやVLANタグを使用している場合は、それらも用意しておきます。 2. タプルを、ASICに実際にアクセスするベンダーの呪文に渡します。 Junos では次のようになります: ```bash test forwarding path bundle-hash ingress ae0 \ src-ip 10.0.1.1 dst-ip 10.0.9.9 protocol tcp \ src-port 12345 dst-port 443 ``` PFEは「ae0.3 (xe-1/0/7)」のような応答を返します。これが正解です。 3. 偏波がひどい場合は、ソルトを調整します。Junosは`forwarding-options hash-key`を公開し、EOSは`port-channel load-balance hash-polynomial`を、SR OSは`tools traffic-hash`を提供します。エントロピーが薄い場合は、L4ポートを追加またはシャッフルします。 4. 分散が不当ではなく正常に見えるまで再プローブします。 CDNのNTPスプレーがMX204のae2を70/30のスキューで圧倒していました。すべてのプローブが同じ状態を示していました。ASICがメンバー0を過剰に好みすぎているのです。ノブを1回動かすと ```bash set forwarding-options hash-key family inet l4-src-port commit ``` すると、プローブは4つのメンバーすべてに均等に分散し始めました。カウンタもそれに追随し、CRBコールはキャンセルされ、状況は再開されました。 ラボでは、Jericho2 シリコンを搭載した NCS-5501-SE が `show cef exact-route` を実行して、フローがバケット 0 宛てであると報告しました。低レベルレジスタはバケット 5 を示していました。パケットキャプチャもこのレジスタと一致していました。3 件の TAC 案件と、それと同じくらい多くの「Q4」の約束を口実にした後、教訓は明らかです。XR の CLI は、宣誓供述書ではなく、あくまでも参考資料です。 MPLS ECMP は、人間が操作しやすいコマンドによって完全に無視されることがよくあります。IPv6 フローラベルハッシュは部分的に実装され、部分的に忘れられています。ASIC が未知のイーサタイプをパントするため、INT ヘッダーはハッシュを崩壊させる傾向があります。いずれの場合も、ハードウェアプローブだけが唯一確実なテストです。 64リンク未満のバンドルにおける軽微な偏りは、シード値の調整とソルトシャッフルによって修正可能です。ただし、これは両端を管理し、メンテナンスウィンドウを有効活用できる場合です。一方、大量のフローやエントロピーゼロのVXLANペアを目の前にしている場合、どんなに秘策を講じても物理的な問題は解決しません。大量のフローを子牛に分割したり、送信元ポートをランダム化したり、ジッターが許容できるのであればパケットごとのスプレーを試してみるのも良いでしょう。 RFC 2991は25年前にすべての人に警告を発しました。ベンダーは依然として、パケットの送信先を誤認させる未完成のCEFクローンを出荷しています。CLIが成熟するまでは、プローブは2回、デプロイは1回、ソルトは予測不可能な値に設定し、シリコンが裏付けない限りルーターの言い分を決して信じてはいけません。