| 確認 |
プロバイダ同士で経路情報をやりとりするときに使われるのがBGPです。
膨大な数の経路情報を,効率的かつ柔軟にやりとりする機能を持っています。
BGPの基本的な設定を見てみましょう。
●設定の流れ
BGPを使って経路情報を流すだけなら,そんなに難しくありません。
BGPの設定の流れは以下の3ステップです。
1.ルーターでBGPプロセスを有効にする(router
bgpコマンド)
2.ピアを確立するネイバーを指定する(neighborコマンド)
3.通知する経路情報を指定する(networkコマンド)
この設定では,経路情報をほかのASに流してみましょう。
ちなみに「AS」は「自律システム」などとよく言われますが,「プロバイダ」と読み替えてもOKです。
●設定の確認
最初に,RouterAとRouterB同士,RouterBとRouterC同士で,BGP接続を確立しましょう
(ルーター同士でBGP接続することを「ピアを張る」と言います)。
まずは,RouterAを設定します。
BGPのプロセスをAS100で有効にして,AS200にいる192.168.1.2(RouterB)とピアを張ることを宣言します。
RouterA(config)#router bgp 100
RouterA(config-router)#neighbor 192.168.1.2 remote-as 200
次に,RouterCを設定します。
BGPのプロセスをAS200で有効にして,AS200にいる192.168.2.1(RouterC)とピアを張ることを宣言します。
RouterC(config)#router bgp 200
RouterC(config-router)#neighbor 192.168.2.1 remote-as 200
最後が,RouterBの設定です。
RouterA(192.168.1.1)に対してピアを張ります。
RouterB(config)#router bgp 200
RouterB(config-router)#neighbor 192.168.1.1 remote-as 100
00:18:03: %BGP-5-ADJCHANGE: neighbor
192.168.1.1
Up
ネイバーが確立したことを知らせるメッセージが表示されました。
次に,RouterC(192.168.2.2)に対してピアを張ります。
RouterB(config)#router bgp 200
RouterB(config-router)#neighbor 192.168.2.2 remote-as 200
00:19:10: %BGP-5-ADJCHANGE: neighbor
192.168.2.2
Up
ネイバーが確立したことを知らせるメッセージが表示されました。
これで,RouterAとRouterB,RouterBとRouterCの,二つのピアが確立したことになります。
●動作の確認
ピアが張れたか確認してみましょう。
RouterBのネイバーを確認します。
長々と表示が出ますが,赤字の部分に注目します。
RouterB#show ip bgp neighbors
BGP neighbor is 192.168.1.1, remote AS 100,
external link
BGP version 4, remote router
ID 1.1.1.1
BGP state = Established, up for 00:02:48
Last read 00:00:48, hold time
is 180, keepalive
interval is 60 seconds
Neighbor capabilities:
Route refresh: advertised
and received(old
& new)
Address family IPv4 Unicast:
advertised
and received
Message statistics:
InQ depth is 0
OutQ depth is 0
Sent Rcvd
Opens: 1 1
Notifications: 0 0
Updates: 0 0
Keepalives: 5 5
Route Refresh: 0 0
Total: 6 6
Default minimum time between
advertisement
runs is 30 seconds
(途中略)
BGP neighbor is 192.168.2.2, remote AS 200,
internal link
BGP version 4, remote router
ID 192.168.2.2
BGP state = Established, up for 00:01:50
Last read 00:00:50, hold time
is 180, keepalive
interval is 60 seconds
Neighbor capabilities:
Route refresh: advertised
and received(old
& new)
Address family IPv4 Unicast:
advertised
and received
Message statistics:
InQ depth is 0
OutQ depth is 0
Sent Rcvd
Opens: 1 1
Notifications: 0 0
Updates: 0 0
Keepalives: 4 4
Route Refresh: 0 0
Total: 5 5
Default minimum time between
advertisement
runs is 5 seconds
(以下略)
表示前半がRouterA(192.168.1.1)とのピアで,表示後半がRouterC(192.168.2.2)とのピアの状態です。
いずれのピアも「BGP state = Established」となっており,ピアが正常に確立していることがわかります。
RouterAとのピアにある「external link」は,EBGPのピアであることを示しています。
RouterCとのピアにある「internal link」は,IBGPのピアであることを示しています。
これは,neighborコマンドでピアを張るときに,remote-asに自分のASと違う番号を指定すれば,自動的にEBGPが確立するからです。
逆に,remote-asに自分のASと同じ番号を指定すれば,自動的にIBGPが確立します。
RouterBのBGPテーブルを見てみましょう。
RouterB#show ip bgp
RouterB#
何も表示されません。
これは,BGPで何も経路情報を流していないからです。
このことは,上のshow ip bgp neighborsの表示で,「Updates:」の項目が「0」になっていることからもわかります(青字の部分)。
では,RouterAからBGPで経路情報を流してみましょう。
networkコマンドを使って,1.1.1.0/24の経路情報を流します。
RouterA(config)#router bgp 100
RouterA(config-router)#network 1.1.1.0 mask 255.255.255.0
RouterBのBGPテーブルはどうなったでしょうか。
RouterB#show ip bgp
BGP table version is 2, local
router ID is
192.168.2.1
Status codes: s suppressed, d
damped, h history,
* valid, > best, i - internal,
r RIB-failure,
S Stale
Origin codes: i - IGP, e - EGP,
? - incomplete
Network Next Hop Metric
LocPrf Weight Path
*> 1.1.1.0/24 192.168.1.1 0
0 100 i
BGPテーブルに,1.1.1.0/24の経路情報が登録されました。
「*」印はこの経路情報が有効であることを示すステータスコードで,「>」印はベストパスを示しています。
(ベストパスの経路情報が,ルーティング・テーブルに記載されます。)
RouterBのネイバーを再度見てみましょう。
RouterB#show ip bgp neighbors
BGP neighbor is 192.168.1.1, remote
AS 100,
external link
BGP version 4, remote router
ID 1.1.1.1
BGP state = Established, up
for 00:06:34
Last read 00:00:33, hold time
is 180, keepalive
interval is 60 seconds
Neighbor capabilities:
Route refresh: advertised
and received(old
& new)
Address family IPv4 Unicast:
advertised
and received
Message statistics:
InQ depth is 0
OutQ depth is 0
Sent Rcvd
Opens: 1 1
Notifications: 0 0
Updates: 0 1
Keepalives: 9 9
Route Refresh: 0 0
Total: 10 11
Default minimum time between
advertisement
runs is 30 seconds
(途中略)
BGP neighbor is 192.168.2.2, remote
AS 200,
internal link
BGP version 4, remote router
ID 192.168.2.2
BGP state = Established, up
for 00:05:37
Last read 00:00:37, hold time
is 180, keepalive
interval is 60 seconds
Neighbor capabilities:
Route refresh: advertised
and received(old
& new)
Address family IPv4 Unicast:
advertised
and received
Message statistics:
InQ depth is 0
OutQ depth is 0
Sent Rcvd
Opens: 1 1
Notifications: 0 0
Updates: 1 0
Keepalives: 8 8
Route Refresh: 0 0
Total: 10 9
Default minimum time between
advertisement
runs is 5 seconds
(以下略)
「Updates:」の項目に注目すると,RouterAとのピアは「Rcvd」(受信)が「1」に,RouterCとのピアは「Sent」(送信)が「1」になりました。
RouterAから経路情報を受け取って,RouterCに送ったことがわかります。
次に,RouterCのBGPテーブルを見てみます。
RouterC#show ip bgp
BGP table version is 1, local
router ID is
192.168.2.2
Status codes: s suppressed, d
damped, h history,
* valid, > best, i - internal,
r RIB-failure,
S Stale
Origin codes: i - IGP, e - EGP,
? - incomplete
Network Next Hop Metric
LocPrf Weight Path
* i1.1.1.0/24 192.168.1.1 0 100 0
100 i
ステータスコードに,ベストパスを示す「>」印が付いていません。
そのため,ルーティング・テーブルには,1.1.1.0/24の経路情報は載りません。
RouterC#show ip route
Codes: C - connected, S - static,
R - RIP,
M - mobile, B - BGP
D - EIGRP, EX - EIGRP
external, O
- OSPF, IA - OSPF inter area
N1 - OSPF NSSA external
type 1, N2
- OSPF NSSA external type 2
E1 - OSPF external type
1, E2 - OSPF
external type 2
i - IS-IS, su - IS-IS
summary, L1
- IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area,
* - candidate
default, U - per-user static
route
o - ODR, P - periodic
downloaded static
route
Gateway of last resort is not
set
C 192.168.2.0/24 is directly
connected,
Serial0
BGPで経路情報は受け取ったけれど,それをルーティング・テーブルに反映していないわけです。
なぜでしょうか?
「show ip bgp」のあとに経路情報のアドレスを入力すると,その経路情報の詳しく調べることができます。
RouterC#show ip bgp 1.1.1.0
BGP routing table entry for 1.1.1.0/24,
version
0
Paths: (1 available, no best
path)
Not advertised to any peer
100
192.168.1.1 (inaccessible) from 192.168.2.1 (192.168.2.1)
Origin IGP, metric 0, localpref
100,
valid, internal
「192.168.1.1 (inaccessible)」と表示されています。
これは,192.168.1.1に到達できないという意味です。
192.168.1.1というのは,この経路情報(1.1.1.0/24)のネクストホップで,RouterAのアドレスです。
ネクストホップがRouterAになっているのは,「IBGPで経路情報を送るときにはネクストホップが変わらない」というルールがあるためです。
そしてBGPでは,ネクストホップに到達できないと,経路情報として採用されません。
なので,経路情報を受信しても,ベストパスを示す「>」印が付かなかったのです。
そこで,192.168.1.0/24の経路情報をスタティックで追加します。
RouterC(config)#ip route 192.168.1.0 255.255.255.0 192.168.2.1
RouterCのBGPテーブルを見てみましょう。
RouterC#show ip bgp
BGP table version is 2, local
router ID is
192.168.2.2
Status codes: s suppressed, d
damped, h history,
* valid, > best, i - internal,
r RIB-failure,
S Stale
Origin codes: i - IGP, e - EGP,
? - incomplete
Network Next Hop Metric
LocPrf Weight Path
*>i1.1.1.0/24 192.168.1.1 0 100 0
100 i
1.1.1.0/24の経路情報のステータスコードに,ベストパスを示す「>」印が付きました。
RouterCのルーティング・テーブルを見てみます。
RouterC#show ip route
Codes: C - connected, S - static,
R - RIP,
M - mobile, B - BGP
D - EIGRP, EX - EIGRP
external, O
- OSPF, IA - OSPF inter area
N1 - OSPF NSSA external
type 1, N2
- OSPF NSSA external type 2
E1 - OSPF external type
1, E2 - OSPF
external type 2
i - IS-IS, su - IS-IS
summary, L1
- IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area,
* - candidate
default, U - per-user static
route
o - ODR, P - periodic
downloaded static
route
Gateway of last resort is not
set
1.0.0.0/24 is subnetted,
1 subnets
B 1.1.1.0 [200/0] via 192.168.1.1,
00:00:57
S 192.168.1.0/24 [1/0] via
192.168.2.1
C 192.168.2.0/24 is directly
connected,
Serial0
BGPで受信した経路情報を表す,「B」の付いた経路情報が登録されました。
これで,RouterAからRouterCまでBGPで経路情報が流れて来たことが確認できました。
|
|