基于公有云的SRv6 路径可编程性研究
2021-06-10莫志威邓永平欧亮林力帆
[莫志威 邓永平 欧亮 林力帆]
1 引言
段路由SR(Segment Routing)[1]是一种新型的源路由方式,当数据平面为MPLS 时,该技术称作SRMPLS;当数据平面为IPv6时,该技术称作SRv6(Segment Routing for IPv6)。SRv6 技术将网络中的报文处理定义为一个网络程序,该程序表达为一系列指令。指令由128-bit 的segment 组成,称为SID(Segment ID),其形式为一个IPv6 地址。在头节点增加一个网络程序,中间节点就可以按照该程序包含的路径信息转发报文。
SRv6 技术具有很多优点,它不需要任何的路径交换信令,只需要在SRv6 的头节点维护每个流的状态,通过简单的网络指令就可以控制转发路径。SRv6 协议还有一大优势是无缝部署,在现有IPv6 网络中运营商只需要升级SRv6 节点的设备,而不需要升级中间IPv6 转发设备,节省升级成本。
由于SRv6 技术的诸多优势,电信运营商开始进行SRv6 网络试点[2,3],目前多采用厂家硬件设备进行试验。本文拟研究采用公有云的云服务器作为SRv6 节点实现L3VPN 业务,虚拟机中使用开源软件VPP(Vector Packet Processing)[4]作为转发面。实验拓扑按照设备所处的位置分为三个平面:公有云1 平面、公有云2 平面、客户机平面,如图1 所示。在公有云上开展本项工作具有重要意义,研究成果可应用于SRv6 VPN、SD-WAN、多云互联、流量工程等场景,为后续产品开发工作打下基础。
图1 基于公有云的SRv6 路径可编程示意图
2 背景知识:SRv6 基础
2.1 SRH(Segment Routing Header)
如图2 所示,为了实现SRv6,IETF 提出新增一种IPv6 扩展头,称作SRH 扩展头[5]。该扩展头包含Segment List:其特征为:每一个segment 是一个IPv6 地址;segment是逆序编码的,Segment List [0]是最后一个使用的segment,Segment List [n]是第一个使用的segment。
图2 SRH 格式
2.2 SRv6 Segment
SRv6 Segment 也称作SRv6 SID,形式为128-bit的地址[6],如图3 所示,包含以下部分:
图3 SRv6 SID 格式
①Locator:用于定位,即路由到segment 父节点
② Function:代表设备的指令,在segment 父节点执行function 定义的动作
③Argument:可选参数,用于本地function 的变量
2.3 SRv6 SID 类型
SRv6 SID 有多种类型,表1 列出了常用的SID 类型
表1 常用的SRv6 SID 类型
3 公有云实现SRv6 L3VPN 原理
SRv6 L3VPN 有两种模式:per-CE 和per-VRF,前者每个CE 分配一个SRv6 SID,后者每个VRF 分配一个SRv6 SID,本文所实现的是per-VRF 模式。
大学英语的视听说教程包括音频和视频两部分。由图片流-音频流-视频流等组成,构成多模态教学。在教学过程中,教师根据教学内容和学习者情况,还可以适当增加模态,合理组合多种模态,以取得较好的教学效果。下面就新世纪大学英语视听说教程中的音频教学和视频教学分别探讨其多模态教学法。
3.1 SRv6 L3VPN 模型
SRv6 L3VPN 模型示意图如图4 所示,设PE1 的End.DT4 SID 为1::1,P 的END SID 为2:2,PE2 的End.DT4 SID 为3::3,其工作流程如下:
图4 SRv6 L3VPN 模型示意图
(1)在首节点PE1 配置SRv6 TE 策略,Segment List 为<2::2,3::3>;
(2)首节点PE1 收到CE1 发出的单播报文后,将会查找VPN 路由表,该路由的出接口为SRv6 TE 策略,PE1 为报文封装带有SRH 的IPv6 报文头并发出,其中SRH 包含Segment List;
(3)中间P 节点将根据SRH 信息转发,使用IPv6目的地址查找Local SID 表,命中End SID 后,IPv6 目的地址将会更换为3::3;
(4)报文到达尾节点PE2 后,将用IPv6 目的地址查找Local SID 表,命中End.DT4 SID 后,去除IPv6 报文头,使用内层目的地址查找VPN 路由表,转发至CE2。
3.2 基于VPP 的SRv6 L3VPN 实现
VPP 是开源的高性能数据报文处理扩展平台,它的优势有高性能、模块化、灵活性和丰富的特征集,从17.04 版本开始支持SRv6。根据SRv6 节点角色的不同,VPP 配置也会有所不同。对于首尾节点,需要配置Segment List 和End.DT4 类型Local SID 等;中间节点较为简单仅需要配置End 类型Local SID。以下为VPP实现SRv6 L3VPN 的关键配置:
(1)首尾节点配置示例(如图5 所示)
图5 首尾节点配置示例
(2)中间节点配置示例(如图6 所示)
图6 中间节点配置示例
4 公有云SRv6 路径可编程实验
如图1 所示,本文所使用的公有云1 为天翼云,公有云2 为阿里云,为了方便实现,客户机平面也在阿里云开启。实验分为两部分:(1)公有云内进行路径切换,(2)公有云间进行平面切换。
4.1 公有云内路径切换实验
本实验目的是在一个公有云内实现SRv6 L3VPN 业务,并且可根据源节点加入的Segment List 不同而切换转发路径。
在阿里云平台部署四台云服务器,如图7 所示地点分别在深圳、北京、上海和呼和浩特,其中深圳云服务器和北京云服务器作为SRv6 路径的首尾节点。Host 与VPP虚拟机建立在同一个专用网络,通过阿里云交换机相连。
图7 公有云内路径切换实验拓扑图
搭建L3VPN over SRv6 业务场景,位于深圳的Host1将通过搭建的SRv6 VPN 与北京的Host2 互通,其中SRv6 路径有两条,分别为路径1:深圳-上海-北京,路径2:深圳-呼和浩特-北京。路径切换测试伪代码如图8 所示,两路径互为主备,若主路径发生故障,将切换到备路径,测试两路径的SRv6 L3VPN 时延,结果如表2所示。
图8 公有云内路径切换实验伪代码
表2 SRv6 单平面路径切换实验平均时延
实验结果表明公有云内可有效按照程序设定切换SRv6 路径,使得流量按特定路径转发。测试得出路径1的时延较短,该结果可作为主路径初始设置的参考。
4.2 公有云间平面切换实验
本实验使用SRv6 协议将流量在两个云平面之间进行切换,切换后的路径可用作备份链路或者流量负载分担链路。例如,当两云平面互为主备时,若一个公有云平面的中间链路发生故障时,可以将路径切换到另外一个公有云。
在阿里云和天翼云的上海和广东资源池部署云服务器,如图9 所示具体部署方式如下:阿里云的上海和深圳资源池各部署两台服务器,其中一台为主机Host,另外一台为VPP 虚拟机;在天翼云的上海和广州资源池各部署一台服务器,均为VPP 虚拟机。阿里云的上海云服务器和深圳云服务器作为SRv6 路径的首尾节点。Host与VPP 虚拟机建立在同一个专用网络,通过阿里云交换机相连。搭建L3VPN over SRv6 业务场景,位于上海的Host1 将通过搭建的SRv6 VPN 与深圳的Host2 互通,其中SRv6 路径有两条,分别为单平面路径:阿里云上海-阿里云深圳,双平面路径:阿里云上海-天翼云上海-天翼云广州-阿里云深圳。对不同区域云内、同区域云间、单平面和端到端时延进行测试,实验伪代码如图10 所示,实验结果分别如表3、表4 和表5 所示。
图9 SRv6 公有云平面切换实验拓扑图
图10 公有云间平面切换实验伪代码
从表5 可以看出,流量转发路径可以有效地从一个公有云平面切换到另外一个公有云平面,切换平面后时延增大,分析表3、表4 可以得出原因在于增加了同区域云间切换时延。
表3 不同区域云内时延测试
表4 同区域云间时延测试
表5 端到端时延测试
5 结束语
本文概述了SRv6 技术的基本原理,分析了其优势以及在公有云上使用的意义,研究了基于公有云的SRv6 路径可编程性。基于开源软件VPP,实现了公有云内的路径切换和公有云平面切换,研究结果可应用于SD-WAN 和多云互联等场景。下一步将在本工作基础上增加SDN 控制器,用于路径下发和流量监控等,从而实现完整SD-WAN 的功能。