00:00:00インターネットにゾンビが蔓延していることをご存知ですか?いえ、ホラー映画のゾンビのことではありません。
00:00:05今回お話しするのは「BGPゾンビ」と呼ばれるものです。BGPはボーダー・ゲートウェイ・プロトコルの略で、
00:00:12大規模なネットワークが、どのIPアドレスにトラフィックを届けるかを通報するための仕組みです。
00:00:18インターネットは、ネットワーク同士の通信経路を示す巨大なグローバルマップによって繋がっており、
00:00:24そのすべてがBGPシステムによって維持されています。通常、
00:00:29このシステムは円滑に動いていますが、時として予期せぬゾンビがシステム内に現れることがあります。
00:00:35なぜそんなことが起きるのでしょうか?今日の動画では、その謎を解き明かしていきます。
00:00:39BGPシステムでは、ネットワークが新しい場所にトラフィックを届けたい場合、
00:00:49そのルートを「広告(アドバタイズ)」します。逆に、古い場所への送信を止めたいときは、
00:00:54そのルートを「撤回」します。これは日常的に行われていることです。データセンター間でトラフィックを移動させたり、
00:01:00顧客を新しいエッジに移動したり、メンテナンスのためにサーバーをオフラインにしたりするためです。
00:01:04ルートの撤回は、その経路がもう有効ではないことを世界中に知らせるための単純な手段です。
00:01:09しかし、時々おかしなことが起こります。ルートが撤回されたにもかかわらず、
00:01:13一部のネットワークがそのルートはまだ存在すると信じ込み、消滅したはずの経路に
00:01:20トラフィックを送り続けてしまうのです。これが「BGPゾンビ」です。作成元のネットワークが削除したあとも、
00:01:26グローバルなルーティングテーブルから消えることを拒む、古いルートのことです。
00:01:32このゾンビが生きている間、トラフィックはどうなるのでしょうか?目的地には届きません。
00:01:38ルーター間で一時的にループして破棄されたり、いくつかのネットワークを回り道した挙げ句、
00:01:43行き止まりに突き当たったりします。あるいは、転送しようとしてもどこにも届けられないネットワークに
00:01:49着地することもあります。ユーザーの視点では、これはページの読み込みが止まったり、タイムアウトしたり、
00:01:55アプリの接続が一時的に失敗したりといった事象として現れます。
00:02:01ほとんど気づかないこともあれば、明らかに速度が低下することもあります。
00:02:06次に浮かぶ疑問は、なぜルーターがすぐにグローバルマップを更新できないのか、ということです。
00:02:11その答えは、BGPが変更を処理する方法にあります。特定のルートが消滅すると、
00:02:17ルーターは代替となる、より広範囲なルートを探します。その検索には時間がかかります。その間に、
00:02:23一部のルーターが古いエントリを消去し損ね、古い情報に固執してしまうのです。Cloudflareの観測によれば、
00:02:29大規模なネットワークでは、これらのゾンビは6分から11分ほど生存していました。
00:02:34また、IPv4のゾンビはIPv6のものよりも長生きする傾向がありました。しかし、最終的には
00:02:40システムが自己修正します。BGPのすべてのルートにはタイマーが設定されているからです。
00:02:46一定時間新しい更新がない場合、ルーターはそのルートを自動的に削除します。たとえルーターが
00:02:52最初の撤回通知を見逃しても、周囲のルーターとの継続的な情報のやり取り(BGPチャター)によって、
00:02:57いずれそのルートが消えたことを知らされます。周囲の十分な数のルーターが新しい状態に合意すれば、
00:03:03ゾンビは消滅します。Cloudflareは、BYOIP(持込IPアドレス)サービスを利用する顧客の
00:03:09対応中にこの挙動を発見しました。この状況では、Cloudflareが顧客のIP空間を一時的に広告し、
00:03:15ハンドオフ(引き継ぎ)後にそれを撤回します。撤回自体はスムーズに行われるはずでしたが、
00:03:21実際には、一部のプロバイダーがルート消滅後も古いルートを使い続けていることが分かりました。
00:03:27この不一致により、トラフィックが予期せぬ非効率な経路でCloudflareのネットワークに流入していました。
00:03:33この問題を解決するため、Cloudflareはより安全な手法を導入しました。古いルートをいきなり撤回するのではなく、
00:03:38まず安定した場所から同じルートを広報します。これにより、世界中のルーターを
00:03:45強制的に新しいバージョンへとスムーズに切り替えさせます。その後に初めて、古い広告を撤回するのです。
00:03:50これにより、ゾンビの発生原因となる代替ルートへの急激な切り替えを防ぎます。Cloudflareはまた、
00:03:56将来的に移行がよりスムーズに行われるよう、内部システムを調整しました。このトピックについて
00:04:02詳しく知りたい方は、Cloudflareが公開している詳細なブログ記事をぜひ読んでみてください。
00:04:07結論として、インターネットの最も根本的な部分でさえ、特定の条件下では
00:04:13予期せぬ挙動を示すことがあるという教訓です。それでも、ほとんどの場合、こうした問題は
00:04:19ユーザーが気づく前に解決されています。ですが、時としてゾンビが現れることもあります。インターネットは、
00:04:25毎秒何百万ものルーティング決定によって支えられています。BGPゾンビのような意外な現象は、
00:04:31すべてを円滑に動かすためにどれほどの協調が必要かを示しています。お話は以上です。
00:04:37これでBGPゾンビの正体が分かりましたね。次に読み込みが止まったり失敗したりしたときは、
00:04:43インターネット上のゾンビに遭遇したのかもしれません。このような技術解説が気に入ったら、
00:04:48ぜひ動画下の高評価ボタンとチャンネル登録をお願いします。
00:04:53Better StackのAndrisがお送りしました。また次の動画でお会いしましょう。