先日の大規模障害について理解の確認を兼ねて書いてみたいと思います。多分来週辺りに日経IT Proが特集してると思いますが。
インターネットは「ネットワークのネットワーク」とも言われ、要はISPが沢山繋がったイメージです。
ただISPの中もそれなりに大きなネットワークですので、ある統一したポリシに従って運用される必要があります。そのポリシが適用されるネットワーク単位がAS=autonomous system=自律システムです。なので必ずしも1ISP=1つのASであるとは限りませんし、最近はコンテンツやサービスを持つ事業者、つまりAmazonやYahoo、GoogleもまたASを運用しています。
ASは自分の情報を他のASに伝え、他のAS内に居る人がアクセスできるようにします。それが「経路情報」と呼ばれるものです。これを交換することで地球の裏側のネットワークにでも辿り着けるようにするわけです。
フラットな関係でお互いに情報交換すれば解決しそうな話ですが、現実世界と同じようにAS間には力関係、つまり上下関係が生じます。
ISPですと、下位のISPはより上位のISPから「経路情報」を購入しなければ世界へ繋がれません。その最上位に位置するのがTier1と呼ばれる事業者です。現在は約10社ほどですが、彼らが経路情報を互いに交換して作られるのがインターネット上の全ての経路情報=フルルートになります。
Tier1は米国の事業者が多いのですが、買収したことでNTT-ComやソフトバンクはTier1となっています。
いよいよ本題です。
AS間でやり取りする経路情報はざっくり言えば「10.0.0.1/24のアドレスを持つAS1に行くには、AS10とAS20とAS30を通ってきてね!」という情報です。この情報を受けたAS200は、この逆順に辿るように案内すれば10.0.0.1/24に辿れるわけです。簡単ですね。
ただし、ISPであれば複数のASと接続しているのが普通です。なので別のAS100からは「10.0.0.1/24のアドレスを持つAS1に行くには、AS150とAS100を通ってきてね!」という情報がもたらされるかも知れません。単純に考えて、AS100の経路の方が経由するASが少ないので速そうですのでこれを優先して案内するようにします。単純ですね(実際には他要素を加味して制御します)。
これら情報を受けたAS200は繋がっている他のASに対して、同様に「10.0.0.1/24のアドレスを持つAS1に行くには、AS150とAS100とAS200を通ってきてね!」と伝搬してあげたりもします(しない場合もあります)。
こんな風に経路情報を交換するプロトコルがBGPです。経路情報は定期的に交換するのではなく、変更があった際に広告(advertise)されます。
ところでASは基本的に自分の情報を出すものですが、実は誰でも他ネットワークの情報を出すことができます。つまり「自分(AS)の管理していないIPアドレス」に対しても「この順路で来てね!」という案内が出せてしまいます。認証なんて面倒なものはありません。IPアドレスが割り当てられたからといって、それがどのAS内に属しているかは実は別問題なのです。
もちろんある程度防ぐ仕組み、チェックする仕組み(経路フィルタ)は存在しますが、どのような経路情報を出すか、来た経路情報をどう料理するかは非常に難しいもので、また全てのASが同じポリシで運用する保証はありません。
Googleの管理するAS15169はNTT-Comに関する誤った経路情報を広告したとの報道があります。
詳細は不明ですが、素直に読むならNTT-Comが管理しているIPアドレスについて「ここにこんなネットワークがあるよ、ここを通ってきてね!」情報を出したと言うことでしょう。
NTT-Comに関する間違った経路情報が流れたなら迷惑するのはNTT-Comだけのはずです。
が、実際には多くのネットワークに波及しました。不思議ですね。
もしTier1が受け取った経路情報を何もフィルタすることなく下位のISPに伝搬すれば、当然下位ISPへどんどん誤った経路情報が伝わっていきます。
最上位であるTier1から到達性のない経路情報を知らされても、下位ISPはそれを信じるしかありません。
誤った経路情報で誤った経路に誘導されることを経路吸い込みといい、悪意を以て行われる場合であれば経路ハイジャックと呼ばれます。
ただし本来のNTT-Comが出している正しい経路情報が無くなったわけではないのです。
上述の通りBGPでは優先度判断の一つにASパスの長さがあります。
それまで「NTT-Com→AS1000→AS2000→AS3000→AS4000」だった経路情報が「NTT-Com→AS1111→AS2222」となったなら、後者がBGPレベルで優先されてしまう可能性はあります。
NTT-ComはTier1ですから、海底ケーブルを含む多くのバックボーンを持っています。他ネットワークへの中継点としてISPに限らず通信網として非常に重要です。
NTT-Comと全く関係のない業者のWebサイトであっても、「Webサイトが属するAS→AS3333→AS4444→NTT-ComのAS→AS5555→…」という経路情報が伝搬されている可能性があります。
通常は途中のNTT-Comを通ればはやーいとなるはずが、そのNTT-Comへ行くための経路情報が変わってしまえば大きく迂回してしまう経路になるかも知れません。
パケットには生存時間(TTL)と呼ばれるものがあり、あまりに多くのルータを経由すると(Windowsなら128)到達不能として破棄されます。
ただそもそもが誤った経路情報なので、途中のNTT-Comに辿り着いたと思ったら全く別のネットワークのためデフォルトルートに投げられてしまい、彷徨って同様に消えたのかも知れません。
10.1.0.0/24とか10.1.0.0/25の意味がわかる人向けです。
そもそもルータはより細かい(プレフィックスが長い)ネットワークへ優先してルーティングする(ロンゲストマッチ)ため、長いプレフィックスで広告してしまうことで経路吸い込みを起こせてしまえます(ロンゲストマッチはルータに於ける大原則なので最優先されます)。
この事象は割りとよくあり、2008年にパキスタンのASが国内からのYoutubeへのアクセスを規制するための偽情報を誤って外部へ広告しアクセスできなくさせる事象を起こしています。
現在のフルルートは約65万経路と言われてますが、お高いBGPルータにとってもこの経路情報の大きさは非常に大きな負荷であり課題とされてます。
経路情報はASの内部に対しても(内部ネットワーク内での経路情報として)伝搬する必要があり、どちらかといえばこの各AS内部での伝搬時にルータ負荷上昇が発生し遅延が生じたのではという説があります(この辺は自信なく怪しいです。IGP詳しい人に)。
巨大なネットワークであればあるほど内部の経路情報の収束には時間を要してしまうこと、わずか8分の間に約10万経路の追加とその取消が生じたことで完全復旧まで時間を要した可能性があります。
いかがでしたか?(キュレーションサイト風)
AS自体は条件(https://www.nic.ad.jp/ja/ip/asnumber.html)を満たせば事業者に限らず誰でもAS番号を取得し運用できますので、興味を持った人はBGPオペレータになって「指先一つでインターネットを壊せる」緊張感に酔いしれましょう(※BGPオペレータに対する個人の感想です)。
Android端末を運営しているGoogleの何かがあったとかないですかね?自分は素人なので解りませんがクラウド・コンピューティング・システムとか不確かさがあると自分などは思うのですが...
つまり盗聴用の経路をつくったからこっちに通信回してねって言ったら日本人トラフィック多すぎフイタって流れ? 陰謀大好き増田なので適当だけど