SCALANCE X-200IRT手册中提到这样一段话,我先来翻译一下,若是以前对于概念的不理解,肯定翻译不正确,不过我是已经做了试验测试和验证的,应该可以翻译正确一些。我们来看一下:
X200 IRT IE交换机工作在Cut-through模式。
如果收到一个带有错误校验码的报文,正在转发的该报文会被提前终止,这样该帧因此会变短。CRC的错误计数会增加。
如果这个帧是一个长度为64字节的帧,Undersize错误计数也会增加,因为该报文帧被缩短了。
别小瞧这一段话,这里面的信息非常多,甚至颠覆了自己原有对交换机转发方式的理解。我们来看看第一个概念Cut through,本质上的理解该概念是就是当交换机只要读取到报文帧的目标MAC地址,根据地址表,然后立即转发该数据帧,这种方式的优势就是转发速度极快,缺点就是无法检测报文帧的错误。那问题就来了为什么我们的IRT交换机可以检测错误?
第二个疑问是正在转发的帧由于错误而被CUT了,翻译是这样的逻辑吧?什么?还可以“砍”报文。怎么还有这样的神操作?我最好奇的被砍的报文在网络中又是以什么形态存在?
第三个疑问是64个字节长度的帧,不仅仅会计数CRC错误,也会计数undersize计数?这Undersize又是什么鬼?我们的设备怎么会发出小于64个字节的报文呢?
还有一些小的疑问,我就不写了,因为开始的时候我的想法有些幼稚,例如Cut-through是基于端口转发而无需读取MAC地址,因为ET200SP只有两个端口啊,那我还读取目标MAC地址干嘛?;还有的想法有些复杂,比如IRT交换机会对任何类型数据都做这个的转发操作吗?还有些就比较迷茫,被砍的数据还能在网络中传输,这是什么情况?等等。这一切需要好好沉淀一下,还要怪自己学业不精,备受打击,哭了~~
看完这段话,我就陷入了浮想联翩,找各种理论根据来解释上述这段话,也和其他同事一起做了简单的讨论,因为我们都没有什么概念,于是也没有找到合适的答案来说服自己。这样我就只能先给总部发一封邮件询问一下,看看是否有什么方向。可能这个问题较为复杂,也可能英语没有说清楚,我不断的询问各种花式问题,惹得总部的同事说这是他在西门子德国工作20多年头一次遇到像我这样问问题的,热情而专业的德国同事还是给了我洋洋洒洒的一大篇答案,不过他也夸奖了自己一番,说除了他没有谁能给我答案了,哎,这是在变相在说我自己提出的问题过于尖锐了?不过,不管怎样,这些文字确实给了我一些启发。至于启发什么,我做了记录,也就是根据总部同事的这些话,扒了出来一些自己看来的一些知识线索。不过现在看看这个记录,发现很多都是在概念不清的时候理解记录下来的,甚至还有误解,在这里实在羞于展示,索性就不展示出来了,省着污了大家的眼睛,更不想给大家带来概念混淆。
结合自己的疑问和总部同事给的线索,我决定还是从我们都熟悉的Store&forward这个转发模式开始说起。这个模式是交换机最为通用的数据转发模式,具体的工作方式是一个数据帧(从第一个位)到达交换机,交换机需要等待该数据帧全部接收到,立刻被暂时存储起来,然后交换机检查MAC帧的FCS是否正确,如果正确,查看该MAC帧的目的MAC地址,根据其交换机的MAC地址表所对应的端口转发出去。否则如果发现该数据帧错误,则丢弃该MAC帧。其实上述的定义也可以这么说,具体的工作方式是交换机对于暂时存储的数据帧进行检查,查看MAC帧的FCS是否正确,如果正确,查看该MAC帧的目的MAC地址,然后根据其交换机的MAC地址表所对应的端口转发出去。否则如果发现该数据帧错误,则丢弃该MAC帧。其实这两个理解都没有错误,如果从对数据处理的角度看,前者是存储时间+决定时间,后者决定时间+转发时间,但是从延迟时间上的角度看,从该帧的进入到转发的时间差是交换机的延迟时间,两者是一样的。Store&forward这种方式的最大好处就是可以对进入交换机数据包进行错误检测,有效改善网络性能,例如减少错误数据帧所占用的带宽,缺点是由于存储而导致数据传输延时较大。
那我就来做一个实验,看看Store&Forward的什么样的,其实我们就是要看经过交换机报文的时间差就可以了,就是前面所说的延迟时间,看看这个时间是不是像手册中描述的那样,希望能从中发现一些端倪,给自己更多的启示。那就把实验设备搭起来,网络的组态和设想比较简单,一个CPU1516-3PN/DP,作为IO控制器,两个IO设备,其中一个是i-device,这样可以设置较长的通信字节数,例如1024bytes,因为这样比简单的ET200SP要组态更多的IO模块而获得较长的PN报文要简单的多,还有一个ET200SP带着一个DI和DO模板,用于测试最小字节的PN数据帧。需要说明的是实验中同一时刻只有一个IO设备连接到网络中,用于测试最大或最小字节数量的PN数据帧。当然也可以使用TCP通信来做,但是从协议上来看,无论是组态还是检查Wireshark的报文都没有PN IO报文方便。实验中肯定要有一个交换机用于测试Store&Forward,具体为XM416-4C,尽管是千兆交换机,但是由于前后连接的PN设备都是百兆的,根据默认的Auto-Negotiation,波特率会自适应到100兆的波特率。这样当PN IO的数据帧通过该交换机,查看进和出的时间差值,这个差值就是延迟的时间,也就是Store&Forward的时间,而查看和计算时间的设备需要是Bany Scope和XM400 Agent模块。具体拓扑结构如下:(红色连线表示测试数据帧延迟的进出端口)
相关的XM400手册中,并没有提及100M带宽下的Store&Forward的延迟时间,而是给出了千兆带宽下的这个数值。不过没有关系,SCALANCE X系列交换机的这个Store&Forward的延迟时间都大体相同,例如如下手册中描述的这样,延迟时间与传输的帧的长度相关是10us到130us。
无论怎样,我想我们来看看实验的结果吧,然后具体问题具体分析。
欲知详情,请关注西门子1847工业学习平台—大咖专栏—PROFINET工业通信详解,大家一起交流探讨。