BGP について

この記事は1年以上前に書かれたものです。 情報が古い可能性があります。

8/25 お昼過ぎに全国各地で発生していたネットワーク障害について調べてみた。
(注意:素人のテキトーに調べた情報なので、当てにしないで下さい。)

ネットワークの障害発生状況を調べている downdetector によると、Google で障害が発生していた様子。

他に影響があったサービスとして、OCN、KDDI などのプロバイダやモバイル Suica、メルカリ、マネーフォワード、SBI 証券、楽天証券、Amazon プライムビデオなども一時的に接続できない状況が発生していた模様。

今回の経路障害の影響が及んだ IP アドレスは、世界で約 10 万アドレス。このうち日本国内が約 2 万 5000 アドレスとのことで、かなり色々なサービスが影響を受けており、特に証券会社など 0.01 秒を争う企業には大きな影響があったものだと思われる。

当初は最初に障害が発生した NTT コミュニケーションズの OCN が何かやらかしたと思われたが、google の操作ミスが原因ということらしい。翌日にグーグル社は「ネットワークの誤設定により障害が発生し、8分以内に正しい情報に修正した。ご不便、ご心配をおかけしたことをおわびする」と発表しており、8 分間の間違いが日本中に大きな影響を与えることになった。

原因となった経路制御プロトコル BGP について調べていきたい。

wikipedia では、

BGP (Border Gateway Protocol) は自律システム (AS) 間のルーティングを行うExterior Gateway Protocol(EGP)の通信プロトコルである。

となっている。バックボーン回線の経路制御なんか私のような一般ピープルには馴染みがないので、ひとつずつ調べる。

まず自律システム (AS) はインターネット上のまとまりで、インターネットサービスプロバイダ(ISP) のネットワークや今回の主犯の Google などのネットワークのことを指す。まとまりごとに AS 番号が割り振られており、AS4713(OCN)や AS15169(Google)等がある。

この AS 同士が BGP を用いて経路の情報を共有することにより、インターネットを形成している。https://www.nic.ad.jp/ja/ip/as-numbers.txt で番号が確認できる。

EGP は経路制御プロトコルの分類で、AS 間で使われる EGP と AS 内で使われる IGP (Interior Gateway Protocol) に分かれる。


BGP は EGP の一種であったが、もとの EGP 自体はつかわれなくなったため、実質 EGP といえば BGP を指す。IGP には RIP(Routing Information Protocol)や OSPF(Open Shortest Path First)、EIGRP(Enhanced Interior Gateway Routing Protocol)などがあり、ネットワークに規模や構造に応じて使われている。現在の BGP は RFC4271 で定義される BGP-4(BGP version 4)である。

BGP の動作としては隣接するルータ(ネイバー、ピアと呼ばれる)間で TCP 179 番ポートを使用して経路情報の共有を行っている。
AS 内部のルータ同士で使われる場合は IBGP、他の AS のルータとの通信に使う BGP を EBGP と呼ぶ。

プロトコルで使用されるメッセージには以下のものがある。

  1. OPEN

OPEN メッセージは TCP での接続確立後の最初のメッセージで、バージョン、AS番号、BGP のルータ ID、holdtime、認証の情報が含まれる。

  1. KEEPALIVE

BGP ネイバーの生存確認メッセージ。OPEN メッセージの holdtime の 1/3 が使用される。

  1. UPDATE

経路情報を伝達するメッセージ。テーブル作成時にはすべてのルート情報、変更時には差分のルート情報が含まれる。

  1. NOTIFICATION

エラーを検知した場合のメッセージ。受信側はセッションを切断する。

受け取った経路情報を他の AS にアナウンスする場合をトランジット AS と呼び、自分のアドレスのみをアナウンスする場合は非トランジット AS と呼ばれる。

今回の事件の場合はまだ詳しい解説が出ていないが、専門の方々のツイッターとかによると Google が誤った経路情報を送信し、これを NTT コムが受信。その情報を NTT コムがトランジットしたため、他の AS にも広がったのだと思われる。
国内の通信でも誤った経路としてアメリカ経由になってしまったため輻輳が発生したり、大量の経路情報の更新でルータに負荷がかかったため接続しにくい状態になったそうだ。

数分の操作ミスが及ぼす影響の大きさを考えると恐ろしいものがある。一部では北朝鮮のサイバー攻撃ではないかと噂が流れたが、サイバー攻撃であっても単なるミスであっても、こういったことが起こり得ると考えておくことが必要だと感じた。

コメント

タイトルとURLをコピーしました