帧抢占协议还是怀念以前那个车马很慢,书信很远,带宽顶天也就几十兆的年代。
▎旧时代的辉煌
1983年秋,IEEE 802.3大学正式成立,这所大学遵循的是严格的标准化管理,数据包们的衣食住行都需要符合学校的规定,就比如那一眼望过去完全统一的着装。
图1 802.3帧格式
帧抢占是位老先生,生于上世纪90年代,不知何许人也,躬身于实时系统领域十余载,2016年也算正式拿到了802.3大学的教职,大家都称呼他br先生。老先生闲时爱和旁人唠嗑,每每聊到那些年的研究,总用那神采飞扬的眼光去照顾一下四周,自豪之情溢于言表。
老先生的研究专注于数据包的调度,研究课题叫做《论如何给予高优先级数据包一定的特权从而避免低优先级反转现象的发生》。里面的低优先级反转呢,就是高优先级的数据包需要等待低优先级数据包传完了才能传,也是一个经典问题了,解决方法也没几个。老先生研究的方案啊,简单来说其实就是插队,插队可是一门艺术。
图2 不同情况下高优先级的转发时序
要知道以前那学校条件可不好,能用的带宽最多也就那么十几二十兆,办事效率那叫一个低下,那啥反转现象一发生,高优先级数据包高低不得浪费个几毫秒,多来几次的话几秒不就下去了,啧,数据包那得闹上天。
图3 单跳节约延迟
扯远了,再说那老先生,他就想着怎么去解决这办事慢的问题了,想来想去最终就实现了这个插队的方法,还在学校里面开展了试验。首先说他改的那着装,四十多年的以太网校服那是说改就改,直接给那第一张图里面的校服改了两个样式的,说是怕把被抢占数据包的事给忘了。让那低优先级数据包没事的时候就穿左边这套和之前差不多的,要是被插队了就换右边那套穿,到时候办事的人看见就可以接着办了。看到右边那套的CRC了没,办完了事的才戴CRC,没办完的就换个mCRC戴着,m就是没,就没办完的意思。还有那个Frag_count,那是看被插了几次队用的,这记录可不能丢,丢了到时候就不给你办事。
图4 mPacket两种格式
要说br老先生那时候那叫一个意气风发,连MAC层都给他分成了两个,一个preemptable MAC专门处理那些低优先级数据包的事的,一个express MAC专门处理那些高优先级的事的,办事的人拿不定主意直接电话打过去问就行。这都是有标准化流程的,叫那啥状态机来着。
图5 pMAC和eMAC
上面这改来改去的,当时的以太网局子都给惊动了,还过来问了好几个问题,那问题我还记得呢,可逗了。
问:你干嘛?
答:降点延迟…
问:这么降??
答:嗯…
问:哎,让那帮数据包一次办的事少点不就行了…
老先生夸夸掏了张表出来:可以是可以,不过据我分析还是1500字节左右的时候办事效率高点,你瞧,数据段占了98%呢。
老先生可是早有准备的。
图6 不同帧长下数据段占据的比例
老先生还是可惜了,你知道以太网局子里的人最后是怎么说的吗,他们说:哎,辛苦br先生了,不过你放心,马上大家的办事效率就会高起来了。
老先生何许人也,以太网局子里的人不清楚,他还能不清楚吗。办事效率高起来之后,他的研究也就失去了继续的意义了。十兆一毫秒,百兆百微秒,千兆十微秒,老先生心里有他自己的一把尺。
▎落幕,追寻救赎的旅途
以太网局子的愿景很快就实现了,百兆千兆的网络开始常见,十G百G也不再稀奇。而从这时起,大家就开始经常在他那MAC Merge实验室外见到他靠坐在墙根处了。和他唠嗑,还是满口那些mCRC、SMD、状态机啥的,叫人半懂不懂的。虽然内容还是差不多,但大约和以前的确是不太一样了。
许久没有在实验室墙根处见到过老先生了,问了问那帮子刚招的数据包才了解了一点情况。说是老先生已经不打算再往深了做课题了,最近在和802.1大学那个很火的Qbv实验室整横向项目呢,项目好像是叫做《论如何基于保护带策略深化802.3br实验室与802.1Qbv实验室的合作:Hold与Release的妙用》,还听说基于这个项目在802.1大学整了一个Qbu实验室。
老先生真乃神人也。