pikesaku’s blog

個人的な勉強メモです。記載内容について一切の責任は持ちません。

BGP調査メモ

用語

クラス

IPアドレスをカテゴリ分類する考え。先頭ビットのパターンで分類

クラス 先頭ビット IPアドレス範囲 1NWのホスト数 プライベートアドレス
A 0 0.0.0.0〜127.255.255.255 16777214(2の24乗-2) 10.0.0.0〜10.255.255.255
B 10 128.0.0.0〜191.255.255.255 65534(2の12乗-2) 172.16.0.0〜172.31.255.255
C 110 192.0.0.0〜223.255.255.255 254(2の8乗-2) 192.168.0.0〜192.168.255.255
D 1110 224.0.0.0〜239.255.255.255 マルチキャスト -
E 1111 240.0.0.0〜255.255.255.255 実験用 -

 

CIDR(Classless Inter-Domain Routing)

クラスレスアドレッシング
クラスに縛られずネットワークアドレスを定義
 

VLSM(Variable-Length Subnet Mask)

クラスレスアドレッシングを使ったサブネット分割
 

プリフィクス

クラスレスアドレッシングのネットワークアドレスのこと

ネットワーク表記

プリフィクス表記→192.168.0.0/24
サブネットマスク表記→255.255.255.0

AS(Autonomous System:自律システム)

共通のポリシーや管理下で運用されるネットワークの集合体
1〜65535の範囲でNICが管理。
64512以降はプライベートで利用可能
ISPやキャリア等が該当

IX(Internet Exchange)

ISPやキャリア等が相互接続してAS間通信を行う接続ポイント
双方の配下のNW情報のみをやりとり。
インターネット等の他ネットワークへの経路はやりとりされない。※トランジットでない(後述)。

EGPとIGP

EGPはAS間、IGPはAS内のルーティングプロトコル
EGP例はBGP、IGP例はRIP、OSPF

ルーティングプロトコルのポイント

主に以下情報を伝達

プリフィスク
NextHop
メトリクス

 →複数経路がある時の経路選択する為の情報、ループを検知する為の情報等

RIPとの比較

プロトコル 方式 伝播方法 NextHop VLSM対応 パス選定メトリクス 隣接ルーターの場所 ループ対策
RIP ディスタンスベクタ 520/udpのブロードキャスト(V1)
定期送信
IPヘッダの送信元アドレス(V1)
ペイロードに情報格納(V2)
未対応(V1)
対応(V2)
ホップ数 同NW内
※ブロードキャスト伝播だし
スプリットホライズン
ポイズンリバース
BGP パスベクトル 179/tcp・ユニキャストで隣接ルータとピア接続
ピア確立後、変更時に更新
ペイロードに情報格納 対応 ASパス長 別NWの場合もあり(マルチホップ)
但し該当NWへの経路がルーティングテーブルに存在する必要あり
APパス内重複ASチェック(EBGP)
IBGPスプリットホライズン(IBGP)※後述

BGPメモ

トランジットASと非トランジットAS

トランジットAS→外部ASに自AS以外の経路情報も伝播。外部ASが経路情報に含まれるNWへ通信する際、自ASを経由する。
非トランジットAS→外部ASに自ASの経路情報のみ伝播。

基本動作

ピア確立→経路情報交換→生存監視(KeepAlive)/変更時に経路情報通知

ピア確立

双方より確立要求。先に確立したものが有効に。
PASSIVEモードの場合、要求せず受け身。

BGPヘッダ

フォーマット。以下URLより引用
【図解】BGPの広報シーケンスとメッセージ種類/フォーマット,UPDATEのタイミング | SEの道標
https://milestone-of-se.nesuke.com/wp-content/uploads/2020/04/bgp-seq-07.png.webp
Typeはペイロードに格納されるメッセージ種別(Open、Update、KeepAlive等)の識別情報

OPENメッセージ

TCP確立後のピア接続確立する為のBGPレベルのネゴシエーション
バージョン、ルーターID、AS番号、ホールドタイム等を通知

フォーマット。以下URLより引用
【図解】BGPの広報シーケンスとメッセージ種類/フォーマット,UPDATEのタイミング | SEの道標
https://milestone-of-se.nesuke.com/wp-content/uploads/2020/04/bgp-seq-03.png.webp

UPDATEメッセージ

経路情報(プリフィクス、NextHop、メトリクス等)・取り消し経路の情報を交換

フォーマット。以下URLより引用
【図解】BGPの広報シーケンスとメッセージ種類/フォーマット,UPDATEのタイミング | SEの道標
https://milestone-of-se.nesuke.com/wp-content/uploads/2020/04/bgp-seq-04.png.webp
Paht Attribute(パス属性)がポイント。複数の属性が格納される。

KEEPALIVEメッセージ

ヘッダのみ

UPDATEメッセージでやりとりされるパス属性のポイント

タイプが複数あり。重要なタイプは以下。

タイプ番号 属性 説明 必須 BGPルーターサポート要否
1 ORIGIN 経路情報の生成元を示す
0: IGP(AS内部)
1: EGP(AS外部)
2: 上記以外
必須
2 AS_PATH 経由するAS番号のリスト 必須
3 NEXT_HOP ネクストホップ 必須
4 MULTI_EXIT_DISC(MED) 外部AS→自ASへのパス制御で利用 必須でない オプション
5 LOCAL_PREF 自AS→外部ASへの経路制御で利用 必須でない

ORIGIN、AS_PATH、NEXT_HOPはUPDATEメッセージに必須で特に重要!!

2種類のタイプあり

AS間接続はEBGP、AS内接続はIBGPで動作が異なる。
動作の違いは以下の通り。

タイプ ピア間接続NW NEXTHOP要件 AS_PATHにAS追加 LOCAL_PREF属性 MED属性伝播 自NW以外の伝播
EBGP 原則同NW※1 原則同NW※1
原則自ピアソースIPに置き換え※2
必須 NG NG
IBGP 別NW可 同NWでなくても可
但し到達可能でないと破棄
NG 必須 NG※3

※1 EIGPマルチホップ構成では可能。但しNEXTHOPが到達可能でなければ破棄。
※2 アナウンス先とNEXTHOPアドレス(アナウンス元のピアソースIP)が同NWの場合、自ピアソースに書き換えしない。
 ルータA,B,Cが同一NWに接続
 ルータA→ルータB→ルータCで伝播される場合
 ルータBはNEXTHOPを自ピアソースIPに書き換えずにルータCに伝播。(NEXTHOPはルータAのピアソースIPのまま)
※3 IBGPスプリットホライゾン
IBGPピアからの受信ルートを他のIBGPピアにはアドバタイズしない。ルーティングプロトコルによるループ問題は、隣接ノードからアドバタイズされた経路情報を、他にアドバタイズする事が原因
https://xtech.nikkei.com/it/article/COLUMN/20100729/350807/
EBGPはピアからのアップデートのAS_PATHに自AS番号がある場合、ルーブを検知し破棄するためループは起きない。IBGPはAS_PATH更新しない為、ループ対策必要。
https://atmarkit.itmedia.co.jp/ait/spv/1209/13/news147.html
 IBGPでは隣の隣のルータの経路情報を知るためフルメッシュ構成 or ルートリフレクタ、BGPコンフェデレーションの対策が必要。
 詳細は以下URL参照 BGPスプリットホライズンとは
 【図解】iBGPとeBGPの違い,スプリットホライズンとフルメッシュ,NEXT_HOP属性とnexthop-selfの関係 | SEの道標

ベストパス選定プロセス

①NEXTHOP到達性の確認

 IBGPの場合、IGP(OSPF等)で事前にNEXTHOPへのルーティング定義が必要

②LOCAL_PREF属性の値比較

 値が大きい方が優先

③AS_PATH属性の比較

 値が小さい方が優先

④ORIGIN属性の比較

 値が小さい方が優先
 0(IGP)→1(BGP)→2(他)

⑤MED属性の値の比較

 値が小さい方が優先

ピアタイプを比較

 EBGPがIBGPより優先される。
 ※EBGP or IBGPか?は、OPENメッセージ内でAS番号を交換してるのでルータは判断できるのだろう。

NEXTHOPまでのIGPコスト比較

 値の小さい方を有線

ルータIDの比較

 より若いIDが有線

マルチパス機能

BGPでなくルータによる機能
ベストパス選定プロセスで、どこかの時点まで同一優先度のパスが複数ある場合、複数パスを使った負荷分散ができる。
但し、BGP的にはベストパスとしては1つのみを選出。