6. Illustrations (示例说明)
6. Illustrations (示例说明)
本节提供了 SR 源节点、传输节点和 SR 段端点节点的 SRv6 数据包处理示例说明。
6.1. Abstract Representation of an SRH (SRH 的抽象表示)
对于节点 k, 其 IPv6 地址表示为 Ak, 其 SRv6 SID 表示为 Sk。
IPv6 头部表示为 (源地址, 目的地址) 元组。例如, 源地址为 A1 且目的地址为 A2 的数据包表示为 (A1,A2)。数据包的有效载荷被省略。
SR 策略 (SR Policy) 是一个段列表。段列表表示为 <S1,S2,S3>, 其中 S1 是要访问的第一个 SID, S2 是要访问的第二个 SID, S3 是要访问的最后一个 SID。
(SA,DA) (S3,S2,S1; SL) 表示一个 IPv6 数据包, 具有:
- 源地址 SA, 目的地址 DA, 下一个头部为 SRH。
- SRH 的 SID 列表为 <S1,S2,S3>, SegmentsLeft = SL。
- 注意 <> 和 () 符号之间的区别。<S1,S2,S3> 表示一个 SID 列表, 其中最左边的段是第一个段。相反, (S3,S2,S1; SL) 表示相同的 SID 列表, 但以 SRH 段列表格式编码, 其中最左边的段是最后一个段。当在高层用例中引用 SR 策略时, 使用 <S1,S2,S3> 表示法更简单。当引用详细行为的示例时, (S3,S2,S1; SL) 表示法更方便。
在其 SR 策略头端, 段列表 <S1,S2,S3> 产生 SRH (S3,S2,S1; SL=2), 完整表示为:
Segments Left=2
Last Entry=2
Flags=0
Tag=0
Segment List[0]=S3
Segment List[1]=S2
Segment List[2]=S1
6.2. Example Topology (示例拓扑)
以下拓扑用于下面的示例:
+ * * * * * * * * * * * * * * * * * * * * +
* [8] [9] *
| |
* | | *
[1]----[3]--------[5]----------------[6]---------[4]---[2]
* | | *
| |
* | | *
+--------[7]-------+
* *
+ * * * * * * * SR domain * * * * * * * +
图 1
- 3 和 4 是 SR 域边界路由器
- 5、6 和 7 都是 SR 域路由器
- 8 和 9 是 SR 域内的主机
- 1 和 2 是 SR 域外的主机
- SR 域按照第 5.1 节实施入口过滤, 外部数据包不能以等于域段的目的地址进入域。
6.3. SR Source Node (SR 源节点)
6.3.1. Intra-SR-Domain Packet (SR 域内数据包)
当主机 8 通过 SR 策略 <S7,A9> 向主机 9 发送数据包时, 数据包为
P1: (A8,S7)(A9,S7; SL=1)
6.3.1.1. Reduced Variant (精简变体)
当主机 8 通过 SR 策略 <S7,A9> 向主机 9 发送数据包并希望使用精简 SRH 时, 数据包为
P2: (A8,S7)(A9; SL=1)
6.3.2. Inter-SR-Domain Packet -- Transit (跨 SR 域数据包 -- 传输)
当主机 1 向主机 2 发送数据包时, 数据包为
P3: (A1,A2)
SR 域入口路由器 3 接收 P3 并通过 SR 策略 <S7,S4> 将其引导到 SR 域出口路由器 4。路由器 3 将接收到的数据包 P3 封装在带有 SRH 的外部头部中。数据包为
P4: (A3,S7)(S4,S7; SL=1)(A1,A2)
如果 SR 策略仅包含一个段 (出口路由器 4), 入口路由器 3 将 P3 封装到不带 SRH 的外部头部 (A3,S4) 中。数据包为
P5: (A3,S4)(A1,A2)
6.3.2.1. Reduced Variant (精简变体)
SR 域入口路由器 3 接收 P3 并通过 SR 策略 <S7,S4> 将其引导到 SR 域出口路由器 4。如果路由器 3 希望使用精简 SRH, 它将接收到的数据包 P3 封装在带有精简 SRH 的外部头部中。数据包为
P6: (A3,S7)(S4; SL=1)(A1,A2)
6.3.3. Inter-SR-Domain Packet -- Internal to External (跨 SR 域数据包 -- 内部到外部)
当主机 8 向主机 1 发送数据包时, 数据包在 SR 域内的部分行程进行封装。从 8 到 3 的数据包为
P7: (A8,S3)(A8,A1)
在相反方向, 从 1 到 8 生成的数据包为
P8: (A1,A8)
在节点 3 处, P8 在 SR 域内的部分行程进行封装, 外部头部的目的地为段 S8。结果为
P9: (A3,S8)(A1,A8)
在节点 8 处, 外部 IPv6 头部通过 S8 处理被移除, 然后在 A8 接收时再次处理。
6.4. Transit Node (传输节点)
节点 5 充当数据包 P1 的传输节点并在朝向节点 7 的接口上发送数据包
P1: (A8,S7)(A9,S7;SL=1)
6.5. SR Segment Endpoint Node (SR 段端点节点)
节点 7 接收数据包 P1, 并使用第 4.3.1 节中的逻辑, 在朝向路由器 6 的接口上发送数据包
P7: (A8,A9)(A9,S7; SL=0)
6.6. Delegation of Function with HMAC Verification (带 HMAC 验证的功能委托)
本节描述如何在 SR 域内委托功能。在以下章节中, 考虑连接到机架顶部 5 的主机 8。
6.6.1. SID List Verification (SID 列表验证)
运营商可能更喜欢在源 8 处应用 SRH, 而 5 验证 SID 列表是否有效。
为了说明目的, SDN 控制器向 8 提供终止于节点 9 的 SRH, 段列表为 <S5,S7,S6,A9>, 并为 SRH 计算 HMAC TLV。与 HMAC TLV 关联的 HMAC 密钥 ID 和密钥与 5 共享。节点 8 不知道密钥。节点 5 配置了应用于连接到 8 的接口的 IACL, 要求对目的地为 S/s 的任何数据包进行 HMAC 验证。
节点 8 使用接收到的 SRH (包括 HMAC TLV) 发起数据包。
P15: (A8,S5)(A9,S6,S7,S5;SL=3;HMAC)
节点 5 接收并验证 SRH 的 HMAC, 然后将数据包转发到下一个段
P16: (A8,S7)(A9,S6,S7,S5;SL=2;HMAC)
节点 6 接收
P17: (A8,S6)(A9,S6,S7,S5;SL=1;HMAC)
节点 9 接收
P18: (A8,A9)(A9,S6,S7,S5;SL=0;HMAC)
这种 HMAC 的使用在基于企业的 SR 域 [SRN] 中特别有价值。