34

SDN中的Segment Routing

 5 years ago
source link: https://www.sdnlab.com/22195.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

作者简介:晏志文,原就职于中兴通讯,目前供职于安徽皖通邮电股份有限公司。数通测试专家,本领域从业深耕多年,熟悉传统网络技术及行业解决方案,密切关注新兴网络,ICT融合技术。

云计算和移动互联网的快速发展造成了流量模型的巨大变化,传统封闭固化的网络很难适应这种业务场景下的动态需求,主要体现在以下几个方面。网络设备与承载应用的割裂导致网络无法快速响应业务对网络的需求,网络业务面向设备而非面向应用。流量分布不均匀造成带宽浪费,设备依据最短路径策略转发,不具备全局视角,无法动态感知网络负载的变化。多厂家设备互操作的难度,造成E2E业务变更和故障定位的困难,客户设备成本和运维成本不断攀升。传统基于RSVP的流量工程通过IGP协议的扩展,可以根据考虑链路负载的TED和LSDB进行CSPF计算选路,但由于协议复杂、部署繁琐,设备之间要维护协议状态导致实际应用中受到了很大限制。

SDN%20Segment-Routing668x400.jpg

SDN可以实现用户对网络开放能力、可编程能力、集中控制能力、可视化能力的诉求,成为下一代网络的最佳选择,本文针对其中的流量调度技术做简要介绍。相对于Openflow更加激进的SDN演进策略,由于对现网改动过大无法平滑迁移,基于Segment Routing(以下简称SR)方式的流量调度技术逐渐成为业界共识。SR不需要像LDP和RSVP一样维护协议状态,简化了控制面。基于源路由方式使流量路径在源端注入,其它设备无需感知。使用MPLS和IPV6扩展头作为转发面,支持网络的SDN平滑过渡。结合BGP-LS和PCEP南向协议,快速响应业务对网络的需求。

IP源路由

SR的转发面非常简单,甚至都不能称作新技术,在IP选项头中就有源路由选项的定义。普通报文转发依据路由,无论是通过策略路由、最短路径算法还是BGP路径属性,目的地址确定了,转发路径也就确定了。如果需要影响流量转发路径,强制流量松散的经过某些指定转发节点,甚至超越路由之上严格指定转发路径,就可以利用IP选项头中的源路由选项。图一显示某条src为10.0.0.1,dst为30.0.0.1的流量在两种情况下的转发路径,红色路径标识基于最短路径的路由转发,蓝色路径标识基于源路由选项的转发。node1始发的流量的目的地址为第一个松散节点本地地址,真实的目的地址保存在选项头中,并将选项头指针指向该地址。报文先通过最短路径转发至node3接口20.0.0.1,中间设备只做路由转发。node3处理选项头,将其中指针指向的地址30.0.0.1和原始目的地址20.0.0.1替换,并将指针偏移4字节指向下一处地址,然后按照真实的目的地址进行路由转发。本实例做了简化只有一处松散节点,可根据实际需要设置多个松散节点形成地址栈,但由于IP头部的长度限制选项头并不能无限扩充。

1.jpg

图一 源路由选项转发

SR的转发面

到目前为止我们还没有真正的谈到SR,但上文的IP源路由正是SR转发面的核心,只是从选项头中的地址栈转变为IP头外部的MPLS标签栈,甚至IPV6场景依然在扩展头中沿用地址栈的方式。SR中存在两种类型的标签:节点标签和邻接标签,后面控制面会详细阐述,暂时可以认为节点标签唯一标识SR域中的一台设备,全局有效,邻接标签与传统的LDP标签类似,由邻接的下游设备分配标识本地出口,只在本地有效。有了节点标签就可以明确指定流量必须经过哪台设备,有了邻接标签就可以指定流量在本设备的出口,至此我们可以摆脱路由的限制随意的定义流量路径,但又避免了复杂的路由策略,因为流量路径是在源节点通过标签栈定义,其它设备不需感知。如图二所示SR域内的每台设备都分配了唯一的节点标签,标签value由索引和SRGB(Segment Routing Global Block)相加得出,其中SRGB是设定用于SR的标签块,图中做了简化用索引值代替标签值,黄色虚线表示node4和node6为node5分配的直连链路的邻接标签,所有这些标签值统称为SID(Segment ID),最终在源端压入的标签栈就是SID。红色路径依旧标识路由转发路径,当node2和node4之间的链路不满足应用需求时,源端请求使用蓝色的绕行路径,于是在node1上压入①所示的SID标签栈(Segment List),标签值5表示流量必须经过node5;报文到达node2时进行标签swap,swap后外层标签依然是5,报文到达node3时基于PHP原则将标签5进行POP;报文到达node5时外层标签是6001,继续进行标签6001的POP转发至node4;报文达到node4时外层标签6进行POP转发至node6,完成流量的绕行转发。标签在swap时的转发依据其实就是路由计算出的最短路径,可以看到SR的转发面和IP源路由的思想高度一致。

2.jpg

图二 SR转发面

SR的控制面

上文提到了两种类型的SID,节点ID(Node SID)和邻接ID(Adjacency SID)。节点ID是一种特殊的前缀ID(Prefix SID),前缀ID标识一个由IGP路由计算出的地址前缀,而节点ID一般被限制为设备的loopback接口。由于节点ID唯一标识一台设备,需要全局唯一,而邻接ID只标识设备的本地出口,在邻接路由器之间分配本地有效。SID的分配可以采用路由协议扩展支持或者由控制器统一分配,流量路径由源端节点注入,可以看到SR的控制面是一种无状态并且极为简单的实现。

SDN中的应用

有了路径控制的技术,还需要针对应用的流量选路,才能完成网络按应用需求的随动,这里引入两种技术BGP-LS和PCEP。BGP-LS是BGP扩展的一个地址族,宣告IGP协议及其TE扩展生成的链路状态,包含拓扑连接、端口带宽及链路负载等,控制器通过维护TED和LSDB就具备了全网的网络状态视图。当某个应用请求满足一定SLA需求的路径时,就会通过PCEP协议进行路径计算请求,当然该请求也可以由控制器主动发起。如图三所示node1节点作为PCC向控制器PCE发起路径请求,由控制器根据BGP-LS通告的链路状态选取符合应用要求的链路,通过PCEP扩展对SR的支持生成相应的Segment List回应node1节点,node1通过将应用流量压入控制器下发的标签栈实现最终的路径控制。

3.jpg

图三 SDN选路控制

本文介绍了SR在SDN中的应用,通过简单的协议扩展,实现了类似Openflow的灵活控制,对于SR域和非SR域可以利用over的过渡策略实现平滑迁移,是WAN或MAN向SDN演进的有效手段。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK