目录
前言
Cisco Bug搜索工具:Cisco Bug搜索工具( Cisco Bug Search Tool,BST )是一种基于Web的工具,作为Cisco缺陷跟踪系统的网关,维护Cisco产品和软件中缺陷和漏洞的全面列表。BST可以提供产品和软件的详细缺陷信息。
关于时间敏感组网:TSN是IEEE 802.1 Q定义的在标准以太网上提供确定性消息传递的标准技术。TSN技术集中管理,通过时间调度为那些需要确定性的实时应用提供交付保证和最小化抖动。TSN为第2层技术。IEEE 802.1 Q标准工作在OSI第2层。TSN是以太网标准,不是互联网协议标准。TSN网桥做出的转发决策使用的是以太网报头内容,而不是IP地址。以太网帧的负载可以是任意的,并且不限于Internet协议。这意味着TSN可以在任何使用标准以太网的环境中使用,可以承载任何工业应用或协议的负载。对于那些实现TSN (终端设备和桥梁)的网络设备来说,共享时间常识是一个隐含的需求。精密时间协议( PTP )用于保持时间常识。选择与TSN协同工作的PTP协议是IEEE 802.1 AS和IEEE 802.1 ASRev。
关于共享时间概念:提供确定性的关键是一个共享的时间概念。TSN需要所有网元(终端设备和桥梁)实现802.1 AS (并在未来802.1 ASRev)。802.1 AS PTP配置文件允许所有TSN网元共享相同的时间概念。802.1 Qbv对于提供TSN帧的准时交付至关重要。Qbv定义了一种按计划传输某些TSN以太网帧的方法,同时允许非TSN以太网帧在TSN帧周围尽力传输。由于所有网元共享相同的时间,实现Qbv的终端设备和桥接器可以非常快速地传输关键通信,并且在传输过程中没有明显的抖动。IEEE 802.1 Qcc侧重于定义管理接口和协议,以实现TSN网络管理。802.1 Qcc是一个包含多个方面的标准,思科采用802.1 Qcc定义的集中式网络管理方式。
概念
TSN系统组成
- TSN流:用于描述终端设备之间的时间关键通信的术语,每个流都有网络设备所遵守的严格的时间要求,每个TSN流由网络设备唯一标识。
- 终端设备:需要确定性通信的应用,这些被称为"说者(talkers)"和"听者(listeners)"。
- 网桥:又称以太网交换机。对于TSN来说,这些是特殊的网桥,能够按计划传输TSN流的以太网帧,并按计划接收TSN流的以太网帧。
- 中心网络控制器( Central Network Controller,CNC ):对于TSN,CNC充当需要确定性通信的应用的代理网络( TSN桥及其互连)。CNC定义了所有TSN帧传输的时间表,CNC应用程序由TSN网桥供应商提供,Cisco针对TSN开发了一款用于控制其TSN桥的CNC应用程序。
- 集中式用户配置( Centralized User Configuration,CUC ):与CNC和终端设备通信的应用程序。CUC表示控制应用和终端设备,CUC向CNC提出确定性通信( TSN流)请求,并对这些流提出具体要求。CUC是一个特定于厂商的应用程序,通常,TSN终端设备的供应商会为这些终端设备提供CUC。
Cisco TSN解决方案
思科在IE-4000产品系列上支持TSN,且IE-4000的所有型号都支持TSN。从Cisco IOS®Software版本15.2(5)E2开始,TSN功能可用。IE-4000s在数据通路上有一块FPGA,使其能够支持TSN。IE-4000作为一个TSN网桥运行,IE-4000实现了IEEE 802.1 Qbv和IEEE 802.1 AS。IE-4000通过其以太网接口支持数百个TSN流。
顾名思义,TSN中央网络控制器( CNC )控制着网络中的TSN桥,CNC是运行在客户现场(相对于云而言)上的软件应用程序。CNC应用的硬件外壳是不相关的,可以是任何东西。对于中国用户来讲负有两项主要任务:首先,它负责确定路由和调度通过桥接网络的TSN流。第二,负责为TSN操作配置TSN网桥。
CNC与CUC进行通信,接收网络必须提供的通信需求。CNC聚合所有请求,为每个通信请求找出最优路径,为每个TSN流调度端到端传输,最后将计算得到的调度传递给每个TSN网桥。作为调度计算的一部分,CNC为每个TSN流提供唯一的标识符。TSN桥使用这个唯一的标识符来区分一个TSN流和另一个TSN流。唯一标识包括目的MAC地址、VLAN ID和CoS值。通过这3项,TSN桥可以识别TSN流,并根据正确的调度进行流传输。
在图1中,可以看到所有的组件以及它们之间的关系。CUC使用REST API与CNC通信,CNC同时与CUC和TSN桥进行通信,CUC与对讲机/侦听器终端设备进行通信,TSN网桥将TSN的以太网帧在对讲机和监听机之间进行交换。

CUC和CNC之间的API是作为Cisco TSN文档的一部分定义和提供的。该API用于CUC所需的一切,以完全编程网络中的TSN流。图1显示了在对讲机和侦听机可以开始交换TSN通信( eg : TSN流)之前,CUC和CNC之间发生的消息的控制平面通信行。下面的步骤对于一个工作流来说是典型的,并且描述的目的只是为了显示实体之间是如何和为什么进行通信的。声明:以下这些步骤不是可以执行的唯一顺序。
- CUC启动物理拓扑发现:在调度能够成功计算之前,CNC必须学习物理拓扑结构。工程师(通过CUC)将向CNC发起请求,以发现物理拓扑。利用LLDP和种子设备,CNC遍历物理拓扑,发现每个设备以及它们是如何连接的。这包括支持LLDP的终端设备。完成后,工程师(通过CUC)向CNC发出返回已发现拓扑的请求。此时的工程师可以验证CNC如果选择正确地发现了拓扑。
- CUC请求网络资源:由负责定义端到端通信的工程师执行。工程师计算哪个终端设备(谈话者)必须与其他终端设备(倾听者)进行通信。工程师负责识别所有的侦听器,因为每个TSN流可以有多个侦听器。工程师还可以定义通信的延迟要求(例如,听众必须接收500 µs内开始传输),将要发送的以太网数据包的最大大小,以及其他依赖关系(例如, TSN流是否存在序列顺序)。CUC将收集所有TSN流请求,并使用接受请求的API提交给CNC。
- 计算时间表:在满足拓扑已经被发现且CNC已经接收到所有TSN流请求的情况下,工程师(通过CUC)会发起一个请求,让CNC计算调度。CNC将为请求返回成功或失败。除非CNC知道物理拓扑结构,否则无法计算结束时间表。步骤3取决于步骤1和步骤2。
- 查看计算结果:通常情况下,网络工程师想要查看日程表并在其上线之前进行验证。工程师(通过CUC)请求CNC返回计算调度的详细信息。这包括TSN流中涉及的每个设备的详细信息。详细内容包括配置TSN所需的所有终端设备和桥接器:1)每个TSN流(目的MAC地址、VLAN、CoS)的唯一标识符;2)每一跳(谈话者和桥梁)发送窗口的开始和结束;3)每一跳(倾听者与桥梁)接收窗口的开始和结束;4)计算端到端延迟
- 分配时间表:工程师(通过CUC)在满足调度方案能够正常工作的前提下,向CNC发出请求,将计算出的调度方案分配给TSN桥。CUC还将对TSN流的谈话者和倾听者进行编程。会话者被期望按照一个时间表来传输每一个TSN流。
- 验证TSN桥上的进度分布:这一步是可选的。在排除故障的场景中,对于TSN流,用户可以登录TSN网桥来验证调度方案。
注意:步骤1 ~ 4可以根据需要重复。
CNC至TSN桥控制平面
CNC与TSN Bridge在两个场合进行通信。当CNC发现物理网络时以及当CNC分发计算的调度时。CNC和TSN网桥采用Layer3 IP连接,它们不必位于同一个子网中,即使这种情况经常发生。
网络发现:在CNC能够分发之前,它必须做一个发现。CNC必须知道在哪里分配,以及如何计算调度。只有CNC确切地知道所有的Talkers和Listeners是如何连接的,才能准确地计算调度,CNC发现网络对TSN桥上的LLDP表进行抓取。CNC需要一个"种子"设备来启动发现,以"种子"开始,管理员必须提供桥接设备主机名和IP地址。从那里,它将访问它能找到的所有TSN网桥和终端设备。为了网络发现的成功,每个TSN Bridge必须有唯一的主机名。这意味着管理员必须将主机名从" Switch "更改为网络中唯一的东西。终端设备也应该有唯一的名称。使用TSN Bridge上的IOS CLI命令' show lldp neighbor detail '查看邻居及其详细信息。该命令的输出与CNC使用的信息相同。CNC将使用Telnet登录到TSN桥。为了获得成功,需要配置登录密码并且CNC必须知道它是什么。对于所有的TSN Bridge都需要相同。默认情况下,CNC使用" admin "作为登录密码。除非在CNC上更改登录密码,否则TSNBridges也必须配置" admin "。
进度分布:在CNC成功计算出时间表之后,该时间表直到被分发到TSN Bridges时才处于活动状态。CNC和TSN桥具有第3层连接,允许TSN桥接收调度。每个TSN桥都有自己与CNC的连接,每个桥都有自己的调度。在每个TSN桥上,必须配置CNC的IP地址。每次CNC成功计算一个调度时,它为该调度生成一个ID。ID为每个调度唯一的4字节十六进制值。当分配成功时,TSN Brigde将显示正在运行的调度ID。它应该与CNC上的调度ID相匹配。为了使调度分配能够正常工作,TSN Bridge必须知道如何联系CNC以获得调度。这需要在TSN Bridge上执行一行配置命令:TSN _Bridge(config)# tsn cnc-server<IP Address of CNC>,使用命令' show tsn cnc '和' show tsn Scheduling '来确认CNC正在与TSN Bridge进行通信。
IE4000上的数据平面只关注TSN流的ingress和出口。一旦CNC将调度分配给桥接器,并且Talker和Listeners终端设备也被赋予了他们的TSN流调度,焦点转移到网络设备而不是CNC。CNC仅在控制平面内。如果CNC断电或断开,则不会影响TSN流的运行。每个TSN流通过桥接的以太网进行流量工程。CNC确定转发路径,作为进度计划计算的一部分。TSN根据CNC的指令桥接前向TSN流。TSN网桥不对TSN流进行MAC地址的动态学习。
用于TSN流的Vlan(s)不运行生成树。它强制在所有包含TSN流的vlan上禁用生成树。如果TSN网桥在该vlan的接口上接收到不属于预期TSN流的以太网数据包,则网桥将丢弃该数据包。TSN vlans不应该有广播包。所有TSN流在以太网报头中都有vlan标签。TSN网桥上所有预期接收或传输TSN流的接口都必须处于中继模式。在IE4000上,预期TSN流的接口被自动放置到主干模式,TSN vlan(s)不能成为以太网接口上的"访问" vlan。
Cisco TSN Bridges在ingress和出口上使用服务策略,以确保TSN流在内部交换基础设施内获得适当的服务质量。TSN流使用高优先级队列,防止其在出口拥塞时被延迟。对于所有支持TSN流的接口,将自动对该接口应用入口和出口服务策略,以达到QOS目的。
下图为思科TSN桥的HW架构,这将有助于TSN流的故障排除和监控。为了查看已调度到TSN桥的TSN流,有两个CLI命令用于汇总和详细查看。
TSN流的Ingress
所有使Ingress成为TSN桥的流都有一个预期的时间窗口。该窗口对于千兆以太网链路约为13us,对于100Mbps链路约为130us。在10Mbps链路上不支持TSN。Cisco TSN网桥能够在( eg :在预定窗口内)时刻判断给定流是否为Ingressing。对于每一个TSN流,都会对Ingressing进行早、准时或晚计数。这在端到端TSN流存在任何问题的情况下是有用的,并且需要从根本上解决。对于TSN流未按时Ingressing,一个可能的原因是发送端未与网络进行时钟同步。
使用命令" show interface<interface id>tsn ingress stats<flow id> "查看每个TSN流的ingress统计信息,需要接口和TSN流ID。
‘ In '统计在预期窗口内接收到的流中的数据包。' Latest '列清除read并显示自上次读取以来的计数。'Accumulateed ' 列保持历史并且不清除,除非对清除计数器做出明确的动作。
TSN流的出口(Egress)
与Ingress类似,所有流出的TSN流在期望流出TSN桥时都有一个时间窗口。不管这个接口是桥接到桥接器还是桥接到Listener终端,Cisco TSN Bridge都不会传输TSN流的帧,直到时机成熟。这意味着TSN桥必须保持和延迟TSN帧。使用" show tsn flow detail " CLI命令可以看到出口窗口。确认一个TSN流在出口正确工作的最简单方法是查看每个流的出口计数。使用该命令查看每个流的出口计数:show interface tsn flow - stats。
安装TSN
步骤1:从Cisco.com下载TSN Enabled IOS包。关于IOS安装的详细信息和详细的配置过程,请参阅Cisco工业以太网4000、4010和5000交换机软件配置指南( Cisco Industrial Ethernet4000,4010 and 5000 Switch Software Configuration Guide)。
步骤2:将控制台端口连接到IE 4000交换机,并确保其当前运行的是Cisco IOS。
步骤3:根据是否安装新的交换机,升级先前的交换机,执行下列步骤之一配置TSN交换机,或配置一个TSN交换机。可以通过FTP、TFTP或SDFlash安装映像。按照"使用Flash File System "中的步骤操作。
在一个新的开关上:
a) 让交换机完全启动
b) 让交换机启动,它将与内部的默认图像一起启动。
c) 现在转到"升级交换机映像:(Upgrading the switch image:)"部分,在交换机上安装TSN映像。
使用新映像升级新交换机或旧的启用TSN的交换机:
a) 通过FTP、TFTP或SDFlash将新的tar IOS图像复制到交换机中。
Archive download-sw sdflash:flash:
这个过程大约需要15 ~ 20 min才能完成。
b) 完成后,发出以下命令:
configure terminal
boot system flash:<image name>/<image name>.bin exit
writere
load
c) 当新图像切换完毕后,需要激活TSN的许可证,遵循以下程序。
enable
configure terminal
service internal
exit
license right-to-use activate tsn
write
reload
d) 一旦开关打开,它将启用TSN,你应该能够在它上面使用TSN功能。进行交叉核对在使能模式下,发出指令:
sh tsn?
Switch#sh tsn?
be_stats BE traffic statistics
cnc Current CNC server connection status
flow TSN flows
fpga FPGA file information
license-on-SD Information for tsn license in sdflash
schedule schedule
shadow Current shadow information
Switch#
配置TSN
在IE 4000上,CLI所需配置非常少,时间敏感流由CNC进行配置,IOS的CLI配置是为了实现与CNC的配置,以下是为数不多的命令。
步骤1:新图像切换完毕后,需要激活TSN的许可证,遵循以下程序
enable
configure terminal
service internal
exit
license right-to-use activate tsn
write
reload
步骤2:一旦开关打开,它将启用TSN,并且您应该能够在它上面使用TSN功能,要交叉签到使能模式发出指令:
sh tsn?
Switch#sh tsn?
be_stats BE traffic statistics
cnc Current CNC server connection status
flow TSN flows
fpga FPGA file informationlicense-on-SD Information for tsn license in sdflash
schedule schedule
shadow Current shadow information
Switch#
步骤3:启用隐私管理
TSN_Switch#configure term
TSN_Switch(config)#enable secret admin
CNC在发现时使用telnet登录IE4000,注意:将启用密码配置为CNC的" admin "。这可以改变,就目前而言,但为了方便使用,使用' admin '。
步骤4:ptp profile dot1as
TSN_Switch#configure term
TSN_Switch(config)#ptp profile dot1as
IE4000配置为PTP profile 802.1 AS
步骤5:tsn cnc - server ip 地址
TSN_Switch#configure term
TSN_Switch(config)#tsn cnc-server<ip address>
配置CNC服务器的IP地址。
步骤6:line vty 0 15
TSN_Switch#configure term
TSN_Switch(config)#line vty 0 15
TSN_Switch(config-line)#password admin
TSN_Switch(config-line)#login
CNC通过带有密码(认证) ' admin '的telnet登录。注意您可以稍后在CNC中更改密码(认证),但现在使用默认值' admin '。
TSN信息
这些命令用于验证IE 4000与CNC通信,并查看IE 4000上预定的TSN流。
步骤1:show tsn cnc
该命令显示了与CNC的连通性,CNC到交换机的连接是第3层连接,并不保证,如果怀疑交换机和CNC已经失去通信,则使用该命令查看最新的连接状态。
步骤2:show tsn schedule
使用此命令可以显示IE 4000正在使用的调度ID,这应该与CNC上的调度ID相匹配。如果出现不匹配,则要么最新的CNC调度尚未分发,要么交换机与CNC之间的连接中断。
步骤3:show tsn flow?
使用这些命令可以查看交换机上配置的流。
步骤4:show tsn flow summary
步骤5:show tsn flow details
TSN统计量
Ingress统计:show interface tsn ingress stats
关于Ingress统计注记备注:
意外(意外数据包)
匹配全局VLAN和DMAC的数据包数量
流表中启用位NOT set
对应端口地图位NOT set
In-Win-Window(在窗口中)
到达流定义窗口内的数据包数量
早期(早期Bin )
到达流定义窗口前的数据包数量
晚期(晚期Bin )
到达流定义窗口后的数据包数量
注意:使用" show tsn flow details "为所有TSN流定义入口窗口。Latest的值每次读取后都进行重置。
Epress统计:show interface tsn flow stats
关于Ingress统计注记备注:
TSN Queue xmit ( nTransmissionTfFrames )
This为clear-on-read计数器
This计数器是增加的
如果<flow-id>属于一个时间触发( TT )帧AND
被传输到TXM的输出队列
TSN Queue rcv ( nReceivedTtFrames ) |
This为clear-on-read计数器·
This计数器是增加的
如果<flow-id>属于一个时间触发( TT )帧AND
被正确接收,帧大小正确,crc正确·
TSN xmit定时( nTimingError )
这不是clear-on-read计数器
This计数器是增加的
当窗口关闭或
不建立同步
TT缓冲液冲洗未完成
TSN未发布( nUn released )
这不是一个读出计数器
这个计数器是增加了当
一个帧接收到一个流之前,最近的帧被分配到所有端口
Note:Ensure that flow ID<flow_id>exists with an egress interface
使用以下变化的出口统计命令来查看每个接口的出口计数器。这显示了所有成功退出的字节和帧。这是针对Tsn和尽最大努力的以太网帧。TSN流id不是必需的,因为它适用于所有接口。
计数器的注意事项
这些计数器由TSN出口逻辑维护,适用于所有以太网帧,而不仅仅是TSN帧。
Egress逻辑接收的帧数
Egress逻辑接收的字节数
Egress逻辑传输的帧数
Egress逻辑传输的字节数
使用这种变化来查看每个接口的出口错误计数器,show int tsn egress error
计数器注释
这些是未读清寄存器
流量工程参数失配( drop ) ( nDropNonCiscoErrors )
广播帧不允许( drop ) ( nBroadcastErrors )
大小错误( drop ) ( nSizeErrors )
TSN Rx处CRC错误( nCrcErrors )
流未找到( nFlowNotFoundErrors )
流管理错误( nFlowPolicingErrors )
内存不可用( nPartitionDrop )
使用该命令在界面上显示与TSN相关的出口错误,show int tsn egress details
计数器上的注释
上面显示的端口状态计数器是clear - on - read寄存器
上面显示的端口状态标志不是clear - on - read寄存器。
Runt帧( nRuntFrames )
开始帧分隔符错误( nSofErrors )
Alignment错误( nAlignmentErrors )
MII错误( nMiiErrors )
实现说明
不检查端口是否为TSN流的一部分
这些错误计数器是全局计数器,与任何特定流无关
这些错误计数器跨越所有现有的TSN流
关于计数器的注记
- 上面显示的端口状态计数器都是读出的寄存器
- 上面显示的端口状态标志不是clear - on - read寄存器。这些是布尔计数器,既具有SET值,也具有UNSET值。
- Runt框架( nRuntFrames )
- 开始帧分隔符错误( nSofErrors )
- 对齐误差( n Alignment Errors )
- MII误差( nMiiErrors
关于实现的注意事项
- 不检查所涉及的端口是否为TSN流的一部分
- 这些错误计数器是全局计数器,与任何特定的流无关
- 这些错误计数器跨越所有现有的TSN流
明确统计计数
clear tsn flow_stats flowsclear tsn stats interface<intf_name><intf_num>
当这个CLI被执行时,重置所有用于MAC级诊断计数器的软件累加器。这些蓄积者为每个港口。
Best Effort statistics
show tsn be_stats