一种转发限速方法及装置与流程

专利2022-05-09  104


本说明书涉及通信
技术领域
,尤其涉及一种转发限速方法及装置。
背景技术
:随着网络的普及,越来越多的用户接入网络,作为进行数据流交互的网络设备所承载的流量也越来越大。为了扩大接入带宽,在网络设备上通过部署线卡板来扩展出更多的端口接收和转发数据流,出方向和入方向之间,通过网板实现线卡板之间的数据交互。由于线卡板上所接收的数据流并不会占用端口的全部带宽,因此,基于成本等因素的考虑,在网络设备的出方向所部署的线卡板数量一般会小于入方向上部署的线卡板数量。但是,在网络中经常会出现突发流量,即在某一个时间段内接收到了大量的数据流,此时,会由于带宽上的不足导致数据流在出方向上出现拥塞。然而,在入方向上,由于线卡板无法获知到出方向上线卡板的情况,仍以最高的速率对数据流进行处理和转发,进一步地加剧了出方向上线卡板的拥塞,从而使数据流在出方向上的线卡板上出现丢包的问题,降低了网络设备进行数据流转发的可靠性。技术实现要素:为克服相关技术中存在的问题,本说明书提供了一种速率限制方法及装置。结合本说明书实施方式的第一方面,本申请提供了一种转发限速方法,应用于网络设备中的线卡板,包括:接收网络设备内部转发的数据流,统计接收数据流的接收速率,并获取数据流的内部转发信息;获取数据流所对应的缓存队列的队列状态以及发送数据流出端口的最大速率;生成状态表项,其中,状态表项包括内部转发信息、队列状态、接收速率和最大速率;将状态表项发送给网络设备中的其他线卡板,以使其他线卡板根据状态表项对发往线卡板的数据流进行限速。可选的,该方法,还包括:接收并存储其他线卡板所发送的状态表项,其中,队列状态包括一条数据流所对应的缓存队列的占用量和为该缓存队列分配的队列深度;根据状态表项一条数据流所对应的队列深度比和速率比,其中,队列深度比为占用量和队列深度的比值,速率比为接收速率和出端口的最大速率的比值,一条数据流由内部转发信息标记;若速率比小于队列深度比,则根据最大速率和当前所接收到的数据流的接收速率对数据流的转发进行限速。可选的,在根据状态表项一条数据流所对应的队列深度比和速率比之后,还包括:若速率比不小于队列深度比,则按照当前的接收速率对数据流进行转发。进一步的,将状态表项发送给网络设备中的其他线卡板,包括:通过广播的方式,将状态表项发送给网络设备中的其他线卡板;或者,通过组播的方式,将状态表项发送给包含于组播组中的其他线卡板。可选的,状态表项中包括:源芯片标识、目的芯片标识和端口标识。结合本说明书实施方式的第二方面,本申请提供了一种转发限速装置,应用于网络设备中的线卡板,包括:解析单元,用于接收网络设备内部转发的数据流,统计接收数据流的接收速率,并获取数据流的内部转发信息;获取单元,用于获取数据流所对应的缓存队列的队列状态以及发送数据流出端口的最大速率;生成单元,用于生成状态表项,其中,状态表项包括内部转发信息、队列状态、接收速率和最大速率;发送单元,用于将状态表项发送给网络设备中的其他线卡板,以使其他线卡板根据状态表项对发往线卡板的数据流进行限速。可选的,该装置,还包括:接收单元,用于接收并存储其他线卡板所发送的状态表项,其中,队列状态包括一条数据流所对应的缓存队列的占用量和为该缓存队列分配的队列深度;确定单元,用于根据状态表项一条数据流所对应的状态表项,确定队列深度比和速率比,其中,队列深度比为占用量和队列深度的比值,速率比为接收速率和出端口的最大速率的比值,一条数据流由内部转发信息标记;限速单元,用于若速率比小于队列深度比,则根据最大速率和当前所接收到的数据流的接收速率对数据流的转发进行限速。进一步的,限速单元,用于若速率比不小于队列深度比,则按照当前的接收速率对数据流进行转发。可选的,发送单元,包括:广播模块,用于通过广播的方式,将状态表项发送给网络设备中的其他线卡板;或者,组播模块,用于通过组播的方式,将状态表项发送给包含于组播组中的其他线卡板。可选的,状态表项中包括:源芯片标识、目的芯片标识和端口标识。本说明书的实施方式提供的技术方案可以包括以下有益效果:本说明书实施方式中,线卡板获取与数据流相关的内部转发信息,根据内部转发信息统计一条数据流的接收速率以及与该条数据流相关联的缓存队列的队列深度与占用量,生成状态表项,通过将该状态表项发送给网络设备内的其他线卡板,以使其他线卡板通过状态表项中所包含的速率和队列状态确定发送状态表项的线卡板的转发情况,并对其他线卡板发送至该线卡的数据流的速率进行管理,避免了数据流在一块线卡板上的拥塞乃至丢包,提升了网络设备对数据流进行转发的可靠性。应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书。附图说明此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本说明书的实施方式,并与说明书一起用于解释本说明书的原理。图1是本申请实施方式所涉及的一种转发限速方法的流程图;图2是本申请实施方式所涉及的一种网络设备的结构示意图;图3是本申请实施方式所涉及的网络设备对数据流进行转发的示意图;图4是本申请实施方式所涉及的一种转发限速装置的结构示意图。具体实施方式这里将详细地对示例性实施方式进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施方式中所描述的实施方式并不代表与本说明书相一致的所有实施方式。本申请提供了一种转发限速方法,应用于网络设备中的线卡板,如图1所示,包括:s100、接收网络设备内部转发的数据流,统计接收数据流的接收速率,并获取数据流的内部转发信息。网络设备如图2所示,包括至少两个线卡板,线卡板之间可以直接连接或通过网板进行连接。在线卡板上可以设置有转发芯片、处理器和内存等器件,其中,转发芯片、处理器和内存之间相互连接,通过转发芯片实现线卡板之间以及线卡板与网板之间的连接。当然,在网络设备以及线卡板上所包含的器件并不限于上述提及的器件,还可以包含有其他,在此不再展开描述。举例而言,如图2所示,在网络设备中,可以设置有三块线卡板,分别为线卡板1、线卡板2和线卡板3,三块线卡板分别连接到网板,并通过网板进行数据流的交互。在内存中形成有若干缓存队列,每一个缓存队列被分配有预设的存储空间,转发芯片可以记录有缓存队列的队列深度以及每一个缓存队列中当前的占用量。该占用量指转发芯片将接收到的数据流中报文写入到缓存队列时所占用的存储空间大小。一个缓存队列可以缓存多个数据流中的报文,具体的缓存规则可以是将一个出端口绑定到一个缓存队列,也可以是将一个处理器的处理器核对应到一个缓存队列,对此不做限制。该缓存队列可以设置为fifo(先入先出,firstinputfirstoutput),也可以是其他形式。在网络设备运行后,从一侧的线卡板接收数据流,并从另一侧的线卡板转发出去。在网络设备内部,一块线卡板接收到数据流后,可以根据处理器向转发芯片所下发的转发表对数据流进行匹配,并根据匹配结果确定出端口。此后,接收到数据流的线卡板会将该数据流中的报文进行内部封装,并转发至网板,网板在接收到具有内部转发头的报文后,将该报文发送至出端口所连接的线卡板,以实现对外的报文转发。在数据流流入到网络设备时,线卡板可以通过转发芯片接收到数据流,并对数据流进行解析,以确定该数据流在网络设备内部的转发路径。比如,在线卡板1和线卡板2的转发芯片(即转发芯片1和转发芯片2)接收到数据流后,通过数据流的首报文解析出转发信息,该转发信息可以包括源ip地址、目的ip地址、源mac地址、目的mac地址以及所应用的网络协议等等。基于这些转发信息,转发芯片1和转发芯片2可以确定出该数据流需要从网络设备上的哪一个出端口发送出去,比如出端口被确定为线卡板3所连接。此后,转发芯片可以对数据流中的报文封装内部转发头,在网络设备内部,可以通过该内部转发头将数据流引导至对应的出端口。这样一来,转发芯片1和转发芯片2便可以对接收的数据流进行封装,该内部转发头中可以包含有源芯片标识、目的芯片标识、源端口和目的端口等信息,当然,内部转发头所携带的信息不限于此。此后,线卡板1和线卡板2可以将数据流发送至网板,以使网板将该数据流转发到线卡板3。在线卡板3的转发芯片3接收到网络设备内部转发过来的数据流(即由网板转发过来的数据流)时,转发芯片3对数据流进行统计,获取该条数据流的接收速率,并可以对数据流中的报文进行解析,确定目的芯片标识为自身的芯片标识,剥去内部转发头,并写入到对应的缓存队列中。在如图3所示的实施方式中,转发芯片3分别接收到了转发芯片1和转发芯片2发送过来的数据流1和数据流2,因此,转发芯片3可以解析出内部转发头中的源芯片标识1(转发芯片1的芯片标识)和源芯片标识2(转发芯片2的芯片标识),数据流1和数据流2的目的芯片标识一致,都为转发芯片3的芯片标识。转发芯片3可以统计出数据流1的接收速率为60gbps(吉比特每秒,gigabitpersecond),数据流2的接收速率为70gbps。s101、获取数据流所对应的缓存队列的队列状态以及发送数据流出端口的最大速率。在转发芯片对数据流的报文进行解析后,可以确定出该数据流的出端口,进而可以根据该出端口的标识确定出该出端口在转发数据流时的最大速率。并且,转发芯片也可以确定出与该出端口相对应的缓存队列的队列状态,包含缓存队列的队列深度,以及该缓存队列中当前的占用量。这里对于占用量的监测,可以是周期性地获取也可以是实时获取,对此不做限制。数据流3可以确定出缓存队列的队列深度为10000byte(字节),出端口的最大速率为100gbps。s102、生成状态表项。转发芯片3根据获取到的源芯片标识、目的芯片标识、数据流的接收速率、出端口的最大速率、缓存队列的队列深度以及缓存队列当前的占用量生成状态表项。其中,内部转发信息可以包含源芯片标识和目的芯片标识,缓存队列的队列状态可以包含占用量和队列深度。需要说明的是,内部转发信息还可以包含端口标识,即可以包含出端口的端口标识和/或入端口的端口标识。通过端口标识,可以进一步划分进行限速的精确程度,这是因为通过源芯片标识、目的芯片标识、入端口的端口标识和出端口的端口标识这四个维度可以对数据流进行更加精确的区分。下面仅以包含源芯片标识和目的芯片标识的状态表项为例进行描述。该状态表项可以用于表示线卡板上当前所接收到的数据流的情况以及转发该数据流所涉及到的资源的应用情况。s103、将状态表项发送给网络设备中的其他线卡板,以使其他线卡板根据状态表项对发往线卡板的数据流进行限速。转发芯片在生成根据数据流生成状态表项后,可以将该状态表项发送至网络设备中其他线卡板,比如,转发芯片3可以将状态表项发送给转发芯片1和转发芯片2。在转发芯片3向其他线卡板发送状态表项时,可以通过广播方式或者组播方式实现。若通过广播方式发送,那么,在网络设备上需要设置广播标识。在转发芯片3确定需要发送状态表项时,在包含有状态表项的内部报文中,内部转发头的目的芯片标识被设置为广播标识。此后,该内部报文被发送至网板,网板在解析到内部报文的内部转发头携带有广播标识,将该内部报文转发到网络设备中除发送状态表项之外的各个线卡板上(即其他线卡板)。若通过组播方式发送,那么,在网络设备上需要设置组播标识,并且,设置组播组,将需要获取状态表项的线卡板加入到该组播组中,也可以理解为将线卡板上的转发芯片的芯片标识加入到该组播组中。在转发芯片3确定需要发送状态表项时,在包含有状态表项的内部报文中,内部转发头的目的芯片标识被设置为组播标识。此后,该内部报文被发送至网板,网板在解析到内部报文的内部转发头携带有组播标识,将该内部报文转发到组播组中所包含的线卡板(即其他线卡板)。转发芯片1和转发芯片2在接收到转发芯片3发送过来的状态表项后进行存储。此时,对于转发芯片1或转发芯片2而言,可以基于该状态表项中所包含的信息对自身所接收的数据流进行限速。具体的,针对一个转发芯片而言,该方法,还包括:s104、接收并存储其他线卡板所发送的状态表项。其中,队列状态包括一条数据流所对应的缓存队列的占用量和为该缓存队列分配的队列深度。在转发芯片接收到状态表项后,可以将该状态表项存储在线卡板中预设的存储空间内,比如内存或单独设置的闪存等。在状态表中所存储的状态表项如下表1所示,需要说明的是本实施方式仅以线卡板3分别接收到线卡板1和线卡板2的一条数据流为例,实际应用时该表中可以记录有线卡板3当前接收并转发的全部数据流的相关信息。源芯片标识目的芯片标识接收速率缓存队列的占用量最大速率队列深度转发芯片1转发芯片360gbps8000byte100gbps10000byte转发芯片2转发芯片370gbps8000byte100gbps10000byte表1s105、根据状态表项一条数据流所对应的队列深度比和速率比。以转发芯片1为例,在存储上述表1后,可以根据源芯片标识和目的芯片标识确定自身接收并转发的一条数据流,即一条数据流由内部转发信息标记。基于该数据流所对应的状态表项,可以确定出该数据流在线卡板3上的接收和转发情况,即确定队列深度比和速率比。其中,队列深度比为占用量和队列深度的比值,速率比为接收速率和出端口的最大速率的比值。基于表1,数据流1的队列深度比为8000byte/10000byte=4/5,速率比为60gbps/100gbps=3/5,数据流2的队列深度比为8000byte/10000byte=4/5,速率比为70gbps/100gbps=7/10。s106、若速率比小于队列深度比,则根据最大速率和当前所接收到的数据流的接收速率对数据流的转发进行限速。转发芯片1可以基于已经确定的数据流1的速率比和队列深度比进行比较,由于缓存队列会持续地进行读写,当有报文写入到缓存队列时,将会被送出到出端口完成转发。当缓存队列中的占用量增加时,则说明出端口无法将线卡板3接收到的数据流发送出去,也就是说在线卡板3上出现了拥塞现象,此时,如果速率比小于队列深度比,则可以说明在出端口上除了数据流1还承载了其他的数据流,即数据流2,基于步骤s105中所确定出的数据流1的速率比3/5小于队列深度比4/5,两者数据流的总和超出了出端口的转发能力。那么,线卡板1和线卡板2可以确定需要对自身发往线卡板3的数据流进行限速,从而避免线卡板3在拥塞的情况下继续在缓存队列中积累报文,导致缓存队列出现丢包的问题。具体的,线卡板进行限速可以是根据状态表项中所包含多条数据流的接收速率和出端口的最大速率。以上述数据流1为例进行描述,线卡板1确定状态表项中所包含的数据流1和数据流2在线卡板3上的接收速率为60gbps和70gbps,这两条数据流所对应的出端口的最大速率为100gbps。那么,可以确定出数据流1和数据流2各自的接收速率,在二者的总和中所占的比例,即,60/(60 70)和70/(60 70)。这样一来,便可以得出数据流1所占比例为6/13,数据流2所占比例为7/13。在确定数据流之间所占比例后,可以通过出端口的最大速率确定限速的具体数值,即数据流1将被限制到100×(6/13)=46gbps,数据流2将被限制到100×(7/13)=53gbps。在确定出被限速速率后,线卡板1和线卡板2可以针对自身所转发的报文进行限速。具体的限速可以是通过调整令牌桶的总量的方式实现,比如,将一秒钟所生成的令牌桶的数量调整为限速速率,当然,也可以通过其他的限速方式实现,对此不做限制。这样一来,线卡板1和线卡板2可以将超出限速速率部分的报文缓存到自己的内存中,使线卡板3上的缓存队列中的占用量下降,保证超出的部分不会被集中在线卡板3上,避免多条数据流的拥塞在线卡板3上持续累积而出现丢包的问题。另外,步骤s105、在根据状态表项一条数据流所对应的队列深度比和速率比之后,还包括:s107、若速率比不小于队列深度比,则按照当前的接收速率对数据流进行转发。如果线卡板可以确定速率比大于队列深度比,则可以确定数据流在线卡板上并未出现累积的问题,从而可以按照当前的接收速率继续执行数据流的转发。需要指出的是,上述实施方式中,仅以线卡板1和线卡板2将接收到的数据流1和数据流2通过线卡板3的出端口对外发送为例,在实际应用中,每一块线卡板都可以执行上述步骤s100~s107,即,一块线卡板即可以用于向外发送数据流的线卡板,生成状态表项发送至网络设备中的其他线卡板,也可以用于接收外部传输过来的数据流,并根据其他线卡板发送过来的状态表项对自身所接收到的数据流进行限速。相对应的,本申请提供了一种速率限制装置,应用于网络设备中的线卡板,如图3所示,包括:解析单元,用于接收网络设备内部转发的数据流,统计接收数据流的接收速率,并获取数据流的内部转发信息;获取单元,用于获取数据流所对应的缓存队列的队列状态以及发送数据流出端口的最大速率;生成单元,用于生成状态表项,其中,状态表项包括内部转发信息、队列状态、接收速率和最大速率;发送单元,用于将状态表项发送给网络设备中的其他线卡板,以使其他线卡板根据状态表项对发往线卡板的数据流进行限速。可选的,该装置,还包括:接收单元,用于接收并存储其他线卡板所发送的状态表项,其中,队列状态包括一条数据流所对应的缓存队列的占用量和为缓存队列分配的队列深度;确定单元,用于根据状态表项一条数据流所对应的状态表项,确定队列深度比和速率比,其中,队列深度比为占用量和队列深度的比值,速率比为接收速率和出端口的最大速率的比值,一条数据流由内部转发信息标记;限速单元,用于若速率比不小于队列深度比,则根据最大速率和当前所接收到的数据流的接收速率对数据流的转发进行限速。进一步的,限速单元,用于若速率比小于队列深度比,则按照当前的接收速率对数据流进行转发。可选的,发送单元,包括:广播模块,用于通过广播的方式,将状态表项发送给网络设备中的其他线卡板;或者,组播模块,用于通过组播的方式,将状态表项发送给包含于组播组中的其他线卡板。可选的,内部转发信息,包括:源芯片标识、目的芯片标识和出端口标识。本说明书实施方式中,线卡板获取与数据流相关的内部转发信息,根据内部转发信息统计一条数据流的接收速率以及与该条数据流相关联的缓存队列的队列深度与占用量,生成状态表项,通过将该状态表项发送给网络设备内的其他线卡板,以使其他线卡板通过状态表项中所包含的速率和队列状态确定发送状态表项的线卡板的转发情况,并对其他线卡板发送至该线卡的数据流的速率进行管理,避免了数据流在一块线卡板上的拥塞乃至丢包,提升了网络设备对数据流进行转发的可靠性。应当理解的是,本说明书并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。以上所述仅为本说明书的较佳实施方式而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。当前第1页1 2 3 
技术特征:

1.一种转发限速方法,其特征在于,应用于网络设备中的线卡板,包括:

接收网络设备内部转发的数据流,统计接收所述数据流的接收速率,并获取所述数据流的内部转发信息;

获取所述数据流所对应的缓存队列的队列状态以及发送所述数据流出端口的最大速率;

生成状态表项,其中,所述状态表项包括内部转发信息、所述队列状态、所述接收速率和所述最大速率;

将所述状态表项发送给所述网络设备中的其他线卡板,以使所述其他线卡板根据所述状态表项对发往所述线卡板的数据流进行限速。

2.根据权利要求1所述的方法,其特征在于,还包括:

接收并存储其他线卡板所发送的状态表项,其中,所述队列状态包括一条数据流所对应的缓存队列的占用量和为该缓存队列分配的队列深度;

根据所述状态表项一条数据流所对应的队列深度比和速率比,其中,所述队列深度比为占用量和队列深度的比值,所述速率比为接收速率和出端口的最大速率的比值,所述一条数据流由所述内部转发信息标记;

若所述速率比小于所述队列深度比,则根据所述最大速率和当前所接收到的数据流的接收速率对数据流的转发进行限速。

3.根据权利要求2所述的方法,其特征在于,在根据所述状态表项一条数据流所对应的队列深度比和速率比之后,还包括:

若所述速率比不小于所述队列深度比,则按照当前的接收速率对数据流进行转发。

4.根据权利要求1所述的方法,其特征在于,所述将所述状态表项发送给所述网络设备中的其他线卡板,包括:

通过广播的方式,将所述状态表项发送给所述网络设备中的其他线卡板;或者,

通过组播的方式,将所述状态表项发送给包含于组播组中的其他线卡板。

5.根据权利要求1所述的方法,其特征在于,所述状态表项中包括:源芯片标识、目的芯片标识和端口标识。

6.一种转发限速装置,其特征在于,应用于网络设备中的线卡板,包括:

解析单元,用于接收网络设备内部转发的数据流,统计接收所述数据流的接收速率,并获取所述数据流的内部转发信息;

获取单元,用于获取所述数据流所对应的缓存队列的队列状态以及发送所述数据流出端口的最大速率;

生成单元,用于生成状态表项,其中,所述状态表项包括内部转发信息、所述队列状态、所述接收速率和所述最大速率;

发送单元,用于将所述状态表项发送给所述网络设备中的其他线卡板,以使所述其他线卡板根据所述状态表项对发往所述线卡板的数据流进行限速。

7.根据权利要求6所述的装置,其特征在于,还包括:

接收单元,用于接收并存储其他线卡板所发送的状态表项,其中,所述队列状态包括一条数据流所对应的缓存队列的占用量和为该缓存队列分配的队列深度;

确定单元,用于根据所述状态表项一条数据流所对应的状态表项,确定队列深度比和速率比,其中,所述队列深度比为占用量和队列深度的比值,所述速率比为接收速率和出端口的最大速率的比值,所述一条数据流由所述内部转发信息标记;

限速单元,用于若所述速率比小于所述队列深度比,则根据所述最大速率和当前所接收到的数据流的接收速率对数据流的转发进行限速。

8.根据权利要求7所述的装置,其特征在于,所述限速单元,用于若所述速率比小于所述队列深度比,则按照当前的接收速率对数据流进行转发。

9.根据权利要求6所述的装置,其特征在于,所述发送单元,包括:

广播模块,用于通过广播的方式,将所述状态表项发送给所述网络设备中的其他线卡板;或者,

组播模块,用于通过组播的方式,将所述状态表项发送给包含于组播组中的其他线卡板。

10.根据权利要求6所述的装置,其特征在于,所述状态表项中包括:源芯片标识、目的芯片标识和端口标识。

技术总结
本说明书提供一种转发限速方法及装置,涉及通信技术领域。一种转发限速方法,应用于网络设备中的线卡板,包括:接收网络设备内部转发的数据流,统计接收数据流的接收速率,并获取数据流的内部转发信息;获取数据流所对应的缓存队列的队列状态以及发送数据流出端口的最大速率;生成状态表项,其中,状态表项包括内部转发信息、队列状态、接收速率和最大速率;将状态表项发送给网络设备中的其他线卡板,以使其他线卡板根据状态表项对发往线卡板的数据流进行限速。通过上述方法,可以提升网络设备进行数据流转发的可靠性。

技术研发人员:阮米根
受保护的技术使用者:新华三信息安全技术有限公司
技术研发日:2021.03.31
技术公布日:2021.08.03

转载请注明原文地址:https://doc.8miu.com/read-2385.html

最新回复(0)