之前的文章中,对TSN仿真框架NeSTiNg进行了简单的介绍与分析。然后,在今年6月推出的INET 4.4中,包含了TSN相关功能,同时其实现的功能更多,可扩展性更好。在本系列中,将根据INET官方文档,对其支持的TSN功能进行分析。

一、概述

1.1 TSN设备

为了方便TSN功能的配置,INET提供了几个TSN特定的网络设备。其在INET基本网络节点的基础上额外添加了TSN特定参数。

1.2 时间同步

在本章节,主要实现【IEEE 802.1AS-2020】协议。INET主要在两个方面仿真了时钟同步,一方面是时钟模块,一方面是时间同步协议模块。

时钟模块

时间同步协议实现模块

为了仿真时间同步失败情况(主时钟丢失或链路断开),需要多个时间同步域,不同时钟域独立运行,用户模块决定所使用的时钟。

在TsnDevice和TsnSwitch中,通过hasTimeSynchronizationhasGptp参数启用时间同步。

1.3 TSN流过滤

在本章节,主要实现【IEEE 802.1Qci-2017】协议。在INET有两种模型,分别为 SimpleIeee8021qFilterIeee8021qFilter ,前者更接近802.1Qci,后者更接近802.1Q。前者在结构和功能上更加完善,同时使用更加简单。

SimpleIeee8021qFilter 包括多个子模块,对接收到的数据包进行处理,实现流量过滤

image-20221120213451204

图1 SimpleIeee8021qFilter模块功能结构

其内部包含以下功能模块:

  • StreamClassifier 根据流的名称映射到不同的入队列
  • IPacketMeter 数据包计数模块,可根据不同的规则对流量进行标记,默认采用 DualRateThreeColorMeter,其可选择以下模块
  • IPacketFilter 包过滤模块,默认采用 LabelFilter ,其可实现丢弃红色数据包,通过绿色和黄色数据包
  • IPacketGate 数据包门模块,控制数据包是否通过
  • PacketMultiplexer 多路复用接口

可通过不同子模块的组合,实现不同的流过滤规则。

其中 IPacketMeter 中模块基于通用令牌桶实现:

  • TokenBucketMeter 实现 SingleRateTwoColorMeter。单个令牌桶,标记数据包通过或丢弃
  • MultiTokenBucketMeter 实现 SingleRateThreeColorMeter 和 DualRateThreeColorMeter。包含多个令牌桶,根据多个令牌桶的规则标记数据包的通过或丢弃。

在TsnDevice和TsnSwitch中,通过hasIngressTrafficFiltering参数启用流过滤。

1.4 TSN调度和整形

在本章节,主要实现【IEEE 802.1Qbv-2015】协议。在INET中,目前支持3种3种整形器,分别是基于门控的TAS整形器,基于信用的CBS整形器和异步整形器ATS

在TsnDevice和TsnSwitch中,通过hasEgressTrafficShaping参数启用流整形。

1.5 TSN帧复制与消除

在本章节,主要实现【IEEE 802.1CB-2017】协议。主要由以下4个部分组成,分别负责不同的工作。

  • StreamIdentifierLayer 负责根据其内容和数据等来为传出的数据包分配流名称,只可以用于自身产生应用流量的网络节点
  • StreamRelayLayer 负责传入流的重复帧删除和传出流的复制拆分
  • StreamFilterLayer 负责传入传出流的过滤(非必要)
  • StreamCoderLayer 负责传入流的解码和传出流的编码。通过检查传入流的各种标签域映射进行匹配,解析数据流

在TsnDevice和TsnSwitch中,通过hasStreamRedundancy参数启用流复制与消除。

1.6 TSN帧抢占

在本章节,主要实现【IEEE 802.1Qbu】协议。帧抢占要求网口能够中断正在进行的传输并切换到更高优先级帧的传输,需要由特殊的MAC层和PHC层一起实现。

在TsnDevice和TsnSwitch中,通过hasFramePreemption参数启用帧抢占。

1.7 Cut-through Switching

传统交换机采用存储-转发的架构,需要接收到全部数据帧之后判断其转发端口,再进行转发。Cut-through Switching可实现在接收到数据包MAC头后判断转发端口,直接转发,减少数据包在交换机处浪费的时间。(注意:只有当出端口速度>=入端口速度时,才可以使用)

EthernetCutthroughInterface Cut-through网卡,允许数据帧直接从输入接口传输至输出接口。内部主要通过 EthernetCutthroughLayer 实现

image-20221120215235961
图2 EthernetCutthroughInterface模块功能结构

EthernetCutthroughLayer 内部由 EthernetCutthroughSource 和 EthernetCutthroughSink 组成

image-20221120215410143
图3 EthernetCutthroughLayer模块功能结构

在TsnDevice和TsnSwitch中,通过hasCutthroughSwitching参数启用Cut-through Switching。

1.8 TSN网络自动配置

inet提供了3种网络自动配置机制,可能会用到不同层的的配置器,如 Ipv4NetworkConfiguratorMacForwardingTableConfigurator

  • 门调度配置:通过配置GCL,实现网络流量确定性传输
  • 冗余配置:通过流复制和消除,实现网络中流量的冗余传输
  • 故障保护配置:结合门调度配置和冗余配置

对于门控调度配置,inet提供了3中不同的的调度器

对于流冗余配置,inet提供了1个调度器

对于失败保护配置,inet提供了1个调度器