インターネットルーティング入門 BGP
- eBGP
- AS 外の BGP スピーカと経路情報のやり取りを行う
- AS 間を接続するときは何らかの物理媒体をとうして直接つなぐ
- 通常は隣接する BGP スピーカ感でピアを設定する
- iBGP
- eBGP で得た自分以外の AS からの経路情報をさらに自分の AS 内の他の BGP スピーカに伝えるときに使われる
- 複数に複数のルータが入るような離れた BGP スピーカ間でもピアを張ることができる
iBGP の注意点
Section titled “iBGP の注意点”離れた場所にいる BGP スピーカ同士がピアを貼るためには IP 通信が可能である必要がある そのため各各の BGP スピーカが持つ IP アドレスが OSFP などの IGP によって伝搬されている必要がある => iBGP のピアを張るための前提として OSPF などの IGP が設定されている必要がある IGP を設定していないと iBGP のピア先のアドレスがどこにあるかわからない iBGP は原則として AS 内のすべての BGP スピーカとフルメッシュでピアを貼っておく必要がある iBGP では経路のループを防ぐため、ある iBGP ピアを通してもらった経路情報を他の iBGP スピーカには伝搬しない
Cisco での設定例
Section titled “Cisco での設定例”eBGP の場合
Section titled “eBGP の場合”- 異なる 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 65001iBGP の場合
Section titled “iBGP の場合”- 同一 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 loopback0router bgp 65001 (remote-as と同じAS) neighbor 172.16.0.1 remote-as 65001 (router bgp と同じAS) neighbor 172.16.0.1 update-source loopback0Netscaler(ZebOS)での設定例
Section titled “Netscaler(ZebOS)での設定例”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 0iBGP でなんでループバック使うの
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 |
|---|---|---|---|---|---|
| 1 | ORIGIN | Well-known mandatory | 0 | IGP | RFC 1771 |
| 1 | EGP | RFC 1771 | |||
| 2 | INCOMPLETE | RFC 1771 | |||
| 2 | AS_PATH | Well-known mandatory | 1 | AS_SET | RFC 1771 |
| 2 | AS_SEQUENCE | RFC 1771 | |||
| 3 | AS_CONFED_SEQUENCE | RFC 3065 | |||
| 4 | AS_CONFED_SET | RFC 3065 | |||
| 3 | NEXT_HOP | Well-known mandatory | - | - | RFC 1771 |
| 4 | MULTI_EXIT_DISK | Optinal non-transitive | - | - | RFC 1771 |
| 5 | LOCAL_PREF | Well-known discretionary | - | - | RFC 1771 |
| 6 | ATOMIC_AGGREGATE | Well-known discretionary | - | - | RFC 1771 |
| 7 | AGGREGATOR | Optional transitive | - | - | RFC 1771 |
| 8 | COMMUNITY | Optional transitive | 0xFFFFFF01 | NO_EXPORT | RFC 1997 |
| 0xFFFFFF02 | NO_ADVERTISE | RFC 1997 | |||
| 0xFFFFFF03 | NO_EXPORT_SUBCONFED | RFC 1997 | |||
| 9 | ORIGINATOR | Optinal non-transitive | - | - | RFC 2796 |
| 10 | CLUSTER_LIST | Optinal non-transitive | - | - | RFC 2796 |
| 14 | MP_REACH_NLRI | Optinal non-transitive | - | - | RFC 2858 |
| 15 | MP_UNREACH_NLRI | Optinal non-transitive | - | - | RFC 2858 |
| 16 | EXTCOMMUNITY | Optional transitive | - | - | Internet-draft |
| カテゴリ | サポート |
|---|---|
| Well-known mandatory | 全 BGP スピーカがサポートする必要がある |
| Well-known discretionary | 全 BGP スピーカがサポートする必要がある |
| Optinal transitive | 自分がサポートしていないときでも他の BGP スピーカに伝える |
| Optinal non-transitive | 自分がサポートしていないときは他の BGP には伝える必要がない |