SDN中的Segment Routing

Posted dream397

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SDN中的Segment Routing相关的知识,希望对你有一定的参考价值。

 

传统基于RSVP的流量工程通过IGP协议的扩展,可以根据考虑链路负载的TED和LSDB进行CSPF计算选路,但由于协议复杂、部署繁琐,设备之间要维护协议状态导致实际应用中受到了很大限制。

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头部的长度限制选项头并不能无限扩充。

技术图片

图一 源路由选项转发

 

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源路由的思想高度一致。

技术图片

图二 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通过将应用流量压入控制器下发的标签栈实现最终的路径控制。

技术图片

图三 SDN选路控制

 

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

以上是关于SDN中的Segment Routing的主要内容,如果未能解决你的问题,请参考以下文章

Segment Routing — SRv6 — 统一的 SDN 控制面与数据面

P4 开发实践 — NG-SDN Tutorial — Exercise 6: Segment Routing v6 (SRv6)

P4 开发实践 — NG-SDN Tutorial — Exercise 6: Segment Routing v6 (SRv6)

Segment Routing — SRv6 — 统一的 SDN 控制面与数据面

云网一体化场景中的SDN应用

Oracle的数据存储逻辑结构中有人说segment就是表,这种说法对吗