Skip to content

インターネットルーティング入門 BGP

  • eBGP
    • AS 外の BGP スピーカと経路情報のやり取りを行う
    • AS 間を接続するときは何らかの物理媒体をとうして直接つなぐ
    • 通常は隣接する BGP スピーカ感でピアを設定する
  • iBGP
    • eBGP で得た自分以外の AS からの経路情報をさらに自分の AS 内の他の BGP スピーカに伝えるときに使われる
    • 複数に複数のルータが入るような離れた BGP スピーカ間でもピアを張ることができる

離れた場所にいる BGP スピーカ同士がピアを貼るためには IP 通信が可能である必要がある そのため各各の BGP スピーカが持つ IP アドレスが OSFP などの IGP によって伝搬されている必要がある => iBGP のピアを張るための前提として OSPF などの IGP が設定されている必要がある IGP を設定していないと iBGP のピア先のアドレスがどこにあるかわからない iBGP は原則として AS 内のすべての BGP スピーカとフルメッシュでピアを貼っておく必要がある iBGP では経路のループを防ぐため、ある iBGP ピアを通してもらった経路情報を他の iBGP スピーカには伝搬しない

  • 異なる AS 間での接続
  • 異なる AS 間なので直結されてる必要がある
router bgp 65001 (remote-as と異なるAS)
neighbor 192.168.10.2 remote-as 65002 (router bgp と異なるAS)
router bgp 65002
neighbor 192.168.10.1 remote-as 65001
  • 同一 AS 内で経路情報の中継を行うために設定
  • ルータ間が直結である必要はない
  • ループバックアドレスは OSPF などの IGP にながれてなくてはならない
  • 論理的にフルメッシュである必要がある

ルータ 1 lookback: 172.16.0.1 ルータ 2 lookback: 172.16.1.1

router bgp 65001
neighbor 172.16.1.1 remote-as 65001
neighbor 172.16.1.1 update-source loopback0
router bgp 65001 (remote-as と同じAS)
neighbor 172.16.0.1 remote-as 65001 (router bgp と同じAS)
neighbor 172.16.0.1 update-source loopback0
interface vlan221
ip address x.x.x.x/31
!
interface vlan223
ip address x.x.x.x/31
!
bgp extended-asn-cap
!
router bgp 4206353202
bgp router-id x.x.x.x
bgp always-compare-med
max-paths ebgp 2
bgp bestpath as-path multipath-relax
bgp scan-time 1
redistribute kernel route-map NO_PREPEND
timers bgp 1 3
neighbor x.x.x.x remote-as 4206353022
neighbor x.x.x.x update-source vlan221
neighbor x.x.x.x as-origination-interval 1
neighbor x.x.x.x advertisement-interval 0
neighbor x.x.x.x remote-as 4206353022
neighbor x.x.x.x update-source vlan223
neighbor x.x.x.x as-origination-interval 1
neighbor x.x.x.x advertisement-interval 0

iBGP でなんでループバック使うの

Section titled “iBGP でなんでループバック使うの”

物理インタフェースに依存しない論理インタフェースなので正常動作している限り必ず生きている BGP ピアのアドレスとして使用することで安定した経路情報のやり取りができる ループバックインタフェース同士で iBGP のピアを張ると経路冗長ができていれば一方が故障してももう一方が生きているので iBGP ピアが張ったままになる 物理で張っているとダウンした場合そこに付与されていた IP アドレスに関する情報がネットワーク内に流れなくなるので iBGP ピアも落ちてしまう iBGP ピアはループバック同士で張るのが常道

BGP と OSPF でやり取りされる情報の違い

Section titled “BGP と OSPF でやり取りされる情報の違い”
  • OSPF
    • 設定されたルータが LSA と呼ばれるリンク情報をネットワーク内に伝搬させ自分持っているネットワーク情報を他のルータに伝える
    • 自分の持っている情報を伝え合うことでトポロジに関するデータベースを作る
    • トポロジ情報をもとに最適な経路を選択しルーティングテーブルを作る
    • 常に最短経路で通信を行うために障害が発生した場合はその情報を伝え、全ルータでトポロジの再計算をする
  • BGP
    • 宛先 IP アドレスプレフィックス情報である NLRI とそれに付随したパス属性をやりとり
    • トポロジのデータベースは持たず、経路が生きているか死んでいるかのみのやりとり
    • 経路の存在の有無さえわかれば相手の ISP 内のトポロジ情報を把握する必要がないため
    • 経路選択は付随するパス情報の値で決定

BGP と OSPF の情報交換契機の違い

Section titled “BGP と OSPF の情報交換契機の違い”
  • OSPF
    • 情報の変化を検知すると全ルータで一斉にトポロジの再計算が行われる
    • 大規模なネットワークの場合計算量が多くなりネットワークの安定性が問題になることがある
    • 30 分に一度定期的に自分の持っている経路情報をネットワーク全体に伝えて最新の情報を保つようにする
  • BGP
    • 障害によって経路が消えた場合には他の BGP スピーカにも伝える
    • トポロジを表すデータベースはないので該当の情報が削除されるだけでデータベース全体の再計算は行われない
    • 定期的な全情報更新はなく状態変化があったときのみ
タイプコードパス属性のいみ属性タイプ既定値 or サブタイプ既定値の意味RFC
1ORIGINWell-known mandatory0IGPRFC 1771
1EGPRFC 1771
2INCOMPLETERFC 1771
2AS_PATHWell-known mandatory1AS_SETRFC 1771
2AS_SEQUENCERFC 1771
3AS_CONFED_SEQUENCERFC 3065
4AS_CONFED_SETRFC 3065
3NEXT_HOPWell-known mandatory--RFC 1771
4MULTI_EXIT_DISKOptinal non-transitive--RFC 1771
5LOCAL_PREFWell-known discretionary--RFC 1771
6ATOMIC_AGGREGATEWell-known discretionary--RFC 1771
7AGGREGATOROptional transitive--RFC 1771
8COMMUNITYOptional transitive0xFFFFFF01NO_EXPORTRFC 1997
0xFFFFFF02NO_ADVERTISERFC 1997
0xFFFFFF03NO_EXPORT_SUBCONFEDRFC 1997
9ORIGINATOROptinal non-transitive--RFC 2796
10CLUSTER_LISTOptinal non-transitive--RFC 2796
14MP_REACH_NLRIOptinal non-transitive--RFC 2858
15MP_UNREACH_NLRIOptinal non-transitive--RFC 2858
16EXTCOMMUNITYOptional transitive--Internet-draft
カテゴリサポート
Well-known mandatory全 BGP スピーカがサポートする必要がある
Well-known discretionary全 BGP スピーカがサポートする必要がある
Optinal transitive自分がサポートしていないときでも他の BGP スピーカに伝える
Optinal non-transitive自分がサポートしていないときは他の BGP には伝える必要がない