IHANet Home‎ > ‎samples‎ > ‎

IOSでのBGP設定方法

!
ipv6 unicast-routing
!
!
!
router bgp <自分のAS番号>
 no bgp default ipv4-unicast
 bgp log-neighbor-changes
 bgp graceful-restart
 neighbor <相手のIPv6アドレス> remote-as <相手のAS番号>
 ! neighbor <相手のIPv6アドレス> update-source <相手がつながっているインターフェース>
 ! ↑ link-local addressをpeerとの通信に使用する場合に、そのインターフェースを指定する
 !
 address-family ipv6
 neighbor <相手のIPv6アドレス> activate
 neighbor <相手のIPv6アドレス> soft-reconfiguration inbound
 network <経路広告する自分のIPv6アドレス>
 exit-address-family
!
!
ipv6 route <経路広告する自分のIPv6アドレス> Null0
!

ピアグループ入り版 (未テスト) - genta

! 追加した部分を,アンダーラインで示しています.
!
ipv6 unicast-routing
!
!
router bgp <自分のAS番号>
 no bgp default ipv4-unicast
 bgp log-neighbor-changes
 bgp graceful-restart
 neighbor peer peer-group
 neighbor <相手のIPv6アドレス> remote-as <相手のAS番号>
 ! neighbor <相手のIPv6アドレス> update-source <相手がつながっているインターフェース>
 ! ↑ link-local addressをpeerとの通信に使用する場合に、そのインターフェースを指定する
!
 address-family ipv6
 network <経路広告する自分のIPv6アドレス>
 ! neighbor <ピアグループ名> ..., で,複数のピアに共通する設定を入れることができます
 neighbor peer activate
 neighbor peer soft-reconfiguration inbound
 neighbor <相手のIPv6アドレス> peer-group peer
 exit-address-family
!
!
ipv6 route <経路広告する自分のIPv6アドレス> Null0

ピアグループ + 経路フィルタ入り版 (未テスト) - genta

! 追加した部分を,アンダーラインで示しています.
!
ipv6 unicast-routing
!
!
router bgp <自分のAS番号>
 no bgp default ipv4-unicast
 bgp log-neighbor-changes
 bgp graceful-restart
 neighbor peer peer-group
 neighbor <相手のIPv6アドレス> remote-as <相手のAS番号>
 ! neighbor <相手のIPv6アドレス> update-source <相手がつながっているインターフェース>
 ! ↑ link-local addressをpeerとの通信に使用する場合に、そのインターフェースを指定する
!
 address-family ipv6
 network <経路広告する自分のIPv6アドレス>
 ! neighbor <ピアグループ名> ..., で,複数のピアに共通する設定を入れることができます
 neighbor peer activate
 neighbor peer soft-reconfiguration inbound
 neighbor peer distribute-list peer-in in
 neighbor peer distribute-list peer-out out
 neighbor <相手のIPv6アドレス> peer-group peer
 exit-address-family
!
!
ipv6 route <経路広告する自分のIPv6アドレス> Null0
!
ipv6 access-list peer-in deny ::/0 exact-match
ipv6 access-list peer-in deny <経路広告する自分のIPv6アドレ>

ipv6 access-list peer-in permit any
ipv6 access-list peer-out deny ::/0 exact-match
ipv6 access-list peer-out permit <
経路広告する自分のIPv6アドレ>



・よくあるミス
BGPPeerをlink-local Addressで張っている場合、BESTPATHがその対向ルータになった場合トラフィックが落ちる

IOSは、nexthop Addressにlink-local Addressが利用されている場合、そのnext-hop AddressがBESTPATHとして選択されたとき正しくルーティングすることができない。
そのため、link-local AddressでPeerを張っているルータから経路をもらうときは、意図的にnext-hopを変えなければならない。

・nexthop Addressがグローバルアドレスのとき

正しくICMPv6が到達する。

Sending 5, 100-byte ICMP Echos to 2001:2F0:104:E010:221:70FF:FE32:571D, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 20/21/24 ms

・nexthop Addressがlinklocal Addressのとき
正しくICMPv6が到達する用に見えるが、実際に応答しているのは自分自身でパケットは送信されていない。
そのためRTTが0になる。

Sending 5, 100-byte ICMP Echos to 2001:2F0:104:E010:221:70FF:FE32:571D, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 0/0/0 ms

・受け取るときの設定
link-local AddressでPeerを張っているルータから経路を受け取るときは以下の設定を行う。
受け取った経路のnexthopを書き換えるとき、書き換え先アドレスは必ず設定するルータから到達可能なグローバルアドレスにすること。
このとき、到達可能性はIGPかstaticで設定する。もしかしたらBGPで受け取った経路で解決できるかも?(それならこんな問題起こらない?追記求む)

また、書き換えたnexthopを優先的に使いたいときは local-preference を設定しておくとよい。
nexthopは複数記述可能で、先頭に記載されたものから優先的に利用される。

※到達性のないnexthopアドレスを入力したときの挙動は未検証

# 特定のneighborから受け取った経路についてroute-mapを適応する

router bgp xxxxx
 address-family ipv6 unicast
  neighbor FE80::XXXX:XXXX route-map bgp-linklocal-in in

# route-mapを適応するprefixを指定
ipv6 prefix-list ipv6-any seq 10 permit ::/0 le 128

# route-mapの詳細
route-map bgp-linklocal-in permit 10
 match ipv6 address prefix-list ipv6-any
 set ipv6 next-hop グローバルアドレス
 set local-preference 100
!

参考文献
http://www.cisco.com/en/US/docs/ios/ipv6/configuration/guide/ip6-mptcl_bgp.html#wp1037072

Comments