跳到主要内容

5. Intra-SR-Domain Deployment Model (SR 域内部署模型)

5. Intra-SR-Domain Deployment Model (SR 域内部署模型)

在 SR 域内专门使用 SID 并仅用于 SR 域的数据包是一个重要的部署模型。

这使得 SR 域能够充当单个路由系统。

本节涵盖:

  • 保护 SR 域免受外部尝试使用其 SID

  • 将 SR 域用作组件之间具有委托的单个系统

  • 处理 SR 域的数据包

5.1. Securing the SR Domain (保护 SR 域)

SR 域外的节点不受信任: 它们不能直接使用域的 SID。这通过两级访问控制列表来实施:

  1. 任何进入 SR 域且目标为 SR 域内 SID 的数据包都会被丢弃。这可以通过以下逻辑实现。具有相同结果的其他方法被认为是合规的:

    • 从块 S/s 分配所有 SID

    • 在域的每个边缘节点的每个外部接口上配置入站基础设施访问列表 (IACL), 该列表丢弃目标地址在 S/s 中的任何传入数据包

    • 未能实施这种入口过滤方法会使 SR 域暴露于源路由攻击, 如 [RFC5095] 中所述和引用

  2. #1 中的分布式保护通过每节点保护来补充, 从 SR 域外的源地址丢弃到 SID 的数据包。这可以通过以下逻辑实现。具有相同结果的其他方法被认为是合规的:

    • 从前缀 A/a 分配所有接口地址

    • 在节点 k, 本地到 k 的所有 SID 都从前缀 Sk/sk 分配

    • 在 SR 域中每个 SR 节点 k 的每个内部接口上配置入站 IACL, 如果源地址不在 A/a 中, 则丢弃目标地址在 Sk/sk 中的任何传入数据包。

5.2. SR Domain as a Single System with Delegation among Components (作为单一系统的 SR 域及组件间委托)

所有 SR 域内数据包都属于 SR 域。IPv6 报头由 SR 域的节点发起并发往 SR 域的节点。

所有域间数据包在 SR 域内的数据包旅程部分都被封装。外部 IPv6 报头由 SR 域的节点发起并发往 SR 域的节点。

因此, SR 域内的任何数据包都属于 SR 域。

SR 域是一个系统, 运营商可能希望在系统内的不同节点之间分配或委托最外层报头的不同操作。

SR 域的运营商可以选择将 SRH 添加委托给 SR 域内的主机节点, 并将任何 SRH 内容的验证委托给连接到主机的更受信任的路由器或交换机。考虑通过接口 I 连接到主机 H 的机架顶部交换机 T。H 通过本文档范围之外的某种 SDN 方法接收具有计算的 HMAC 的 SRH (SRH1)。H 对其发出的流量进行分类, 并将 SRH1 添加到需要特定服务级别协议 (SLA) 的流量中。T 在 I 上配置了 IACL, 要求验证目标为 SR 域 SID 块 (S/s) 的任何数据包的 SRH。T 检查并验证 SRH1 有效并包含 HMAC TLV; 然后 T 验证 HMAC。

SR 域的运营商可以选择让 SR 域中的所有段验证 HMAC。此机制将验证 SRH Segment List 在遍历 SR 域时不会被修改。

5.3. MTU Considerations (MTU 注意事项)

SR 域入口边缘节点封装遍历 SR 域的数据包, 需要考虑 SR 域的 MTU。在 SR 域内, 建议使用众所周知的缓解技术, 例如在 SR 域内部署比入口边缘更大的 MTU 值。

使用外部 IPv6 报头和 SRH 的封装与 [RFC2473] 中描述的 IPv6 隧道具有相同的 MTU 和分片注意事项。[INTAREA-TUNNELS] 中讨论了对各种隧道方法 (包括 IPv6 隧道) 限制的进一步调查, 运营商在考虑 SR 域内的 MTU 时应该考虑这些内容。

5.4. ICMP Error Processing (ICMP 错误处理)

在 SR 域内生成的 ICMP 错误数据包被发送到 SR 域内的源节点。ICMP 错误消息中的触发数据包可能包含 SRH。由于具有 SRH 的数据包的目标地址在处理每个段时会发生变化, 因此它可能不是生成触发数据包的套接字或应用程序使用的目标。

为了使触发数据包的源处理 ICMP 错误消息, 可能需要 IPv6 报头的最终目标地址。以下逻辑用于确定协议错误处理程序使用的目标地址。

  • 遍历触发 IPv6 数据包的所有扩展头, 到上层报头之前的路由扩展头。

    • 如果路由头是类型 4 Segment Routing Header (SRH)

      o Segment List[0] 处的 SID 可以用作触发数据包的目标地址。

然后按照 [RFC4443] 中定义的方式由上层传输处理 ICMP 错误。

对于封装在外部 IPv6 报头中的 IP 数据包, ICMP 错误处理如 [RFC2473] 中定义。

5.5. Load Balancing and ECMP (负载均衡和 ECMP)

对于任何域间数据包, SR 源节点必须施加基于内部数据包计算的流标签。流标签的计算如 [RFC6438] 中针对发送 Tunnel End Point 的建议。

对于任何域内数据包, SR 源节点应该施加如 [RFC6437] 中描述的计算的流标签, 以帮助无法计算超出 SRH 的 5 元组的传输节点进行 ECMP 负载均衡。

在 SR 域内的任何传输节点, 必须按照 [RFC6438] 中定义的方式使用流标签来计算朝向目标地址的 ECMP 哈希。如果不使用流标签, 传输节点可能会将一对 SR 边缘节点之间的所有数据包散列到同一链路。

在 SR 段端点节点, 必须按照 [RFC6438] 中定义的方式使用流标签来计算用于将处理的数据包转发到下一个段的任何 ECMP 哈希。

5.6. Other Deployments (其他部署)

其他部署模型及其对安全性、MTU、HMAC、ICMP 错误处理以及与其他扩展头交互的影响不在本文档范围内。