Skip to content

Latest commit

 

History

History
159 lines (116 loc) · 12.9 KB

README.md

File metadata and controls

159 lines (116 loc) · 12.9 KB

Chapter7: BGP

この章ではBGP(Border Gateway Protocol)に関する基礎知識とその設定を学びます。

Lesson

BGP

経路制御を行うルーティングプロトコルにはAS(Autonomous System)内部で使用されるIGP(Interior Gateway Protocol)とAS外部で使用されるEGP(Exterior Gateway Protocol)に分けられます。 Routingの章で紹介したOSPFなどはAS内部での経路制御に用いられるIGPの一つです。

一方BGPはAS外部、つまりAS間での経路情報の交換に使用されるルーティングプロトコルです。(AS内部でBGPを用いた経路制御を行う場合もあります) BGPは、パスベクタ(経路ベクトル)型ルーティングプロトコルで、AS内のルート情報に付加されたパスアトリビュートを送信して最適経路を決定します。

基本的には、宛先ネットワークまでに経由するASが少ない経路を最適パスとして使用しますが、接続相手との契約内容に基づいた細かい経路制御も可能です。 インターネットのすべての経路情報(フルルート)をもつためデフォルトルートの設定は不要ですが、コストとの兼ね合いから一部の経路のみにBGPを使用する場合もあります。

BGPの特徴としては以下のような点が挙げられます。

特徴 説明
転送プロトコルにTCPを使用 TCPポート179を使用し、TCP接続を行い信頼性のあるルーティングアップデートを実行
差分アップデート 定期的なルーティングアップデートを行わず、変更発生時にのみ差分アップデートを実行
パスアトリビュート パスアトリビュートをルートに付加して、詳細なポリシーを定義したルーティングを実現
ループフリー AS-PATHリストを使用することで、ループフリーの構成を実現
クラスレスルーティングプロトコル CIDRによるルート集約、VLSMによるサブネット分割時の可変長マスクを実現

OSPF vs BGP

OSPF BGP
ゲートウェイプロトコル 内部ゲートウェイプロトコル 外部ゲートウェイプロトコル
実装 簡単 繁雑
収束 速い 遅い
設計 階層ネットワークが可能 メッシュ
方式 距離ベクトル型 経路ベクトル型
デバイスリソースの必要性 大量のメモリとCPU ルーティングテーブルのサイズに依存しますが、BGPはスケーリングに優れています。
ネットワークのサイズ 一元的に管理できる主に小規模なネットワークで使用されます。 主にインターネットなどの大規模ネットワークで使用されます。
機能 最速ルートが最短ルートよりも優先されます。 定めたポリシーに合致する最適なパスが決定されます。
使用されるアルゴリズム ダイクストラアルゴリズム 最適パスアルゴリズム
プロトコル IP TCP

Autonomous System

ASとは、「単一」の「明確に定義された」ルーティングポリシーを持つ1つまたは複数のネットワーク運営組織が運営する、相互に接続された1つまたは複数のIPプレフィックスのグループです。

BGPでは、インターネット上での各ASを識別するために16bitのAS番号と呼ばれる識別子を割り当てています。(32bitの4byte AS numberの仕様策定も進んでいる)

経路情報はより多くのプロバイダと接続しているプロバイダに集まり、トランジット接続により下位のプロバイダから上位のプロバイダへと経路情報が収束されていきます。 インターネット全体におけるプロバイダのつながりは階層化された木構造になっていて、ツリーの最上位にあるプロバイダにはインターネット全体の経路情報が集まります。 このようにフルルートを他のプロバイダに依存することなく得られるプロバイダはTier1に位置づけられ、現在以下の17のプロバイダがTier1として認識されています。

Name Headquarters AS number CAIDA AS Rank
Lumen Technologies (formerly CenturyLink formerly Level 3) United States 3356 1
Telia Carrier Sweden 1299 2
Cogent Communications (formerly PSINet) United States 174 3
NTT Ltd. (formerly Verio) United Kingdom 2914 4
GTT Communications, Inc. United States 3257 5
Telecom Italia Sparkle (Seabone) Italy 6762 6
Tata Communications (formerly Teleglobe) India 6453 8
Zayo Group (formerly AboveNet) United States 6461 9
PCCW Global Hong Kong 3491 10
Lumen Technologies (formerly CenturyLink formerly Level 3 formerly Global Crossing) United States 3549 13
Telxius (Subsidiary of Telefónica) Spain 12956 15
Orange (OpenTransit) France 5511 17
Deutsche Telekom Global Carrier Germany 3320 19
Verizon Enterprise Solutions (formerly UUNET) United States 701 20
AT&T United States 7018 21
Liberty Global United Kingdom 6830 25
Sprint (T-Mobile US) United States 1239 32

他にも、
Tier2: 一部のネットワークと無料でピアリングしているが、IPトランジットを購入するか、インターネットの少なくとも一部に到達するためにピアリングの料金を支払うネットワーク
Tier3: インターネットに参加するために他のネットワークからトランジット/ピアリングのみを購入するネットワーク
のような分け方が一般的ですが、Tier自体は明確に定められているわけではないので業界の認識に左右されます。

ピアとトランジット

BGPを利用するルータ同士の直接の接続をピア、もしくはピアリングと呼びます。

ピアリングは、組織同士の個別交渉によって行われ、お互いの合意の元に経路情報が交換されます。 これにより、接続した組織同士や、その顧客同士の通信を可能とします。 ピアリングで直接相互接続できるのは地理的に近いISPに限られることから、各ASは他のインターネット全域のASに対する接続性(フルルート)を別の(上位の)ASから提供してもらうのが一般的です。 この接続性の提供を「トランジット」と呼び、トランジットを提供するASを、「トランジットAS」と呼びます。

トランジットはトラフィック量に応じた従量課金が発生する商用サービスであることが一般的です。 実際のケースとしては、トランジットの提供を受けるほかに、トランジットAS以外とのピアリングを並行して行うことが一般的です。

ピアリングの理由として大きく以下の二つのメリットがあげられ、利用者が多く存在するような特定のネットワークの費用や品質を向上するために利用されます。

  • ピアリング相手のASとの通信を、トランジットを介さないで賄うことで、トランジット費用の軽減が期待できる
  • ピアリングによってASと直接接続をするとそのASとネットワークとして近くなるため、トランジットを経由することによる遅延などの影響を受けにくくなる

他の事業者と接続するためには、装置や回線が必要となりますので、 事業者間の接続を容易にするために、専用のスイッチを提供し、接続している事業者同士で自由にピアリングを行えるようにするIX(Internet eXchange)事業者が存在します。 ピアリングにはこのIX事業者によって提供されるスイッチ上で行われるパブリックピアリングと、組織同士が直接回線を接続するプライベートピアリングがあります。

ISPの相互接続においては、このような接続形態を、それぞれの要件により組み合わせて利用されることが一般的です。

[INFO]
SAKURA InternetはLooking Glassというサービスを提供している

Assignment

1. Chapter6でトンネルを張った相手とBGPのピアリングを行ない、相手のr1に対してpingが通るように設定してみよう

[INFO]
トンネリングしたのはeBGPのTTLが1であるためです。

[WARN]
BGPは経路情報の交換にTCPの179番ポートを使用するので、ポートが開放されているか注意してください。

ヒント1

IPトンネリングと同様、お互いが設定する必要があります。 (経路を一方的に広告したい場合は自分側が開いてなくても問題有りません。)

ヒント2

相手のグローバルIPとAS番号が必要です。

ヒント3

自分のネットワーク内から広告したい範囲を指定する必要があります。

2. HTTPサーバーを立ててみよう

s1~3のどれかで何らかのHTTPサーバーをポート80で起動し、{サーバーのIPアドレス} server.{あなたのtraQ ID}と言う形式で共有してください。(個人でやる場合には互いのサーバーにIPアドレスとドメイン名の対応が反映されていれば問題ありません。) 共有されているIPアドレスとドメイン名の対応を/etc/hostsに反映し、curlコマンドで実際にアクセス出来ることを確かめてください。

[INFO]
DNS以外に/etc/hostsを参照することでも、ドメイン名からIPアドレスを引くことができます。

ヒント

python -mphp -sなどが簡単です。


解答を見る

TOPへ