2017-08-27

増田でもわかる通信障害まとめ

先日の大規模障害について理解確認を兼ねて書いてみたいと思います。多分来週辺りに日経IT Pro特集してると思いますが。

AS(autonomous system)

インターネットは「ネットワークネットワーク」とも言われ、要はISPが沢山繋がったイメージです。

ただISPの中もそれなりに大きなネットワークですので、ある統一したポリシに従って運用される必要があります。そのポリシが適用されるネットワーク単位AS=autonomous system=自律システムです。なので必ずしも1ISP=1つのASであるとは限りませんし、最近コンテンツサービスを持つ事業者、つまりAmazonYahooGoogleもまたAS運用しています

AS自分情報を他のASに伝え、他のAS内に居る人がアクセスできるようにします。それが「経路情報」と呼ばれるものです。これを交換することで地球の裏側のネットワークにでも辿り着けるようにするわけです。

Tier1 AS

フラット関係でお互いに情報交換すれば解決しそうな話ですが、現実世界と同じようにAS間には力関係、つまり上下関係が生じます

ISPですと、下位のISPはより上位のISPから「経路情報」を購入しなければ世界へ繋がれません。その最上位に位置するのがTier1と呼ばれる事業者です。現在は約10社ほどですが、彼らが経路情報を互いに交換して作られるのがインターネット上の全ての経路情報フルルートになります

Tier1は米国事業者が多いのですが、買収したことでNTT-ComやソフトバンクはTier1となっています

道案内の仕組み

いよいよ本題です。

AS間でやり取りする経路情報はざっくり言えば「10.0.0.1/24アドレスを持つAS1に行くには、AS10AS20と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先生の過ち(推測)

Google管理するAS15169はNTT-Comに関する誤った経路情報広告したとの報道があります

詳細は不明ですが、素直に読むならNTT-Comが管理しているIPアドレスについて「ここにこんなネットワークがあるよ、ここを通ってきてね!」情報を出したと言うことでしょう。

影響が広がった原因(推測)

NTT-Comに関する間違った経路情報が流れたなら迷惑するのはNTT-Comだけのはずです。

が、実際には多くのネットワークに波及しました。不思議ですね。

1.経路吸い込み

もしTier1が受け取った経路情報を何もフィルタすることなく下位のISPに伝搬すれば、当然下位ISPへどんどん誤った経路情報が伝わっていきます

最上であるTier1から到達性のない経路情報を知らされても、下位ISPはそれを信じるしかありません。

誤った経路情報で誤った経路に誘導されることを経路吸い込みといい、悪意を以て行われる場合であれば経路ハイジャックと呼ばれます

1.1.ASパスによる選択

ただし本来NTT-Comが出している正しい経路情報が無くなったわけではないのです。

上述の通りBGPでは優先度判断の一つにASパスの長さがあります

それまで「NTT-Com→AS1000→AS2000→AS3000→AS4000」だった経路情報が「NTT-Com→AS1111→AS2222」となったなら、後者がBGPレベルで優先されてしま可能性はあります

1.2.TTLによるパケット死亡

NTT-ComはTier1ですから、海底ケーブルを含む多くのバックボーンを持っています。他ネットワークへの中継点としてISPに限らず通信網として非常に重要です。

NTT-Comと全く関係のない業者Webサイトであっても、「Webサイトが属するASAS3333→AS4444→NTT-ComのASAS5555→…」という経路情報が伝搬されている可能性があります

通常は途中のNTT-Comを通ればはやーいとなるはずが、そのNTT-Comへ行くための経路情報が変わってしまえば大きく迂回してしまう経路になるかも知れません。

パケットには生存時間(TTL)と呼ばれるものがあり、あまりに多くのルータを経由すると(Windowsなら128)到達不能として破棄されます

ただそもそもが誤った経路情報なので、途中のNTT-Comに辿り着いたと思ったら全く別のネットワークのためデフォルトルートに投げられてしまい、彷徨って同様に消えたのかも知れません。

1.3.ロンゲストマッチによる選択

10.1.0.0/24とか10.1.0.0/25の意味がわかる人向けです。

そもそもルータはより細かいプレフィックスが長い)ネットワークへ優先してルーティングする(ロンゲストマッチ)ため、長いプレフィックス広告してしまうことで経路吸い込みを起こせてしまます(ロンゲストマッチルータに於ける大原則なので最優先されます)。

この事象は割りとよくあり、2008年パキスタンAS国内からYoutubeへのアクセス規制するための偽情報を誤って外部へ広告アクセスできなくさせる事象を起こしています

2.経路変更に時間を要した

現在フルルートは約65万経路と言われてますが、お高いBGPルータにとってもこの経路情報の大きさは非常に大きな負荷であり課題とされてます

経路情報ASの内部に対しても(内部ネットワーク内での経路情報として)伝搬する必要があり、どちらかといえばこの各AS内部での伝搬時にルータ負荷上昇が発生し遅延が生じたのではという説があります(この辺は自信なく怪しいです。IGP詳しい人に)。

巨大なネットワークであればあるほど内部の経路情報収束には時間を要してしまうこと、わずか8分の間に約10万経路の追加とその取消が生じたことで完全復旧まで時間を要した可能性があります


いかがでしたか?(キュレーションサイト風)

AS自体は条件(https://www.nic.ad.jp/ja/ip/asnumber.html)を満たせば事業者に限らず誰でもAS番号を取得し運用できますので、興味を持った人はBGPオペレータになって「指先一つでインターネットを壊せる」緊張感に酔いしれましょう(※BGPオペレータに対する個人の感想です)。

  • https://anond.hatelabo.jp/20170827120847

    Android端末を運営しているGoogleの何かがあったとかないですかね?自分は素人なので解りませんがクラウド・コンピューティング・システムとか不確かさがあると自分などは思うのですが...

  • https://anond.hatelabo.jp/20170827120847

    つまり盗聴用の経路をつくったからこっちに通信回してねって言ったら日本人トラフィック多すぎフイタって流れ? 陰謀大好き増田なので適当だけど

記事への反応(ブックマークコメント)

アーカイブ ヘルプ
ログイン ユーザー登録
ようこそ ゲスト さん