概要

IPv4アドレスを利用して確立しているBGPネイバー上で、IPv6プレフィクスを交換できるように設定します。address-familyによって、マルチプロトコルを扱えるように設定できます。

ネットワーク構成

図 IPv4 BGPネイバーでのIPv6プレフィックスの交換
図 IPv4 BGPネイバーでのIPv6プレフィックスの交換

設定条件

  • R1-R2間でEBGPネイバーを確立します。R1はAS65001、R2はAS65002です。BGPネイバーはIPv4アドレスを利用して確立してください。
  • BGPで2001:1:1:1::/64と2001:2:2:2::/64のプレフィックスを交換して、これらのプレフィックス間でIPv6の通信ができるようにしてください。

初期設定

  • ホスト名
  • IPv4アドレス
  • IPv6アドレス

※GNS3プロジェクトダウンロード
http://www.n-study.com/gns3/IPv4_BGP_exhcange_IPv6_prefix_init.zip

設定と確認

【Step1:BGPネイバーの設定】

R1-R2間でEBGPネイバーの設定を行います。条件より、ネイバーのIPv4アドレスで設定します。また、IPv4プレフィクスは扱わないので、IPv4プレフィクスの交換を停止するようにします。そして、IPv6プレフィクスを交換するために、address-family ipv6 unicast内でネイバーをActivateします。

R1

router bgp 65001
 no bgp default ipv4-unicast
 bgp log-neighbor-changes
 neighbor 192.168.12.2 remote-as 65002
 !
 address-family ipv6
  neighbor 192.168.12.2 activate
 exit-address-family

R2

router bgp 65002
router bgp 65002
 no bgp default ipv4-unicast
 bgp log-neighbor-changes
 neighbor 192.168.12.1 remote-as 65001
 !
 address-family ipv6
  neighbor 192.168.12.1 activate
 exit-address-family

【Step2:BGPネイバーの確認】

R1-R2間のBGPネイバーを確認します。R1-R2間はIPv4プレフィクスではなくIPv6プレフィクスだけを交換するように設定しています。そのため、BGPネイバーの確認には、show bgp ipv6 unicast summaryコマンドを利用します。

R1

R1#show bgp ipv6 unicast summary
BGP router identifier 192.168.12.1, local AS number 65001
BGP table version is 1, main routing table version 1
Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
192.168.12.2    4 65002       4       4        1    0    0 00:01:27        0

【Step3:BGPルートの生成】

R1、R2でLoopback0のプレフィックスをBGPルートとして設定します。そのために、address-family ipv6 unicast内でnetworkコマンドを利用します。

R1

router bgp 65001
 address-family ipv6
  network 2001:1:1:1::/64
 exit-address-family

R2

router bgp 65002
 address-family ipv6
  network 2001:2:2:2::/64
 exit-address-family

【Step4:BGPテーブルの確認】

R1、R2のBGPテーブルにStep3で生成したBGPルートとお互いでアドバタイズしたBGPルートが登録されているかどうかを確認します。

R1

R1#show bgp ipv6 unicast
BGP table version is 2, local router ID is 192.168.12.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
*> 2001:1:1:1::/64  ::                       0         32768 i
R1#show bgp ipv6 unicast neighbors 192.168.12.2 advertised-routes
BGP table version is 2, local router ID is 192.168.12.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
*> 2001:1:1:1::/64  ::                       0         32768 i

Total number of prefixes 1

R2

R2#show bgp ipv6 unicast
BGP table version is 2, local router ID is 192.168.12.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
*> 2001:2:2:2::/64  ::                       0         32768 i
R2#show bgp ipv6 unicast neighbors 192.168.12.1 advertised-routes
BGP table version is 2, local router ID is 192.168.12.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
*> 2001:2:2:2::/64  ::                       0         32768 i

Total number of prefixes 1

BGPテーブルには、networkコマンドで自身で生成したBGPルートしかありません。しかし、R1とR2でshow bgp ipv6 unicast neighbor advertised-routesを見ると、BGPルート自体はアドバタイズしているようです。

【Step5:BGPルートアドバタイズの確認】

R1、R2がBGPルートをアドバタイズしているかどうかをdebugコマンドで詳しく確認します。R1でdebug bgp ipv6 unicast updatesコマンドによって、BGPのUpdateパケットのdebugを有効にします。その状態で、clear bgp ipv6 unicast * inコマンドによってR2に対してBGPルートの再送を要求します。

R1

R1#debug bgp ipv6 unicast updates
BGP updates debugging is on for address family: IPv6 Unicast
R1#clear bgp ipv6 unicast * in
R1#
*Mar  1 00:19:49.747: BGP: 192.168.12.2 Advertised Nexthop ::FFFF:192.168.12.2: 
Non-local or Nexthop and peer Not on same interface
*Mar  1 00:19:49.751: BGP(1): 192.168.12.2 rcv UPDATE w/ attr: nexthop ::FFFF:192.168.12.2 (FE80::2),
 origin i, metric 0, originator 0.0.0.0, path 65002, community , extended community
*Mar  1 00:19:49.759: BGP(1): 192.168.12.2 rcv UPDATE about 2001:2:2:2::/64 -- 
DENIED due to: non-connected MP_REACH NEXTHOP;

debugコマンドの出力から、R1はEBGPネイバーであるR2から受信したIPv6 BGPプレフィクスのNEXT_HOPは「::FFFF:192.168.12.2」というIPv4射影アドレスとなっていることがわかります。EBGPネイバーは直接接続であることを前提としていますが、NEXT_HOPのIPv6アドレスがこのようなIPv4射影アドレスとなっていると、直接接続であるとはみなすことができません。

図 IPv6 BGPルートのアドバタイズ
図 IPv6 BGPルートのアドバタイズ

IPv4射影アドレスだけではなく、リンクローカルアドレスもNEXT_HOPアトリビュートになっています。

【Step6:ebgp-multihopの設定】

R1-R2間のEBGPネイバーが直接接続とみなすことができないので、neighbor ebgp-multihopコマンドの設定を行います。

R1

router bgp 65001
 neighbor 192.168.12.2 ebgp-multihop 255

R2

router bgp 65002
 neighbor 192.168.12.1 ebgp-multihop 255

【Step7:BGPテーブルの確認】

neighbor ebgp-multihopコマンドを設定したあとに、再度、R1からR2に対してBGPプレフィクスの再送を要求し、BGPテーブルを確認します。

R1

R1#clear bgp ipv6 unicast * in
R1#
*Mar  1 00:07:40.179: BGP(1): 192.168.12.2 rcvd UPDATE w/ attr: nexthop ::FFFF:192.168.12.2 (FE80::2),
 origin i, metric 0, path 65002
*Mar  1 00:07:40.183: BGP(1): 192.168.12.2 rcvd 2001:2:2:2::/64
*Mar  1 00:07:40.195: BGP(1): Revise route installing 2001:2:2:2::/64 -> ::FFFF:192.168.12.2 (FE80::2)
 to main IPv6 table
R1#show bgp ipv6 unicast
BGP table version is 3, local router ID is 192.168.12.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
*> 2001:1:1:1::/64  ::                       0         32768 i
*> 2001:2:2:2::/64  ::FFFF:192.168.12.2
                                             0             0 65002 i
R1#show ipv6 route bgp
IPv6 Routing Table - 7 entries
Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP
       U - Per-user Static route
       I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary
       O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2
       ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2
B   2001:2:2:2::/64 [20/0]
     via FE80::2, FastEthernet0/0

neighbor ebgp-multihopコマンドを設定すると、IPv6 BGPプレフィックスを受信してベストパスとなり、ルーティングテーブルに登録されていることがわかります。なお、IPv4射影アドレスには到達性がありません。ルーティングテーブルには、リンクローカルアドレスがNEXT_HOPとして登録されています。

【Step8:通信確認】

2001:1:1:1::/64と2001:2:2:2::/64間でIPv6の通信ができることを確認します。

R1

R1#ping 2001:2:2:2::2 source loopback 0

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2001:2:2:2::2, timeout is 2 seconds:
Packet sent with a source address of 2001:1:1:1::1
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 12/28/72 ms

BGPの仕組み