| 確認 |
BGPには,特定の経路情報を識別するための「BGPコミュニティ」という属性があります。
例えば,「これは他ASに通知しない経路情報」とか「これはLOCAL_PREFを50にセットする経路情報」といったポリシーを示す情報として使います。
こうして経路情報に「色付け」をして,経路情報を操作するわけです。
●BGPコミュニティとは?
BGPコミュニティとは,経路情報にCOMMUNITY属性の値をセットすることで,経路情報をポリシーどおりに操作するテクニックです。
COMMUNITY属性は,16進数で00000000〜FFFFFFFFの値で表し,ここに好きな値をセットします。
(ただし,00000000〜0000FFFFとFFFF0000〜FFFFFFFFは予約されているので使えません。)
通常は,上位2オクテットにポリシーが適用されるAS番号を入れ,残りの2オクテットにポリシーを表す数値を入れ,これら二つの値を「:」(コロン)で区切って表します。
例えば,「AS200において経路情報を通知しないというCOMMUNITY属性を666と定義」したなら,COMMUNITY属性にセットする値は「00C8:8029」になります。
COMMUNITY属性の値はユーザーが自由に定義できますが,定義済みのCOMMUNITY値もあります。
それが以下の三つです。
・no-export(FFFFFF01)
→他ASに経路情報を転送しない
・no-advertise(FFFFFF02)
→他ルーターに経路情報を転送しない
・no-export-subconfed(FFFFFF03)
→BGPコンフェデレーションにおいて,他メンバーASに経路情報を転送しない
このラボの例では,このうちのno-exportを使います。
●COMMUNITY属性設定前の動作の確認
COMMUNITY属性を設定するのはRouterAで,それによってRouterEのBGPテーブルがどう変わるか見ていきましょう。
最初に,RouterEのBGPテーブルを見てみます。
1.1.1.0/24の経路情報に注目すると,RouterB(192.168.4.1)とRouterC(192.168.5.1)の二つから経路情報を受信しています(赤字の部分)。
RouterE#show ip bgp
BGP table version is 3, local
router ID is
192.168.5.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.5.1 0
200 i
*> 192.168.4.1 0
200 i
* 4.4.4.0/24 192.168.5.1 0
200 i
*> 192.168.4.1 0
200 i
では,RouterAにCOMMUNITY属性をセットしましょう。
no-exportを使って,1.1.1.0/24を他のASに通知しないようにします。
アクセスリストで1.1.1.0/24を定義し,ルートマップ「SETCOM」でno-exportをセットします。
そして,neighbor 2.2.2.2 send-communityコマンドで,COMMUNITY属性付きの経路情報をRouterBに送るようにします。
さらに,neighbor 2.2.2.2 route-map SETCOM
outコマンドで,ルートマップ「SETCOM」をRouterBに経路情報を送る(out)際に適用します。
RouterA(config)#access-list 1 permit 1.1.1.0 0.0.0.255
RouterA(config)#route-map SETCOM permit 10
RouterA(config-route-map)#match ip address 1
RouterA(config-route-map)#set community no-export
RouterA(config-route-map)#exit
RouterA(config)#router bgp 200
RouterA(config-router)#neighbor 2.2.2.2 send-community
RouterA(config-router)#neighbor 2.2.2.2 route-map SETCOM out
以上のコマンドを入力したら,RouterBのBGPピアをすべてリセットして再確立します。
RouterB#clear ip bgp *
RouterB#
00:33:14: %BGP-5-ADJCHANGE: neighbor
1.1.1.1
Down User reset
00:33:14: %BGP-5-ADJCHANGE: neighbor
3.3.3.3
Down User reset
00:33:14: %BGP-5-ADJCHANGE: neighbor
4.4.4.4
Down User reset
00:33:14: %BGP-5-ADJCHANGE: neighbor
192.168.4.2
Down User reset
00:33:41: %BGP-5-ADJCHANGE: neighbor
1.1.1.1
Up
00:33:41: %BGP-5-ADJCHANGE: neighbor
4.4.4.4
Up
00:33:44: %BGP-5-ADJCHANGE: neighbor
3.3.3.3
Up
00:33:54: %BGP-5-ADJCHANGE: neighbor
192.168.4.2
Up
●設定後の動作の確認
RouterEのBGPテーブルを見てみましょう。
1.1.1.0/24の経路情報を,RouterC(192.168.5.1)から受信しています。
no-exportの設定前は,RouterB(192.168.4.1)からも受信していましたが,そのエントリはなくなっています。
つまりRouterBは,COMMUNITY属性のno-exportの値に従って,経路情報をRouterE(他のAS)に送るのを止めたわけです。
RouterE#show ip bgp
BGP table version is 9, local
router ID is
192.168.5.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.5.1 0
200 i
* 4.4.4.0/24 192.168.5.1 0
200 i
*> 192.168.4.1 0
200 i
RouterBにCOMMUNITY属性が付いた経路情報が伝わっているか確認してみましょう。 show ip bgp communityコマンドを使うと,ルーターで受信しているCOMMUNITY属性の付いた経路情報を調べることができます。
RouterB#show ip bgp community no-export
BGP table version is 5, 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
r>i1.1.1.0/24 1.1.1.1 0 100 0
i
1.1.1.0/24が表示されました。
RouterA(1.1.1.1)が送信した1.1.1.0/24の経路情報にno-exportが伝わっているのがわかります。
ちなみに経路情報左の「r」記号は,これよりAD値の小さい経路情報をIGP(今回の場合はOSPF)で受信しているため,ルーティング・テーブルには載らなかったことを示しています(IBGPのAD値は200,OSPFのAD値は110)。
RouterBが受信している1.1.1.0/24の経路情報を詳しく見てみましょう。
RouterB#show ip bgp 1.1.1.0
BGP routing table entry for 1.1.1.0/24,
version
4
Paths: (1 available, best #1,
table Default-IP-Routing-Table,
not advertised to
EBGP peer, RIB-failure(17))
Advertised to non peer-group
peers:
3.3.3.3 4.4.4.4
Local, (Received from a RR-client)
1.1.1.1 (metric 65) from
1.1.1.1 (1.1.1.1)
Origin IGP, metric 0, localpref
100,
valid, internal, best
Community: no-export
「Community: no-export」と表示されました。
確かにRouterBが受信した1.1.1.0/24の経路情報に,no-exportのCOMMMUNITY属性が付いていることがわかります。
●おまけ1(RouterBがRouterCに送る経路情報にもno-exportをセットする)
経路情報にCOMMUNITY属性を付けて送るには,neighborコマンドで「send-community」パラメータを付けます。
RouterBで,RouterC(3.3.3.3)にCOMMUNITY属性情報を送れるようにします。
RouterB(config)#router bgp 200
RouterB(config-router)#neighbor 3.3.3.3 send-community
設定したら,RouterBのBGPセッションを再確立します。
RouterB#clear ip bgp *
RouterB#
00:46:53: %BGP-5-ADJCHANGE: neighbor
1.1.1.1
Down User reset
00:46:53: %BGP-5-ADJCHANGE: neighbor
3.3.3.3
Down User reset
00:46:53: %BGP-5-ADJCHANGE: neighbor
4.4.4.4
Down User reset
00:46:53: %BGP-5-ADJCHANGE: neighbor
192.168.4.2
Down User reset
00:47:19: %BGP-5-ADJCHANGE: neighbor
3.3.3.3
Up
00:47:21: %BGP-5-ADJCHANGE: neighbor
4.4.4.4
Up
00:47:21: %BGP-5-ADJCHANGE: neighbor
1.1.1.1
Up
00:47:42: %BGP-5-ADJCHANGE: neighbor
192.168.4.2
Up
RouterEのBGPテーブルを見てみましょう。
1.1.1.0/24の経路情報がなくなりました。
RouterCにno-exportのCOMMUNITY属性が付いた経路情報が伝わり,RouterEに経路情報を送らなくなったからです。
RouterE#show ip bgp
BGP table version is 13, local
router ID
is 192.168.5.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
* 4.4.4.0/24 192.168.5.1 0
200 i
*> 192.168.4.1 0
200 i
RouterCがBGPで受信している1.1.1.0/24の経路情報を詳しく見てみます。
RouterC#show ip bgp 1.1.1.0
BGP routing table entry for 1.1.1.0/24,
version
16
Paths: (1 available, best #1,
table Default-IP-Routing-Table,
not advertised to
EBGP peer, RIB-failure(17))
Not advertised to any peer
Local
1.1.1.1 (metric 75) from
2.2.2.2 (2.2.2.2)
Origin IGP, metric 0, localpref
100,
valid, internal, best
Community: no-export
Originator: 1.1.1.1, Cluster
list:
2.2.2.2
確かに,「no-export」のCOMMMUNITY属性が付いていることがわかります。
●おまけ2(RouterDが送信する4.4.4.0/24の経路情報にno-advertiseのCOMMUNITY属性を付ける)
今度は,no-advertiseのCOMMUNITY属性を使ってみましょう。
RouterDが発信している4.4.4.0/24の経路情報にno-advertiseのCOMMUNITY属性を付けてみます。
コマンドは以下です。
RouterD(config)#access-list 1 permit 4.4.4.0 0.0.0.255
RouterD(config)#route-map SETCOM2 permit 10
RouterD(config-route-map)#match ip address 1
RouterD(config-route-map)#set community no-advertise
RouterD(config-route-map)#exit
RouterD(config)#router bgp 200
RouterD(config-router)#neighbor 2.2.2.2 route-map SETCOM2 out
RouterD(config-router)#neighbor 2.2.2.2 send-community
設定したら,RouterBの全ピアを再確立します。
RouterB#clear ip bgp *
RouterB#
01:02:13: %BGP-5-ADJCHANGE: neighbor
1.1.1.1
Down User reset
01:02:13: %BGP-5-ADJCHANGE: neighbor
3.3.3.3
Down User reset
01:02:13: %BGP-5-ADJCHANGE: neighbor
4.4.4.4
Down User reset
01:02:13: %BGP-5-ADJCHANGE: neighbor
192.168.4.2
Down User reset
01:02:39: %BGP-5-ADJCHANGE: neighbor
1.1.1.1
Up
01:02:41: %BGP-5-ADJCHANGE: neighbor
3.3.3.3
Up
01:02:42: %BGP-5-ADJCHANGE: neighbor
4.4.4.4
Up
01:02:51: %BGP-5-ADJCHANGE: neighbor
192.168.4.2
Up
RouterEのBGPテーブルを見てみます。
RouterE#show ip bgp
何も表示されません。
つまり,BGPで何も経路情報を受信していません。
というのも,4.4.4.0/24という経路情報には,no-advertiseのCOMMUNITY属性が付いているからです。
それは,show ip bgp community no-advertiseコマンドで確認できます。
RouterB#show ip bgp community no-advertise
BGP table version is 5, 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
r>i4.4.4.0/24 4.4.4.4 0 100 0
i
RouterCのBGPテーブルを見ると,4.4.4.0/24の経路情報はRouterCにも送られていないこともわかります。
RouterC#show ip bgp
BGP table version is 9, 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
r>i1.1.1.0/24 1.1.1.1 0 100 0
i
COMMUNITY属性にno-advertiseをセットしたことによって,RouterBより先に経路情報が伝わらなくなったことが確認できました。
●参考リンク(BGP コミュニティ値を使用した,アップストリーム
プロバイダー ネットワークでのルーティング
ポリシーの制御)
http://www.cisco.com/japanese/warp/public/3/jp/service/tac/459/bgp-community-j.html
|
|