马 琳,李小川,朱红卫,吕舒清,张 璞
(国网山东省电力公司信息通信公司,山东 济南 250001)
随着物联网、云计算、虚拟化等技术的不断出现与革新,新业务发展对承载网提出新的要求,大型的数据通信网急需不断地提升性能和扩展性能以满足新型业务和长远发展的需求。对企业来讲,数据通信网络的业务保障和支撑能力对信息化建设的重要性不言而喻,有必要结合未来发展方向和实际需求推进数据通信网优化整合工作。在电力系统省级及以下电力数据通信网优化整合工作中,地市数据网和骨干网配置不同的AS域[1],然而普通的MPLSVPN都是在一个自治系统内运行的,没有提供一个自治系统内的VPN信息向其他自治系统扩散的功能,因此需要解决VPN跨域的问题。
VPN是在公用的通信网上提供私有数据网络的技术,MPLSVPN是指采用MPLS技术在宽带网络上构建企业IP专网,将公网与专网安全灵活高效地结合在一起。MPLSVPN能够提高网络使用率,把承载多种不同类型服务的网络集成为一个单一的网络,并加快了数据包的转发速度。随着企业内部站点数目的增多,异地相连变得越来越普遍,需要对现有协议进行扩展以支持跨域VPN。
网络中VPN路由数目非常大,BGP协议是唯一支持大量路由的路由协议并且有很强的策略能力,可以很好地实现路由决策与数据控制[2]。基于BGP扩展实现的MPLSVPN路由设备主要包括CE、PE和P[3]:
CE(Custom Edge),直接与服务提供商相连的用户设备,运行标准路由协议。
PE(Provider Edge Router),是骨干网上的边缘路由器,通过EBGP、RIP和静态路由与CE相连交换路由信息,主要负责VPN业务的接入。
P(Provider Router),骨干网上的核心路由器,主要完成路由和快速转发功能。
根据RFC2547定义,跨域MPLS VPN主要有3种方式:Option A,Option B,Option C。 使用 Option C时ASBR不需要处理VPN信息,最符合VPN的要求[4],因此本文中主要使用的是Option C,即Multihop-EBGP方式。使用此方式的VPN路由信息传递可直接在源端和PE之间通过Multihop-EBGP传递,并在两个AS的ASBR之间构建LSP公网路由,同时PE之间建立多跳连接直接传递VPN信息。在进行报文转发时,域内使用二层标签转发,ASBR之间也采用两层标签转发[5]。
以图1所示数据通信网为例,网络采用分层的拓扑结构。主要分为A级数据通信接入网、数据通信网、B级数据通信接入网。
图1 数据通信网拓扑示意
数据通信网在A侧部署了2台路由器PE1、PE2作为边界ASBR,在B侧部署了2台路由器RR1、RR2作为边界ASBR,A侧边界ASBR与B侧ASBR通过千兆链路以口字型结构互联。
在数据通信网AS2中部署2台二级RR设备,用来反射上级路由器和接入网路由,二级RR1与P-1互联,二级RR2与P-2互联,2台RR间建立VPN邻居关系,并具有相同的cluster-id。
第二汇聚点部署2台P设备,第二汇聚点P-1与P-1以万兆链路互联。B侧在AS2内部署2台PE作为边界ASBR,在本自治域内部署2台RR作为ASBR,通过千兆链路以口字型结构互联。
Option C跨域完成后,出现AS3域B级数据通信接入网中RR(H厂家,设备型号SR8808)与AS2域数据通信网二级RR(S厂家,设备型号C7609)的MP-EBGP邻居关系震荡现象,即MP-EBGP邻居关系建立后经过3 min后邻居关系会变为IDLE状态,之后会再成功建立邻居关系,过3 min后会再变为IDLE状态,周而复始。在邻居中断后,由于需要释放私网标签,因此在B级RR上的日志会刷屏,导致B级RR的CPU利用率升高[6]。
首先检查B级RR与边界ASBR的EBGP邻居关系正常,路由学习正常,路由表没有出现路由条目震荡。
在B级RR上打开bgp的debug调试,找到输出内容中的:
*Jun5 01:01:59:1112000 SR8805-A RM/6/RMDEBUG:
BGP.:11.41.254.68 State is changed from ESTABLISHED to IDLE.
*Jun5 01:01:59:1112000 SR8805-A RM/6/RMDEBUG:
BGP.:11.41.254.68 Recv NOTIFICATION
Err/SubErr:4 /0 (Hold Timer Expired /ErrSub Code Unspecified)
Error data:NULL.
B级RR与二级RR的MP-EBGP邻居关系由ESTABLISHED转为IDLE是由于Hold Timer Expired/ErrSubCode Unspecified,TCP 连接中断会导致Hold Timer时间超时,Hold Timer超时时间默认为3 min,此时间和邻居关系每3 min中断吻合。因此初步推断问题原因是链路或其他原因导致TCP连接超时,进而影响邻居关系。
传输链路已正常运行多年,而且跨域互联链路更换光模块和光纤后,问题依然存在,因此排除物理链路的问题。在测试ping包的过程中发现,用B级RR的回环口去ping二级RR的回环口,最大ping包只能到1 468 Byte,大于1 468 Byte的ping包不通。但是B级RR与边界ASBR直连口ping 5 000 Byte的大包可以通过,二级RR的回环口ping边界ASBR的回环口的5 000 Byte的大包也可以通过,边界ASBR到二级RR的5 000 Byte的大包也可以ping通过。而且二级RR与边界ASBR用回环口建立MP-EBGP邻居关系也很稳定。通过分析,认为数据包在穿越边界ASBR时数据包大小被做了限制,但是在边界ASBR上并没有对数据包字节数进行限制[7]。TCP数据包会填充至接口MTU的最大值,且大于1 468 Byte的数据包不能够通过省边界ASBR,因此修改地市RR的tcp封装值,二级RR的tcp封装置修改为1 200 Byte后,MP-EBGP邻居关系震荡问题得到解决。因而进一步验证是由于数据包大小受限而引起的MP-EBGP邻居关系震荡[8]。
H厂家SR8800设备的一代普通业务板(SPE1010/SPE1020)CPU的MTU不能超过1 560 Byte,所以该设备无法接受超过1 560 Byte的协议报文。S厂家的C7609设备向该设备发送了超过1 560 Byte的BGP update报文,设备无法接收,所以C7609设备不断地发送这些update报文,使得keepalive报文无法及时发送,最终导致邻居中断。BGP邻居中断后,两端设备重新建立链接,由于建立链接的协议报文没有超过1 560 Byte,设备能够正常接收,所以BGP邻居可以建立。但是当邻居建立后,C7609设备向设备发送update报文时,前述问题又会出现,最后导致两端设备BGP邻居反复up/down。
H厂家SR8800设备的一代增强业务板和二代业务板不涉及该问题(其CPU的MTU等于jumbo帧的最大值),一代普通业务板只能通过保证设备和对端设备MTU值设置不超过1 560 Byte。考虑到更换板卡不是短时间能实现的,因此采取调整MTU值的办法,推荐的MTU值为1 522~1 560 Byte,由于本次数据通信网优化整合改造涉及骨干网的MTU值统一为1 528 Byte,因此将跨域互联链路的MTU值调整为1 528 Byte。并且将tcp值设为1 200 Byte的命令取消。按照解决方案操作后邻居震荡问题没有再出现,邻居震荡问题得到彻底解决。
路由策略主要实现了对路由的过滤、设置等控制功能,通过改变路由属性来改变网络流量所经过的途径,主要包括控制路由的发布、控制路由的接受、过滤和控制引入和设置特定的路由属性。
图2 数据通信网拓扑示意
在数据网优化整改工作中,按相关需求需要配置合理的路由汇总及过滤策略。如图2所示在C市RR上进行路由汇总并在二级RR上进行路由过滤策略时,出现了下级单位跨域的一级业务无法正常访问,而C市业务可以正常访问的现象。路由过滤后A级接入网PE-1信息业务路由表中只存在C市的汇总路由,由此可以断定二级RR针对C市的路由过滤策略已经生效。但是过滤策略一旦部署,C市下级单位就访问不了上级的业务,C市的业务访问不受影响。在二级RR将明细路由也放行后,下级单位就能够访问上级单位。
由于路由过滤后,A级接入网到C市的业务正常,到下级单位的业务不正常,因此推断出可能是H厂家设备的问题,通过查找H厂家官方文档,发现在跨域组网中出现popgo的动作 (先pop标签再push标签),用20 Byte描述符存在一个问题,两个动作只带了一个动作下来,导致报文封装错误。
MARVELL推荐的解决方案,修改TTI某一保留bit位,可以把TT终结标志带到下行,这样下行就可以支持先pop再push操作了。而对于push入pop出的情况,目前微码的解决方案是这样的,通过报文描述符LLT标志位来判断,如果LLT标志为是IPV4Route或者是IPV6Route,且报文类型是MPLS报文,则将标签全部弹掉,然后根据MPLSCMD进行操作,从而达到支持先pop后push的操作。需要配置undo vpn l2vpn mix来解决上述问题,其作用为:该命令只有88 k设备有,16 k设备无该命令;目前88 k puma报文描述符为20 Byte,16 k puma报文描述符为24 Byte;报文都是在下行修改,上行对报文的操作都是通过报文描述符带到下行;从24 Byte的报文描述符格式可以看到在第187 bit位有TT标志,所以24 Byte的报文描述符可以同时带两个动作下来(MPLSCMD、TT),20 Byte 的报文描述符只可以携带MPLSCMD一个动作;配置undo vpn l2vpn mix后,对于上行有pop、push两个动作的时候,20 Byte的报文描述符中MPLSCMD为push,不配置该命令则为pop。
对大型数据信通网中的多品牌网络设备跨域对接中出现的典型故障案例进行了技术分析,并给出了推荐的解决方式。通过分析跨域典型故障案例,为同类网络环境下的跨域对接提供参考。
[1]徐志强,吕舟,徐坤.电力综合数据网跨域VPN部署探讨[J].中国新通信,2014,16(5):1-2.
[2]王柱.MP-EBGP网络技术应用研究[J].安徽电子信息职业技术学院学报,2007,6(2):96-97.
[3]王俊.基于MPLS的跨域VPN研究[D].南京:南京邮电大学,2011.
[4]梁海英.基于MPLS跨域VPN若干问题研究[D].沈阳:东北大学,2008.
[5]罗恒洋.基于MPLS的二、三层VPN研究[J].计算机技术与发展,2009,19(1):63-66.
[6]李丞.MPLS VPN技术在电力综合数据网中的应用[D].长春:吉林大学,2014.
[7]马睿,何海洋,李长水.国网数据通信网跨域VPN的设计与兼容性实现[J].电力信息与通信技术,2016(12):80-84.
[8]孙杰.BGP路由策略冲突引发的路由振荡研究[D].成都:电子科技大学,2014.