【ネットワーク入門】BGPの基本となるTier/BRIB/Peer/メッセージタイプについて

  • URLをコピーしました!
目次

はじめに

こんにちは。ネットワークエンジニアの「だいまる」です。

今回は、EGPの1つであるBGP(Border Gateway Protocol)について、まとめていきたいと思います。

BGPシリーズの記事一覧

そもそもBGPとはなにか?

BGPは、EGPのプロトコルの1つであり、世の中のネットワークで広く利用されているプロトコルになります

このプロトコルは各通信事業者やISP、コンテンツ事業者が所有するネットワーク(AS)間を接続し、経路交換を行うことが目的となります。

このBGPの世界は複雑であり、とても面白いものになっています。

今回は、まず基本となる「Tier」や「ピアリング」、「ピア」、「BRIB」、「メッセージタイプ」を説明してきたいと思います。

BGPの世界で重要な「Tier」という考え方

BGPの世界で非常に重要となる考え方が「Tier」になります。

このTierとは、「ネットワークの世界を表すAS(Autonomous System)間をつなぐための権力の強さやヒエラルキー」と思ってもらえればいいと思います。

なぜこの言い方をしたのか?

それは、「Tierの番号が小さい程、その企業が所持する経路数が多く立場が強いため」です。

では、なぜ経路数を持っているAS(企業・組織)の立場が強くなるのか?

所持する経路が少ない場合、今ではどんなアプリやサイトも繋がるのが当たり前ですが、接続できない状態になる可能性があるためです。

例えば、下の図のように各市町村をつなぐ道や橋があったとします。

この道や橋はBGPの経路に該当し、数が多いほど最短でその市町村に行けるようになります

一方、道や橋が少ない場合、遠回りになったり、たどり着けない可能性が出てきます

そのため、所持する経路数が少ないほど不利となるのです。

B市
B市
C市
C市
A市
A市
D町
D町
Text is not SVG – cannot display

また、所持する経路が少ない場合、接続可能なサイトやアプリの減少につながる恐れがあるため、ユーザ数や利益の減少につながりかねません。

そのため、必然的にネットワーク業界では、Tierの番号が一番若い「Tier1」の企業の立場が強くなるのです。

このTier1はどんな企業なのか?

それはwikipedia等にも載っていますが、以下のリストとなります。

これらの企業はインターネットの中心地であるアメリカ企業が大半を占めています。

日本の企業も唯一「NTTコミュニケーションズ」が含まれています。

この理由は、NCOMがTier1のアメリカ企業を買収したため、Tier1の仲間入りをしました。

  • AT&T(アメリカ、7018)
  • Deutsche Telekom Global Carrier(ドイツ、3320)
  • GTTコミュニケーションズ(アメリカ、3257)
  • Liberty Global(イギリス、6830)
  • ルーメンテクノロジーズ(アメリカ、3356)
  • NTTコミュニケーションズ(日本、2914)
  • オレンジ(フランス、5511)
  • PCCWグローバル(香港、3491)
  • Tモバイル(アメリカ、1239)
  • タタコミュニケーションズ(インド、6453)
  • イタリアテレコム(イタリア、6762)
  • ベライゾン(アメリカ、701)
  • Zayoグループ(アメリカ、6461)
  • Arelion(スウェーデン、1299)
  • Telxius(スペイン、12956)

しかし、最近はGAFA系の企業がTier1に匹敵する経路を持つようになり、構造が変わりつつあるようです。

その理由は、多くのユーザや企業がパブリッククラウドを利用する昨今、クラウドを利用するユーザ端末が属する通信キャリアやプロバイダもパブリッククラウド企業と経路交換する必要があります。

そのため、パブリッククラウドの需要の高まりにより、所持する経路数が多くなり、Tier1に匹敵するようになったのです。

そのため、わざわざTier1の企業と契約する必要もない場合が出てきているようです。

経路交換のためには「ピアリング」を行う必要がある!!

「Tier」の概念がわかったところで各企業間同士で経路交換を行うためには、「ピアリング」を行う必要があります。

この「ピアリング」には、主に「トランジット」と「ピアリング」の2パターンが存在します。

基本となる「トランジット」について

トランジットとは、「ある1つのASから他のASに関する経路も受信するサービス・契約方法」になります。

これは、基本的に有償となるため、費用はかかりますが、1つのASと経路交換を行うことで全経路(フルルート)を受信できるため、保守・運用面でかなり楽になります。

このサービスは、日本の場合、BBIXやKDDI、NCOMといったIX事業者が主に取り扱っています。

AS X
AS X
AS Y
AS Y
AS A
AS A
AS W
AS W
AS Yは
各ASと接続
AS Yは…
AS XはAS Yの接続1つだけで
フルルートがもらえる
AS XはAS Yの接続1つだけで…
Text is not SVG – cannot display

BGP世界で重要となる「ピアリング」とは?

ピアリングとは、「各事業者が持つAS間でBGPピアを張り経路交換を行う方式」です。

ピアリングには、主に「パブリックピアリング」と「プライベートピアリング」の2種類があります。

まずはパブリックピアリングから説明したいと思います。

パブリックピアリングとは?

ピアリングは各事業者間での物理的な接続が必要となるため、費用がかかります。

特にサービスを提供するコンテンツ事業者(LINE/Yahoo/さくら/mixi等)は、サーバを設置するデータセンタ内でピアリングできれば良いですが、そうでない場合も多々あります。

実際、各事業者が集まるデータセンタが優位性が高くなり、サーバルームの空きがなく、大変人気となっております。

そのため、各国に存在するIX事業者が管理するネットワークに接続し、論理的にピアリングを行うことが多くなっています

日本だとBBIXやKDDIなどが該当するよ!

AS X
AS X
IX 事業者
NW
IX 事業者…
AS Y
AS Y
AS W
AS W
各AS共にIX事業者のNWに接続
各AS共にIX事業者のNWに接続
IX事業者NWを通してAS XとAS Wでピアリング
→これが「パブリックピアリング」
IX事業者NWを通してAS XとAS Wでピアリング…
AS XとAS Yはピアリングなし
同一IX事業者に接続はある
AS XとAS Yはピアリングなし…
AS YとAS Wはピアリングなし
同一IX事業者に接続はある
AS YとAS Wはピアリングなし…
Text is not SVG – cannot display

しかし、このパブリックピアリングには「ピアリングのタダ乗り」という課題があります。

これはどういうことか?

IX事業者のNW(ネットワーク)を介してピアリングを行なっているため、どのASも同一レンジのネットワークに属しています。

そのため、Static経路でピアリングを実施していないASに強制的にトラフィックを流すことも可能なのです。

AS X
AS X
IX 事業者
NW
Prefix:192.168.1.0/24
IX 事業者…
AS Y
AS Y
AS W
AS W
各AS共にIX事業者のNWに接続
各AS共にIX事業者のNWに接続
192.168.1.1
192.168.1.1
192.168.1.2
192.168.1.2
192.168.1.3
192.168.1.3
192.168.1.4
192.168.1.4
192.168.1.5
192.168.1.5
192.168.1.6
192.168.1.6
AS Yのトラフィックを
192.168.1.1宛に流すStatic経路を設定
AS Yのトラフィックを…
AS Yからのトラフィックが流れてくる
AS Yからのトラフィックが流れてくる
Text is not SVG – cannot display

この行為はルール違反ですが、これを実施することでピアリングの費用を抑えることもできてしまいます。

暗黙のルールでどの事業者も基本やってませんが、稀にいます!(とある国が多い印象です)

では、どうやって見つけるのか?

残念なことに受信側の事業者で送信元と宛先のASを監視し判断するしかありません。

つまり監視体制が乏しい事業者はタダ乗りされている可能性が高いと思います。

また、このピアリング形式を実施する際には、双方のIX事業者への接続帯域を考える必要があります。

当たり前の話ですが、AS XとAS YのIX事業者への接続帯域は異なります。

その観点を無視し、ピアリングを行いトラフィックを流すと輻輳につながり、サービス品質の低下につながります。

AS X
AS X
IX 事業者
NW
IX 事業者…
AS Y
AS Y
AS W
AS W
各AS共にIX事業者のNWに接続
各AS共にIX事業者のNWに接続
30G接続
30G接続
AS X→AS Wに30G以上流せない
AS X→AS Wに30G以上流せない
100G接続
100G接続
50G接続
50G接続
Text is not SVG – cannot display

そのため、双方の交渉の上で成り立つのが「パブリックピアリング」になるのです。

次にプライベートピアリングについて、説明したいと思います。

プライベートピアリングとは?

「プライベートピアリング」は、ASを持つ企業同士で物理的に直接繋がったNWを構築し、ピアリングを行う方法です。

これは、同規模のASの場合、双方にメリットがあるため、ピアリングを無料で行うことが多いと思います。

ASの規模が異なる場合、小規模事業者から大規模事業者に利用料を払うパターンが一般的です。

AS X
AS X
AS Y
AS Y
AS W
AS W
各AS IX事業者を介さないで接続
各AS IX事業者を介さないで接続
直接接続
直接接続
直接接続
直接接続
Text is not SVG – cannot display

BGPのルーティングテーブル「BRIB」

BRIBとは「BGP RIB」を指し、「Adj-RIB-in」「LOC-RIB」「Adj-RIB-out」の3つから構成されます。

「Adj-RIB-in」はUPDATEメッセージの蓄積を行い、「LOC-RIB」でポリシー適用、フィルタリングの反映を行います。

そして、「Adj-RIB-out」でベストパスの蓄積とネイバー宛に送信を行います。

ルーティングテーブルとの連携は、「LOC-RIB」で実施し、それぞれのテーブル情報を更新・交換を行います。

  • Adj-RIB-in:UPDATEメッセージの蓄積
  • LOC-RIB:ポリシー適用・フィルタリング反映
  • Adj-RIB-out:ベストパスの蓄積・ネイバー向けにベストパスの送信

BGPには「IBGPピア」と「EBGPピア」2種類が存在する

この章では、ルータ同士でBGPネイバーを張るためのBGPピア2種類について説明したいと思います。

BGPピアは、同一AS内のルータで接続する「IBGPピア」他ASのルータと接続する「EBGPピア」が存在します。

同一AS内部のルータと接続するIBGPピア

IBGPピアは、基本的に全ルータとBGPネイバ関係を確立するフルメッシュ構成となります。

AS XXX
AS XXX
:IBGPピア
:IBGPピア
Text is not SVG – cannot display

しかし、この構成はネットワーク規模の拡大に比例しIBGPピア数が増大するため、「ルートリフレクタ」と呼ばれるBGP専用ルータを用意し、ピア数を削減します。

AS XXX
AS XXX
:IBGPピア
:IBGPピア
Route
Reflector

Route…
Text is not SVG – cannot display

ピア数が増大すると何が問題なのか?

BGPはインターネット向けや他ASなど数多くの経路を交換するために使われるプロトコルです。

そのため、ピア数が多い場合、ルータのCPUやメモリに負荷をかけてしまい、通信断につながる可能性があります。

また、ルータによっては保持できるBGPピア数に上限があるため、ピア数を減らしたいのです。

ちなみに、このIBGPピアはTTLが255以内等の条件があります。

そんなIBGPピアの設定コマンドは以下の通りです。

router bgp 10
 network 10.0.1.1 mask 255.255.255.255 #経路広報するネットワークの定義
 neighbor 10.0.1.2 remote-as 10 #ネイバーの設定(IPアドレス:相手のアドレス、AS番号:相手のAS番号)
!

このIBGPピアには、「スプリットホライズン」と呼ばれる機能が働いていています。

これは、IBGPピアのルータから受信した経路は他のiBGPピアには広報しないようにする機能です。

この機能がない場合、経路のループが発生しネットワーク全体がダウンしてしまいます。

AS XXX
AS XXX
Prefix: 192.168.1.0/24
Nexthop: RouterA

Prefix: 192.168.1.0/24…
スプリットホライズン有
スプリットホライズン有
スプリットホライズン
により経路広報STOP
スプリットホライズンにより経路広報STOP…
スプリットホライズン
により経路広報STOP
スプリットホライズンにより経路広報STOP…
AS XXX
AS XXX
Prefix: 192.168.1.0/24
Nexthop: RouterA

Prefix: 192.168.1.0/24…
スプリットホライズン無
スプリットホライズン無
Prefix: 192.168.1.0/24
Nexthop: RouterB

Prefix: 192.168.1.0/24…
RouterA
RouterA
RouterB
RouterB
RouterC
RouterC
RouterD
RouterD
RouterA
RouterA
RouterB
RouterB
RouterC
RouterC
RouterD
RouterD
Prefix: 192.168.1.0/24
Nexthop: RouterC

Prefix: 192.168.1.0/24…
Prefix: 192.168.1.0/24
Nexthop: RouterD

Prefix: 192.168.1.0/24…
ループ発生
ループ発生
Text is not SVG – cannot display

外部ASと接続を行うEBGPピア

EBGPピアは「異なるAS間のルータで張るピア」になります。

同一AS内部のルータ同士でBGPネイバを確立するIBGPとは異なり、フルメッシュ構成を取る必要はありません。

また、IBGPと異なるのはTTLが1となっているため、直接接続しているルータとだけピア接続することができます。

AS XXX
AS XXX
RouterA
RouterA
RouterB
RouterB
RouterC
RouterC
RouterD
RouterD
AS YYY
AS YYY
AS ZZZ
AS ZZZ
AS WWW
AS WWW
EBGPピア
EBGPピア
Text is not SVG – cannot display

しかし、直接接続していない場合でもEBGPピアを張りたい時は、「意図的にTTLを増やす設定を投入」することで接続することもできます

設定コマンドは以下の通りです。

router bgp 10
 network 10.0.1.1 mask 255.255.255.255 #経路広報するネットワークの定義
 neighbor 10.0.2.7 remote-as 20 #ネイバーの設定(IPアドレス:相手のアドレス、AS番号:相手のAS番号)
 neighbor 10.0.2.7 ebgp-multihop 2 #TTLを増やしたい場合の設定
!

EBGPピアの場合、外部のASルータと経路交換を行うために、ピアを確立します。

そのため、よく経路フィルタとして「Route-Map」や「Prefix-List」で広報する経路や受信する経路を制御しています。

これは意図しない経路を受信することにより、経路ループが発生することや悪意のあるユーザが経路を乗っ取ることもあるためです。

AS XXX
AS XXX
経路制御有
経路制御有
0.0.0.0/0:DROP
192.168.1.0/24:PASS
0.0.0.0/0:DROP…
RouterA
RouterA
RouterB
RouterB
RouterC
RouterC
RouterD
RouterD
AS YYY
AS YYY
AS ZZZ
AS ZZZ
AS WWW
AS WWW
0.0.0.0/0
192.168.1.0/24
0.0.0.0/0…
AS XXX
AS XXX
経路制御無
経路制御無
全PASS
→全経路がAS XXXに引き込まれる
全PASS…
RouterA
RouterA
RouterB
RouterB
RouterC
RouterC
RouterD
RouterD
AS YYY
AS YYY
AS ZZZ
AS ZZZ
AS WWW
AS WWW
0.0.0.0/0
192.168.1.0/24
0.0.0.0/0…
Text is not SVG – cannot display

メッセージタイプ

この章では、BGPで利用されるメッセージについて説明していきます。

BGPでは主に「5つのメッセージ」があります。

今回は、CMLでパケットキャプチャしたデータと共に確認していきたいと思います。

BGPピア確立のための「OPENメッセージ」

OPENメッセージは、「BGPセッション開始時に送信されるメッセージ」です。

また、TCPセッション確立後にメッセージの送信を行い、同期情報が正しい場合、Keepaliveを返します

このメッセージに含まれる情報は、「Version」や自分自身のAS番号を表す「MyAS」、Keepaliveがない際のセッション確立時間である「Holdtime」、BGPルータの識別子である「Idetifier」があります。

フィールドオクテット用途
Version1オクテットBGPのVersion(現在は4)
My AS2オクテット送信元のAS番号(ここの値によりiBGP/eBGPを判断)
Holdtime2オクテットホールドタイム(通常時:180sec、Keepalive:60sec)
Identifier4オクテットBGPスピーカの識別子
Option ParamLength:1オクテット
Param:TLV表記
メッセージ内容

BGPの経路情報を交換する「UPDATEメッセージ」

「UPDATEメッセージ」は、経路情報の交換を行うための利用するメッセージとなります。

このメッセージには、削除経路の長さを表す「Unfeasible Route Length」や削除される経路リストを表す「Withdrawn Route」、Path Attribute長を示す「Total Path Attribute Length」、「Path Attribute」、「NLRI」があります。

今回のパケットキャプチャのデータではwithdrawnがない状態となります。

フィールドオクテット用途
Unfeasible Route Length2オクテットWithdrawn Routeの長さ
Withdrawn Route・Length:1オクテット(Prefix)
・Prefix:オクテット単位
Prefixをオクテット単位で格納
Total Path Attribute Length2オクテットパス属性長を定義
Path Attribute可変長パス属性をTLV形式で格納
NLRI可変長パス属性が付加されたPrefixを格納
メッセージ内容

BGPピアの維持のために利用されるKEEPALIVEメッセージ

「KEEPALIVEメッセージ」は、BGPピアのセッションを維持するために利用されるメッセージです。

このメッセージは、デフォルトで60秒毎にネイバー宛に送信され、死活確認を行います。

KEEPALIVEメッセージは、共通ヘッダのみとなります。

単純な死活確認だけだからヘッダ情報も少ないのよ

経路更新を行うためのROUTE REFRESHメッセージ

「ROUTE REFRESHメッセージ」は、経路更新が必要な場合に経路の再要求のために利用するメッセージです。

このメッセージは、OPENメッセージのOPTION PRAMフィールドを利用します。

エラー通知のためのNOTIFICATIONメッセージ

「NOTIFICATIONメッセージ」は「BGPピア間でエラー検知時に送信されピアを切断」します。

メッセージ内容は、Error Code、Subcodeで各エラー理由を表記します。

数が多いので、テーブル表記は割愛します

最後に

今回は、BGPの基本的な部分についてまとめました。

この内容は、以下の本がとてもわかりやすくまとめられているのでおすすめです。

次回は、BGPのフィルタリングや経路集約について投稿する予定です。

  • URLをコピーしました!

この記事を書いた人

目次