前言

从第一次接触到Segment Routing(SR),到现在专注与Segment Routing的研究和标准化,了解越来越深入,也越来越清楚SR将成为网络的发展趋势。在SR架构文稿成为RFC8402的这一刻,没有什么比写一篇介绍SR架构的文章更好的选择了。

背景

Segment Routing的诞生背景和SDN紧密相关。在SDN出现早起,SDN几乎和OpenFlow密不可分。但在商业上,OpenFlow这样极具革命性创新的新协议很难被传统设备商所接受,也影响了巨头们的利益。在技术上,OpenFlow网络中每个节点都要维持网络状态,当网络规模变大,业务变多,网络管理和运维就变得复杂,网络的可扩展性就受到了限制。为了面对OpenFlow的挑战,Cisco提出了Segment Routing(SR),一种可以在Ingress节点指明数据包转发路径的源路由机制。

总体来看,SR主要有如下的特征(包括但不限于)

  • 支持源路由,支持在源节点显示指定转发路径
  • SR只在Ingress节点保持Per-flow的状态,中间网络节点无需维护Per-flow的网络状态,只需无状态转发即可,因此SR具有很好的可扩展性。
  • SR无需在节点之间采用任何信令协议,不要求增加任何新的网络协议,减少网络信令协议的使用。
  • SR可以部署在MPLS和IPv6两种数据平面。

Segment Routing Architecture

Segment Routing (SR)是一种源路由机制。SR支持在源节点往数据报文中插入一组有序的操作指令来显示地指定数据包的转发路径和处理流程。这个操作指令称之为“Segment”。一个Segment可以是具有拓扑意义的,比如代表一个节点或者一条链路,也可以是基于服务的,比如描述一个service。

一个Segment可以是本地意义的,也可以是全局意义的。比如描述一个指向一个邻接的链路,或者描述一个全局的节点或者网段。

基于SR,可以实现数据流的显示路径转发,而且只需在Ingress节点维持Per-flow的状态而无需在中间节点或尾节点来维持per-flow的状态。相比RSVP-TE MPLS需要在所有节点维持Per-flow的状态,SR大大节省了网络的状态维护难度,从而简化了网络,也提升了网络的可扩展性。

当下的SR架构可以部署在两种数据平面上:

MPLS

部署在MPLS数据平面上的SR,标准上习惯称之为SR-MPLS,当然也有人喜欢叫MPLS-SR。其可以直接基于现有的MPLS数据平面部署,无需对数据平面进行任何改动。这意味着,从RSVP-TE MPLS到SR-MPLS的改动只需对控制平面进行升级,使得网络可以更平滑地存量演进。在SR-MPLS中,一个Segment表现为一个MPLS Label(标签)。

SR-MPLS

Ref:Huawei Document:IPv4 Segment Routing

Segment/Label可能是具有全局意义的,也可能是具有本地意义的。在SR-MPLS中,每一个节点会配置对应本地标签块SRLB(Segment Routing Local Block)和SRGB(Segment Routing Global Block)。从SRLB中的标签值具有本地意义,从SRGB中的标签值具有全局意义。

为了满足MPLS标签资源本地化,同时又要满足SR全局标签的需求,SRGB是节点的配置信息,不强制全网统一,但在实际部署时,为方便起见,一般是统一的。

比如节点A的SRGB为1000-2000,节点B的SRGB为3000-4000。节点A的Node-SID为1,B的Node-SID为2,那么节点A在发布自己的节点SID时,可以选择发布绝对值1001,也可以发布index为1。其他节点会依据节点A发布的SRGB(1000-2000)来计算转发到该节点时,应该使用标签1001。而一个全网路由的Node-SID 1在转发到B节点时,标签值就是其SRGB下限3000+1=3001。从而保证了标签均为本地意义,但同时又提供了全局路由的能力。

当SRGB均一样时,就容易理解地多。比如SRGB均为1000-2000。那么无论转发到A节点还是B节点,标签值均为1001。

一组有序的Segment,称之为Segment list,在SR-MPLS网络呈现为一个MPLS标签栈。需要被处理的标签为栈顶的标签。被处理完的标签,将会被弹出。所以随着数据包在MPLS网络中转发,标签栈中的标签会不断弹出,直到最后弹完。数据包的转发动作,则有标签指定,其转发行为同RSVP-TE MPLS网络。

更多标签操作,如PUSH,NEXT,CONTINUE等基础知识可以参考draft-ietf-spring-segment-routing-mpls-15

SRv6

SR架构也可以应用在IPv6网络中,称为SRv6(Segment Roouting over IPv6)draft-ietf-6man-segment-routing-header-15

在SRv6中,一个Segment表现为一个128 bit的IPv6地址。一个Segment list就表现为插入在SRH中的一组有序的IPv6地址列表。但并不是所有的IPv6地址都是SID,其需要被声明为SID。此外,SID可以是节点的地址或者接口的地址,但大部分情况下是独立声明的SID。

为了支持SRv6,需要扩展一种新的IPv6 Routing Header: Segment Routing Header(SRH),格式如下图:

SRH

关于SRH的内容后续文章会继续介绍。

Link-State IGP Segments

描述Segment的ID称为Segment ID,缩写为SID。在不同的数据平面,SID的表现形式不同。在MPLS数据平面,SID表现为一个MPLS标签,而在IPv6数据平面里,SID表现为一个128bit的值,其可以是节点的一个接口地址,也可以不是。

SR的控制平面在Ingress节点根据SR Policy给数据包插入Segment List,显示指定数据包的转发路径(松散路径或者严格路径,后面介绍),以及在指定节点的操作。节点需要根据数据包中的指令来处理和转发数据包。

SR控制平面可以是分布式的,也可以是集中式的。在分布式的情况下,需要通过扩展IGP(IS-IS/OSPF)或BGP等路由协议来支持SR。

IGP SID

本小节将简要介绍SR中重要的几类SID。

Node-SID

节点SID, 用于表示一个SR节点。 SR-MPLS:FEC 10.8.8.3对应的/绑定的SID可以是一个MPLS标签,值为1003。 SRv6: IPv6地址A::1/128本身就可以发布成SID。

Prefix-SID

用于描述网段的SID。 SR-MPLS:网段10.8/16的SID可以是标签1001。 SRv6:网段A::/48的SID就是A::/48。

Adjacency-SID

用于描述邻接的SID,描述指向邻接的某条链路或集合。用于指定数据包发向指定链路,可用于严格路径的SR-TE。

SR-MPLS: 从SRLB中取出的某本地标签值,比如9001。 SRv6: 可以是某一个节点的接口的IPv6地址。比如A::C6。

Binding-SID

绑定SID。可用于映射SID List。比如SID值100为一个Binding-SID,其映射的SID list为[2001,2003,2005]。那么为了缩短SID list,可以采用插入Binding SID的方式来取代[2001,2003,2005]。一般可用于标签粘连和和SR Policy场景。

SR-MPLS: 从SRLB中取出的某本地标签值,比如9002。 SRv6: 发布成SID的某一个IPv6地址,比如A::C6。

Path SID

Path SID用于标识SR网络中的路径。其出现的原因主要是因为在SR-MPLS中,标签会不断被弹出,当数据包到达Egress节点时,节点无法识别数据包来自哪一条路径,所以需要一个Path SID来标识。

而在SRv6网络中,使用SID List来描述一条路径过于复杂,所以SRv6 Path Segment也被提出来了。

SR-MPLS

后续文章会介绍SR-MPLS。可参考draft-ietf-spring-segment-routing-mpls-15

SRv6

后续文章会介绍SRv6。可参考draft-ietf-6man-segment-routing-header-15

SRv6 NP

后续文章会介绍SRv6 Network Programming。可参考draft-filsfils-spring-srv6-network-programming-06

SR Use Cases

更多Use cases后续可能会有文稿介绍,建议读者直接阅读ietf标准草案。

  • SFC
  • SR TE
  • 网络编程
  • E2E SRv6

总结

关于Segment Routing的更多学习,后续会有更多文章介绍。读者可前往SPRING WG阅读进一步内容。也可以下载华为的技术文档或者搜索华为技术文档

PS:本文章为个人学习总结,不涉及任何商业信息。


Segment Routing系列文章:To Write List

2018-08-09 by muzi

前言


人啊,总是懒惰的。

一懒惰,就是两年。

总是有太多理由,总是有太多借口。

但终究,还是无法再骗过自己了。

问过了领导,领导答复:“写互联网公开的,开源的内容没有问题”。那就从我平时研究的Segment Routing开始写吧。为避免踩信息安全红线,还是要很郑重地声明:

所有文章内容均为互联网公开资料和个人技术理解,不涉及任何商业机密。

什么是SR

Segment Routing, 中文翻译为段路由,是一种源路由架构,其支持在Ingress node(源节点)指定数据包的转发路径。

Segment Routing的诞生背景和SDN紧密相关。在SDN出现早期,SDN几乎和OpenFlow密不可分。但现在OpenFlow却并没有像前两年那样如火如荼,已经开始慢慢冷却,慢慢退出人们的视野。

OpenFlow冷却的原因很多。从商业上,极具革命性的OpenFlow可能会打破网络行业的格局,影响了行业巨头的利益,所以很难被传统设备商所接受。在技术上,OpenFlow网络中的每个节点都要维持per-flow的网络状态,当网络规模变大,业务变复杂,网络管理和运维就变得复杂,网络的可扩展性就成了问题。就在此时,一个更容易平滑演进,又具有足够的网络编程能力的网络架构Segment Routing被提了出来 ...

read more

迟到的2017总结:《起风了,黎明》

2018-06-03 by muzi

终于办完了美国退税支票的托收,走出中国银行的时候,觉得如释重负。

这一年多,过得太不容易。

硅谷故事

"It's not a big deal."

"It is a big deal!"

"All right, it is a big deal!",我还是承认了我遇到了一件很大的事,即使我还不愿意承认。

2017年1月27号,星期五,农历大年三十,除夕。美国硅谷圣何塞郊区的Milpitas,一如以往的平静和安详,没有一丝节日的气息。

一晚上没睡好的我,在9点多的早晨,与实习生外包公司的人力主管R发生了以上的对话:项目没钱了,希望我收拾好物品,回家。他问我什么时候走合适 ,好给我定回去的机票。今晚就要搬出公寓。

几个月之前确实有人给我暗示过,如果项目没有预算了,就要回国。但后来项目经理给我保证我的预算没问题,所以我放心了。没想到再次提起预算的时候,竟然实在春节之际。

“为什么让我走 ...

read more

简历:专业而美的“术”与“道”

2017-08-06 by muzi

“我什么都不会”,“我什么都没干”,“这个项目很水”,这是我在帮别人修改简历时听到的最多的几句话。难道你真的什么都不会吗?真的什么都没干吗?真的很水吗?其实很多情况下,是这样的。

但是很水就放弃治疗了吗?不会的。放下无谓的抱怨和遗憾,好好梳理自己,认真编写简历才能解决问题。然而,写简历却是一个大学问。

最近帮朋友改了几封简历,反馈不错,转念一想,为什么不把自己的小技能写成一篇文章呢。所以我决定写一篇长文来记录自己的心得,也给别人提供一些帮助。

本文将介绍如何写好一份技术类简历,尤其指计算机方面的技术简历。读者可以按照文章介绍的技巧去修改自己的简历,相信会有不错的效果。文章的主要内容包括:

  • 简历的重要性
  • 如何写好简历
    • 格式
    • 内容书写
      • 基本信息
      • 实习/项目
      • 所获奖项
      • 个人技能
      • 其他技能/社会实践
    • 内容编排
      • 排序
      • 针对性
      • 锦上添花or画蛇添足?
    • 简历之道
      • 作品化思维
      • 索引理论
      • 工匠精神
  • Cover letter
    • 发简历的黄金时间
  • 总结 ...
read more

《重构网络:SDN架构与实现》终于出版啦!

2017-04-05 by muzi

技术的海洋,波涛汹涌,暗流窜动,谁不想顺着洋流去远方。

我是幸运的,跟随着SDN的发展大潮成长了多年,也有幸能有机会和杨泽卫前辈一起完成这本出自SDN学习者的书:《重构网络:SDN架构与实现》

重构网络:SDN架构与实现

无思辨不足以明理;无案例不足以求真;无细节不足以知端详。

我们力争在历史的轨迹中翻找出积满灰尘的事件,打磨、分析并得出我们的结论;我们也努力抽象实践所需的技能,绞尽脑汁地尝试通过最简单、清晰的案例来帮助读者更好地实践。

而我,总算没有撒谎,我真的还是一个在读研究生啊。

最后,走过路过不要错过SDNLAB(全球最大的SDN中文网站,没有之一。 ——以上都是我自己说的)的试读活动

编辑推荐

久立潮头的先行者,携数年磨砺与反思,为SDN大时代领航、解惑;

业务突破迎来网络重构的重大契机,用架构思想谋篇,用实现技术布局;

架构深度与产业广度完美聚合,技能、思路、视野、境界尽收囊中;

本书《重构网络:SDN架构与实现》宗旨:无思辨不足以明理|无案例不足以求真|无细节不足以知端详

内容简介

身处SDN发展浪潮 ...

read more