2020年5月~6月にHOMENOCのネットワークで多発した障害について原因の調査が概ね完了しましたので詳細をまとめました。まずは結論から簡潔に書くと以下の3点となります。
1. ユーザからのショートパケットにより拠点間のEtherIP接続をしているIX2105が高負荷状態になってパケットロスが発生した。
2. これによりBGPピアのフラップが発生し経路増によって性能の限界に達していたBGPルータのダウンが連鎖的に発生した。
3. ピアのフラップ及びにBGPルータのダウンにより経路が別のNOC経由に切り替わり、1項の事象が別拠点でも発生、連鎖的に網全体が不安定になった。
問題の背景にBGPフルルートの経路増があります。当団体の設立時の2015年1月頃の経路数はIPv4で52万経路程度、2020年8月には80万経路を超えており、30万近い経路数の増加が見られます。HOMENOCで利用しているルータの最大経路数はFIB経路で100万、150万の機種がありますが、RIB経路の方が問題となっていました。複数のトランジットを受けている機器では240万経路程をRIB経路として持っており、コントロールプレーンのメモリ利用率が非常に高い状態となり、定期的にスワップアウトが発生する状態となっていました。(MX80のコントロールプレーンメモリは2GBで90%程度を利用した状態)
障害の原因
では、ここからは以下の図を見ながらお読みください。
障害の引き金となったのは、① 大阪と東京で冗長しているユーザが64Byte~90Byte程度のパケットが大量に発生する通信を行ったことです。EtherIPのEncap/Decapの処理はIX2105のCPUに負荷を掛けるようで、これにより② 大阪でユーザを収容しているIX2105に負荷が掛かりパケットロスが発生するようになりました。(大阪地区は1ヶ所のNOCで10ユーザ以上を抱えており、元々IX2105の負荷は高い状態でした。問題のトラフィックは30Mbps程度でしたが、PPSに換算すると結構な負荷になっていたようです。
パケットロスが発生すると当然BGPの維持に必要なパケットもこぼしますので、③ HoldTimeExpireとかでBGPピア断が発生することになります。これが同じIX2105に収容している殆どのユーザで一気に発生しました。これによりエッジルータのMX80ではフルルートを渡しているユーザのピアフラップが繰り返されることになり、元々高負荷状態だったCPUとメモリが耐えられず④ MX80がダウンすることになります。この問題が発生した際はMX80はSSHの応答も無くなりオペレーション自体が難しい状態となっていました。
ユーザは東京と大阪で冗長構成になっていますので、⑤ 大阪のピアが落ちると通信は東京に迂回することになります。するとこちらでも大阪と⑥ 同様にIX2105の高負荷状態が発生しパケットロスからユーザのピアフラップが繰り返される状態が発生することになります。東京側のエッジルータはMX80ではなく高性能な機種を使っていましたのでルータ自体にこのピアフラップが影響を与えることはありませんでしたが、⑦ エッジルータの上流のトンネルルータもIX2105でしたので、こちらに影響を与えることになりました。
これにより、⑧ エッジルータとバックボーン(コアルータや他拠点)との間の通信も不安定になり、エッジルータに収容されているトランジット向けの通信や拠点間の通信などに影響を与え、⑨ AS全体が不安定となる結果になりました。
現在は対象ユーザにショートパケットの通信を抑制して貰うようにお願いして問題は一時収束しております。
今後について
いつまでもユーザに通信を減らしてもらうのも健全ではないので、徐々に対応を進めています。大阪地区ではユーザ収容用のIX2105を7月11日に上位機種のIX3110に交換しました。またMX80についても新機種への交換を行いました。これによりメモリ使用量は20%程度に、経路のコンバージェンス性能は10倍以上に向上しました。また、大阪地区の収容密度対策のも兼ねて、NOC51を新たに開設しました。
NOC51の開設については米田がまとめてくれていますので、こちらの記事をご覧いただければと思います。NOC51では退役したMX80を利用しています。トランジットをNOC51では受けない、BGPのユーザ収容を制限することが条件です。
西日本地区2番目となる拠点、NOC51を当団体の運営委員の自宅に開設しました。これにより西日本地区で冗長接続が可能になります。https://t.co/d3kv5pqTwT
— Home NOC Operators' Group (@AS59105) 2020年7月14日
東京地区のIX2105については更新が難しい状況です。(NOCの持ち主の自宅のスペースや消費電力の関係で上位機種に交換できない)そのため、当面は余りトラフィックを流さない、他のNOCに収容を分散するなどの対策を取っていくことになります。一部のユーザの方には他のNOCへの収容変更をお願いすることになりそうですがご了承ください。
なお、IX2105(EtherIP)を使い始めた経緯として、活動を始めた直後はGREやIP-IPなどのトンネルが利用できるフルルートルータの調達が難しかったことにより、NGNを使ったトンネルの処理をルータから切り離すため使い始めたというのがあります。最近はそのような問題も解消してきていますし、EtherIPを今後続けるかどうかについても検討していくことになりそうです。
またIXルータはトラフィックグラフの取得のみでCPUやメモリの使用率のモニタリングを行っていませんでした。これはエッジルータ側を監視しておけば(IXはエッジルータ間を繋ぐだけのなので)大きな問題とならないといった考えや、監視ソフト側の問題もあったのですが、これが障害の調査に大きな時間が掛かる原因となりました。当初はハードウエア故障を疑っていました、ピアが落ちてショートパケットのトラフィックが止まると負荷が下がりパケットロスは止まるのでルーターにログインしても正常に見えてしまいますね。
そのため、監視の仕組みについても見直していくことになります。
HOMENOCは自宅ラックな人たちが趣味でやってる団体としては極めて安定した運用をしてきてきたと思っていますが、今回の障害は設立以来の大障害となった気がします。
以上、障害原因の簡単なまとめでした。