1:経路表

インターネットにおけるデータ通信はパケット通信方式で行われています。この方式は運びたい情報を小さい単位に分割して、それぞれにあて先と送信元の情報を付加してパケットと呼ばれる単位で処理するのが特徴です。これにより、中継する装置はパケットのことだけを考慮すればよく効率を上げることができます。

中継するには、そのあて先をどの方向へ送り出せば良いのかを判断する経路表が必要です。パケット中継を支える膨大な数のルータとよばれる中継装置はその役割によって規模の差はありますがみなこの経路表を保持しています。

2:経路の伝播

この経路表は、パケットを受け取りたい側が「広報」します。どのあて先が付いたパケットを受け取りたいかの情報を隣に伝え、それがまたさらに隣に伝えることにより情報が伝播し最終的には世界中のすべてのルータがその情報を保持することになります。

3:netmask

しかし、単純に受信したい端末なりサーバーの情報を扱うと膨大な数になってしまいます。そこで、あて先および送信元を示すインターネット上の住所、IPアドレスはマスクと呼ばれる情報が組み合わされて使われています。このマスクは、指定された以外の下位のビット数の情報を判断しないという仕組みになっています。

たとえばIPv4の場合。 192.168.1.2/32とマスク情報を32bitとした場合にはすべてのアドレスが合致しなければその経路は使われません。192.168.1.2/31とすると最下位のビットが0でも1でも合致しますので192.168.1.3もひとつの経路で合致させることができます。

実際にインターネットでやり取りされている経路情報は/22程度が望ましいのですが/24も多くあり2017年8月現在で60万経路前後です。

4:longest match

マスク情報が含まれた経路表を使うと、複数合致する情報があることがあります。たとえば、192.168.1.1には

192.168.1.0/24でも192.168.0.0/16でも合致します。このときはマスク長が長い情報が優先されるルールがあります。

5:トラフィックエンジニアリング

インターネットのバックボーン、つまり情報の流れる本流の運用監視している人たちの悩みはいかにパケットをロスすることなく届けるかです。しかし、回線に容量には限界がありインターネットのユーザーがどのような通信をするのかは予測不可能ですので時には回線容量を超えるパケットが流れパケットロスが発生する区間が生じます。このときに、迂回路にパケットをある程度誘導し若干の遠回りになるもののパケットロスを回避する操作をトラフィックエンジニアリングと呼びます。そして、その具体的方法としてよく使われるのがlongest matchのルールを利用して通常よりも長いマスクの経路情報を追加する事です。

6:経路表のサイズ

トラフィックエンジニアリングをするために、経路情報を追加することは経路表のサイズを増やすことになります。しかし、基本的には世界中にあるルータが同じサイズの経路表を保持する事になりますのでそのその影響は全世界に及び、多くの機器がこれ以上の経路表を受け入れることが事実上できない状況に現在のインターネットは陥っています。最新型の容量の大きい機材を使用すればサイズ的にはまだ余裕がありますが、情報が段々に伝播している仕組みのため急激な情報の変化はそれが伝播しておちつくまでパケットが届かないパケットロスを招きます。

7:2017/08/25に起きた事

推測の範囲ですが、トラフィックエンジニアリングを行うために限定した範囲に伝播させる意図で追加した経路が運用のミスにより全世界に流れてしまったことが原因と思われます。その数おおよそ10万。

数だけの問題ではなく、他の事業者が広報している経路とオーバーラップしその結果受け取ったパケットがブラックホール的に非到達になったとも言われています。

8:防御策

今回の事故後、再発防止策について色々は意見が出ていますがかなり難しいと思われます。まず、外部つまりインターネットの運用に携わっていない悪意を持った者から経路情報の混乱を防ぐことはできても、正規の運用者が誤って流した情報は機械的には正しい情報と見分けが付かないこと。もうひとつは、ある事業者が自分が受け取る情報を厳重に管理して今回のような異常な情報を受け取らない対策をしていたとしても、その事業者の外では誤った情報でパケットが処理されてしまうので通信への影響から免れる術はない事。

 


コメント欄を読み込み中