可观察性
惯性可 overpowering。Supplanting 技术所需的不仅是技术本身,而且与生态系统一样。该生态系统包括—已使用特定工具包进行专业的人员网络工程师、设计人员、架构师和运营商。其中包括订购、计费、服务保证、编排和可视化应用程序。它们可能会减慢过渡速度甚至彻底阻止其运行。
幸运的是,领域路由正在享受大量的普及。这导致人工关注开发、学习和部署 it。应用程序正在追赶,提供熟悉的用户体验以展平学习曲线;小说使用 SR 唯一实现的最佳承诺。
本章探索可视化的工具,并为网段路由网络提供服务保证。
可视化
NorthStar 是一种 MPLS 底层和选择性叠加控制器。其 genesis 的基础在于信息流策略和控制的集中之升。它不是希望成为 illusory 单一管理平台,而是通过实施定义完善的流量工程功能来保持接地。
Day One:NorthStar 控制器启动并运行是更好的入门资源,可详细了解此应用程序:https://www.juniper.net/us/en/training/jnbooks/day-one/networking-technologies-series/northstar-controller/.
本章的这一重点不是管理 NorthStar,而是使现有部署能够向 SR 网络增加价值。
此外,我们还将保持接地。首先,我们’将实现到目前为止构建的网络可视化。新 BGP 地址系列– link-state
–将在区域边界路由器(ABR)和 NorthStar’s Junos VM 之间启用。这将导出每个区域–节点、链路、链路属性和前缀的拓扑。Junos 和 NorthStar 都得到了增强,支持导出特定于 SR 的功能,如 SRGB 范围、节点和邻接 Sid。
在纽约和华盛顿– p1 上将以下配置应用于 ABRs。 nyc,p2 nyc,p1 iad 和 p2. iad,根据需要替换路由器特定的值。通过在区域中配置所有 ABRs 以导出特定于区域的拓扑,从而提供冗余;它还可确保覆盖整个多层网络:
让’我们来看看什么是 p1。 nyc 正在从其区域中导出。我们’将回顾每个节点、链路和前缀的一个示例,以及这些信息如何通过 SR 属性丰富。
Control plane: p1.nyc exporting pe2.nyc as a node, as well as its SR attributes
user@p1.nyc> show route advertising-protocol bgp 192.168.88.99 te-node-iso 0128.0049.1060.00 lsdist.0: 82 destinations, 82 routes (82 active, 0 holddown, 0 hidden) Prefix Nexthop MED Lclpref AS path NODE { AS:4200000000 ISO:0128.0049.1060.00 ISIS-L1:0 }/1216 * Self 100 I IPv4 Router-ids: 128.49.106.0 Area border router: No External router: No Attached: No Overload: Yes Hostname: pe2.nyc Area membership: 49 00 01 SPRING-Capabilities: - SRGB block [Start: 1000, Range: 128, Flags: 0xc0] SPRING-Algorithms: - Algo: 0
Control Plane: p1.nyc exporting the link between itself and pe1.nyc, and its local adjacency SID
user@p1.nyc> show route advertising-protocol bgp 192.168.88.99 te-link-local-ip 192.0.2.5 lsdist.0: 82 destinations, 82 routes (82 active, 0 holddown, 0 hidden) Prefix Nexthop MED Lclpref AS path LINK { Local { AS:4200000000 ISO:0128.0049.1063.00 }. { IPv4:192.0.2.5 } Remote { AS:4200000000 ISO:0128.0049.1061.00 }. { IPv4:192.0.2.4 } ISIS-L1:0 }/1216 * Self 100 I Metric: 10 TE Metric: 10 P2P IPV4 Adj-SID - Label: 16, Flags: 0x70, Weight: 0
Control plane: p1.nyc exporting pe2.iad’s prefix and associated SID index
user@p1.nyc> show route advertising-protocol bgp 192.168.88.99 te-ipv4-prefix-ip 128.49.106.10 lsdist.0: 82 destinations, 82 routes (82 active, 0 holddown, 0 hidden) Prefix Nexthop MED Lclpref AS path PREFIX { Node { AS:4200000000 ISO:0128.0049.1062.00 } { IPv4:128.49.106.10/32 } ISIS-L1:0 }/1216 * Self 100 I Prefix SID: 10, Flags: 0xe0, Algo: 0
BGP-LS 交换的总数允许 NorthStar 构建网络图形,如Figure 1和Figure 2所示。
除了 unmarshalling BGP-LS ‘路由,’ NORTHSTAR 还可以通过 NETCONF 和分析设备配置来收集。为此,您可以在右上’角遍历它的菜单(管理 > 任务计划程序 > 添加 > 设备集合)。确保指定非 root 用户’的证书。
收集设备配置是可选的,但改进了用户体验。例如,我们的网络连接到的 ASNs 在 UI 中变得可见。您可以深入到第3层 VPN Vrf,以了解其 Pe、附加电路和路由目标。’这些不是 BGP-LS 的导出细节。配置分析向运营商展示了其网络的多个方面。
但这是关于分段路由的书。NorthStar 具有几个有价值的 SR 特定的可视化效果。每个链路不仅可以显示一个 IP 地址,还能提供本地分配的邻接 SID。您可以通过单击工作区中的齿轮图标(位于中Figure 3的 +/-缩放按钮下方)来选择此项。从那里选择链接 > 显示标签 > IP,SID A: Z。
另一个 outstandingly 有用的功能是右键单击路由器,然后从所选节点中选择节点 sid。其他路由器的标签将更改为显示节点 SID 及其主机名。方法是将每个节点’s (仅适用于 IPv4 的时间)索引添加到路由器’的邻接方的通告 SRGB 中。
作为最佳实践,SRGB 基本和大小在我们的网络中保持一致。在不遵循这’’种情况的网络中,这种功能是一 lifesaver。
我们’会暂停我们作为可视化工具的 NorthStar。我们’将在日常工作中返回 it,作为信息流工程控制器。此时,我们’将通过计算和调配 sr-iov 策略(适用于 sr-iov lsp 的正确名称),构建基于此仅视图的练习。
遥测
Befitting SR 实施 forgoes 通过 SNMP’导出任何统计数据 Junos,从而将其开方。众所周知,SNMP 正因组织信息的功能更强的协议和框架而被取代。
在协议前部,gRPC obsoletes SNMP。它继承了 HTTP/2 的优势,例如:
二进制:与文本不同,对二进制协议进行序列化和非序列化更高效、紧凑,并且不易出现因空白处理等方面的错误。gRPC 使用协议缓冲区对数据进行编码和解码。SNMP 使用 ASN。1。
多路复用:这允许单个 TCP 连接上的多个未处理请求,同时仍允许并行。实际上,SNMP 基于 UDP,并继承其不保证的本质。
双向:与其前置任务不同,HTTP/2 允许服务器将可能有用的数据推送到客户端,而无需明确请求。
gRPC 支持基于证书的相互身份验证;很少使用的 SNMPv3 仅支持共享密钥身份验证。gRPC 还提供了事件驱动型和定期发布/订阅方法。这类似于 SNMP’对统计数据的轮询,并依赖于未经请求的陷阱来传达状态更改。使 gRPC 更强大的是,它允许客户端在状态信息树的子集内展现兴趣;随着该状态的变化,服务器会将更新发布到–客户端,这可能’包括路由器的 ARP 或 ND 表、LSP 状态等。
jtimon 是一家开源 gRPC 客户端,’很有价值可供测试。它不仅支持订阅定期和事件触发更改的多条路径,还支持相互身份验证、方便地将关键/值对转换为 JSON,并导出到 Influxdb 和 Prometheus。您可以在https://github.com/nileshsimaria/jtimon找到它。
基于此改进的传输构建的 OpenConfig 是以供应商中立的方式将网络建模的计划。这是尝试改进 SNMP’s 的信息–的方法管理信息库(MIB) – ,从而产生稀疏的供应商中立性支持。配置和操作数据模型均已由 OpenConfig 定义,以了解最广泛使用的–功能 BGP、LLDP 以及 SR。其他人仍在工作。
探索https://juni.pr/2WRRLst上的 Junos OpenConfig 功能集。访问www.openconfig.net ,跟上数据模型的进展和可能的贡献。请记住,OpenConfig 不是单一技术或协议,而是共享更可编程的基础架构目标的工作组的名称。
强大的传输协议和直观的数据模型表示使得现代遥测更易于运营商。
例如,这是传统上对接口’的运行状态进行 SNMP 轮询的方式。首先,必须发现’接口 ifIndex。这是由设备分配给接口的任意整数值。所有接口特定状态和计数器都使用该索引进行键控。在长期环境中,ifIndex 将被缓存、可能重新分配,进而 relearned 设备重新启动。随后,与该接口相关联的状态和计数器将必须进行轮询:
IF-MIB::ifDescr
是基础 OID –的友好缩写。1.3.6.1.2.1.2。并非每个 MIB 分支都有人类友好的表示。相反,与 OpenConfig 的等效子树路径为 /interfaces/interface[name=’ge-0/0/0’]/state/oper-status/
.’即使运算符最初不熟悉此 X 路径语法,也不会通过这种逻辑来了解意图。
使用 gRPC 传输启用 OpenConfig
启用 gRPC 传输对于测试而言是很简单的。支持用于生产的 overwhelmingly 隐含基于证书的身份验证。因此,它需要可颁发数字证书的功能公共密钥基础架构(PKI),特别是证书颁发机构(CA)。
这本书 aspires 应用最佳实践。因此,遥测配置将安全。尽管如此,维护和强化 PKI 环境也超出了本书的范畴。此外,还提供了不安全版本,因此在实践中不进行部署十分谨慎。
启用和保护 gRPC 需要六个步骤:
实例化根 CA。这将需要在 x86 主机上完成。下面的示例使用 OpenSSL 创建私钥(. 密钥扩展名)和自签名证书(.crt 扩展名)。
% openssl genrsa -out ca/root_ca.key 2048% openssl req -x509 -new -key CA/root_ca.key -days 3650 -out CA/root_ca.crt -subj ‘/CN=Root CA’接下来将生成私钥和证书签名请求(CSR
.csr
扩展)的 gRPC 客户端。在我们的示例中,jtimon 是 gRPC 客户端。X86 主机,它在需要向 gRPC 服务器(路由器)呈现相互身份验证的身份时运行。之前创建的 CA 可以签署 CSR,生成要使用的 jtimon 证书。% openssl genrsa -out client/client.key 2048% openssl req -new -key client/client.key -out client/client.csr -subj ‘/CN=localhost’% openssl x509 -req -in client/client.csr -CA CA/root_ca.crt -CAkey CA/root_ca.key -CAcreateserial -out client/client.crt -days 365每个路由器都需要生成私有密钥和 CSR。然后,CA 将 fulfil 每个 CSR,如前一步中所述,为各自的路由器生成证书。证书密钥和私钥捆绑在一起(。
pem
扩展名)。下面的示例面向 pe1。 nyc:% openssl genrsa -out router/pe1.nyc.key 2048% openssl req -new -key router/pe1.nyc.key -out router/pe1.nyc.csr ‘/CN=pe1.nyc’% openssl x509 -req -in router/router.csr -CA CA/RootCA.crt -CAkey CA/RootCA.key -CAcreateserial -out router/router.crt -days 365% cat router/pe1.nyc.crt router/pe1.nyc.key > router/pe1.nyc.pem所有三个–标识根 CA’和 jtimon 主机’证书以及路由器’自己的捆绑包–应复制到
/var/tmp
每个路由器上的位置。例如,这是 pe1 的结果。 nyc:user@pe1.nyc> file list /var/tmp/*.crt/var/tmp/client.crt/var/tmp/root_ca.crtuser@pe1.nyc> file list /var/tmp/*.pem/var/tmp/pe1.nyc.pem然后,需要通过配置激活证书。下面的示例面向 pe1。 nyc:
[edit]# set security pki ca-profile root_ca ca-identity root_ca# set security certificates local local-cert load-key-file /var/tmp/pe1.nyc.pem# commit# run request security pki ca-certificate load ca-profile root_ca filename /var/tmp/root_ca.crt最后,可以启用 gRPC 以侦听安全端口并需要相互身份验证。需要由 jtimon –提供用户名和密码,用户需要存在于
[system login]
路由器上的配置层次结构:user@pe1.nyc> show configurationsystem {services {extension-service {request-response {grpc {ssl {port 32767;local-certificate local-cert; mutual-authentication {certificate-authority root_ca;client-certificate-request require-certificate-and-verify;}}}}}}}
严格地说测试目的,您可能希望使用 gRPC insecurely。在实验室环境之外,在您自己的 peril。跳过上面的步骤1-5 并将步骤6中的部分更换为:
SR 遥测
通过这种背景,’让我们来探索哪些 SR 统计数据可以流动。最基本的是经过接口的分段路由信息流的数量。在从其他 MPLS 传输协议迁移期间,此传感器可以区分转发平面已移到 SR 中的多少。
您可按如下方式配置:
这将为具有 SR 下一跳跃的每个接口安装传感器。
Management plane: Verify the OpenConfig sensors have been installed
user@pe1.nyc> show isis spring sensor info @IS-IS SENSOR INFORMATION Per-interface-per-member-link Ingress Sensor: Sensor-name Sensor-id aggr_ingress_intf_sensor 3221225555 Per-interface-per-member-link Egress Sensor: Sensor-name Sensor-id ge-0/0/1.0 3221225556 ge-0/0/2.0 3221225557 user@pe1.nyc> show route table inet.3 128.49.106.0/32 detail inet.3: 8 destinations, 9 routes (8 active, 0 holddown, 0 hidden) 128.49.106.0/32 (1 entry, 1 announced) *L-ISIS Preference: 14 ... Next hop: 192.0.2.5 via ge-0/0/1.0 Label operation: Push 1000 ... Statistics ID Group: Kernel ID = 2, Stats IDs = { 3221225556 } Next hop: 192.0.2.7 via ge-0/0/2.0, selected Label operation: Push 1000 ... Statistics ID Group: Kernel ID = 1, Stats IDs = { 3221225557 }
您现在可以订阅导出这些统计信息的 OpenConfig 路径(/mpls/signaling-protocols/segment-routing/interfaces/)。使用类似下面的文件配置 jtimon,根据需要将身份验证凭证和路径替换为私钥和证书:
配置一目了然。路由器请求每隔10秒发布 SR 接口统计信息。启动 jtimon 并观察哪些 pe1。 nyc 报告:
% jtimon-darwin-amd64 --config dev/telemetry/pe1.nyc.ssl.json –print Connecting to pe1.nyc:32767 ... Receiving telemetry data from pe1.nyc:32767 system_id: pe1.nyc component_id: 0 sub_component_id: 0 path: sensor_1019_1:/junos/services/segment-routing/interface/egress/usage/:/mpls/signaling- protocols/segment-routing/interfaces/:PFE sequence_number: 0 timestamp: 1550427772636 sync_response: false key: timestamp uint_value: 1550427772637 key: prefix str_value: /mpls/signalling-protocols/segment-routing/interfaces/interface[name=’ge-0/0/1.0’]/ state/counters[name=’oc-84’]/ key: out-pkts int_value: 5 key: out-octets int_value: 420
作为入口 PE,您可以看到来自 CEs 的入站 IP 流量已通过连接到 nyc 的接口通过 SR 标签发送出去。’它不会解释信息流的目的地,因为未传达强加的’标签。请注意,计数器名称(oc-84
)使用与使用中的标签无关的任意编号。
将 jtimon 指向 p1。 nyc 显示双向信息流。将相同数量的数据包入口和出口 ge-0/0/2 和 ge-0/0/3 –这些接口分别连接到 pe1 nyc 和 pe2。 nyc:
system_id: p1.nyc ... str_value: /mpls/signalling-protocols/segment-routing/interfaces/interface[name=’ge-0/0/2.0’]/ state/counters[name=’oc-82’]/ key: out-pkts int_value: 5 key: out-octets int_value: 440 ... str_value: /mpls/signalling-protocols/segment-routing/interfaces/interface[name=’ge-0/0/3.0’]/ state/counters[name=’oc-83’]/ key: out-pkts int_value: 5 key: out-octets int_value: 440 system_id: p1.nyc ... str_value: /mpls/signalling-protocols/segment-routing/interfaces/interface[name=’ge-0/0/2.0’]/ key: in-pkts int_value: 5 key: in-octets int_value: 440 ... str_value: /mpls/signalling-protocols/segment-routing/interfaces/interface[name=’ge-0/0/3.0’]/ key: in-pkts int_value: 5 key: in-octets int_value: 440
最后一步,检测 pe2。 nyc 显示 SR 流量 egressing ge-0/0/1,即 pe2。’nyc 本地接口到 p1。 nyc:
system_id: pe2.nyc ... str_value: /mpls/signalling-protocols/segment-routing/interfaces/interface[name=’ge-0/0/1.0’]/ state/counters[name=’oc-45’]/ key: out-pkts int_value: 5 key: out-octets int_value: 420
Eagle-eyed 将观察到 p1。 nyc 报告比 PE 路由器–大4字节的数据包大小,以确认派生 MPLS 标签的单个节点 SID 的拼版。
这是一种好的开端,我们只能获得更细粒度。每个 SID 的统计数据(特别是统一域范围的 SRGB)在计算流量矩阵时都是 enormously 有用的。启用的配置为:
Management plane: Verify additional OpenConfig sensors have been installed per-SID
user@pe1.nyc> show isis spring sensor info @IS-IS SENSOR INFORMATION Per-interface-per-member-link Ingress Sensor: Sensor-name Sensor-id aggr_ingress_intf_sensor 3221225555 Per-interface-per-member-link Egress Sensor: Sensor-name Sensor-id ge-0/0/1.0 3221225556 ge-0/0/2.0 3221225557 Per-sid Ingress Sensor: Sensor-name Sensor-id 17 3221225558 18 3221225559 19 3221225560 20 3221225561 1060 3221225562 1062 3221225563 1063 3221225564 1068 3221225565 1069 3221225566 1070 3221225567 1071 3221225568 1073 3221225569 1000 3221225570 1002 3221225571 1003 3221225572 1008 3221225573 1009 3221225574 1010 3221225575 1011 3221225576 1013 3221225577 IPv4/IPv6 Per-sid Egress Sensor: Sensor-name Sensor-id L-ISIS-128.49.106.0 3221225578 L-ISIS-128.49.106.2 3221225579 L-ISIS-128.49.106.3 3221225580 L-ISIS-128.49.106.8 3221225581 L-ISIS-128.49.106.9 3221225582 L-ISIS-128.49.106.10 3221225583 L-ISIS-128.49.106.11 3221225584 L-ISIS-128.49.106.13 3221225585 L-ISIS-2001:db8::128:49:106:0 3221225586 L-ISIS-2001:db8::128:49:106:2 3221225587 L-ISIS-2001:db8::128:49:106:3 3221225588 L-ISIS-2001:db8::128:49:106:8 3221225589 L-ISIS-2001:db8::128:49:106:9 3221225590 L-ISIS-2001:db8::128:49:106:10 3221225591 L-ISIS-2001:db8::128:49:106:11 3221225592 L-ISIS-2001:db8::128:49:106:13 3221225593
已创建额外传感器的阵列。入口每个 SID 传感器名称对应于 IPv4 和 IPv6 节点以及邻接 Sid。在出口方向上,根据底层协议和公布的前缀 SID 来命名它们。
现在更改 jtimon 订阅的路径: /mpls/signaling-protocols/segment-routing/aggregate-sid-counters/
. 详细 wells 从 pe1 nyc、p1 nyc 和 pe2 nyc 到包括每个 SID 的流量。
Management plane: Per-SID statistics at pe1.nyc
str_value: /mpls/signalling-protocols/segment-routing/aggregate-sid-counters/aggregate-sid- counter[ip-addr=’L-ISIS-128.49.106.0’]/state/counters[name=’oc-106’]/out-pkts/ key: out-pkts int_value: 5 key: out-octets int_value: 420
Management plane: Per-SID statistics at p1.nyc
str_value: /mpls/signalling-protocols/segment-routing/aggregate-sid-counters/aggregate-sid- counter[mpls-label=’1000’]/state/counters[name=’oc-95’]/ key: in-pkts int_value: 5 key: in-octets int_value: 440 ... str_value: /mpls/signalling-protocols/segment-routing/aggregate-sid-counters/aggregate-sid- counter[mpls-label=’1001’]/state/counters[name=’oc-96’]/ key: in-pkts int_value: 5 key: in-octets int_value: 440
Management plane: Per-SID statistics at pe2.nyc
str_value: /mpls/signalling-protocols/segment-routing/aggregate-sid-counters/aggregate-sid- counter[ip-addr=’L-ISIS-128.49.106.1’]/state/counters[name=’oc-67’]/out-pkts/ key: out-pkts int_value: 5 key: out-octets int_value: 420
对于这一点,它显示了准确无误从 pe1 nyc 到 pe2 的流量。nyc,反之亦然。观察 p1。 nyc’s 计数器显示有多少流量从其他 pe 发送到 pe1 或 pe2。借助通用 SRGB,每个路由器都能共同了解与节点 SID 相关的标签。通过将与同一个 MPLS 标签相关联的计数器求和,操作员可以看到通过每个传输路由器向节点 SID 原始发件人发送多少信息流。与前缀 SID 相关联的累积计数器显示了发送至远程路由器的信息流数量。这可以极大地简化信息流矩阵的构建。
SR-IOV 遥测
与分段路由流量工程(SR-IOV)相比,任何地方的遥测更重要。汲取以松散的方式定向到 SR-IOV 策略–中的信息流,sr-iov LSP –将启动反馈循环,可通过集中式控制机制使用,根据带宽需求和可用性重新路由 LSP。
为了专注于其遥测方面,已在 pe2 和 pe1 之间创建了一个 SR-IOV LSP。它是一种彩色LSP,这意味着已为其分配了一个本地任意数值。当通过 BGP 了解服务路由时,并携带具有匹配值的扩展颜色社区时,将自动在’此 sr-iov LSP 上指出路由 s 协议的下一跳跃。
Optimizability章中更广泛地介绍了 sr-iov。
发往通过彩色 LSP 解析的服务路由的流量将作为 SR-IOV 统计。如前所述,SR-IOV 遥测通过以下方式特别启用:
简单、彩色的 SR-1 LSP 配置有效:
Management plane: confirm sensor is attached to SR-TE LSP
user@pe2.nyc> show route table inet6color.0 detail inet6color.0: 1 destinations, 1 routes (1 active, 0 holddown, 0 hidden) 2001:db8::128:49:106:11-7100<c6>/160 (1 entry, 1 announced) *SPRING-TE Preference: 8 … Next hop: fe80::5668:a3ff:fe1e:6af via ge-0/0/2.0 weight 0x1, selected … Protocol next hop: 24 Label operation: Push 1071, Push 1061(top) … SRTE Policy State: SR Preference/Override: 100/100 BSID: 1000000 SRTE Policy Statistics State: Statistics Enabled: Ingress, Transit Ingress Sensor Status: Active, Sensor Id: 3758096403
Control plane: confirm service route points at SR-TE LSP
user@pe2.nyc> show route 2001:db8::198:51:100:54 detail inet6.0: 24 destinations, 31 routes (24 active, 0 holddown, 0 hidden) 2001:db8::198:51:100:54/127 (2 entries, 1 announced) *BGP Preference: 170/-101 ... Next hop: fe80::5668:a3ff:fe1e:6af via ge-0/0/2.0 weight 0x1, selected ... Protocol next hop: 2001:db8::128:49:106:11-7100<c6> ... Communities: color:0:7100
默认情况下,存在两个传感器连接到 SR-IOV LSP。入口传感器测量定向到策略的 IP 流量量,而传输传感器则测量定向到策略的标记流量 similary 的数量。如果绑定 SID (bSID)与与 sr-iov 策略关联的颜色数字标识符之间的其他重要和分离,则必须使用中转传感器来将 MPLS 标记的信息流传送到 LSP 中。
与所有分段路由传感器一样,在累积非空统计信息之前不会导出任何内容。只要与彩色服务路由的 IP 流量匹配,计数器就会增加并随后以 gRPC 客户端请求的频率进行发布。
Management plane: SR-TE IP statistics
system_id: pe2.nyc component_id: 0 sub_component_id: 0 path: sensor_1005_1:/junos/services/segment-routing/traffic-engineering/ingress/usage/:/mpls/ signaling-protocols/segment-routing/sr-te-ip-policies/:PFE sequence_number: 17 timestamp: 1550946298603 sync_response: false key: timestamp uint_value: 1550946298604 key: prefix str_value: /mpls/signalling-protocols/segment-routing/sr-te-ip-policies/sr-te-ip-policy[to- address=’2001:db8::128:49:106:11’, color=’7100’]/state/ counters[name=’oc-19’]/ key: packets int_value: 5 key: bytes int_value: 280
IP 策略名称的直观程度足以包含 LSP 的端点及其颜色。如果使用绑定 SID 将标记流量 MPLS 转发到此 LSP,则策略名称将另外包含 bSID 标识符。此外,inarguable’还在整个堆栈–中作为第一代公民处理 ipv6,从创建一个指向 IPV6 端点的彩色 sr-iov 策略,再以接收遥测的方式将 ipv6 信息流定向到该 LSP。
SR EPE 遥测
SR 遥测的最后应用是使用出口对等工程(EPE)。广泛地说来,自治系统边界路由器(ASBR)可将标签与 BGP 对等体、给定 BGP 对等体的特定链接或一组 BGP 对等项相关联。此标签仅安装在 ASBR’的转发平面中,并通过 BGP-LS 作为 EPE SID 导出到控制器。控制器可制定从特定 ASBR 到不同对等方的 SR-IOV 策略,这是指向一个对等方的唯一链接,甚至是对等方的集合。
正如以前使用过的,在 pe2 上已安装了 SR-IOV LSP。 nyc 到 pe1 iad 的特定 BGP 对等体。这需要在 iad 中配置的 EPE 标签位于 pe1 中的分段列表的底部。EPE 遥测需要明确启用,正如您所期望的那样:
Control plane: confirm sensor is installed for the EPE SID
user@pe1.iad> show route label 1044444 detail mpls.0: 36 destinations, 36 routes (36 active, 0 holddown, 0 hidden) 1044444 (1 entry, 1 announced) *BGP-LS-EPE Preference: 170 ... Next hop: 198.51.100.56 via ge-0/0/12.0, selected Label operation: Pop ... Stats ID Group: Kernel ID = 39, Stats IDs = { 268435458 }
Traffic matching the colored service route is transmitted, resulting in pe1.iad emitting telemetry for the EPE SID:
system_id: pe1.iad component_id: 0 sub_component_id: 0 path: sensor_1006_2:/junos/services/segment-routing/sid/usage/:/mpls/signaling-protocols/segment- routing/aggregate-sid-counters/:PFE sequence_number: 895 timestamp: 1550958775682 sync_response: false key: timestamp uint_value: 1550958775684 key: prefix str_value: /mpls/signalling-protocols/segment-routing/aggregate-sid-counters/aggregate-sid- counter[mpls-label=’1044444’]/state/counters[name=’oc-2’]/ key: in-pkts int_value: 5 key: in-octets int_value: 440
OAM (操作、管理、维护)
无可否认,OAM 通常是网络工程师的事后之日。这’只是当事物侧向倾斜在生产环境中时,很多接触不只是控制平面路径活动的工具,同时还验证数据平面的卫生。
这对 SR-IOV 而言更重要,因为它消除了路径信号。而是将其委托给 sBFD (无缝双向转发检测)。BFD 是检测数据路径故障的 workhorse。点到点关系中的每个节点均从学习其他’s 鉴别器(BFD 中的节点和应用程序标识符)开始。在此发现之后,BFD 会话将建立连接检查。
sBFD 通过消除学习 discriminators 所需的握手简化了 BFD。相反,该运算符为网络中的每个节点至少分配一个本地鉴别器。为了为 SR-IOV 路径建立 sBFD,使用远程节点’s 的鉴别器配置了头端。
该端用作启动器,并将 SR-IOV 路径’的标签堆栈推送到活动检查数据包,并确保数据包遍历用户流量的相同路径;SR-IOV 策略目标 statelessly 响应 sBFD 数据包。只要 sBFD 会话在入口路由器上,SR-IOV 路径就可行。
您可以通过在网络中的每个节点上添加鉴别器来配置 sBFD。让’我们将 sBFD 活动检查添加到我们已从 pe2 nyc 到 Pe1 的 IPv4 sr-iov 路径。 iad:
添加此配置之后,只要两个路由器之间存在使用相同标签堆栈的 sBFD 转发,SR-IOV 路径将一直保持不变。
Control plane: Verify pe2.nyc’s sBFD session to pe1.iad is Up
user@pe2.nyc> show bfd session extensive Detect Transmit Address State Interface Time Interval Multiplier 127.0.0.1 Up 0.400 0.100 4 Client SPRING-TE, TX interval 0.100, RX interval 0.100 Session up time 01:41:41 Local diagnostic None, remote diagnostic None Remote state Up, version 1 Session type: Multi hop BFD (Seamless) Min async interval 0.100, min slow interval 1.000 Adaptive async TX interval 0.100, RX interval 0.100 Local min TX interval 0.100, minimum RX interval 0.100, multiplier 4 Remote min TX interval 0.100, min RX interval 0.100, multiplier 4 Local discriminator 18, remote discriminator 111 Echo mode disabled/inactive Remote is control-plane independent Path-Name V4-pe1.iad_v4_path0 Session ID: 0x0 1 sessions, 1 clients Cumulative transmit rate 10.0 pps, cumulative receive rate 10.0 pps
Control plane: Verify pe2.nyc’s SR-TE policy has a valid path
user@pe2.nyc> show spring-traffic-engineering lsp detail name pe2.nyc:pe1.iad_v4 Name: pe2.nyc:pe1.iad_v4 Tunnel-source: Static configuration To: 128.49.106.11-7100<c> State: Up Path: pe1.iad_v4_path0 Outgoing interface: NA Auto-translate status: Disabled Auto-translate result: N/A BFD status: Up BFD name: V4-pe1.iad_v4_path0 SR-ERO hop count: 2 Hop 1 (Strict): NAI: None SID type: 20-bit label, Value: 21 Hop 2 (Loose): NAI: None SID type: 20-bit label, Value: 1011
第一个跳跃使用邻接 SID 到 p1 nyc (21)。如果 pe2 与 nyc 和 p1 nyc falters 之间的邻接,则此 SR-IOV 策略将被关闭。
Control plane: Verify the SR-TE policy goes Down if the label stack is rendered unusable
user@pe2.nyc> show isis adjacency Interface System L State Hold (secs) SNPA ge-0/0/1.0 p1.nyc 1 Down 0 ge-0/0/2.0 p2.nyc 1 Up 25
user@pe2.nyc> show spring-traffic-engineering lsp detail name pe2.nyc:pe1.iad_v4 Name: pe2.nyc:pe1.iad_v4 Tunnel-source: Static configuration To: 128.49.106.11-7100<c> State: Down Path: pe1.iad_v4_path0 Outgoing interface: NA Auto-translate status: Disabled Auto-translate result: N/A BFD status: Down BFD name: V4-pe1.iad_v4_path0 SR-ERO hop count: 2 Hop 1 (Strict): NAI: None SID type: 20-bit label, Value: 21 Hop 2 (Loose): NAI: None SID type: 20-bit label, Value: 1011
没有替代 SID 列表(也称为路径)供策略使用。如果有非 SR-IOV 路径,用户流量将通过其进行解析。相反,静态配置的’sr-iov 路径没有充分利用 sBFD 仍然 misleadingly。
Debuggability
遥测并非可观察性的一个部分。网络性能和可用性的故障排除取决于底层协议的清晰度以及可用实施的诊断和日志记录。
SR’s 在传输路由器上的状态最小化,并使用统一的 SRGB,使人更容易解析节点 SID 标签转发操作– 。 grok。Junos 在这种简单性的基础之上,提供丰富的日志功能以检测人为错误。
SRMS 部分提供了如何标记配置错误的节点 Sid 的示例。SR 发现两种不同类型的冲突:
SID 冲突:如果为相同的前缀分配不同的 Sid,则会捕获此情况。
前缀冲突:如果为不同的前缀分配相同的 SID,就会发生这种情况。
前面的示例证明了一个 SID 冲突。让’我们暂时强制前缀冲突,并使用 gRPC 将其作为事件流出。传统系统日志仍然可用,但就遥测 gRPC 成功的 SNMP 一样,事件现在也可以在 gRPC 上传输。
让’我们将 jtimon 配置为订阅 /junos/events/
. 要导致前缀冲突,pe1 使用一个实际属于 p1 的额外回传地址来配置 iad。 iad (128.49.106.9/32)。如果这些地址用于生成常用的可播 Sid,则会很好。相反,pe1 的配置不正确,无法使用 IS-IS 的导出策略通告不同的前缀索引(99)。 iad (9) iad。
Control plane: pe1.iad misconfiguration to cause a prefix conflict
Management plane: streamed system event about the prefix conflict
system_id: pe1.iad component_id: 65535 sub_component_id: 0 path: sensor_1004:/junos/events/:/junos/events/:eventd sequence_number: 5831 timestamp: 1551326098693 sync_response: false key: timestamp uint_value: 1551326098694 key: junos_re_stream_creation_timestamp uint_value: 1551326098693 key: junos_re_payload_get_timestamp uint_value: 1551326098693 key: junos_re_event_timestamp uint_value: 1551326098693 key: prefix str_value: /junos/events/event[id=’RPD_ISIS_PREFIX_SID_CNFLCT’ and type=’2’ and facility=’3’]/ key: timestamp/seconds uint_value: 1551326098 key: timestamp/microseconds uint_value: 692834 key: priority uint_value: 3 key: pid uint_value: 3211 key: message str_value: RPD_ISIS_PREFIX_SID_CNFLCT: IS- IS detected L1 prefix segment index ‘9’ originated by ‘p1. iad’ for prefix 128.49.106.9/32 conflicting with self- originated L1 prefix segment index ‘99’ for prefix 128.49.106.9/32 key: daemon str_value: rpd key: hostname str_value: pe1.iad key: prefix str_value: /junos/events/event[id=’RPD_ISIS_PREFIX_SID_CNFLCT’ and type=’2’ and facility=’3’]/ attributes[key=’isis-level’]/ key: value str_value: 1 key: prefix str_value: /junos/events/event[id=’RPD_ISIS_PREFIX_SID_CNFLCT’ and type=’2’ and facility=’3’]/ key: logoptions int_value: 9
注意 beckoned 和错误配置 recitifed。SR 指定多个固定规则以解决冲突,直到发生人为干预。规则正在发展。在这一点,他们是:
IPv4 上的 IPv6 条目优先
首选最长前缀长度
首选最小数字前缀地址
首选数字的最小分段指数
首先解决前缀冲突;SID 冲突解决方案遵循未完成的条目。通过这种方式’,让我们从深入到可观察性,再转向 optimizability。