ECMP・LAG 構成の環境で、トラフィックが偏る動作について説明させて頂きます。
例えば、トラフィックを LAG Group 1 と LAG Group 2 に対して 、ECMP(Equal Cost Multi Path) で負荷分散しているとき、LAG Group 内での負荷分散の方式に simple を選択すると、LAG Group 内でトラフィックに偏りが発生することがあります。
これは、ECMP で使用するフロー毎のハッシュ値の計算方法と、LAG の負荷分散のためのハッシュ値の計算方法がおなじであること、また、ハッシュ値とトラフィックのパスを決める方法が同じ(simple)であることが原因です。
StarOS では、フロー毎に負荷分散を行っており、フローのハッシュ値に対して、パス(ポート)をマップしています。
以下は、ECMP で LAG Group 1 か 2 (Index 10 と 20) が選択され、LAG Group 1 には4つのポート (Index が 0,1,2,3) が含まれる場合のマッピングを示したものです。
Hash |
Index (ECMP) |
Index (simple) |
0 |
10 |
0 |
1 |
11 |
1 |
2 |
10 |
2 |
3 |
11 |
3 |
4 |
10 |
0 |
5 |
11 |
1 |
6 |
10 |
2 |
7 |
11 |
3 |
: |
: |
: |
x |
10 |
0 or 2 |
これは、"link-aggregation distribution simple" を設定している場合に起こります。distribution の方法を変更することで回避可能です。
例えば、rotate (default) だと、LAG port の Index をローテートしながらマップするため、問題は発生しません。
Hash |
Index (ECMP) |
Index (rotate) |
0 |
10 |
0 |
1 |
11 |
1 |
2 |
10 |
2 |
3 |
11 |
3 |
4 |
10 |
1 |
5 |
11 |
2 |
6 |
10 |
3 |
7 |
11 |
0 |
また、ECMP のパスや LAG を組んでいるポートの数によっても、問題は起こりません。
なお、この動作は、将来変更される可能性がございますので、CCO 上のドキュメントをご確認下さい。