BGP EBGP に経路を広報しない(send-community no-export) と AS経路の変更(as-path prepend)



トポロジ



条件
・AS100がAS54に到達するための透過経路になりないよう R6 を設定してください。
・AS100上で、AS200から 33.33.33.0/24 への経路がAS300経由になるようにしてください。
 設定は AS100 上にて行ってください。


まず下記設定からスタートです。

R1
interface FastEthernet0/0
 ip address 16.16.16.1 255.255.255.0
!
interface FastEthernet0/1
 ip address 15.15.15.1 255.255.255.0
!
router eigrp 100
 redistribute ospf 1 metric 100 1 255 1 1500
 network 16.16.16.0 0.0.0.255
 no auto-summary
!
router ospf 1
 redistribute eigrp 100 subnets
 network 15.15.15.0 0.0.0.255 area 0
!
router bgp 100
 no synchronization
 neighbor 15.15.15.5 remote-as 200
 neighbor 16.16.16.6 remote-as 100
 neighbor 36.36.36.3 remote-as 100
 no auto-summary

R2
interface FastEthernet0/0
 ip address 23.23.23.2 255.255.255.0
!
interface FastEthernet0/1
 ip address 25.25.25.2 255.255.255.0
!
router eigrp 100
 redistribute ospf 1 metric 100 1 255 1 1500
 network 23.23.23.0 0.0.0.255
 no auto-summary
!
router ospf 1
 redistribute eigrp 100 subnets
 network 25.25.25.0 0.0.0.255 area 0
!
router bgp 300
 no synchronization
 neighbor 23.23.23.3 remote-as 100
 neighbor 25.25.25.5 remote-as 200
 no auto-summary


R3
interface Loopback0
 ip address 33.33.33.33 255.255.255.0
!
interface FastEthernet0/0
 ip address 23.23.23.3 255.255.255.0
!
interface FastEthernet0/1
 ip address 36.36.36.3 255.255.255.0
!
router eigrp 100
 network 23.23.23.0 0.0.0.255
 network 36.36.36.0 0.0.0.255
 no auto-summary
!
router bgp 100
 no synchronization
 network 33.33.33.0 mask 255.255.255.0
 neighbor 16.16.16.1 remote-as 100
 neighbor 23.23.23.2 remote-as 300
 neighbor 36.36.36.6 remote-as 100
 no auto-summary

R5
interface FastEthernet0/0
 ip address 25.25.25.5 255.255.255.0
!
interface FastEthernet0/1
 ip address 15.15.15.5 255.255.255.0
!
router ospf 1
 network 15.15.15.0 0.0.0.255 area 0
 network 25.25.25.0 0.0.0.255 area 0
!
router bgp 200
 no synchronization
 neighbor 15.15.15.1 remote-as 100
 neighbor 25.25.25.2 remote-as 300
 no auto-summary

R6
interface FastEthernet0/0
 ip address 16.16.16.6 255.255.255.0
!
interface FastEthernet0/1
 ip address 36.36.36.6 255.255.255.0
!
interface Ethernet1/0
 ip address 67.67.67.6 255.255.255.0
 duplex half
!
router eigrp 100
 redistribute rip metric 100 1 255 1 1500
 network 16.16.16.0 0.0.0.255
 network 36.36.36.0 0.0.0.255
 no auto-summary
!
router rip
 version 2
 redistribute eigrp 100 metric 3
 network 67.0.0.0
!
router bgp 100
 no synchronization
 neighbor 16.16.16.1 remote-as 100
 neighbor 36.36.36.3 remote-as 100
 neighbor 67.67.67.7 remote-as 54
 no auto-summary

R7
interface Loopback0
 ip address 77.77.77.77 255.255.255.0
!
interface Ethernet1/0
 ip address 67.67.67.7 255.255.255.0
!
router rip
 version 2
 network 67.0.0.0
!
router bgp 54
 no synchronization
 network 77.77.77.0 mask 255.255.255.0
 neighbor 67.67.67.6 remote-as 100
 no auto-summary


まず一つ目の条件から考えたいと思います。
・AS100がAS54に到達するための透過経路になりないよう R6 を設定してください。

現状 AS54 の経路 77.77.77.0/24 は AS100 にて参照できている状態です。



R5#sh ip bgp
BGP table version is 48, local router ID is 25.25.25.5
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
*> 33.33.33.0/24    15.15.15.1                             0 100 i
*                   25.25.25.2                             0 300 100 i
*> 77.77.77.0/24    15.15.15.1                             0 100 54 i
*                   25.25.25.2                             0 300 100 54 i



AS100 が AS54 からもらった経路を AS200 に渡さないようにしてやればいいわけですが
R6でしか設定できない条件なので、R6 で R1,R3 に AS100 へ渡さないように指示するような
設定にしてやることになります。
正解としては、AS54 からもらった経路に no-export のコミュニティを設定し、R1,R3 に渡して
やることで、R1,R3 はEBGPに経路を渡さないようにします。

R6
router bgp 100
neighbor 67.67.67.7 route-map NO_EXPORT in
neighbor 16.16.16.1 send-community
neighbor 36.36.36.3 send-community

route-map NO_EXPORT permit 10
set community no-export

デフォルトではコミュニティ属性はネイバーに周知されません。コミュニティを周知するには
neighbor [ネイバー] send-community で有効化してやります。

上記設定をして、R5 で再度 sh ip bgp を見てみます。


R5#sh ip bgp
BGP table version is 48, local router ID is 25.25.25.5
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
*> 33.33.33.0/24    15.15.15.1                             0 100 i
*                   25.25.25.2                             0 300 100 i


77.77.77.0/24 へのルートがなくなりました。

R1,R3 で 77.77.77.0/24 のルートの扱いがどうなっているか、下記コマンドで
確認します。


R1#sh ip bgp 77.77.77.0
BGP routing table entry for 77.77.77.0/24, version 41
Paths: (1 available, best #1, table Default-IP-Routing-Table, not advertised to EBGP peer)
Flag: 0x820
  Not advertised to any peer
  54
    67.67.67.7 (metric 25602816) from 16.16.16.6 (67.67.67.6)
      Origin IGP, metric 0, localpref 100, valid, internal, best
      Community: no-export


R3#sh ip bgp 77.77.77.0
BGP routing table entry for 77.77.77.0/24, version 41
Paths: (1 available, best #1, table Default-IP-Routing-Table, not advertised to EBGP peer)
  Not advertised to any peer
  54
    67.67.67.7 (metric 25602816) from 36.36.36.6 (67.67.67.6)
      Origin IGP, metric 0, localpref 100, valid, internal, best
      Community: no-export


R1,R3 どちらも EBGP に advertise しない、またコミュニティが no-export になっていることがわかります。
これで、AS100 が AS54 宛の経路を AS200 にアドバタイズしなくなりましたので条件1はクリアできました。



コミュニティ属性については、下記をご参考ください。
http://www.cisco.com/cisco/web/support/JP/100/1003/1003534_bgp-toc.html#communityattribute

ちなみに事前定義済みの代表的なコミュニティは下記です。
no-export:
eBGP ピアにアドバタイズしない。 このルートは AS 内に維持する。

no-advertise:
このルートは内部または外部のいずれのピアにもアドバタイズしない。

internet:
このルートを、Internet コミュニティにアドバタイズする。 すべてのルータがこのコミュニティに所属します。

local-AS:
パケットがローカルの AS 外部へ送信されないようにするために、コンフェデレーション シナリオで使用。

上記設定にて、no-export のところを no-advertise に変えたところ、
R1,R3 にて 77.77.77.0/24 のルートは受け取らなくなりました。
上記の通り、no-export は EBGP のアドバタイズしない、no-advertise は
EBGP,IBGP いずれもアドバタイズしないということですね。

今回の条件は、R6 のみに設定するということでしたが、R1,R3 に設定するとしたらどうするか考えてみます。
AS54 宛の経路を AS100 に渡さなければいいわけですから、as-path access-list で設定してみます。

R1
ip as-path access-list 1 permit _54$

route-map NO_AD deny 10
match as-path 1
!
route-map NO_AD permit 20

router bgp 100
neighbor 15.15.15.5 route-map NO_AD out

R3
ip as-path access-list 1 permit _54$

route-map NO_AD deny 10
match as-path 1
!
route-map NO_AD permit 20

router bgp 100
neighbor 23.23.23.2 route-map NO_AD out

これで、それぞれ AS100 に AS54宛の経路を渡さなくなります。
R1 にて sh ip bgp と sh ip bgp neighbor 15.15.15.5 advertised-route を見てみます。


R1#sh ip bgp
BGP table version is 3, local router ID is 16.16.16.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
*>i33.33.33.0/24    36.36.36.3               0    100      0 i
*>i77.77.77.0/24    67.67.67.7               0    100      0 54 i
R1#
R1#sh ip bgp neighbors 15.15.15.5 advertised-routes
BGP table version is 3, local router ID is 16.16.16.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
*>i33.33.33.0/24    36.36.36.3               0    100      0 i

Total number of prefixes 1



15.15.15.5 にアドバタイズしているルートに 77.77.77.0/24 が入っていないことが
わかりますね。



さらに補足ですが、コミュニティ no-export の設定を R1,R3 で設定しても同じことができます。

R1
ip as-path access-list 1 permit _54$

router bgp 100
neighbor 16.16.16.6 route-map NO_EXPORT in

route-map NO_EXPORT permit 10
match as-path 1
set community no-export
!
route-map NO_EXPORT permit 20

R3
ip as-path access-list 1 permit _54$

router bgp 100
neighbor 36.36.36.6 route-map NO_EXPORT in

route-map NO_EXPORT permit 10
match as-path 1
set community no-export
!
route-map NO_EXPORT permit 20

上記では、R1,R3 それぞれ R6 から経路を受け取る際に、出所が AS54 であるものに対して
no-export 属性を付与しています。match as-path をつけないと、出所が R6 のルートなど
もフィルタしていまいます。


次の条件です。
・AS100上で、AS200から 33.33.33.0/24 への経路がAS300経由になるようにしてください。
 設定は AS100 上にて行ってください。

現状、R5 にて 33.33.33.0/24 へのルートを確認すると、AS100,AS300 からルートをもらっており、
AS-PATH の短い R1 経由のルートが優先されています。


R5#sh ip bgp
BGP table version is 112, local router ID is 25.25.25.5
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
*  33.33.33.0/24    25.25.25.2                             0 300 100 i
*>                  15.15.15.1                             0 100 i


AS-PATH が短いほうが優先されるので、R1 経由のルートの AS-PATH を
R2 経由よりも長くしてやれば、R2 経由が優先されるはずです。
Local-preference や MED で経路が変えられるかというと、BGP経路決定の
優先順位が AS-PATH のほうが優先になってしまいます。

R1
ip prefix-list 33 seq 5 permit 33.33.33.0/24

route-map PREPEND permit 10
match ip address prefix-list 33
set as-path prepend 100 100
!
route-map PREPEND permit 20

router bgp 100
neighbor 15.15.15.5 route-map PREPEND out

上記のように R1 にて 33.33.33.0/24 宛のルートを 15.15.15.5 に
伝える際は、100 100 を AS-path に追加してやります。

そして、R5 にて再度 sh ip bgp を見ると 15.15.15.1 からもらった
33.33.33.0/24 へのルートの AS-path は "100 100 100 i" となり、
R2 経由のルートは優先されるようになりました。


R5#sh ip bgp
BGP table version is 131, local router ID is 25.25.25.5
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
*  33.33.33.0/24    15.15.15.1                             0 100 100 100 i
*>                  25.25.25.2                             0 300 100 i



ちなみに、R5 にて AS-PATH はそのままで MED に差を与えた場合、どうなるか
検証したいと思います。(as-path のほうが優先度が高いので、経路に変化なしを期待)

R1 と R3 で MED を設定すると R1 は R5 に伝達されますが、R3 は AS300 に伝達した後、
さらに他のASには伝達しませんので、(MEDの性質) R1 と R2 に設定します。

R1
ip prefix-list 33 permit 33.33.33.0/24

route-map MED permit 10
match ip address prefix-list 33
set metric 100

route-map MED permit 20

router bgp 100
neighbor 15.15.15.5 route-map MED out

R2
ip prefix-list 33 permit 33.33.33.0/24

route-map MED permit 10
match ip address prefix-list 33
set metric 50

route-map MED permit 20

router bgp 200
neighbor 25.25.25.5 route-map MED out

そうすると R5 にて MED の値が変わりますが、MEDの低い AS300 経由が優先されず、
AS-PATH の短い R1 経由が優先されていることがわかります。


R5#sh ip bgp
BGP table version is 7, local router ID is 25.25.25.5
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
*  33.33.33.0/24    25.25.25.2              50             0 300 100 i
*>                  15.15.15.1             100             0 100 i



更新日:2013年5月4日
TOPに戻る