BGPPeerをlink-local Addressで張っている時、BESTPATHがその対向ルータになった場合トラフィックが落ちる
IHANetのほうでもまとめておきました。ちょっとこれは気になった現象だったのでこっちにも記載。
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:xxx::xxxx, 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:xxx::xxxx, 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は複数記述可能で、先頭に記載されたものから優先的に利用される。
# 特定の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 !
到達性のないnexthopアドレスを入力したときの挙動は未検証なので、今度やってみたいです。
参考文献
http://www.cisco.com/en/US/docs/ios/ipv6/configuration/guide/ip6-mptcl_bgp.html#wp1037072