Segment Routing IGP Control Plane

本文是在读C. Filsfils et al.所著的Segment Routing第一卷第5章后所做的总结。
因为知识和能力有限,本章很多内容还没有理解,因此这里呈现的是极简版的。

通过扩展IGP协议ISIS和OSPF,使其在既有的分发拓扑和可达性信息的同时,在IGP域内分发SR信息。IGP域中的每个节点使用附加的SR信息,连同其计算出来的网络拓扑视图和前缀可达性信息一起,来构造转发表项。 IGP的扩展支持SR和LDP互操作,允许在现有的MPLS网络中无缝部署SR。

IGP协议的SR扩展

这里只简单介绍OSPFv2 SR。

OSPFv2最初被定义为使用固定长度的链路状态通告LSA用于其基本协议操作。然而,随着协议的发展,引入了不透明LSA (Opaque LSA) ,用以扩展协议以支持流量工程和其它应用。这些不透明LSA已经被扩展用于在OSPFv2中引入新的能力,包括SR。


OSPFv2不透明LSA在IETF RFC 5250中定义。不透明LSA可以由OSPF或希望使用OSPF在网络中分发信息的其它应用直接使用。不透明LSA所携带的信息,可以不被经过的OSPF路由器所理解,但它仍会对该不透明LSA进行洪泛,而只有理解这些信息的OSPF路由器才会真正的使用它。因此,不透明LSA提供了在现有网络部署中扩展OSPF协议而不破坏现有功能的一种机制。


不透明LSA使用三种类型(Type)的OSPFv2 LSA:类型9,类型10,类型11,每种LSA类型指示了不透明LSA的洪泛范围。因此,这三种类型的LSA功能是相同的,都是不透明LSA,不同的只是洪泛范围。
不透明LSA的洪泛范围如下:

类型9本链路 (link-local) 范围的不透明LSA,这种类型的LSA不会洪泛到本地(子)网络之外。
类型10本区域 (area-local) 范围的不透明LSA,这种类型的LSA不会洪泛到生成它们的区域之外。
类型11本自治域 (AS-wide) 范围的不透明LSA,这种类型的LSA不会洪泛到末梢区域 (Stub Area)

为了允许不同的应用使用不透明的LSA,它们携带 "不透明类型 (Opaque Type) " 字段以指示其类型,路由器信息不透明LSA是不透明类型4的不透明LSA,它用于通告OSPF能力。
不透明LSA的格式详见P105,注意对于不透明LSA,“Link State ID” 字段被划分为不透明类型字段 (前8位) 和不透明类型字段特定的不透明ID (Opaque ID,剩余24位)。不透明类型与不透明LSA的洪泛范围无关,它指示的是哪些数据在该不透明LSA中。

OSPFv2被扩展以支持扩展链路属性和扩展前缀属性的通告,这是对现有OSPFv2的固定长度LSA所携带信息的补充。RFC 7694新定义了以下两种不透明LSA类型和TLV类型:

  • OSPFv2扩展前缀不透明LSA (OSPFv2 Extended Prefix Opaque LSA) (不透明类型7)
    — OSPFv2扩展前缀TLV (OSPFv2 Extended Prefix TLV) (类型1)
  • OSPFv2扩展链路不透明LSA (OSPFv2 Extended Link Opaque LSA) (不透明类型8)
    — OSPFv2扩展链路TLV (OSPFv2 Extended Link TLV) (类型1)

OSPFv2 SR扩展在IETF draft-ietf-ospf-segment-routing-extensions中定义。在OSPF中分发的SR信息由前缀/链路的附加属性组成。不透明类型7 LSA用于分发Prefix-SID,不透明类型8 LSA用于分发Adjacency-SID。Prefix-SID和Adjacency-SID分别作为子TLV,添加在扩展前缀TLV和扩展链路TLV中。

  • OSPFv2扩展前缀不透明LSA (不透明类型7)
    — OSPFv2扩展前缀TLV (类型1)
    ——Prefix-SID子TLV (类型2)
  • OSPFv2扩展链路不透明LSA (不透明类型9)
    — OSPFv2扩展链路TLV (类型1)
    ——Adj-SID子TLV (类型2)
    ——LAN Adj-SID子TLV (类型3)

    路由器信息不透明LSAS被扩展以携带OSPF SR能力信息。在路由器信息不透明LSA中定义了两个新的TLV。
  • 路由器信息不透明LSA (不透明类型4)
    —SR-Algorithm TLV (类型8)
    —SID/Label Range TLV (类型9)

OSPFv3 SR与OSPFv2类似。

OSPF和ISIS是在很多IP网络中广泛使用的路由协议,大多数网络运营商对其解释得很好。能够利用熟悉的IGP协议也是SR得到迅速采用的关键因素之一。

SR 能力

每个节点在IGP中通告其SR能力:对SR的支持,对SR数据平面的支持,对SR算法的支持以及通告其SRGB。
详细内容见P110。

Prefix-SID


传统的MPLS控制平面使用LDP来分发与IGP前缀相关联的标签。这是一个多余和复杂的设计决定。
在SR中,简单的IGP扩展使得IGP本身能分发标签。
消除LDP意味着要维护的代码更少,可能的软件问题更少,故障排除更容易,分布式路由系统的性能消耗更少。
消除LDP也意味这更简单的SDN操作,因为控制器仅需要获取IGP链路状态拓扑,就可以推导出拓扑和相关Segment。
消除LDP还意味着消除令人烦恼的LDP和IGP之间的同步问题 (IETF RFC 5443)。
SR项目的目标是简化IP网络的操作,增加其可扩展性和功能,并最终使应用能够控制网络,而不需要在整个网络基础设施上增加流状态。


具体看书吧,以后有必要再来作总结。

Adjacency-SID

在IGP通告中传递Adjacency-SID

由于Adjacency Segment是本地Segment,所以在IGP中以绝对MPLS标签值的方式通告Adjacency-SID。
虽然域中的每个节点都会收到所有其它节点通告的Adjacency-SID,但是只有始发Adjacency-SID的节点能够正确解读它,并且只有始发节点在转发表中安装自己通告的Adjacency-SID。

一个IGP邻接可以有多个关联的Adjacency-SID。Cisco IOS XR为每个邻接自动分配两个Adjacency-ISD:一个始终不受保护 (Unprotected,即在发生故障时没有备份路径),一个具有保护资格 (Protection-eligible,即如果有备份路径可用,转发表中会有一条备份路径的转发条目)。 在故障的情况下,TI-LFA为这些Adjacency-SID标签转发条目提供自动保护,通过FRR机制激活数据平面的修复路径。
不受保护的Adjacency-SID可以用在这样的场景:对于某些SR应用,不需要中间节点通过本地修复的方式实现流量保护,当故障发生时,宁愿丢弃流量——这可能时为了在源节点处触发端到端备份路径。需要中间节点具有本地修复能力的SR应用可使用具有保护资格的Adjacency-SID。这些概念都是SRTE的组成部分。

Adjacency-SID分配

启用SR时,IGP会自动为所有接口分配Adjacency-SID标签 (动态MPLS标签池中的本地标签)。
ISIS为每个处于Up状态的邻接分配和通告Adjacency-SID。
OSPF为每个处于双向同信 (2-way)状态或以上的邻接分配和通告Adjacency-SID。 如果邻接低于双向通信状态,那么OSPF将撤销Adjacency-SID。
详见P140。

LAN Adjacency-SID

虽然点对点邻接在网络中比较普遍,但是SR也可以在广播型局域网上使用,比如某些网络设计中存在以太局域网。书中所用的术语 “LAN Adjacency-SID” 表示与局域网接口上的邻接相关联的Adjacency-SID。


局域网上的多个设备共享一个公共的广播介质,他们之间通过该截至相互可达。建立每个节点到局域网上所有其他节点的点对点邻接,即全网状连接的邻接,将非常低效。在一个具有n个节点的局域网上,将存在n(n-1)/2个邻接,并且局域网上将产生大量不必要的二层洪泛。为了减少邻接的数量和LAN上的洪泛量,可以使用 “伪节点” (在OSPF中称为 “Designated Router”,指定路由器DR)的概念。虽然ISIS和OSPF的实现和术语不通,但两种协议都使用这个概念。
伪节点时用于表示或模拟广播介质网络的一个虚拟节点。局域网上的每个节点都通告其与伪节点之间的 “点对点” 邻接。局域网上的节点会选择一个节点来承担伪节点的角色。承担伪节点角色的节点,以伪节点的身份通告伪节点与局域网上所有节点的邻接。


局域网上的节点只会将其邻接通告给LAN的伪节点,但是SR需要将流量直接引导到LAN上的每个节点,而不是经由中间的伪节点来引导流量。因此,LAN上的每个节点,都要为其到局域网上其他每个节点的 “邻接”,分配和通告LAN Adjacency-SID。
书P141页提供了一个例子,很好理解。

Adjacency-SID持久性

Prefix-SID本质上是持久的,因为它们是全局Segment,它们的值在网络中被设置后就不会改变。而Adjacency-SID是从动态标签池中分配的本地Segment。可能会发生这样的情况:如果IGP邻接失效 (例如链路震荡),那么它再次变得可用时,此时为同一个Adjacency-SID分配的动态标签可能与之前的值不同。这将可能导致Adjacency-SID值在网络中不断变化和扰动。Adjacency-SID可以用于SRTE。在常规的可预期的事件 (例如链路震荡) 发生时,对Adjacency-SID值的更改可能会导致网络中SRTE策略和路径的大量更新调整,这是非常低效的。因此,人们非常希望在大多数影响IGP邻接的普通事件发生时,Adjacency-SID能够保持不变。
Cisco IOS-XR提供了一种机制,详见书P142。

使用Adjacency-SID要非常谨慎,一般只在特定情况下,比如TI-LFA这样的SR场景,才使用Adjacency-SID。Adjaency-SID的标签在系统重启前后很可能不一样,所以最好不要直接使用这些标签,除非有机制能够检测到它们的更改,并及时更新它们 (如TI-LFA)。这与Prefix-SID不通,Prefix-SID往往是全局和稳定的标签,因此在很多用例中被广泛使用。

其它的内容见书,这里暂时不叙述了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值