TSN Simulation - INET(1)
在之前的文章中,对TSN仿真框架NeSTiNg
进行了简单的介绍与分析。然后,在今年6月推出的INET 4.4中,包含了TSN相关功能,同时其实现的功能更多,可扩展性更好。在本系列中,将根据INET官方文档,对其支持的TSN功能进行分析。
一、概述
1.1 TSN设备
为了方便TSN功能的配置,INET提供了几个TSN特定的网络设备。其在INET基本网络节点的基础上额外添加了TSN特定参数。
1.2 时间同步
在本章节,主要实现【IEEE 802.1AS-2020】协议。INET主要在两个方面仿真了时钟同步,一方面是时钟模块,一方面是时间同步协议模块。
时钟模块
- OscillatorBasedClock 基于震荡器的时钟
- SettableClock 可设置时间的时钟
时间同步协议实现模块
- Gptp gPTP时钟同步协议
- GptpBridge gPTP网桥节点
- GptpEndstation gPTP终端节点
- GptpMaster gPTP主节点
- GptpSlave gPTP从节点
为了仿真时间同步失败情况(主时钟丢失或链路断开),需要多个时间同步域,不同时钟域独立运行,用户模块决定所使用的时钟。
- MultiClock 包含不同时钟域的多个子时钟
- MultiDomainGptp 包含不同时钟域的多个gPTP子模块
在TsnDevice和TsnSwitch中,通过hasTimeSynchronization
和hasGptp
参数启用时间同步。
1.3 TSN流过滤
在本章节,主要实现【IEEE 802.1Qci-2017】协议。在INET有两种模型,分别为 SimpleIeee8021qFilter 和 Ieee8021qFilter ,前者更接近802.1Qci,后者更接近802.1Q。前者在结构和功能上更加完善,同时使用更加简单。
SimpleIeee8021qFilter 包括多个子模块,对接收到的数据包进行处理,实现流量过滤
其内部包含以下功能模块:
- StreamClassifier 根据流的名称映射到不同的入队列
- IPacketMeter 数据包计数模块,可根据不同的规则对流量进行标记,默认采用 DualRateThreeColorMeter,其可选择以下模块
- SingleRateTwoColorMeter 根据 CIR 和 CBS 参数将数据包标记为绿色或红色
- SingleRateThreeColorMeter 根据 CIR、CBS 和 EBS 参数将数据包标记为绿色、黄色或红色
- DualRateThreeColorMeter 根据 CIR、CBS、EIR 和 EBS 参数将数据包标记为绿色、黄色或红色
- 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
- CreditBasedShaper CBS整形器,根据当前信用值决定数据包是否传输,由标准数据包队列和 Ieee8021qCreditBasedGate门组成
- TimeAwareShaper TAS整形器,根据GCL决定当前队列数据是否传输,由标准数据包队列和 PeriodicGate 门组成
- AsynchronousShaper ATS整形器,根据数据包的传输合格时间(EligibilityTimeTag)对数据进行重新排队候传输。
在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层一起实现。
- EthernetPreemptingMacLayer 包含多个MAC子层的以太网MAC层
- EthernetPreemptingPhyLayer 允许数据帧抢占的PHC层
在TsnDevice和TsnSwitch中,通过hasFramePreemption
参数启用帧抢占。
1.7 Cut-through Switching
传统交换机采用存储-转发
的架构,需要接收到全部数据帧之后判断其转发端口,再进行转发。Cut-through Switching可实现在接收到数据包MAC头后判断转发端口,直接转发,减少数据包在交换机处浪费的时间。(注意:只有当出端口速度>=入端口速度时,才可以使用)
EthernetCutthroughInterface Cut-through网卡,允许数据帧直接从输入接口传输至输出接口。内部主要通过 EthernetCutthroughLayer 实现
EthernetCutthroughLayer 内部由 EthernetCutthroughSource 和 EthernetCutthroughSink 组成
- EthernetCutthroughSource 转发入的Cut-through Switch
- EthernetCutthroughSink 转发出的Cut-through Switch
在TsnDevice和TsnSwitch中,通过hasCutthroughSwitching
参数启用Cut-through Switching。
1.8 TSN网络自动配置
inet提供了3种网络自动配置机制,可能会用到不同层的的配置器,如 Ipv4NetworkConfigurator 和 MacForwardingTableConfigurator
- 门调度配置:通过配置GCL,实现网络流量确定性传输
- 冗余配置:通过流复制和消除,实现网络中流量的冗余传输
- 故障保护配置:结合门调度配置和冗余配置
对于门控调度配置,inet提供了3中不同的的调度器
- EagerGateScheduleConfigurator 按照流量优先级分配时隙
- Z3GateScheduleConfigurator 使用SAT求解器计算GCL
- TSNschedGateScheduleConfigurator 使用TSNsched计算调度
对于流冗余配置,inet提供了1个调度器
- StreamRedundancyConfigurator 为网络中所有节点的流量配置流赋值与消除
对于失败保护配置,inet提供了1个调度器
- FailureProtectionConfigurator 配置门调度和流冗余配置器以提供针对指定链路和节点故障的保护