本发明涉及网络通信技术领域,尤其是涉及一种集中式以太网交换系统中线卡和背板之间的流控方法及装置。
背景技术:
流控是以太网的一项功能,其可以防止交换机集成电路中报文缓冲区的溢出而导致的丢包。当交换机的已用缓冲区容量达到一个预先设定的阈值时,端口向全双工链路的对方发出停止发送数据的请求。ieee802.3x定义了一种流控机制,即:下游端口向上游端口发送流控制帧,上游端口接收流控制帧并作出停止发送数据的响应。流控帧在数据帧中携带,接收方会根据帧的格式分离出流控帧,并提交到mac控制子层中的流量控制模块中,流量控制模块解析流控帧的内容,提取流控帧中携带的时间参数,根据时间参数确定停止发送数据的时间。ieee802.3x定义的流控机制虽然能够防止丢包,但流控帧会导致全双工链路上的所有报文停止一段时间的发送。ieee802.1qbb定义的优先级流控可避免上述问题的产生,其针对同一链路上不同优先级的流量,单独发送流控帧。当某一优先级的业务发生拥塞时,只让该类报文暂停发送,而其他类型的业务不受影响。
ieee802.3x和ieee802.1qbb定义的流控机制,对于单一芯片构建的系统具有良好的工作性能,如a、b、c三个系统构成的转发系统,a、b、c系统分别是三台独立的以太网交换机,每个以太网交换机都有一颗独立的以太网交换芯片,而不是由多颗芯片搭建的系统,可以构建无丢包网络。而当其中某个系统复杂时,也即某个系统是集中式或者分布式系统,如b系统是由背板和线卡1和线卡2构成,如图1所示,其中,背板和线卡各是一个独立的以太网交换芯片。集中式转发系统中,线卡没有查表转发的能力,线卡在下联口收到的报文,不查表,直接发送给上联口,并且需要在报文中标识收到报文的原始端口。线卡在上联口收到的报文,也不查表,直接根据报文中指示的端口,选择下联口发送出去。实施时,可在报文中额外插入一个vlan,用vlanid来表示端口信息。背板芯片收到线卡发过来的报文,根据vlanid可以知道原始的端口,然后查表转发,做各种以太网交换的操作,最后把报文发送给对应的线卡,并且插入一个vlanid来表示最终的出口。
然而,在集中式交换系统中,线卡和背板之间仍然是普通的流控机制,并且会存在严重的头部阻塞问题(hol),如图1所示,图中的y、z两个端口拥塞了,这样会向p端口发送流控帧,背板响应之后,会将整个q端口堵住。这时候虽然解决了y、z的拥塞问题,但是其他少量流量需要通过q端口从w、x端口发送出去的报文也会被堵住,产生头部阻塞问题。
技术实现要素:
本发明的目的在于克服现有技术的缺陷,提供一种集中式交换系统中线卡和背板之间的流控方法及装置,可避免头部阻塞问题的产生。
为实现上述目的,本发明提出如下技术方案:一种集中式交换系统中线卡和背板之间的流控方法,所述方法包括:
s100,线卡接收流控帧并将接收流控帧的下联端口信息添加至流控帧中,进一步将包含下联端口信息的流控帧发送至背板;
s200,背板对出端口中与流控帧中下联端口信息对应的队列组进行阻塞;
s300,背板对通过出端口向接收流控帧的下联端口发送数据包的入端口进行缓冲区占用统计,所述缓冲区占用统计通过与入端口相连的线卡的下联端口进行统计;
s400,背板判断所述缓冲区占用统计是否大于预设阈值,并在大于预设阈值时将缓冲区占用统计大于预设阈值的下联端口信息添加至流控帧中并发送至与入端口相连的线卡中,与入端口相连的线卡根据流控帧中的下联端口信息从相应下联端口发送流控帧。
优选地,所述流控帧内设有用于标示端口信息的端口信息字段,线卡或背板通过端口信息字段添加下联端口信息。
优选地,所述流控帧包括基于ieee802.3x定义的第一流控帧,所述端口信息字段设于第一流控帧中时间参数字段之后的保留字段中。
优选地,所述流控帧包括基于ieee802.1qbb定义的第二流控帧,所述端口信息字段设于第二流控帧中第七时间参数字段之后的保留字段中。
优选地,所述端口信息字段的长度为2字节。
本发明还揭示了一种集中式交换系统中线卡和背板之间的流控装置,所述装置包括
第一帧处理模块,设于线卡中,用于将接收流控帧的下联端口信息添加至流控帧中,进一步将包含下联端口信息的流控帧发送至背板;
阻塞模块,设于背板中,用于对背板的出端口内与流控帧中下联端口信息对应的队列组进行阻塞;
统计模块,设于背板中,用于对通过出端口向接收流控帧的下联端口发送数据包的入端口进行缓冲区占用统计,所述缓冲区占用统计通过与入端口相连的线卡的下联端口进行统计;
判断模块,设于背板中,用于判断所述缓冲区占用统计是否大于预设阈值;
第二帧处理模块,设于背板中,用于在判断模块判断缓冲区占用统计大于预设阈值时将缓冲区占用统计大于预设阈值的下联端口信息添加至流控帧中并发送至与入端口相连的线卡中;
帧转发模块,设于线卡中,用于根据流控帧中的下联端口信息从相应下联端口发送流控帧。
优选地,所述流控帧内设有用于标示端口信息的端口信息字段,线卡或背板通过端口信息字段添加下联端口信息。
优选地,所述流控帧包括基于ieee802.3x定义的第一流控帧,所述端口信息字段设于第一流控帧中时间参数字段之后的保留字段中。
优选地,所述流控帧包括基于ieee802.1qbb定义的第二流控帧,所述端口信息字段设于第二流控帧中第七时间参数字段之后的保留字段中。
优选地,所述端口信息字段的长度为2字节。
本发明的有益效果是:
(1)线卡从下联端口接收到普通的流控帧,并不对接收流控帧的下联端口进行阻塞,而是添加相应下联端口信息至流控帧中并发送至背板,由背板对流控帧中下联端口对应的队列组进行阻塞处理,避免了头部阻塞问题(hol)的产生,同时,线卡在接收到包含下联端口信息的流控帧后,线卡无需执行流控动作,仅需从对应的下联端口发送流控帧,使得在集中式交换系统中,流控的真正动作(阻塞端口或队列组)只发生在背板上。
(2)在背板上,基于线卡的下联端口做缓冲区占用统计,可精确知道线卡的哪一个下联端口存在大流量输入。
附图说明
图1是集中式交换系统中线卡与背板连接示意图;
图2是本发明的方法流程图示意图;
图3是本发明的装置结构框图示意图。
具体实施方式
下面将结合本发明的附图,对本发明实施例的技术方案进行清楚、完整的描述。
如图2所示,本发明所揭示的一种集中式交换系统中线卡和背板之间的流控方法,包括:
s100,线卡接收流控帧并将接收流控帧的下联端口信息添加至流控帧中,进一步将包含下联端口信息的流控帧发送至背板;
具体地,本实施例中,以图1所示的集中式交换系统为例,对本发明进行详细地说明,图示的集中式交换系统包括背板(fabric)及与背板相连的两个线卡(linecard)(分别记为第一线卡和第二线卡)。与背板相连的每个线卡具有与背板相连的上联端口及至少一个与下游设备相连的下联端口,如第一线卡具有与背板相连的上联端口m及四个与下游设备(图未示)相连的下联端口a、b、c、d,其中,上联端口m与背板的端口n相连;第二线卡具有与背板相连的上联端口p,及四个与下游设备相连的下联端口w、x、y、z,其中,上联端口p与背板的端口q相连。当第一线卡通过其上的下联端口连接的任意一个下游设备发生拥塞时,或者第二线卡通过其上的下联端口连接的任意一个下游设备发生拥塞时,下游设备会向与其相连的下联端口发送普通的流控帧,如第二线卡通过下联端口z相连的下游设备发生拥塞时,下游设备向上联端口z发送普通的流控帧。
当线卡通过下联端口接收到下游设备发送的流控帧后,进一步将接收该流控帧的下联端口信息添加至该流控帧中,并不对该下联端口进行阻塞处理,线卡进一步将包含下联端口信息的流控帧发送至背板中,如第二线卡通过下联端口z接收到流控帧后,进一步将下联端口z的信息添加至流控帧中,并不对该下联端口z进行阻塞处理,最后将包含下联端口z信息的流控帧发送至背板中。
为了使流控帧中可以携带端口信息,本发明通过对流控帧进行自定义配置,在流控帧中添加标示端口信息的端口信息字段,线卡或背板可通过端口信息字段向流控帧中添加端口信息。本实施例中,流控帧包括第一流控帧和第二流控帧,其中,第一流控帧由ieee802.3x定义;第二流控帧由ieee802.1qbb定义。对于第一流控帧,可在时间参数字段(pause_time)之后的保留(padding)字段中添加,如端口信息字段占用保留(padding)字段中的两个字节;对于第二流控帧,可在第七时间参数(time7)字段之后的保留(padding)字段中添加,如端口信息字段占用保留(padding)字段中的两个字节。在第一流控帧或第二流控帧中添加端口信息字段后,流控帧的长度依然保持64个字节。
s200,背板对出端口中与流控帧中下联端口信息对应的队列组进行阻塞。
具体地,如图1所示,背板上每个端口,如端口n和q,均包括多个队列组(queuegroup),队列组的数量与端口相连的线卡的下联端口相对应,如对于背板的端口q,与其相连的线卡(第二线卡)具有四个下联端口,因此,端口q具有四个队列组(分别记为g0/g1/g2/g3),并且每个队列组对应一个下联端口,从下联端口发往上联端口的报文进入相应的队列组中,如队列组g0对应下联端口w,下联端口w发往上联端口p中的报文进入队列组g0中,同理可知,下联端口x发往上联端口p中的报文进入队列组g1中,下联端口y发往上联端口p中的报文进入队列组g2中,下联端口z发往上联端口p中的报文进入队列组g3中。
为了避免头部阻塞问题(hol)的产生,背板在接收到包含下联端口信息的流控帧后,将与发送该流控帧的线卡相连的出端口中的队列组进行阻塞处理,并且该队列组与流控帧中携带的下联端口信息相对应,如背板接收第二线卡发送的流控帧,该流控帧中包含下联端口z的信息,背板进一步对与第二线卡相连的出端口q中的队列组g3进行阻塞处理,也就是说出端口q中去往下联端口z的数据包无法正常发送,而出端口q中去往下联端口w、x、y的数据包可正常发送,避免了头部阻塞问题(hol)的产生。
s300,背板对入端口进行缓冲区占用统计,所述入端口用于通过出端口向接收流控帧的下联端口发送数据包,所述缓冲区占用统计基于与入端口相连的线卡的下联端口进行统计;
具体地,当背板上端口q中的队列组g3阻塞之后,可能持续有数据包从端口n进入并从端口q出,因而背板上端口n的缓冲区占用统计会持续增长。由于端口n的缓冲区占用统计是基于与端口n相连的线卡(第一线卡)的下联端口进行统计的,因此,在第一线卡的四个下联端口,只有真正有较大流量进入的下联端口对应的缓冲区占用统计才会增加,直至增加至预设阈值,如第一线卡的下联端口b、c、d通过背板向第二线卡的下联端口z发送数据包,在背板的端口n上,下联端口b、c、d对应的缓冲区占用统计增加至预设阈值,而下联端口a对应的缓冲区占用统计并不会增加至预设阈值。
s400,背板判断所述缓冲区占用统计是否大于预设阈值,并在大于预设阈值时将缓冲区占用统计大于预设阈值的下联端口信息添加至流控帧中并发送至与入端口相连的线卡中,与入端口相连的线卡根据流控帧中的下联端口信息从相应下联端口发送流控帧。
具体地,背板在对入端口做缓冲区占用统计时,还对与该入口相连的线卡上的每个下联端口对应的缓冲区占用统计进行判断,当该下联端口对应的缓冲区占用统计大于预设阈值时,向该线卡中发送流控帧,流控帧中包含缓冲占用统计大于预设阈值的下联端口的信息,实施时,下联端口信息的添加详见上述,再此不再一一赘述。如上所述,在背板的端口n上,下联端口b、c、d对应的缓冲区占用统计增加至预设阈值后,背板发送三个流控帧至第一线卡中,三个流控帧分别为:包含下联端口b信息的流控帧、包含下联端口c信息的流控帧和包含下联端口d信息的流控帧。
与入端口相连的线卡根据流控帧中的下联端口信息向相应下游设备发送流控帧,以阻止数据包的发送,如第一线卡接收到上述三个流控帧后,根据流控帧中携带的下联端口信息,分别通过下联端口b、c、d发送流控帧至对应的下游设备中。
如图3所示,本发明还揭示了一种集中式交换系统中线卡和背板之间的流控装置,包括第一帧处理模块、阻塞模块、统计模块、判断模块、第二帧处理模块和帧转发模块,每个线卡中设置第一帧处理模块和帧转发模块,背板中设置阻塞模块、统计模块、判断模块和第二帧处理模块,当然,在其他实施例中,可根据实际需求进行设置。其中,第一帧处理模块用于将接收流控帧的下联端口信息添加至流控帧中,进一步将包含下联端口信息的流控帧发送至背板;阻塞模块用于对背板的出端口内与流控帧中下联端口信息对应的队列组进行阻塞;统计模块用于对入端口进行缓冲区占用统计,所述入端口用于通过出端口向接收流控帧的下联端口发送数据包,的所述缓冲区占用统计通过与入端口相连的线卡的下联端口进行统计;判断模块用于判断所述缓冲区占用统计是否大于预设阈值;第二帧处理模块用于在判断模块判断缓冲区占用统计大于预设阈值时将缓冲区占用统计大于预设阈值的下联端口信息添加至流控帧中并发送至与入端口相连的线卡中;帧转发模块用于根据流控帧中的下联端口信息从相应下联端口发送流控帧。
具体地,当线卡中的第一帧处理模块通过下联端口接收到下游设备发送的流控帧后,进一步将接收该流控帧的下联端口信息添加至该流控帧中,并不对该下联端口进行阻塞处理,线卡进一步将包含下联端口信息的流控帧发送至背板中,如第二线卡通过下联端口z接收到流控帧后,进一步将下联端口z的信息添加至流控帧中,并不对该下联端口z进行阻塞处理,最后将包含下联端口z信息的流控帧发送至背板中。如何在流控帧中添加端口信息详见上述,在此不再一一赘述。
为了避免头部阻塞问题(hol)的产生,背板中的阻塞模块在接收到包含下联端口信息的流控帧后,将与发送该流控帧的线卡相连的出端口中的队列组进行阻塞处理,并且该队列组与流控帧中携带的下联端口信息相对应,如背板接收第二线卡发送的流控帧,该流控帧中包含下联端口z的信息,背板进一步通过阻塞模块对与第二线卡相连的出端口q中的队列组g3进行阻塞处理,也就是说出端口q中去往下联端口z的数据包无法正常发送,而出端口q中去往下联端口w、x、y的数据包可正常发送,避免了头部阻塞问题(hol)的产生。
统计模块如何进行缓冲区占用统计详见上述,在此不再一一赘述。
背板在对入端口做缓冲区占用统计时,还通过判断模块对与该入口相连的线卡上的每个下联端口对应的缓冲区占用统计进行判断,当该下联端口对应的缓冲区占用统计大于预设阈值时,背板通过第二帧处理模块向该线卡中发送流控帧,流控帧中包含缓冲占用统计大于预设阈值的下联端口的信息,实施时,下联端口信息的添加详见上述,再次不再一一赘述。如上所述,在背板的端口n上,下联端口b、c、d对应的缓冲区占用统计增加至预设阈值后,背板发送三个流控帧至第一线卡中,三个流控帧分别为:包含下联端口b信息的流控帧、包含下联端口c信息的流控帧和包含下联端口d信息的流控帧。
与入端口相连的线卡中的帧转发模块根据流控帧中的下联端口信息向相应下游设备发送流控帧,以阻止下游设备发送数据包,如第一线卡接收到上述三个流控帧后,根据流控帧中携带的下联端口信息,通过对应下联端口向下游设备发送流控帧。
本发明所述的集中式交换系统中线卡和背板之间的流控方法及装置中,线卡从下联端口接收到普通的流控帧,并不对接收流控帧的下联端口进行阻塞,而是添加相应下联端口信息后发送至背板中,背板对流控帧中下联端口对应的队列组进行阻塞处理,避免了头部阻塞问题(hol)的产生。同时,线卡在接收到包含下联端口信息的流控帧后,线卡无需执行流控动作,仅从对应的下联端口发送流控帧,使得在集中式交换系统中,流控的真正动作(阻塞端口或队列组)只发生在背板上。另外,在背板上,基于线卡的下联端口做缓冲区占用统计,可精确知道线卡的哪一个下联端口确切存在大流量输入。
本发明的技术内容及技术特征已揭示如上,然而熟悉本领域的技术人员仍可能基于本发明的教示及揭示而作种种不背离本发明精神的替换及修饰,因此,本发明保护范围应不限于实施例所揭示的内容,而应包括各种不背离本发明的替换及修饰,并为本专利申请权利要求所涵盖。