| 確認 |
IBGPの特徴は,「IBGPで受け取った経路情報は,他のIBGPルーターへ流さない」という点です。
そのため,「全IBGPルーターが1ホップでそのほかの全ルーターに経路を配布できるように,フルメッシュでピアを張る」というのが基本になります。
でもこの方法は,ルーターの数が増えるとピアの数が増えてしまうという,弱点があります。
そこで,「ルートリ・フレクション」というテクニックを使います。
●IBGPの特徴
ここで,IBGPの特徴を再確認しておきます。
BGPで受け取る経路情報の数は膨大なので,IGPに再配布しているととても追いつきません。
そこで使うのがIBGPです。
IBGPを使うと,BGPで受け取った経路情報を,自AS内にいるほかのルーターにそのまま伝えることができます。
こうして,自AS内に経路情報を通過(トランジット)させるわけです。
IBGPの特徴は以下です。
【IBGPの特徴】
・BGP同期がある
→他ASに自分(自AS)の知らない経路情報を送らない(IOS12.2(8)T以降はデフォルトでオフ)
・ネクスト・ホップを変えない
→ネクスト・ホップは常に,他ASの入り口のルーターになる
・ループバックでピアを張る
→インタフェースが落ちてもピアが落ちないようにするため
・IBGPで受け取った経路情報は他のIBGPルーターに通知しない(BGPスプリット・ホライズン)
→IBGPによる経路情報のループを防ぐため
このうち,「BGP同期」と「ネクスト・ホップを変えない」については,「BGP同期」の回で解説しました。
なので今回は,それ以外のところに関する部分を見ていきます。
●設定の確認(ループバックでピアを張る)
IBGPでは,ループバック・インタフェース同士でピアを張るのが一般的です。
相手のインタフェースのアドレスを指定してピアを張る場合,インタフェースが落ちたらピアも消えてしまいます。
そこで,落ちない論理的インタフェースであるループバック・インタフェースに対してピアを設定します。
これは,AS内に,ピア・ルーターに到達する経路が複数ある場合に使えるテクニックです。
(AS内ではIGPが動いているので,だいたい経路が冗長化されています。)
一方EBGPでは,1対1接続が一般的のため,インタフェースのアドレス同士でピアを張るのが一般的です。
ループバックでピアを張るには,ピアを張る際に,「自分のループバックはこれです」と宣言してやります。
例えば,RouterBがRouterCにピアを張るときに,以下のように設定します。
neighbor 3.3.3.3 remote-as 200
neighbor 3.3.3.3 update-source
Loopback0
これに対してRouterCがRouterBに張るピアは,以下のように設定します。
neighbor 2.2.2.2 remote-as 200
neighbor 2.2.2.2 update-source
Loopback0
こうすると,RouterBとRouterC同士で,ループバック・アドレスを使ったピアが張られます。
今回の設定では,RouterBとRouterC,RouterCとRouterDで,ループバックを使ってピアを張っています。
●動作の確認(ルート・リフレクタ設定前)
次に,「IBGPで受け取った経路情報は,他のIBGPルーターに渡さない」について見てみます。
(この時点では,ルート・リフレクタ関連のコマンドはまだ入れていません。)
RouterAからBGPで経路情報を流します。
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
2.2.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
*> 1.1.1.0/24 192.168.1.1 0
0 100 i
RouterBにはきちんと流れてきていますね。
では,次のRouterCはどうでしょうか。
RouterC#show ip bgp
BGP table version is 2, local
router ID is
3.3.3.3
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
RouterCにもきちんと流れてきています。
左のステータスコードには,経路情報をIBGPで受信したことを示す「i」が記されています。
IBGPで流れてきたので,ネクスト・ホップもそのままですね。
では,RouterCの先にあるRouterDはどうでしょうか。
RouterD#show ip bgp
RouterD#
BGPテーブルには何も表示されません。
BGPで経路情報が来ていないからですね。
これは,「IBGPで受け取った経路情報は,他のIBGPルーターに渡さない」というルールがあるからです。
EBGPではAS-PATHを使ってループを検出できますが,IBGPは一つのAS内のお話なので,この方法が使えません。
なので,こうしたループ防止のルールがあるわけです。
●動作の確認(ルート・リフレクタ設定後)
RouterDまでBGPで経路情報を運ぶには,新たにRouterBとRouterDでIBGPピアを張ればOKです。
でもここは,ピア数を減らすために,「ルート・リフレクタ」を使いましょう。
ルート・リフレクタになっているルーターは,経路情報を受け取とると,ルート・リフレクタ・クライアントに設定してあるルーターに経路情報を転送(反射:reflection)します。
設定は,ルート・リフレクタにするルーターにroute-reflector-cliantコマンドを入れて,ルート・リフレクタ・クライアントのアドレスを指定すればOKです。
ここでは,RouterCをルート・リフレクタにして,RouterBとRouterDをルート・リフレクタ・クライアントにします。
RouterC(config-router)#neighbor 2.2.2.2 route-reflector-client
00:38:05: %BGP-5-ADJCHANGE: neighbor
2.2.2.2
Down RR client config change
00:38:33: %BGP-5-ADJCHANGE: neighbor
2.2.2.2
Up
RouterC(config-router)#neighbor 4.4.4.4 route-reflector-client
00:39:07: %BGP-5-ADJCHANGE: neighbor
4.4.4.4
Down RR client config change
00:39:35: %BGP-5-ADJCHANGE: neighbor
4.4.4.4
Up
いずれのピアもいったんダウンして,再びアップしました。
RouterDのBGPテーブルを見てみましょう。
RouterD#show ip bgp
BGP table version is 4, local
router ID is
4.4.4.4
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
経路情報が来ました。
RouterBが受け取った経路情報がルート・リフレクタであるRouterCに伝わり,それが(反射して)RouterDまで伝わったわけです。
RouterDのルーティング・テーブルを確認すると,きちんと経路情報が登録されています。
RouterD#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:13:44
2.0.0.0/32 is subnetted,
1 subnets
O 2.2.2.2 [110/129] via
192.168.3.1,
02:33:35, Serial0
3.0.0.0/32 is subnetted,
1 subnets
O 3.3.3.3 [110/65] via
192.168.3.1,
02:33:35, Serial0
4.0.0.0/32 is subnetted,
1 subnets
C 4.4.4.4 is directly connected,
Loopback0
O 192.168.1.0/24 [110/192]
via 192.168.3.1,
02:33:35, Serial0
O 192.168.2.0/24 [110/128]
via 192.168.3.1,
02:33:35, Serial0
C 192.168.3.0/24 is directly
connected,
Serial0
RouterCでshow ip bgp neighborsコマンドの表示を見ると,「Route-Reflector Client」という表示があるのがわかります(赤字の部分)。
RouterC#show ip bgp neighbors
BGP neighbor is 2.2.2.2, remote
AS 200,
internal link
BGP version 4, remote router
ID 2.2.2.2
BGP state = Established, up
for 00:07:00
Last read 00:00:00, 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: 2 2
Notifications: 0 0
Updates: 0 2
Keepalives: 29 29
Route Refresh: 0 0
Total: 31
33
Default minimum time between
advertisement
runs is 5 seconds
For address family: IPv4 Unicast
BGP table version 4, neighbor
version 4
Index 1, Offset 0, Mask 0x2
Route-Reflector Client
Sent
Rcvd
Prefix activity:
----
----
Prefixes Current: 0 1
(Consumes 48 bytes)
Prefixes Total:
0 1
Implicit Withdraw: 0 0
Explicit Withdraw: 0 0
Used as bestpath:
n/a 1
Used as multipath: n/a 0
(途中略)
BGP neighbor is 4.4.4.4, remote
AS 200,
internal link
BGP version 4, remote router
ID 4.4.4.4
BGP state = Established, up
for 00:06:26
Last read 00:00:25, 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: 2 2
Notifications: 0 0
Updates: 2 0
Keepalives: 27
27
Route Refresh: 0 0
Total: 31 29
Default minimum time between
advertisement
runs is 5 seconds
For address family: IPv4 Unicast
BGP table version 4, neighbor
version 4
Index 2, Offset 0, Mask 0x4
Route-Reflector Client
Sent
Rcvd
Prefix activity:
----
----
Prefixes Current: 1 0
Prefixes Total:
1 0
Implicit Withdraw: 0 0
Explicit Withdraw: 0 0
Used as bestpath:
n/a 0
Used as multipath: n/a 0
(以下略)
ルート・リフレクタであるRouterCが,RouterBとRouterDをルート・リフレクタ・クライアントとして認識していることが,これで確認できました。
こうして,ピア数を押さえつつIBGPでの疎通を図るのが,ルート・リフレクタの機能というわけです。
|
|