SRv6网络编程自学系列之二 | SRv6 uSID压缩方案

书籍来源:《SRv6:可编程网络技术原理与实践》

2022年刚出的书,业界的众多大佬合力,将SRv6最前沿的技术分享了出来。一边学习一边整理读书笔记,并与大家分享,侵权即删,谢谢支持!

附上汇总贴:SRv6网络编程自学系列之二 | 汇总_COCOgsta的博客-CSDN博客


SRv6 uSID方案与G-SRv6压缩方案基本思想类似,都是将128bit SID中的公共前缀(uSID Block)字段提取出来。但不同的是,其基于uSID Container携带公共前缀与uSID信息。

5.5.1 uSID以及uSID Container

SRv6 uSID方案主要采用“共享前缀”+“移位出栈”方式实现。通过提取Locator Block作为uSID Block,并在128bit SID中携带此uSID Block与多个uSID字段。

uSID Container是128bit的Segment List空间,与G-SRv6不同的是,uSID Container主要用于携带uSID,而不用于承载标准的SRv6 SID。在uSID Container中,还定义了承载器结束(End-of-Container,EOC)标志,用于指示承载器中uSID编码结束。

uSID Container的格式如图5-19所示。其中,uSID Block与G-SRv6方案中的Common Prefix字段含义相同,都是指公共前缀; uSID则是从相应SRv6 SID中提取的一个定长的ID。

uSID方案通过移位操作实现报头处理, 无须引人新的COC/SI标志位信息, 硬件实更为简单。

5.5.2 SRv6 uSID数据平面技术

SRv6 uSID方案支持标准SRv6 SID与uSID Container的混合编码, 携带uSID的SRH封装格式示例如图5-20所示。

基于uSID进行报文转发时, SRv6节点会将整个uSID Container复制到IPv6 DA字段中, 此时采用uSID的IPv6报头格式示例如图5-21所示。

与G-SRH中G-SID采用倒序封装方式不同,uSID Container按照SRv6路径顺序进行uSID封装,多个uSID从左到右进行排列。uSID Container编码示意图如图5-22所示。

根据在uSID Container中的位置,uSID包含以下3种角色。

  • Active uSID:表示当前活动的uSID。
  • Next uSID:表示下一个uSID。
  • Last uSID:表示最后一个uSID。

当某节点收到采用uSID压缩方案的SRv6报文后, 将该报文DA字段中的uSID Block与Active uSID进行组合,构成一个路由前缀SID。

该节点基于此路由前缀SID查询本地SID表:若命中, 则执行相应指令、转发报文; 若不命中, 则查询IPv6 FIB基于最长匹配原则转发报文。上述操作过程称为“移位+转发”操作。

“移位+转发"操作包括“Shift and Lookup(移位+查表转发) ”与“Shift and Xconnect(移位+邻接转发) ”两种。“移位+查表转发”操作指在DA中进行uSID移位操作后, 基于新的DA查表转发报文; “移位+邻接转发”操作指在DA中进行uSID移位操作后, 从指定邻接接口转发报文。

uSID Container中多个uSID所构成的有序排列, 指明了SRv6报文需依次经过的Endpoint节点。每经过一个节点,就弹出一个uSID。通过这种“移位+转发”方式即可实现对同一uSID Container中不同uSID的遍历。

5.5.3 uSID控制平面技术

SRv6 uSID方案需对控制平面协议进行扩展。uSID通告方式与其Endpoint Behavior类型有关。

  1. uN行为

uN行为对应SRv6 End操作,可附加PSP、USP、USD等Flavor行为。uN行为与SRv6 uSID绑定, 执行“移位+查表转发”操作。

此处将与uN行为绑定的uSID简称为uN SID。uN SID代表节点N的Locator信息,需通过路由协议通告此路由,以提供在SRv6网络中节点N的全局可达性。

IS-IS协议基于SRv6 End SID Sub-TLV/SRv6 SID Structure Sub-sub-TLV通告与uN SID相关信息。SRv6 End SID Sub-TLV中的SID字段用于携带uN SID,Endpoint Behavior字段用于携带uN行为代码, 而SRv6 SID Structure Sub-sub-TLV中各字段则表示uN SID的结构。

假定uSID Block为2001:db8:0::/48, uSID长度为16bit, 则uN SID可表示为2001:db8:0:0N00::/64,而2001:db8:0:0N00::/80则可表示绑定至附加PSP和USD Flavor的、与End行为相同的uN SID。与uN SID相关TLV各字段说明见表5-4。

  1. uA行为

uA行为对应SRv6 End.X操作, 同样可附加PSP、USP、USD等Flavor行为。uA行为与SRv6 uSID绑定, 执行“移位+邻接转发”操作。

与uN SID信息通告相仿, IS-IS协议基于SRv6 End.X SID Sub-TLV或SRv6 LAN End.X SID Sub-TLV以及SRv6 SID Structure Sub-Sub-TLV通告与uA SID相关信息。

为保证uA SID全局可见,IS-IS协议通常采用uN+uA组合方式通告uA SID。其中,uN提供了全局可见的节点N的uSID信息, uA则标识节点N本地有效的邻接uSID。

假定节点N的uSID Block为2001:db8:0:0N00::/64,“FNAJ”为16bit的uA字段, 则uA SID可为2001:db8:0:0N00:FNAJ::/80。与uA SID相关TLV各字段说明见表5-5。

  1. uDT行为

uDT行为与SRv6 End.DT4/End.DT6/End.DT2行为相对应。

BGP基于SRv6 SID Infomation Sub-TLV/SRv6 SID Structure Sub-sub-TLV通告与uDT SID相关信息。

为保证与uDT相关信息全局可见, BGP通常采用uN+uDT组合方式进行通告。其中,uN提供了全局可见的节点N的uSID信息, uDT则标识节点N本地有效的uSID。

假定节点N的uSID Block为2001:db8:0:0N00::/64, “FNVT”为16bit的uDT字段, 则uDT SID为2001:db8:0:0N00:FNVT::/80。与uDT SID相关TLV各字段说明见表5-6。

  1. uDX行为

uDX行为与SRv6 End.DX4/End.DX6/End.DX2行为相对应。

与uDT SID通告方式一致,BGP基于SRv6 SID Information Sub-TLV/SRv6 SID Structure Sub-sub-TLV通告与uDX SID相关信息。

为保证与uDX相关信息全局可见, BGF通常采用uN+uDX组合方式进行通告。其中,uN提供了全局可见的节点N的uSID信息,uDX则标识节点N本地有效的uSID。

假定节点N的uSID Block为2001:db8:0:0N00::/64,“FNXJ”为16bit的uDX SID字段,则uDX SID可为2001:db8:0:0N00:FNXJ::/80。与uDX SID相关TLV各字段说明见表5-7。

猜你喜欢

转载自blog.csdn.net/guolianggsta/article/details/129966724