Print

S6800-54QF使用ipv4地址建ipv6邻居

2020-05-25 发表

组网及说明

两台设备直连

问题描述

现场S6800与第三方设备建BGP邻居,但是使用的是ipv4的地址建ipv6的邻居,且是EBGP邻居。

邻居可以正常建立,但是对端发送的直连路由无法加表,最终定位原因是对端发送的报文下一跳地址错误,并且本身也没有迭代路由可以找到出口。

过程分析

1. 现场配置

#

bgp 65041

router-id 10.94.66.57

timer keepalive 20 hold 60

peer 10.94.66.50 as-number 65043

peer 10.94.66.50 bfd

peer 10.94.66.54 as-number 65043

peer 10.94.66.54 bfd

peer 10.94.66.98 as-number 65043

peer 10.94.66.98 bfd

peer 10.94.66.102 as-number 65043

peer 10.94.66.102 bfd

#

address-family ipv4 unicast

  balance 8

  preference 20 180 200

  peer 10.94.66.50 enable

  peer 10.94.66.54 enable

  peer 10.94.66.98 enable

  peer 10.94.66.102 enable

#

address-family ipv6 unicast

  balance 8

  preference 20 180 200

  peer 10.94.66.98 enable

  peer 10.94.66.102 enable

#

 

2. 排查过程

1、从68上看没有收到对端发布的路由。

<csr6.net.cn1>dis bgp routing-table ipv6 peer 10.94.66.98 received-routes

 

 Total number of routes: 0

[2064-S6800]display bgp peer ipv6 verbose

 

        Peer: 32.1.1.2  Local: 10.209.64.136

        Type: IBGP link

        BGP version 4, remote router ID 10.224.1.192

        BGP current state: Established, Up for 00h17m18s

        BGP current event: RecvUpdate

        BGP last state: OpenConfirm

        Port:  Local - 179      Remote - 34917

        Configured: Active Hold Time: 15 sec    Keepalive Time: 5 sec

        Received  : Active Hold Time: 15 sec

        Negotiated: Active Hold Time: 15 sec    Keepalive Time: 5 sec

        Peer optional capabilities:

        Peer support BGP multi-protocol extended

        Peer support BGP route refresh capability

        Peer support BGP route AS4 capability

        Address family IPv4 Unicast: advertised and received

        Address family IPv6 Unicast: advertised and received

 

InQ updates: 0, OutQ updates: 0

NLRI statistics:

        Rcvd:   UnReach NLRI          1,      Reach NLRI          0

        Sent:   UnReach NLRI          0,      Reach NLRI          0

 

2、查看对端发送过来的ipv6路由,下一跳地址不符合协议规范,我们与对单建立的是EBGP邻居,因此对端发送过来的路由下一跳应该是与我们建立邻居的接口地址才对,由于对端发送的路由下一跳错误,因此无法生效,并且会有报错告警。

 

*Apr 27 23:41:16:760 2020 csr6.net.cn1 BGP/7/DEBUG:

 BGP.: 10.94.66.102 MSG ignored: Invalid NEXT_HOP attribute FD00:201:0:2::2,

 while recv UPDATE.

 

bgp 65041

router-id 10.94.66.57

timer keepalive 20 hold 60

peer 10.94.66.50 as-number 65043

peer 10.94.66.50 bfd

peer 10.94.66.54 as-number 65043

peer 10.94.66.54 bfd

peer 10.94.66.98 as-number 65043

peer 10.94.66.98 bfd

peer 10.94.66.102 as-number 65043

peer 10.94.66.102 bfd

 

下一跳(NEXT_HOP)属性

BGPNEXT_HOP属性取值不一定是邻居路由器的IP地址。如1-2所示,NEXT_HOP属性取值情况分为几种:

·            BGP发言者把自己产生的路由发给所有邻居时,将该路由信息的NEXT_HOP属性设置为自己与对端连接的接口地址;

·            BGP发言者把接收到的路由发送给EBGP对等体时,将该路由信息的NEXT_HOP属性设置为自己与对端连接的接口地址

·            BGP发言者把从EBGP邻居得到的路由发给IBGP邻居时,并不改变该路由信息的NEXT_HOP属性。如果配置了负载分担,等价路由被发给IBGP邻居时则会修改NEXT_HOP属性。关于负载分担的概念请参见1.1.6  BGP负载分担

 

3、但是不管怎么做,其实这种ipv4去建ipv6的邻居的方法是无效的,因为下一跳地址其实是无效的地址,他是FFFF + ipv4地址生成的一个ipv6地址,没有实际的含义。

 

#测试结果,这个没有加缺省路由,只是建立邻居,然后传递过来一个直连路由,但是迭代的下一跳是对端的邻居地址,这是无效的地址,因此这个路由是没法加表的,fib表里没有。

dis bgp routing-table ipv6 peer 10.94.66.102 received-routes

 

Total number of routes: 2

 

BGP local router ID is 10.94.66.57

Status codes: * - valid, > - best, d - dampened, h - history

               s - suppressed, S - stale, i - internal, e - external

               a - additional-path

       Origin: i - IGP, e - EGP, ? - incomplete

 

   e Network : 2::                                      PrefixLen : 64

     NextHop : ::FFFF:10.94.66.102                      LocPrf    :      //这个下一跳不可达

     PrefVal : 0                                        OutLabel  : NULL

     MED     : 0

     Path/Ogn: 65043?

 

#增加缺省路由后,这里增加一个缺省路由后,下一跳就是缺省路由出口了,这样是有效的,但是实际上这样做的话就失去了ipv4ipv6邻居的必要性,因为都已经有缺省路由了,没必要再用ipv4地址去建ipv6邻居了。

dis bgp routing-table ipv6 peer 10.94.66.102 received-routes

 

Total number of routes: 2

 

BGP local router ID is 10.94.66.57

Status codes: * - valid, > - best, d - dampened, h - history

               s - suppressed, S - stale, i - internal, e - external

               a - additional-path

       Origin: i - IGP, e - EGP, ? - incomplete

 

* >e Network : 2::                                      PrefixLen : 64

     NextHop : ::FFFF:10.94.66.102                      LocPrf    :     //有缺省路由,下一条可达

     PrefVal : 0                                        OutLabel  : NULL

     MED     : 0

     Path/Ogn: 65043?

解决方法

可以使用ipv4地址建ipv6邻居,但是这个邻居的下一跳是没有意义的,必须要再额外产生出口路由,才可以在邻居之间互相引路由。