Border Gateway Protocol Version 4 (BGP4) は、 RFC 1771 で記述されている動的ルーティングプロトコルです。 BGP4 を使うと、到達性情報すなわち経路テーブルを、 他の BGP4 ノードに配布できます。EGP か IGP が使え、 IGP モードでは各ノードに固有の Autonomous System (AS) 番号がつきます。 BGP4 は、クラスレスインターネットドメインルーティング (CIDR) と、経路集合 (複数の経路をひとつにまとめる) とをサポートします。
次のネットワーク図を以降での例として用います。 AS 1 と 50 には他にも近隣ノードがありますが、 ここでは 1 と 50 だけを私たちの近隣として設定すれば良いだけです。 この例では、各ノードはトンネルを経由して通信しますが、 これは必ずしも必要ではありません。
注意: この例での AS 番号は予約済みですので、 公式な接続を設定する場合は、RIPE から AS を取得してください。
-------------------- | 192.168.23.12/24 | | AS: 23 | -------------------- / \ / \ / \ ------------------ ------------------ | 192.168.1.1/24 |-------| 10.10.1.1/16 | | AS: 1 | | AS: 50 | ------------------ ------------------ |
次の設定は 192.168.23.12/24 のものです。 他のノードにあわせるのも簡単でしょう。
まずホスト名、パスワード、デバッグスイッチなどの一般情報から始まります。
! hostname hostname anakin ! login password password xxx ! enable password (super user mode) enable password xxx ! path to logfile log file /var/log/zebra/bgpd.log ! debugging: be verbose (can be removed afterwards) debug bgp events debug bgp filters debug bgp fsm debug bgp keepalives debug bgp updates |
プライベートネットワーク (RFC 1918) の再配布を制限するための アクセスリストです。
! RFC 1918 networks access-list local_nets permit 192.168.0.0/16 access-list local_nets permit 172.16.0.0/12 access-list local_nets permit 10.0.0.0/8 access-list local_nets deny any |
次のステップは AS ごとの設定です。
! Own AS number router bgp 23 ! IP address of the router bgp router-id 192.168.23.12 ! announce our own network to other neighbors network 192.168.23.0/24 ! advertise all connected routes (= directly attached interfaces) redistribute connected ! advertise kernel routes (= manually inserted routes) redistribute kernel |
'router bgp' ブロックには、必ずルータが接続する近隣のリストが含まれます。
neighbor 192.168.1.1 remote-as 1 neighbor 192.168.1.1 distribute-list local_nets in neighbor 10.10.1.1 remote-as 50 neighbor 10.10.1.1 distribute-list local_nets in |
注意: vtysh はマルチプレクサで、 Zebra インターフェースをすべてひとまとめに接続します。
anakin# sh ip bgp summary BGP router identifier 192.168.23.12, local AS number 23 2 BGP AS-PATH entries 0 BGP community entries Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 10.10.0.1 4 50 35 40 0 0 0 00:28:40 1 192.168.1.1 4 1 27574 27644 0 0 0 03:26:04 14 Total number of neighbors 2 anakin# anakin# sh ip bgp neighbors 10.10.0.1 BGP neighbor is 10.10.0.1, remote AS 50, local AS 23, external link BGP version 4, remote router ID 10.10.0.1 BGP state = Established, up for 00:29:01 .... anakin# |
近隣から受けとった経路を見てみましょう。
anakin# sh ip ro bgp Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF, B - BGP, > - selected route, * - FIB route B>* 172.16.0.0/14 [20/0] via 192.168.1.1, tun0, 2d10h19m B>* 172.30.0.0/16 [20/0] via 192.168.1.1, tun0, 10:09:24 B>* 192.168.5.10/32 [20/0] via 192.168.1.1, tun0, 2d10h27m B>* 192.168.5.26/32 [20/0] via 192.168.1.1, tun0, 10:09:24 B>* 192.168.5.36/32 [20/0] via 192.168.1.1, tun0, 2d10h19m B>* 192.168.17.0/24 [20/0] via 192.168.1.1, tun0, 3d05h07m B>* 192.168.17.1/32 [20/0] via 192.168.1.1, tun0, 3d05h07m B>* 192.168.32.0/24 [20/0] via 192.168.1.1, tun0, 2d10h27m anakin# |