交换芯片接收端多优先级业务缓存和调度的方法及装置与流程

专利检索2022-05-11  1


交换芯片接收端多优先级业务缓存和调度的方法及装置
【技术领域】
1.本发明涉及交换芯片领域,特别是涉及一种交换芯片接收端多优先级业务缓存和调度的方法及装置,具体的涉及到交换芯片接收端的流量缓存和调度方面。


背景技术:

2.目前市场上的交换芯片,在接收端的流量缓存做法一般是根据优先级设置相应buffer(缓冲器),将流量根据优先级不同或者端口不同放入不同buffer,配置简单但是不够灵活,容易造成资源浪费;还有部分做法是对包头或者整包做缓存调度,调度时需要较大缓存,或者接收端使用较为复杂的tm调度,调度策略复杂,成本较高。
3.如图1所示,为传统交换芯片接收端流量缓存方式示意图。传统方式中缓存大小≈包处理模块的处理时间(t)*端口速率(rate)*8(以8个优先级为例)。
4.传统交换芯片中,对于接收到的报文,根据其服务等级(cos)或者端口号将流量分配到相应的队列缓存中。如图1所示,例如以太网报文共8个优先级,为cos0-cos7,传统方式根据其cos设置队列缓存0-7,一般来说,会根据优先级不同设置不同大小的队列缓存,例如,为了保证最高优先级cos7,则设置一个较大的队列缓存7,而优先级低的,则配置较少的缓存,通过队列缓存之后根据优先级送入调度器队列,调度器队列再通过配置调度策略将完整报文送入包处理模块。传统方式的优点在于配置简单明了,但是其缺点也比较明显,比如配置不够灵活,资源容易造成浪费等。
5.鉴于此,如何克服现有技术所存在的缺陷,解决现有技术中交换芯片接收端缓存调度资源浪费、配置不灵活、调度策略复杂的问题,是本技术领域待解决的难题。


技术实现要素:

6.针对现有技术的以上缺陷或改进需求,本发明提供一种交换芯片接收端多优先级业务缓存和调度的方法及装置,针对用户配置的业务类型,通过较少的成本和简单的调度策略实现多优先级的缓存和调度。
7.本发明实施例采用如下技术方案:
8.第一方面,本发明提供了一种交换芯片接收端多优先级业务缓存和调度的方法,包括:
9.将数据接收端的业务报文送入共享缓存;
10.通过配置共享缓存中cos的水线实现基本的流量控制;
11.通过链式管理的方式,将业务报文的地址通过链表的方式送入调度器;
12.调度器配置调度策略后通过获取链表地址中的业务报文或者业务报文头送入包处理模块。
13.进一步的,所述将数据接收端的业务报文送入共享缓存具体包括:
14.数据接收端收到来自以太网的业务报文;
15.通过cos映射功能将以太网业务报文中pcp字段映射为交换芯片内部需要处理的
cos;
16.将最高优先级的业务报文送入专享缓存,将其他优先级的业务报文送入共享缓存。
17.进一步的,所述通过cos映射功能将以太网业务报文中pcp字段映射为交换芯片内部需要处理的cos具体包括:
18.对于最高优先级的业务报文,cos映射功能将其pcp字段全部映射为最高优先级的cos;
19.对于正常优先级的业务报文,cos映射功能将其pcp字段映射为和自身pcp字段相同优先级的cos;
20.对于最低优先级的业务报文,cos映射功能将其映射为对应低优先级的cos。
21.进一步的,所述通过配置共享缓存中cos的水线实现基本的流量控制具体包括:
22.对于较高优先级的业务报文设置较高的丢弃水线,以保证高优先级业务报文的优先通过;
23.配置共享缓存的限制水线,该限制水线设置为共享缓存的大小,当总缓存大小超过该限制水线时,产生反压信号,使接收端停止接收业务报文。
24.进一步的,所述通过链式管理的方式,将业务报文的地址通过链表的方式送入调度器具体包括:
25.在共享缓存之后,将业务报文组合的包的地址形成指针链表送入调度器中的不同队列。
26.进一步的,所述调度器的不同队列包括优先级不同的多个调度列队,其中:
27.最高优先级cos的业务报文送入最高优先级的调度队列;
28.正常优先级cos的业务报文送入正常优先级的调度队列;
29.对应低优先级cos的业务报文送入对应低优先级的调度队列。
30.进一步的,pcp字段以及cos等级均划分为0-7级,调度器的调度队列划分为0-3级,其中:
31.cos7的业务报文送入调度队列3;
32.cos2-6的业务报文送入调度队列2;
33.cos1的业务报文送入调度队列1;
34.cos0的业务报文送入调度队列0。
35.进一步的,所述调度器配置调度策略后通过获取链表地址中的业务报文或者业务报文头送入包处理模块具体包括:
36.调度器根据用户配置以及cos,采用严格优先级或者循环调度的方式,通过链表地址取出缓存中的包头或者完整业务报文,送入包处理模块。
37.进一步的,所述业务报文包括四种业务类型:从fpga接收到的业务报文、从cpu接收到的业务报文、从数据端口接收到的业务报文以及从其他流水线接收的业务报文,其中,从fpga接收到的业务报文以及从cpu接收到的业务报文的优先级最高,从数据端口接收到的业务报文的优先级正常,从其他流水线接收到的业务报文的优先级最低。
38.另一方面,本发明提供了一种交换芯片接收端多优先级业务缓存和调度的装置,具体为:包括至少一个处理器和存储器,至少一个处理器和存储器之间通过数据总线连接,
存储器存储能被至少一个处理器执行的指令,指令在被处理器执行后,用于完成第一方面中的交换芯片接收端多优先级业务缓存和调度的方法。
39.与现有技术相比,本发明实施例的有益效果在于:通过配置共享内存中不同优先级的水线和反压,保证流量的优先级缓存,相较于传统独享式缓存,共享缓存在保证流量优先级的前提下节省了成本;通过链式队列管理,灵活对流量进行调度,节省调度器中queue(队列)的深度,配置与用户业务需求的业务数量即可。
40.本发明可以根据用户业务需求,减少缓存个数及空间,只需要配置用户所需的调度队列,可以实现不同业务类型多优先级的缓存及调度。由于共享缓存中的cos水线通过动态配置,因此用户可以根据需求灵活配置,保证其期望的业务得到有效缓存。
【附图说明】
41.为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍。显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
42.图1为本发明背景技术中传统交换芯片接收端流量缓存方式示意图;
43.图2为本发明实施例1提供的一种交换芯片接收端多优先级业务缓存和调度的方法流程图;
44.图3为本发明实施例1提供的步骤100具体流程图;
45.图4为本发明实施例1提供的步骤200具体流程图;
46.图5为本发明实施例2提供以4种业务类型为例的实际应用示意图;
47.图6为本发明实施例3提供的一种交换芯片接收端多优先级业务缓存和调度的系统模块框图;
48.图7为本发明实施例3提供的共享缓存链式队列管理具体实现示意图;
49.图8为本发明实施例4提供的一种交换芯片接收端多优先级业务缓存和调度的装置结构示意图。
【具体实施方式】
50.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
51.本发明是一种特定功能系统的体系结构,因此在具体实施例中主要说明各结构模组的功能逻辑关系,并不对具体软件和硬件实施方式做限定。
52.此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。下面就参考附图和实施例结合来详细说明本发明。
53.实施例1:
54.如图2所示,本发明实施例提供一种交换芯片接收端多优先级业务缓存和调度的方法,具体步骤如下。
55.步骤100:将数据接收端的业务报文送入共享缓存。
56.步骤200:通过配置共享缓存中cos的水线实现基本的流量控制。
57.步骤300:通过链式管理的方式,将业务报文的地址通过链表的方式送入调度器。在该步骤中,不一定需要将完整的业务报文送入调度器,只需要将相应的报文地址(也即业务报文头或包头信息)送进去就可以,然后后续调度器调度时,只需读取链表中地址,获取包头信息,然后根据调度策略决定要不要调度。
58.步骤400:调度器配置调度策略后通过获取链表地址中的业务报文或者业务报文头送入包处理模块。
59.对于上述步骤,本实施例可以先配置各cos对应的水线,相当于是在共享缓存之前做了逻辑,类似于做了几个计数器,通过这个计数器来限定每个cos的buffer大小,且每个cos的水线相加不能超过共享buffer的大小,cos的buffer大小可以通过动态配置来调节。如果其中一个cos对应的水线超了,就丢弃,只要是没有超过水线的,都送入共享缓存中。这些报文存入buffer中是没有优先级的,报文优先级送出是在调度器中来保证的,从buffer中出来的报文会取报文头部,送入相应的调度器,由调度器的调度策略来决定哪个报文先取出来,然后送入后面的包处理模块。
60.通过上述步骤,本发明实施例通过配置共享内存中不同优先级的水线,保证流量的优先级缓存,相较于传统独享式缓存,共享缓存在保证流量优先级的前提下节省了成本;通过链式队列管理,灵活对流量进行调度,节省调度器中queue的深度,配置与用户业务需求的业务数量即可,从而节省资源。
61.具体的,如图3所示,在本优选实施例中,步骤100(将数据接收端的业务报文送入共享缓存)具体包括:
62.步骤101:数据接收端收到来自以太网的业务报文。
63.在该步骤中,一般而言,这些来自以太网的业务报文根据优先度的不同分为不同的优先级,例如,可将业务报文分为四种业务类型:从fpga接收到的业务报文、从cpu接收到的业务报文、从数据端口接收到的业务报文以及从其他流水线接收的业务报文。其中,从fpga接收到的业务报文以及从cpu接收到的业务报文的优先级最高,从数据端口接收到的业务报文的优先级正常,从其他流水线接收到的业务报文的优先级最低。
64.步骤102:通过cos映射功能将以太网业务报文中pcp字段映射为交换芯片内部需要处理的cos。
65.在该步骤中,对于最高优先级的业务报文,cos映射功能将其pcp字段全部映射为最高优先级的cos;对于正常优先级的业务报文,cos映射功能将其pcp字段映射为和自身pcp字段相同优先级的cos;对于最低优先级的业务报文,cos映射功能将其映射为对应低优先级的cos。
66.步骤103:将最高优先级的业务报文送入专享缓存,将其他优先级的业务报文送入共享缓存。
67.在该步骤中,设置了两种缓存方式,也即传统的专享缓存以及本发明实施例设计的共享缓存,对本发明而言,共享缓存的设计是基础,而专享缓存的设计是为了更好的保证高优先级业务的通过。所以在具体设计时,并非一定要存在专享缓存,根据业务需求,如果对某一种业务需求较高且流量较大时,可以为其开辟专享缓存,否则的话,只设置共享缓存也可以满足需求。只设置共享缓存时通过每个优先级设置不同的丢弃水线来配合之后的调
度器实现按优先级先后通过的目的。
68.如图4所示,在本优选实施例中,步骤200(通过配置共享缓存中cos的水线实现基本的流量控制)具体包括:
69.步骤201:对于较高优先级的业务报文设置较高的丢弃水线,以保证高优先级业务报文的优先通过。
70.在本步骤中,较高优先级的业务报文设置较高的丢弃水线,较低优先级的业务报文设置较低的丢弃水线,这样一来就能保证低优先级的业务报文先被丢弃,从而保证高优先级的缓存通过。
71.在本优选实施例中,每个cos都会设置相应的丢弃水线,所谓的丢弃水线可以理解为:将共享缓存根据cos优先级不同分配不同比例的缓存,例如1g的缓存、cos0-2的等级,可以配置cos0的丢弃水线为0.1g,cos1为0.2g,cos2为0.7g,不同的cos配置不同的丢弃水线,高优先级设置较高的丢弃水线,低优先级配置的水线较低,当低优先级的流量达到相应的丢弃水线时,先丢弃低优先级的业务,保证高优先级的不会被丢弃。
72.步骤202:配置共享缓存的限制水线(almost full watermark),该限制水线设置为共享缓存的大小,当总缓存大小超过该限制水线时,表示共享缓存即将溢出,此时产生反压信号,使接收端不论优先级高低,均停止接收业务报文。
73.该步骤通过反压的设计能防止接收的业务报文的总大小超出共享缓存大小,从而保证共享缓存的正常工作。同时,还可以根据业务需求动态调整各cos对应的丢弃水线,这样不会造成资源浪费。
74.在本优选实施例中,步骤300(通过链式管理的方式,将业务报文的地址通过链表的方式送入调度器)具体包括:在共享缓存之后,将业务报文组合的包的地址形成指针链表送入调度器中的不同队列。也即是说,在该步骤中,不一定需要将完整的业务报文送入调度器,只需要将相应的报文地址送进去就可以。
75.在本优选实施例中,上述调度器的不同队列包括优先级不同的多个调度列队,其中:最高优先级cos的业务报文送入最高优先级的调度队列;正常优先级cos的业务报文送入正常优先级的调度队列;对应低优先级cos的业务报文送入对应低优先级的调度队列。
76.例如:将pcp字段以及cos等级均划分为0-7级,调度器的调度队列划分为0-3级,其中:cos7的业务报文送入调度队列3;cos2-6的业务报文送入调度队列2;cos1的业务报文送入调度队列1;cos0的业务报文送入调度队列0。上述cos7的业务报文对应所述的最高优先级cos的业务报文,cos2-6的业务报文对应所述的正常优先级cos的业务报文,cos1、cos0的业务报文对应所述的低优先级cos的业务报文。
77.在本优选实施例中,步骤400(调度器配置调度策略后通过获取链表地址中的业务报文或者业务报文头送入包处理模块)具体包括:调度器根据用户配置以及cos,采用严格优先级(sp)或者循环调度(rr)的方式,通过链表地址取出缓存中的包头或者完整业务报文,送入包处理模块。由于使用的是链式管理的方式,因此,相对于传统的整包处理或者包头处理,可以很大程度上节约调度队列的深度,从而节省资源。参考图6,调度器输出地址给到共享缓存的输出端,共享缓存的输出端再将链表地址(也可以是报文内容或者包头)给到包处理模块。
78.综合本实施例上述描述可知,与现有技术相比,本发明通过配置共享内存中不同
优先级的水线和反压,保证流量的优先级缓存,相较于传统独享式缓存,共享缓存在保证流量优先级的前提下节省了成本;通过链式队列管理,灵活对流量进行调度,节省调度器中queue的深度,配置与用户业务需求的业务数量即可。
79.实施例2:
80.基于实施例1提供的一种交换芯片接收端多优先级业务缓存和调度的方法,本实施例2通过一个实际应用中的例子来对本发明技术方案做进一步说明。
81.在实际应用中,以图5为例,用户共有4种业务类型,这4种业务类型需要的优先级不同,因此在调度器中设计了4个队列,分别为expedited,assured,best effort以及bulk,4个队列对应4种优先级,expedited优先级最高,其余三个队列依次降低。根据以太网协议,一般以太网报文正常分为8个优先级,因此需要将8个优先级最后以4种优先级进行缓存调度。首先,这4种业务类型包括从fpga和cpu接收到的报文,这两种报文优先级最高,且业务流量较大;其次,从数据端口,即mac0-10进来的报文,需要保持其优先级正常调度;最后,从其他流水线接收的报文,即图4中的traffic from module0和traffic from module1,这两种业务报文优先级最低。
82.在报文接收端,通常mac具有cos映射功能,将以太网报文中pcp字段映射为交换芯片内部处理所需要的cos,例如,案例中从fpga和cpu接收到的业务报文用户设置为最高优先级,且报文流量较大,因此将这两种报文的pcp 0-7全部映射为cos7;而从mac0-10收到的业务报文需保持其优先级正常调度,所以mac0-10的pcp级别映射成cos后保持不变;最后,traffic from module0和traffic from module1的业务报文优先级最低,分别映射为cos0和cos1。
83.在本实施例中,对于高优先级的两种业务类型,采用了传统方式,设置了专享缓存(pool0和pool1),而其他三种业务报文,采用共享缓存(pool2)的方式,设置了8个cos水线,保证了这三种业务按高优先级先后顺序通过,从而保证了用户的需求。
84.调度器的做法如前面所说,根据用户需求设计了4个调度队列,分别对应4种业务类型,将pool0,pool1以及pool2中最高优先级cos7的业务报文送入调度队列3,pool2中的cos2-6送入调度队列2,poo2中的cos1和cos0分别送入调度队列1和0;调度队列根据用户配置,可以选择sp/rr的方式将报文调度出去,送往包处理模块。
85.从pool出来的业务使用链表的方式,将报文地址送入调度器中,调度之后通过链表地址取出缓存中的包头或者完整报文,送入包处理模块。由于使用的是链式管理的方式,因此,相对于传统的整包处理或者包头处理,可以很大程度上节约调度队列的深度,从而节省资源。
86.通过上述实施例可以看出,本专利可以根据用户业务需求,减少缓存个数及空间,只需要配置用户所需的调度队列,可以实现不同业务类型多优先级的缓存及调度。并且由于共享缓存中的cos水线通过动态配置,因此用户可以根据需求灵活配置,保证其期望的业务得到有效缓存。
87.实施例3:
88.基于实施例1提供的交换芯片接收端多优先级业务缓存和调度的方法,本实施例3提供与实施例1对应的一种交换芯片接收端多优先级业务缓存和调度的系统,如图6所示,本实施例的系统包括数据接收端、共享缓存模块、调度器以及包处理模块。本发明缓存大小
≈包处理模块的处理时间(t)*端口速率(rate)。与现有技术中传统方式相比,本发明的缓存大小会明显小于传统方式。
89.具体的,如图7所示,本实施例中共享缓存模块用于获取数据接收端所接收的以太网业务报文,并通过配置共享缓存中cos的水线实现基本的流量控制,最后通过链式管理的方式,将业务报文通过链表的方式送入调度器。
90.其中,以太网业务报文在数据接收端会先行进行cos映射以划分出各个业务报文的cos等级,然后才会按照cos等级将业务报文送入共享缓存模块。另外,共享缓存模块中还可以划分出专享缓存模块,该专享缓存模块用于保证最高优先级的业务报文通过。本实施例上述功能的详细过程与实施例1中步骤100的扩展一致,在此便不再赘述。
91.然后,共享缓存模块对于较高优先级的业务报文设置较高的丢弃水线,以8个优先级为例,将cos7设置较高丢弃水线,保证低优先级的业务报文先被丢弃,从而保证高优先级的缓存优先通过,同时,还配置共享缓存的限制水线,该限制水线设置为共享缓存的大小,当总缓存大小超过该限制水线时,产生反压信号,使接收端停止接收业务报文。本实施例上述功能的详细过程与实施例1中步骤200的扩展一致,在此便不再赘述。
92.最后,在共享缓存之后,将业务报文组合的包的地址形成指针链表送入调度器中的不同队列。本实施例上述功能的详细过程与实施例1中步骤300的扩展一致,在此便不再赘述。
93.本实施例中调度器用于配置调度策略后通过获取链表地址中的业务报文或者业务报文头送入包处理模块。具体的,调度器根据用户配置以及cos,采用严格优先级(sp)或者循环调度(rr)的方式,通过链表地址取出缓存中的包头或者完整业务报文,送入包处理模块。本实施例上述功能的详细过程与实施例1中步骤400的扩展一致,在此便不再赘述。
94.综上所述,本实施例通过共享缓存模块的设置,以及共享缓存模块与调度器之间链式管理的设置,起到可以根据用户业务需求减少缓存个数及空间的有益效果,并且由于共享缓存中的cos水线的动态配置,可以使客户根据需求灵活配置,保证其期望的业务得到有效缓存。本实施例数据接收端、共享缓存模块、调度器以及包处理模块之间协同处理的流程与步骤详见实施例1,在此不再赘述。
95.实施例4:
96.在上述实施例1至实施例3提供的交换芯片接收端多优先级业务缓存和调度的方法与系统的基础上,本发明还提供了一种可用于实现上述方法及系统的交换芯片接收端多优先级业务缓存和调度的装置,如图8所示,是本发明实施例的装置架构示意图。本实施例的交换芯片接收端多优先级业务缓存和调度的装置包括一个或多个处理器21以及存储器22。其中,图8中以一个处理器21为例。
97.处理器21和存储器22可以通过总线或者其他方式连接,图8中以通过总线连接为例。
98.存储器22作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如实施例1至实施例3中的交换芯片接收端多优先级业务缓存和调度的方法、系统。处理器21通过运行存储在存储器22中的非易失性软件程序、指令以及模块,从而执行交换芯片接收端多优先级业务缓存和调度的装置的各种功能应用以及数据处理,即实现实施例1至实施例2的交换芯片接收端多优先级业务缓存和调
度的方法及系统。
99.存储器22可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器22可选包括相对于处理器21远程设置的存储器,这些远程存储器可以通过网络连接至处理器21。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
100.程序指令/模块存储在存储器22中,当被一个或者多个处理器21执行时,执行上述实施例1至实施例3中的交换芯片接收端多优先级业务缓存和调度的方法、系统,例如,执行以上描述的图1至图7所示的各个步骤、模块功能。
101.本领域普通技术人员可以理解实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(readonlymemory,简写为:rom)、随机存取存储器(randomaccessmemory,简写为:ram)、磁盘或光盘等。
102.以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
转载请注明原文地址:https://win.8miu.com/read-950152.html

最新回复(0)