APP下载

一种基于SRv6的L3VPN实现方法

2023-02-10张紫倩汪学舜

电子设计工程 2023年3期
关键词:路由表报文实例

张紫倩,汪学舜

(1.武汉邮电科学研究院,湖北武汉 430074;2.烽火通信科技股份有限公司,湖北武汉 430074)

自2017 年中央明确提出了未来五到十年基于IPv6 的下一代互联网发展的行动指南以来,IPv6 规模部署工作在我国取得了重大进展,并为SRv6(Segment Routing over IPv6)技术的研究与应用提供了良好的基础。当网络数据平面从IPv4 向IPv6 演进的过程中,为了使SR(Segment Routing)技术更好地适应IPv6 网络,SRv6 技术应运而生[1-2]。与传统SRMPLS(Segment Routing over MPLS)相比,SRv6 标签与IPv6 地址兼容,当网络中间节点不支持SRv6 功能时,仍旧能够通过IPv6 路由方式来转发报文。现如今,国内各大厂商都在积极推动SRv6 技术的发展。该文首先介绍了SRv6 技术,并对基于SRv6 数据平面的L3VPN(Layer 3 Virtual Private Network)业务场景进行了描述分析,最后提出了一种基于SRv6 数据平面的L3VPN 业务实现方案。

1 SRv6技术

SRv6采用长度为128 bit的SID(Segment Identifier)来定义网络功能,SID 的格式如图1 所示。其中locator 用于在路由过程中定位设备的地址,function来指定设备对该报文所作的转发动作,arguments 用来携带function 字段中指导报文转发动作所需的参数。由于SRv6 路由技术所采用的报文头与IPv6 地址一致,所以对承载VPN 业务提供了良好的数据面支撑[3-5]。该文就是对基于SRv6 的L3VPN 业务进行研究并最终实现该网络场景的设备互通。

图1 SID格式

2 L3VPN业务场景

当前,VPN 业务被广泛采用的是PE(Provider Edge,运营商边缘设备)+CE(Customer Edge,用户边缘设备)的组网方案。CE 和PE 间通过任意路由协议建立路由连接,在PE 设备上通过VRF(Virtual Routing Forwarding)实例区分不同域的路由,并且对应不同域生成多张VPN 路由表。当PE 收到报文时,根据报文所带RT(Route Target)信息对比查找对应的VPN 实例路由表,并将路由还原成普通IP 报文进行路由转发。PE 之间VPN 路由信息通过BGP(Border Gateway Protocol)协议承载进行交互,基于MPLS(Multiprotocol Label Switching)数据平面的VPN隧道,BGP 更新报文除了传递VPN 路由信息和RT属性还需传递MPLS 标签[6],而基于SRv6 数据平面的VPN 隧道,废弃了MPLS 标签属性,替换成SRv6 VPNSID 属性。

一种L3VPN 典型组网拓扑图如图2 所示,CE1与CE4 同 属VPN1,CE2 与CE3 同 属VPN2,CE1 与CE2 连接在同一台公网设备PE1 上,CE3 与CE4 连接在同一台公网设备PE2 上。也就是说,PE1 和PE2 建立的隧道同时承载了两个VRF 实例路由,但只有同一VRF 实例下的设备才能进行通信。下面对CE2 与CE3 的路由建立和数据转发过程进行描述。

图2 L3VPNoverSRv6典型组网图

CE2 与CE3 的信息交互可以分为路由建立过程和数据转发过程。CE2 与CE3 间业务建立过程可以简单描述为CE3 将本地路由发布给PE2,PE2 将该路由存放到VPN2 对应的VPN 路由表中,并将该路由转换为VPN 路由在公网上传递,PE1 收到该VPN 路由后,根据入口策略决定是否将该路由加入本地的VPN路由表,加入后PE1与CE2进行路由信息交换[7]。

CE2与CE3间建立VPN业务,首先需要路由互通。通常情况下,通过建立IGP(Interior Gateway Protocols)邻居,将网络中各设备间路由信息互通。路由互通后,在PE1 和PE2 间建立BGP 邻居连接,BGP 邻居建立过程分为路由发布和数据转发过程[8-9]。

路由发布的过程可以分为以下几个步骤:1)PE2通过任意路由协议将对应locator 网段路由发布给PE1,PE1 安装到自己的路由表中;2)PE2 在locator 范围内动态或静态生成VPN SID,并生成Local SID 表;3)PE2 收到CE3 发布的私网IPv4/IPv6 路由后,转换成BGPVPNv4/BGPVPNv6 路由,通过BGP 邻居关系发布给PE1;4)PE1 接收到VPNv4 路由后,将其交叉到对应VPN 转发路由表,并转换成普通IPv4 路由向CE2 发布。

路由转发表成功建立后,进入数据转发阶段。转发流程如下:1)CE2 向PE1 发送一个普通IP 报文;2)PE1 根据报文入接口绑定的VRF,查找对应的VPN 转发路由表,获取到远端的SRv6 VPNSID 和下一跳信息,并且直接使用SRv6 VPNSID 作为目的地址封装IPv6 报文,再继续转发;3)PE1 通过查找IPv6路由转发表将报文转发到PE2;4)PE2 根据目的地址查找Local SID 表,匹配到对应的SRv6 SID,根据指令剥掉外层IPv6 报文头,通过内层报文的目的地址查找VPN 转发路由表,将报文转发给CE3。

3 L3VPNoverSRv6具体实现

VPN 业务可以实现跨域站点间的安全通信,并且通过VRF 可以实现业务数据的隔离。其原理是通过BGP 更新报文携带的RD(Route Distinguisher)、RT属性能够对网络流量进行过滤,从而保证绑定不同VRF 的设备间不会互相侵占网络资源[10-11]。在SRv6之前,VPN 业务通常被承载于以MPLS 作为数据面封装的网络之上。在MPLSVPN 中,VPN 实例由MPLS标签标识,而在SRv6 网络中,VPN 实例可以通过SRv6 SID标识。为了实现用SRv6承载VPN业务,PE节点需要发布对应的SRv6 SID,用于标识VPN 实例[12]。这个发布过程需要对控制面协议进行扩展。

3.1 BGP协议扩展

该文主要讨论BGP协议扩展。在IETF 文稿中扩展了两个BGP Prefix-SID 属性TLV(Type Length Value),名为SRv6 L3 ServicesTLV 和SRv6 L2 Services TLV,分别用于携带三层和二层业务的SRv6 SID 信息。在子TLV 字段,目前定义了一种名为SRv6 SID Information Sub-TLV 的子TLV,如表1 所示。

表1 SRv6 SID Information Sub-TLV格式

其中,SRv6 SID 可选信息,目前只定义了一种类型为1 的SRv6 Service Data Sub-sub-TLV,用于携带SID 格式的描述信息,即SID 中各字段的长度及位置。引入SRv6 Service Data Sub-sub-TLV 后,可将SRv6 可变长度部分存储在BGP 更新报文中,并且将固定不变字段仍存储在SID Information Sub-TLV中。这样的处理使得原本BGP 更新报文携带的数量由一条变为多条,大大减少了报文数量,提高了BGP更新报文发送和接收的处理效率。

3.2 控制面软件结构设计

为了适配BGP 协议报文的扩展,网络设备控制面需要具备对扩展报文的识别及处理的能力。因此,在传统网络操作系统的基础上,加入SRv6 SID 管理功能,设计如图3 所示的控制面软件结构。

图3 软件结构设计图

该控制面结构主要实现以下几项功能,分别为本地SID 表的管理、VPN 实例管理、路由表项管理、路由转发功能等。下面对各模块完成工作内容进行介绍。

1)VPN 模块主要实现VPN 实例的创建、删除操作及VPN 实例信息通告功能。用户下发VRF、RD、RT 等配置,VPN 收到后存入模块数据库,并下发给BGP 模块,为BGP 生成对应VPN 转发路由表提供配置信息。

2)SIDM 模块主要实现的功能包括保存用户配置locator 信息、支持BGP 模块查询SID 功能。SIDM接收到用户配置的locator 信息后,存入本地数据库。后续BGP 通过SIDM 提供的SID 查询接口查询SID 信息。

3)BGP 模块主要实现的功能包括获取SID 功能、Local SID 通告和撤销功能、VPN 路由通告和接收功能、私网路由交叉功能、路由迭代功能。VPN 业务实现过程中,有两个表项下发流程至关重要,分别为Local SID 表项下发和VPN 业务表项下发。设备本端BGP 需要下发Local SID 转发表,用于指明流量出口的VRF 信息。SRv6 业务中BGP 组件通告邻居VPN 路由时,下一跳属性中需携带SID 信息,该SID只用于指明转发信息。

4)当BGP 模块从远端邻居接收到VPN 路由,经过策略私网路由迭代的路由将下发到TM。

3.3 各模块间消息序列

基于控制面软件结构设计,各模块间软件消息序列图如图4 所示。

图4 软件消息序列图

通过软件消息序列图能够直观了解各模块工作流程及模块与模块间信息通信的原理。当VPN收到用户下发VPN 实例相关配置信息后,将VPN 配置信息保存到数据库中,并且向BGP 通告VPN 实例信息。BGP 收到VRF、RD、RT 等信息后,将VRF 及IPv4/IPv6 地址族绑定locator,同时向SIDM 发送获取locator 配置、生成VRF 对 应SID 的请求。SIDM 向BGP 发送绑定SID 指令的同时,将Local SID 表下发到TM中。BGP获取到VRF对应SID指令后,配置路由重分布,引入VPN 路由。BGP 邻居建立成功后,将VPNv4/VPNv6 路由发布到对端,对端在路由下一跳可达并且报文通过BGP 的入口策略的情况下,完成私网路由交叉、路由迭代SRv6-BE 路径、路由优选等动作,将该路由加入到VPN 转发路由表中,操作完成后,BGP 将携带SRv6 VPNSID(即迭代的SRv6-BE 路径)的VPN 转发路由表下发给TM 模块用于指导网络路由。

L3VPNoverSRv6 控制面软件设计,主要研究基于SRv6 数据平面的BGP 协议扩展,在该系统控制面各模块原功能基础上,设计VPN 业务模块扩展方案,新增SRv6 SID 标签表项存储、计算和处理等相关功能,实现SRv6 承载VPN 业务。

4 网络仿真测试

4.1 网络拓扑

为了验证该方法实现的L3VPN 业务承载效果,该文按图5 搭建测试网络设备拓扑图,在设备CE1、CE2间建立L3VPNv4业务[13-14]。CE1 与CE2 通过OSPF(Open Shortest Path First)协议打通路由,PE2 与CE2 通过EBGP(External Border Gateway Protocol)打通路由。PE1、P、PE2 三台设备均配置routerisis 1,通过ISIS(Intermediate System-to-Intermediate System)协议建立邻居关系,实现路由互通[15]。

图5 测试网络拓扑图

4.2 测试结果

在PE1 和PE2 上进行VPNv4 BE 业务配 置,如图6 所示。

图6 PE1-PE2的VPNv4 BE业务配置

PE1 和PE2 的VPNv4 路由表显示结果如图7 所示,可以看到PE1 和PE2 为本端BGP VPN 实例引用locator 生成了对应END SID。设备上VPNv4 实例路由表中各参数与下发配置一致,BGP 邻居成功建立。

图7 PE1-PE2的L3VPN路由表项

5 结束语

该文采用SRv6 技术作为数据平面,对控制面BGP 协议进行SRv6 相应扩展,设计了一种基于SRv6的L3VPN 技术实现方法。在SRv6 之前,使用MPLS作为转发面数据封装承载VPN 业务的方式被广泛采用,但这样在域内和跨域场景上部署VPN 业务具有很高的复杂度[16-17]。当转发平面从MPLS 切换为SRv6 时,VPN 业务的优势可以由SRv6 天然继承,并且由于SRv6 和IPv6 的兼容性特点,利用IPv6 的IP 可达性能够更简单地部署VPN 业务。

猜你喜欢

路由表报文实例
基于J1939 协议多包报文的时序研究及应用
CTCS-2级报文数据管理需求分析和实现
基于OSPF特殊区域和LSA的教学设计与实践
浅析反驳类报文要点
组播状态异常导致故障
ATS与列车通信报文分析
基于新路由表的双向搜索chord路由算法
完形填空Ⅱ
完形填空Ⅰ
BGP创始人之一Tony Li:找到更好的途径分配互联网地址