《云数据中心网络与SDN:技术架构与实现》——1.15 Underlay最新技术——Segment Routing

举报
华章计算机 发表于 2019/06/06 13:47:57 2019/06/06
【摘要】 本书摘自《云数据中心网络与SDN: 技术架构与实现》——书中第1章,第1.15.1节,作者是张晨。

1.15 Underlay最新技术——Segment Routing

1.14介绍了“Overlay万金油”EVPN,本节来看看最新的Underlay技术——Segment Routing。入题之前,首先需要介绍一下源路由。

源路由是指由网络中的节点显式地指定流量的传输路径,后续节点将参考这个指定的路径进行转发。相比于直接在源和目的间做最短路径转发,源路由可以有效地满足流量对于时延、带宽等指标的要求。源路由的概念早在网络设计的初期就被提出了,IP的首部里就有源路由的选项,不过从某种角度来说,源路由和IP无连接的本质是有所冲突的,再加上会引入很多的安全问题,因此IP源路由并没有得到广泛的应用。MPLS为IP引入了有连接的部分特性,并将安全边界转移到了运营商的设备上,源路由才得以在MPLS的流量工程中找到了用武之地。不过,实现源路由的代价非常大,比如RSVP-TE需要维护十分复杂的路径状态,配置十分复杂,运维的成本很高,而且流量的调度效率也比较低。不过,由于运营商不愿意随便引入新的技术,因此厂商在广域网上的创新动力不是很足,RSVP-TE也就一直将就着用了。

2012年,SDN开始在商用数据中心落地。虽然在广域网上还不见大的动静,但Google自家B4的成功,使得运营商开始重新考虑广域网的设计,厂商感受到压力后也不得不开始对广域网技术进行更新。2013年,IETF成立了一个名为SPRING(Source Packet Routing in Networking)的工作组,旨在实现一种简单、灵活的源路由技术,用于更好地规划网络中的路径。Cisco推动的Segment Routing迅速地主导了SPRING的技术路线。相比于RSVP-TE,Segment Routing的核心设备上不需要维护复杂的路径状态,使用和维护起来就要简单很多。另外,Ingress Router可以接受由集中式控制器所生成的源路由,能够有效地提高流量调度的效率,因此有的说法将Segment Routing称为“SDN 2.0”。

Segment Routing译为“分段路由”(后面简称为SR),顾名思义,就是将源和目的间的路径分成不同的小段,逐段来进行流量的转发,和源路由大致是一个意思。分段的办法可以很灵活,如果从源A到目的B的路径总共有5跳依次为R1~R5,最简单的办法是将R1~R5看作一段,这样R1~R4都是直接根据R5进行路由,这种分段的办法相当于没有使用源路由。如果将每一跳都看作一段,即对应于严格源路由,R1在做路由时会以R2作为目的,R2做决策时会R3为目的,以此类推。如果在路径中间对应于松散源路由,比如将R1~R3看作一段,R1和R2做路由时以R3作为目的,将R3~R5看作一段,R3和R4做路由时会以R5为目的。

1.15.1 SID与Label

为了更好地实现上述的分段路由机制,SR设计了一套全新的SID(Segment ID)标识机制。网络的组成无非就是节点、链路和编址,节点和链路反映了物理拓扑,编址反映了逻辑拓扑。SR使用Prefix SID来标识IP前缀,不同的IP前缀在SR Domain中的Prefix SID不能有冲突。SR的节点使用Node SID来标识,每个SR节点在SR Domain中有全局唯一的Node SID。实际上Node SID是Prefix SID的一种,通常来说,SR节点上跑IGP/BGP的/32的loopback地址的Prefix SID,就是该节点的Node SID。SR节点间的链路由Adj SID来标识,Adj SID是节点本地唯一的,不同SR节点上很可能有相同的Adj SID。

从网络抽象的角度来说,一个物理的拓扑结构可以通过节点+链路进行完整的描述,因此对Node SID、Adj SID进行有序的排列,就可以对任意路径进行任意的分段。Prefix SID在实际中用的比较少,下面不会讨论Prefix SID的使用。除了Prefix SID、Node SID、Adj SID以外,SR中还有很多其他用途的SID,比如在不同节点间进行保护及负载均衡的Anycast SID,对两个节点间的多条并行链路进行保护及负载均衡的Parallel Adj SID,跨多个SR域并能够减小MPLS Label Stack深度的Binding SID等,这里也不再进行详细的介绍。

SR要求在流量的入口设备(Ingress Router)上指定分段信息,Ingress Router会根据路径的分段要求,将相应的SID列表封装在Header中,后续的设备就可以根据Header中的SID信息沿着目标路径进行转发。SR在其RFC中提到了MPLS Label Stack和IPv6 SRH两种Header,现有SR的实现都是用的MPLS,基于IPv6的商用SR产品目前还比较少见。下面所说的SR,都是指基于MPLS作为数据平面的SR。

SR中的Label是用来在数据平面上标识SID的。在一个SR Domain中,Node SID是全局唯一的,因此Node SID所对应的Node Label也需要是全局唯一的。SRGB(Segment Routing Global Block)可以表示为[start,end],用于描述Node Label的可用范围。SR中生成Prefix/Node Label的规则,就是用Node SID + SRGB.start来得到。之所以要设计SRGB来为SID做偏移,而不是直接用Node SID作为Label,主要是考虑到厂商现有的MPLS实现,可能难以找到一个足够容量,且各厂商都支持的SRGB。在SR的RFC中,建议一个SR Domain内的各个节点使用相同的SRGB,不过不同厂商SR设备上SRGB通常是不一样的,因此在进行跨厂家SR组网时情况就要复杂一些。考虑图1-53中的情况,PE1/P1/PE3是Juniper的设备,PE2/P2/PE4是Cisco的设备。如果PE 4的Node SID是44,那么PE1/P1/PE3上PE 4的Node Label就是800044,而PE2/P2/PE4上PE 4的Node Label就是16044。所以说,SRGB是SR节点本地的概念,“Node SID所对应的Label也需要是全局唯一的”这个描述实际上并不是十分严谨。在一个SR Domain中,Adj SID是节点本地有效的,Adj SID对应的Label也是节点本地有效的,因此Adj Label和Adj SID通常直接取相等,两者的取值范围默认是从SRGB.end开始递增的。

image.png

图1-53 不同的厂商使用不同的SRGB


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。