通过 SRv6 配置 EVPN-VPWS
EVPN VPWS 使用 EVPN 信令提供点对点第 2 层 VPN 服务。EVPN-VPWS 支持单宿主和多宿主(单活动或全活动)设备。基于 SRv6 的 EVPN-VPWS(基于 IPv6 的分段路由)。SRv6 使用 IPv6 分段路由头 (SRH) 扩展对网络指令的顺序列表进行编码。网络指令包含有关可用于路径上数据包处理的 SRv6 节点的显式信息。该指令还包括 SRv6 网络中 SRv6 节点的任务或功能信息。SRH 包含 IPv6 地址形式的 128 位分段标识符 (SID) 列表。SID 由以下内容组成:
-
定位器 - 定位器是 SID 的第一部分,由最高有效位组成。它表示特定 SRv6 节点的地址。定位器类似于网络地址。它用于路由数据包。
-
函数 - 函数是 SID 的第二部分。它定义定位器标识的节点在本地执行的数据包处理功能。Junos OS 支持 EVPN-VPWS 的 End.DX2 功能。End.DX2 指定端点解封装和 L2 交叉连接行为。
EVPN-VPWS 相对于 SRv6 的优势
SRv6 底层网络的 EVPN-VPWS 为 IPv6 网络具有以下优势:
-
网络编程完全依靠 IPv6 报头和报头扩展来传输数据包,从而消除了 MPLS 等协议。这可确保无缝部署,而无需对核心 IPv6 网络进行任何重大的硬件或软件升级。
-
即使中转路由器不支持 SRv6,数据包也可以通过 SRv6 入口节点传输。这样就无需在 IPv6 网络中的所有节点上部署分段路由。
图 1 说明了 SRv6 拓扑中的节点如何处理 SRH。
-
PE1 使用 SRH 封装有效负载。SRH 列表包含三个 SID。每个 SID 表示分段路径上的一个 SRv6 节点。最后一个 SID 上的函数是 END。DX2 终结点。
-
P1 弹出并处理 SRH 列表底部的第一个 SID,并将下一个 SID 复制到外部目标。SRH 列表包含 2 个 SID。
-
P2 是非 SRv6 节点。P2 在当前分段路径上转发数据包,无需进一步处理。
-
P3 弹出并处理第二个 SID,并复制 SRH 列表中的第三个 SID。
-
PE2 弹出并处理第三个 SID。结束。DX2 识别面向 CE 的接口,PE2 转发数据包。
EVPN-VPWS 基于 SRv6 基准配置构建。有关配置 SRv6 的详细信息,请参阅 了解 BGP 中的 SRv6 网络编程和基于 SRv6 的第 3 层服务。
CLI 快速配置
要通过 SRv6 快速配置 EVPN-VPWS,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改任何必要的详细信息以匹配您的网络配置,将命令复制并粘贴到 [edit] 层次结构级别的 CLI 中,然后从配置模式进入提交。
PE1
set chassis network-services enhanced-ip set routing-instances EVPN-VPWS1 instance-type evpn-vpws set routing-instances EVPN-VPWS1 protocols evpn encapsulation srv6 set routing-options source-packet-routing srv6 locator LOC1 2001:db8:a1:1::/64 set routing-options resolution preserve-nexthop-hierarchy set routing-instances EVPN-VPWS1 protocols evpn interface ge-0/0/1.1 vpws-service-id local 102 remote 201 set routing-instances EVPN-VPWS1 protocols evpn interface ge-0/0/1.1 vpws-service-id source-packet-routing srv6 locator LOC1 end-dx2-sid 2001:db8:a1:1:101:: set protocols bgp group IBGPv6 family evpn signaling advertise-srv6-service set protocols bgp group IBGPv6 family evpn signaling accept-srv6-service set policy-options policy-statement vpws-nh-change term a from protocol evpn set policy-options policy-statement vpws-nh-change term a then next-hop 2001:db8:a1:1:: set policy-options policy-statement vpws-nh-change term a then accept set protocols bgp group ibgpv6 export vpws-nh-change set protocols bgp group ibgpv6 vpn-apply-export
PE2
set chassis network-services enhanced-ip set routing-instances EVPN-VPWS1 instance-type evpn-vpws set routing-instances EVPN-VPWS1 protocols evpn encapsulation srv6 set routing-options source-packet-routing srv6 locator LOC1 2001:db8:a1:2::/64 set routing-options resolution preserve-nexthop-hierarchy set routing-instances EVPN-VPWS1 protocols evpn interface ge-0/0/1.1 vpws-service-id local 201 remote 102 set routing-instances EVPN-VPWS1 protocols evpn interface ge-0/0/1.1 vpws-service-id source-packet-routing srv6 locator LOC1 end-dx2-sid 2001:db8:a1:2:101:: set protocols bgp group IBGPv6 family evpn signaling advertise-srv6-service set protocols bgp group IBGPv6 family evpn signaling accept-srv6-service set policy-options policy-statement vpws-nh-change term a from protocol evpn set policy-options policy-statement vpws-nh-change term a then next-hop 2001:db8:a1:2:: set policy-options policy-statement vpws-nh-change term a then accept set protocols bgp group ibgpv6 export vpws-nh-change set protocols bgp group ibgpv6 vpn-apply-export
程序
我们将在 PE1 设备上介绍这些步骤。我们注意到 PE1 和 PE2 之间在配置上的差异。要将基于 SRv6 的 EVPN-VPWS 配置为支持静态 SID,必须执行以下操作:
-
在所有 MX 设备上启用
enhanced-ip
支持。[edit] user@PE1# set chassis network-services enhanced-ip
-
配置对 SRv6 和定位器地址的支持。
PE1
[edit] user@PE1# set routing-options source-packet-routing srv6 locator LOC1 2001:db8:a1:1::/64
PE2
[edit] user@PE2# set routing-options source-packet-routing srv6 locator LOC1 2001:db8:a1:2::/64
-
为源数据包路由启用扩展的下一跃点层次结构支持。
[edit] user@R1#set routing-options resolution preserve-nexthop-hierarchy
-
evpn-vpws
启用路由实例。[edit] user@PE1# set routing-instances EVPN-VPWS1 instance-type evpn-vpws
-
为 EVPN-VPWS1 路由实例配置 SRv6 封装类型。
[edit] user@PE1# set routing-instances EVPN-VPWS1 protocols evpn encapsulation srv6
-
为 EVPN-VPWS1 路由实例配置具有本地和远程 VPWS SID 的接口。
PE1
[edit] user@PE1# set routing-instances EVPN-VPWS1 protocols evpn interface ge-0/0/1.1 vpws-service-id local 102 remote 201
PE2
[edit] user@PE1# set routing-instances EVPN-VPWS1 protocols evpn interface ge-0/0/1.1 vpws-service-id local 201 remote 102
-
配置定位器以支持 END。EVPN-VPWS1 路由实例中接口上的 DX2。
PE1
[edit] user@PE1# set routing-instances EVPN-VPWS1 protocols evpn interface ge-0/0/1.1 vpws-service-id source-packet-routing srv6 locator LOC1 end-dx2-sid 2001:db8:a1:1:101::
PE2
[edit] user@PE1# set routing-instances EVPN-VPWS1 protocols evpn interface ge-0/0/1.1 vpws-service-id source-packet-routing srv6 locator LOC1 end-dx2-sid 2001:db8:a1:2:101::
-
启用 BGP 协议以播发并接受用于 SRv6 服务的 EVPN NLRI。
[edit] user@PE1# set protocols bgp group IBGPv6 family evpn signaling advertise-srv6-service user@PE1# set protocols bgp group IBGPv6 family evpn signaling accept-srv6-service
-
配置路由策略,将 EVPN 路由的下一跃点地址设置为定位器地址。
注意:从 Junos OS 24.1R1 版和 Junos OS 演化版 24.1R1 开始,您无需为 SRv6 上的 EVPN-VPWS 配置路由策略。
PE1
[edit] user@PE1#set policy-options policy-statement vpws-nh-change term a from protocol evpn set policy-options policy-statement vpws-nh-change term a then next-hop 2001:db8:a1:1:: set policy-options policy-statement vpws-nh-change term a then accept set protocols bgp group ibgpv6 export vpws-nh-change set protocols bgp group ibgpv6 vpn-apply-export
PE2
[edit] user@PE1#set policy-options policy-statement vpws-nh-change term a from protocol evpn set policy-options policy-statement vpws-nh-change term a then next-hop 2001:db8:a1:2:: set policy-options policy-statement vpws-nh-change term a then accept set protocols bgp group ibgpv6 export vpws-nh-change set protocols bgp group ibgpv6 vpn-apply-export
动态 SID 分配
动态 SID 分配允许您仅通过指定定位器名称来配置 Junos 设备。要启用动态置备,请在等级中 [edit routing-instance routing-instance-name instance-type protocols evpn interface interface-name vpws-service-id source-packet-routing srv6]
配置定位器名称。当需要服务时,设备会动态地将 SID en-dx2-sid
分配给相应的定位器前缀。以下是 EVPN-VPWS 上动态分配的 SID 的示例配置。
instance-type evpn-vpws; protocols { evpn { interface ge-1/1/1.1 { vpws-service-id { local 3040; remote 20; source-packet-routing { srv6 locator LOC2; } } } encapsulation srv6; } } source-packet-routing { srv6 { locator LOC2 2001:db8:b1:1::/64; } }