具体实施方式
本发明实施例提供了一种交换网报文交换方案,其基本思想为:为交换装置中的每个端口配置独立的输出缓存;根据交换装置可插接的线卡类型,分别将每个端口的输出缓存划分为对应于各类线卡的相互独立的输出缓存队列;所述独立的含义为资源互不共享;交换装置将源线卡和目的线卡的线卡类型相同的报文,交换至目的线卡所插接端口的与目的线卡类型对应的输出缓存队列。
以交换装置可插接的线卡类型为路由线卡和以太线卡为例,本发明实施例的交换网报文交换方案在为交换装置中的每个端口配置独立的输出缓存后,分别将每个端口的输出缓存划分为路由输出缓存队列和以太输出缓存队列;将源线卡和目的线卡均为路由线卡的报文交换至目的线卡所插接端口的路由输出缓存队列,将源线卡和目的线卡均为以太线卡的报文交换至目的线卡所插接端口的以太输出缓存队列。其中,源线卡和目的线卡均为路由线卡的报文包括路由数据报文,还包括调度信息报文。
可见,本发明实施例通过对各端口输出缓存的划分,令每个端口之间不共享缓存,避免端口之间对输出缓存的相互挤占;同时每个输出缓存划分为相互独立的以太输出缓存队列和路由输出缓存队列,以太线卡之间交换的报 文只能占用相应端口的以太输出缓存队列,路由线卡之间交换的报文只能占用相应端口的路由输出缓存队列,避免了通过同一端口输出的不同类型报文之间对输出缓存的相互挤占,那么不仅实现了在同一交换设备中划分出两个交换平面,而且由于缓存隔离,路由交换平面不会受到以太交换平面中不受控报文的影响,因此路由交换平面不会出现丢包,从真正意义上实现了同一交换设备中的以太交换平面和路由交换平面。
为了实现两个交换平面的互通,该方法进一步包括:交换装置将源线卡为路由线卡但目的线卡为以太线卡的报文,交换至目的线卡所插接端口的以太输出缓存队列;和/或,将源线卡为以太线卡但目的线卡为路由线卡的报文,交换至目的线卡所插接端口的以太输出缓存队列。此时,路由线卡所插接的端口可能会出现以太输出缓存队列和路由输出缓存队列均有报文的情况,为了保证路由交换平面不丢包,对于每个端口,交换装置先发送路由输出缓存队列中的报文,待发送完毕,再发送以太输出缓存队列中的报文,从而保证路由输出缓存队列中有足够的缓存空间提供给后续报文。
可见,交换装置将源以太线卡的报文通过以太输出缓存队列输出到目的路由线卡,将源路由线卡的报文通过以太输出缓存队列输出到目的以太线卡,实现了路由交换平面和以太网交换平面的互通。
此外,由于路由交换平面有流控调度,因此路由输出缓存队列中的数据包数量是受到流控调度的,基本不会产生拥塞。即使发向同一个路由线卡的以太报文过多,也只会影响该路由线卡所插接端口的以太输出缓存队列溢出,而不会影响到路由输出缓存队列,因此以太交换平面上的拥塞不会扩散到路由交换平面,从而保证路由交换平面不丢包。
以下分2个实施例对以下情况进行描述:路由线卡发送报文到路由线卡,以太线卡发送报文到以太线卡,路由线卡发送报文到以太线卡,以及以太线卡发送报文到路由线卡。在现有技术中交换装置多由以太网包交换芯片实现,本发明实施例亦可如此,以下将采用以太网包交换芯片作为交换装置,并简称为包交换芯片。
实施例一
本实施例中,对图4示出的路由线卡发送报文到路由线卡、路由线卡发送报文到以太线卡的过程进行描述。图4中的LC0和LC1都是路由线卡,LC2是以太线卡。
第一,交换前,对包交换芯片中的内部缓存按如下规则进行分配。
1)输出方向缓存分配:
a1、将包交换芯片总缓存中输出缓存部分分配给各出端口,分配原则可以采用平均分配。各出端口使用分配给自己的缓存。为了便于理解,以下将从线卡接收报文的端口称为入端口,将向线卡输出报文的端口称为出端口,本领域技术人员均能明白一个端口可以同时为出端口和入端口。
b1、每个出端口的输出缓存被分为两个部分,分别为以太输出缓存队列和路由输出缓存队列;较佳地,路由输出缓存队列进一步分别两个部分,分别为路由数据输出缓存队列和路由调度信息输出缓存队列。以上为每个出端口划分出的三个缓存队列之间相互独立,不共享缓存空间。
一个端口的三个输出缓存队列在输出调度时,有优先级之分。其中,路由调度信息输出缓存队列优先级最高,路由数据输出缓存队列优先级次之,以太输出缓存队列优先级最低。包交换芯片输出调度时,按照优先级调度,先调度发送高优先级缓存队列中的报文,高优先级缓存队列没有报文才调度发送较低优先级缓存队列中的报文,依次类推。
一个端口的三个输出缓存队列的具体缓存空间大小可以根据实际需要划分。较佳地,将路由数据输出缓存队列划分得大些,以便为路由数据提供较大的缓存空间。
通过上述输出方向缓存的分配,在同一个包交换芯片中实现了平面划分和平面缓存隔离,从而实现了数据流隔离和拥塞隔离。
2)输入方向缓存分配:
输入方向缓存用于缓存入端口接收到的待交换报文,由于包交换芯片内部输入缓存到输出缓存之间的带宽可以看作无限大,因此可以在很短的时间 内完成报文从输入缓存到输出缓存之间的交换。因此,输入缓存处通常不会产生溢出,输入缓存可以采用现有缓存结构,即不划分。但是为了进一步确保路由交换平面不丢包,本实施例按照输出方向缓存分配方式,对输入方向缓存进行分配,具体为:
a2、将包交换芯片总缓存中输入缓存部分分配给各入端口,分配原则可以采用平均分配。各入端口使用分配给自己的缓存。
b2、每个入端口的缓存被分为两个部分,分别为以太输入缓存队列和路由输入缓存队列;较佳地,路由输入缓存队列进一步分为两个部分,分别为路由数据输入缓存队列和路由调度信息输入缓存队列。以上为每个入端口划分出的三个缓存队列之间相互独立,不共享缓存空间。
一个端口的三个输入缓存队列可不设定优先级,或参照输出缓存设置优先级的方式设置优先级。三个输入缓存队列的大小可根据实际需要划分。
需要说明的是,通过以上缓存划分,包交换芯片的每一个端口可以接以太线卡或路由线卡,但同时只能接一种线卡。无论接哪种线卡,上述缓存分配都客观存在。例如,某端口接以太网线卡时,该端口可能不需要路由输出缓存队列,但是该端口的缓存仍被分为三份。
第二,为了配合包交换芯片的交换,还需要对路由线卡上的发送缓存和接收缓存进行设置。其中,发送缓存用于缓存向包交换芯片发送的报文;接收缓存用于缓存从包交换芯片接收的报文。具体来说,对路由线卡中的发送缓存和接收缓存按照如下规则进行分配:
1)发送缓存分配:
将路由线卡(例如图4中LC0)中发送缓存分为路由发送缓存队列和以太发送缓存队列;路由发送缓存队列用于缓存向包交换芯片发送的路由数据报文,该路由数据报文不包括调度信息报文,因为调度信息由路由线卡中的分布式调度器处理,在生成后随时发送。以太发送缓存队列用于缓存向包交换芯片发送的以太报文。对发送缓存进行划分的目的是:分布式调度器能够根据调度信息,对路由发送缓存队列中的路由数据报文施加调度。
路由发送缓存队列和以太发送缓存队列之间可以按照设定的队列间调度策略进行调度,例如,公平调度(RR)策略,权重调度(WRR)策略等。当然,也可以按照路由发送缓存队列优先原则,先发送完路由发送缓存队列中的报文,再发送以太发送缓存队列中的报文。
2)接收缓存分配:
路由交换平面不允许丢包是因为包交换芯片不能进行流检测,因此无法通过监测丢包,从而根据丢包情况进行丢包恢复等操作。而路由线卡可以进行流监测,因此在包交换芯片之外发生的丢包是可以接受的。有鉴于此,路由线卡的接收缓存可以采用现有缓存结构,即不划分。较佳地,本实施例为了在路由线卡中也不发生路由数据报文的丢包,将路由线卡(例如图4中LC1)中的接收缓存分为路由接收缓存队列和以太接收缓存队列;
其中,路由接收缓存队列,用于缓存接收自包交换芯片的路由数据报文,该路由数据报文不包括调度信息,调度信息由路由线卡中的分布式调度器处理。以太接收缓存队列,用于缓存接收自包交换芯片的以太报文。
路由接收缓存队列和以太接收缓存队列之间可以按照设定的队列间调度策略进行调度。较佳地,按照路由接收缓存队列优先原则,先发送完路由接收缓存队列中的报文再发送以太接收缓存队列中的报文。
最后,以太线卡(例如图4中LC2)保持现有缓存结构,不对接收缓存和发送缓存进行队列划分。
下面对本实施例中LC0的处理流程进行描述。图5示出了本发明实施例一中路由线卡LC0向包交换芯片发送报文的处理流程图,如图5所示,该方法包括以下步骤:
步骤501:LC0插入包交换芯片后,从包交换芯片获得转发表。
本步骤中,LC0插入包交换芯片后,与包交换芯片进行信息交换,告知包交换芯片自身线卡类型和相关信息,从包交换芯片获取转发表。该转发表包括报文的目的IP地址、目的线卡、目的线卡类型和交换平面标记之间的对应关系。其中,目的线卡的类型包括以太线卡和路由线卡。交换平面标记 表示出不同类型目的线卡的报文在包交换芯片中应该进入的交换平面,交换平面标记包括以太平面标记和路由平面标记。
实际上,LC1和LC2也在插入包交换芯片后获得转发表。
步骤502:LC0接收待交换报文,查找转发表,确定所接收待交换报文对应的目的线卡类型和交换平面标记,在待交换报文中加入交换平面标记,将携带交换平面标记的待交换报文封装为符合交换网协议的交换网报文,缓存到与目的线卡所插接端口中与目的线卡类型对应的发送缓存队列中。
参见图4,假设LC0接收到来自外部的待交换报文A后,以待交换报文A的IP地址为索引,查找交换表,查找到待交换报文A对应的目的线卡为LC1,其线卡类型为路由线卡,且交换平面标记为2,表示该报文应进入路由交换平面。此时LC0在待交换报文A中加入标记2,该标记2可携带在待交换报文A的交换网包头中;然后将携带标记2的待交换报文A缓存到LC0的路由发送缓存队列中。其中,该交换网包头是在报文进入交换网之前,在IP头之外加入的符合交换网端口所支持协议的交换网包头。
仍参见图4,如果待交换报文B对应的目的线卡为LC2,其线卡类型为以太线卡,且交换平面标记为3,表示该报文应进入以太交换平面。此时LC0在待交换报文B中加入标记3,该标记3可携带在待交换报文B的交换网包头中;然后将携带标记3的待交换报文B缓存到LC0的以太发送缓存队列中。
在报文中加入标记是为了在路由线卡和包交换芯片中区分路由报文和以太报文,从而将其缓存到相应缓存队列中。本发明实施例中所定义的路由报文是指在路由交换平面接受交换处理的报文,以太报文是指在以太交换平面接受交换处理的报文。在实际中,有很多其他方式实现报文中加入相应标记的操作。例如,
其他方式一,路由线卡插入包交换芯片后,获得转发表、以及目的线卡类型与交换平面标记之间的第二对应关系,转发表中包括IP地址与目的线卡及其线卡类型的第一对应关系。那么在查表后,可以根据第一对应关系查 找到待转发报文的目的线卡及其线卡类型,再根据第二对应关系查找到目的线卡类型对应的交换平面标记,作为加入待交换平面的交换平面标记。
其他方式二,在路由线卡中配置上述第二对应关系,在路由线卡插入包交换芯片后获得转发表,转发表包括第一对应关系。那么在查表时,仍可以查找到加入待交换平面的交换平面标记。
实际上采用哪种交换平面标记确定方式并不是重点,只要能够实现向相应报文打入相应标记即可。在实际中,也可以由包交换芯片根据源线卡和目的线卡的地址获取其线卡类型,再根据交换原则进行交换。
步骤503:LC0根据设定的队列间调度策略,对路由发送缓存队列和以太发送缓存队列进行调度,将调度出的报文发送到包交换芯片中。
队列间调度策略为RR调度策略、WRR调度策略或路由发送缓存队列优先的调度策略。其中,
RR调度策略为公平调度,以1∶1的调度比例调度两个队列;
WRR调度策略为权重调度,以设定的调度比例,例如1∶9,调度以太发送缓存队列和路由发送缓存队列;
路由发送缓存队列优先的调度策略,优先调度路由发送缓存队列,当路由发送缓存队列中没有报文时,再调度以太发送缓存队列。
采用队列间调度策略,当调度到以太发送缓存队列时,将以太发送缓存队列中的待发送报文发送给包交换芯片;当调度到路由发送缓存队列时,根据分布式调度器维护的路由交换平面的调度信息实施调度操作。根据调度信息实施调度为现有操作,具体可以为:LC0的分布式调度器根据接收自LC1的调度信息,确定为自身分配的向LC1发送数据包的流量,将流量换算为令牌数,根据令牌数判断是否允许发送路由发送缓存队列中的当前报文。
需要说明的是,在对路由发送缓存队列和以太发送缓存队列进行调度的过程中,如果LC0的分布式调度器生成了调度信息,则立即对调度信息进行封装和发送,不受以上队列间调度影响。较佳地,封装时,在调度信息报文中加入高优先级路由平面标记,从而与路由数据报文相区分。相应的,路 由数据报文中的路由平面标记为低优先级路由平面标记。
至此,本流程结束。
图6为本发明实施例一中包交换芯片的处理流程图。该处理流程针对输入缓存分为以太输入缓存队列和路由输入缓存队列的情况进行描述。如图6所示,该方法包括以下步骤:
步骤601:包交换芯片的某入端口,例如端口0,接收来自LC0的报文,根据所接收报文中的交换平面标记,将携带路由平面标记的报文缓存到端口0路由输入缓存队列中,将携带以太平面标记的报文缓存到端口0以太输入缓存队列中。
如前所述,路由输入缓存队列具体包括路由数据输入缓存队列和路由调度信息输入缓存队列。因此,在本步骤中,还将接收自LC0的携带高优先级路由平面标记的调度信息报文,缓存到端口0路由输入缓存队列的路由调度信息输入缓存队列中。
步骤602:将各入端口输入缓存队列中的报文交换至相应出端口的输出缓存队列中。交换原则为:将以太输入缓存队列中的报文交换至相应出端口的以太输出缓存队列中;将路由数据缓存队列中的路由数据报文交换至相应出端口的路由数据输出缓存队列中;将路由调度信息缓存队列中的调度信息交换至相应出端口的路由调度信息输出缓存队列中。从该交换原则可以看出,以太交换平面和路由交换平面的报文在包交换芯片中不互通,从而保证了路由交换不丢包。
举个例子,参见图4,端口0以太输入缓存队列中的报文经交换处理,缓存到端口2以太输出缓存队列中,端口0路由输入缓存队列中的调度信息报文和路由数据报文经交换处理,缓存到端口1路由输出缓存队列中。
在实际中,由于包交换芯片中入端口到出端口之间的带宽可以看作无限大,因此是否对以太输入缓存和路由输入缓存设置优先级,效果不是很明显。因此,可以采用前述队列间调度策略中的任意一种对入端口对应2个队列进行调度。采用路由缓存输入队列优先原则时,进一步优先调度路由调度信息 输入缓存队列,次之调度路由数据输入缓存队列,最后调度以太输入缓存队列。
步骤603:包交换芯片的出端口,按照路由输出缓存队列优先的原则,输出路由输出缓存队列中的报文,当路由输出缓存队列的报文输出完,再输出以太输出缓存队列中的报文。
在输出路由输出缓存队列中的报文时,进一步按照路由调度信息输出缓存队列优先的原则,输出路由调度信息输出缓存队列中的调度信息报文,当调度信息报文输出完,再输出路由数据包输出缓存队列中的路由数据报文。
本步骤中,对于端口2来说,由于其接入的是以太线卡,因此端口2路由输出缓存队列中一直没有报文,会一直输出以太输出缓存队列中的报文。
至此,本流程结束。
在实际中,如果入端口对应的输入缓存不划分队列,则将所有接收的以太报文、路由数据报文和调度信息报文缓存到同一队列中,然后在交换时,根据报文中的交换平面标记,将报文交换到相应出端口中与交换平面标记对应的输出缓存队列中。
下面描述路由线卡LC1和以太线卡LC2对来自包交换芯片报文的处理过程。
如图4所示,LC1具有以太接收缓存队列和路由接收缓存队列,LC1接收到来自包交换芯片的报文后,根据报文中携带的交换平面标记,将携带以太平面标记的报文缓存到以太接收缓存队列中,将携带低优先级路由平面标记的报文缓存到路由接收缓存队列中,将携带高优先级路由平面标记的报文发送给分布式调度器处理。然后,LC1按照如前所述队列间调度策略中的一种对以太接收缓存队列和路由接收缓存队列进行调度,将调度出的报文封装为普通IP包,发送到外部。在封装前,还可以对以太报文进行相应处理,使其符合路由交换要求。
如果不对LC1的接收缓存进行队列划分,则将所接收的除调度信息以外的报文缓存到同一个接收缓存队列中,然后按顺序封装并发送出去。
如图4所示,LC2只具有一个接收缓存队列,LC2接收到来自包交换芯片的报文后,将其缓存到接收缓存队列中。然后,将接收缓存队列中的报文封装为普通IP包,发送到外部。图4中,LC2接收的报文为来自路由线卡的报文,如果需要对该报文进行相应处理使其符合以太交换要求,则该处理操作在路由线卡LC0完成。总之,由于路由线卡的功能设计相对灵活,因此在源线卡和目的线卡类型不一致的情况下,如果需要进行以太报文或路由报文之间的转换,则转换操作由路由线卡完成。
本实施例中,LC0按照RR调度策略、WRR调度策略或路由发送缓存队列优先调度策略对以太发送缓存队列和路由发送缓存队列进行调度。LC0的调度策略会影响到从端口1输出的路由报文和以太报文所占用的输出带宽。
例如,忽略调度信息所占用的带宽,采用RR调度策略时,作为出端口的端口1输出路由报文和以太报文所占用的输出带宽为1∶1。假设端口1分配给LC0的出口带宽为10G,端口0的入口带宽为10G。由于LC0按照1∶1的调度次数比例调度两个队列,因此最多有5G的路由报文通过端口1输出,端口1分配给LC0的10G输出带宽只有5G被占用,另外5G被浪费了。同时,允许有5G的以太报文通过端口2输出,但当以太报文很少时,其实际所需带宽很小,例如为1G,那么端口0中有4G入口带宽被浪费了,导致交换效率降低。
采用WRR调度策略时,端口1输出路由报文和以太报文所占用的输出带宽与LC0中以太发送缓存队列和路由发送缓存队列的权重有关。权重设置不合理,也会出现上述带宽浪费,交换效率减低的问题。
采用路由发送缓存队列优先调度策略时,LC0会按照分配的10G发送路由报文,当没有路由报文时,才发送以太报文。在包交换芯片的出端口处,也是按照优先发送路由报文原则进行数据发送的,那么就会出现这样一种情况:以太报文始终得不到调度,出现严重丢包。
为了避免上述因LC0对以太输出缓存队列和路由输出缓存队列的调度 策略不够合理带来的种种缺陷,本发明实施例采用如下步骤确定调度策略:
步骤1、预先配置调度以太输出缓存队列和路由输出缓存队列的初始调度比例,作为源线卡LC0的队列间调度策略;例如,配置初始调度比例为2∶8;
步骤2、在目的线卡侧,即LC1和LC2侧,对所接收的路由报文和/或以太报文进行流量监测,将获得的来自不同源线卡的路由报文流量信息和/或以太报文流量信息,发送给相应源线卡。由于路由线卡需要依据流量信息进行调度策略调整,因此通常只需发送给路由线卡。其中,以太报文流量中可以不包括调度信息报文的流量。在本实施例中,路由线卡LC1统计路由报文流量信息和以太报文流量信息,以太线卡LC2只需要统计以太报文流量信息。当然,如果包交换芯片有足够处理能力承担流量监测任务,本步骤2的流量监测任务可由包交换芯片通过监测出端口流量完成。
步骤3、LC0根据接收到的路由报文流量信息和以太报文流量信息,调整当前调度比例。例如,在判定以太报文流量小于第一阈值时,例如小于1G时,降低当前调度比例,令路由交换平面能够利用空闲带宽;在路由报文流量小于第二阈值时,例如小于5G时,提高当前调度比例,令以太交换平面能够利用空闲带宽。再例如,在判定以太报文流量与总流量之比小于第三阈值时,例如1/20,表明以太报文流量很小,降低当前调度比例;在判定路由报文流量与总流量之比小于第四阈值时,例如5/10,表明路由报文流量很小,提高当前调度比例。又例如,在判定以太报文流量与路由报文流量之比小于第五阈值,例如0.1/8,且路由报文流量已经达到允许的最大值,表明路由报文需要更大的流量,而以太报文只需要很小流量,此时,降低当前调度比例;在判定以太报文流量与路由报文流量之比大于第六阈值,例如2/3,且以太报文流量已经达到允许的最大值,此时,提高前调度比例。
步骤4、在调整调度比例之后,可以在超过预设时间后,将调度比例恢复为初始调度比例。
从本实施例的描述可以看出,如果报文的源线卡和目的线卡均为路由线 卡,则该报文不允许丢包,因此该报文走路由交换平面;如果报文的源线卡为路由线卡,而目的线卡为以太线卡,则说明该报文允许丢失,为了使其不影响路由交换平面的交换过程,该报文走以太交换平面。本实施例不仅实现了以太交换平面和路由交换平面的隔离,而且提供了路由交换平面向以太交换平面发送报文的实现方式,从而在同一设备上实现了路由交换平面和以太交换平面的融合。
实施例二
本实施例中,对图7示出的以太线卡发送报文到路由线卡、以太线卡发送报文到以太线卡的过程进行描述。与实施例一相同,本实施例中目的线卡仍为路由线卡LC1和以太线卡LC2,不同之处在于,本实施例的源线卡为以太线卡LC3。
首先,在交换之前,对包交换芯片中的芯片内部缓存、路由线卡LC1的接收缓存队列进行分配。分配方式与实施例一中的相应分配方式相同。不对以太线卡LC2的接收缓存和LC3的发送缓存进行队列划分。
图8示出了本发明实施例二中LC3向包交换芯片发送报文的处理流程图。如图8所示,该方法包括以下步骤:
步骤801:LC3插入包交换芯片后,从包交换芯片获得以太平面标记。
步骤802:LC3接收待交换报文,在待交换报文中加入以太平面标记。携带该以太平面标记的报文将被包交换芯片识别为在以太交换平面交换。
步骤803:LC3将携带以太平面标记的待交换报文封装为符合交换网协议的报文,缓存到发送缓存队列中。
步骤804:依次将发送缓存队列中的报文发送到包交换芯片中。
至此,本流程结束。
本实施例二中包交换芯片的处理流程参见图9,具体来说包括以下步骤:
步骤901、包交换芯片的端口0根据所接收报文中携带的交换平面标记,将携带以太平面标记的报文缓存到端口0以太输入缓存队列中。
步骤902、将端口0输入以太缓存队列中的报文交换到目的线卡所插接 端口的以太输出缓存队列中。
本实施例中,将目的线卡为LC1的报文交换至端口1以太输出缓存队列中,将目的线卡为LC2的报文交换至端口2以太输出缓存队列中。
步骤903、包交换芯片的各出端口,按照路由输出缓存队列优先的原则,输出路由输出缓存队列中的报文,当路由输出缓存队列的报文输出完,再输出以太输出缓存队列中的报文。
至此,完成了包交换芯片的交换。
LC1和LC2对来自包交换芯片报文的处理与实施例一相同。
以上两个实施例中输入缓存队列可以是实际缓存队列,也可以是虚拟缓存队列。当为虚拟缓存队列时,虚拟缓存队列由计数器和控制器组成,利用计数器和控制器可以管理输入缓存队列的缓存大小。例如,当入端口的输入报文占用的缓存超过了计数器所允许的最大计数值时,控制器将后续包丢弃。虚拟缓存队列的实现为已知技术手段,这里不详细描述。
采用本发明实施例的交换方法,可以解决图3示出的现有技术问题,仍参见图3,LC1和LC2分别向LC0发送9G和10G的报文,10G路由报文进入路由交换平面并缓存到端口1路由发送缓存队列,9G以太报文进入以太交换平面并缓存入端口1以太发送缓存队列。端口1优先发送路由发送缓存队列中的报文,那么LC1发送的报文流将占用10G出口带宽;待发送完毕,端口1发送以太发送缓存队列中的报文,那么LC2此时才占用出口带宽。如果发送路由发送缓存队列中的报文期间,不断有以太报文进入以太交换平面,以太交换平面缓存溢出,但是该溢出并不影响路由交换平面交换过程。可见,本发明实施例的报文交换方法可以解决现有技术中的问题。
为了实现本发明的交换网报文交换方法,本发明实施例还提供了一种交换网报文交换系统。图10为本发明实施例中交换网报文交换系统的结构示意图。如图10所示,该系统包括交换装置31、至少一个路由线卡32和至少一个以太线卡33。其中,交换装置31如果采用专用集成电路实现,就称为包交换芯片31。路由线卡32和包交换芯片31之间交互以太报文和路由 报文,路由报文包括数据和调度信息;以太线卡33和包交换芯片31之间交互以太报文。图10中包交换芯片31与线卡之间的单箭头实线表示数据报文,双箭头虚线表示调度信息。
图11示出了图10中包交换芯片31的结构示意图,如图11所示,该包交换芯片31包括包交换单元311和多个端口单元312;其中,
各端口单元312被配置为具有独立的输出缓存,每个端口单元312包括输出缓存,该输出缓存被划分为相互独立的以太输出缓存队列1101和路由输出缓存队列1102。一个端口单元312可以做入端口和/或出端口。各端口单元312中以太输出缓存队列1101组成了以太交换平面,路由输出缓存队列1102组成了路由交换平面。为了显示清楚,图11中只示出了一个端口单元312,即端口单元4作为出端口时的具体结构,本领域技术人员可以明白每个端口单元312作为出端口时其结构均相同。
包交换单元311,用于对从入端口接收的来自外部的报文进行交换处理,将源线卡和目的线卡均为以太线卡的报文,放入目的线卡所插接端口的以太输出缓存队列1101;将源线卡和目的线卡均为路由线卡的报文,放入目的线卡所插接端口的路由输出缓存队列1102。从而实现了以太线卡之间的报文交换和路由线卡之间的交换,而且两交换平面具有相互隔离的输出缓存队列,因此如果交换过程中发生了丢包,也不会影响到另一交换平面,保证路由交换平面在调度信息的调度下不丢包,以太交换平面在无调度的情况下保证交换效率。
为了实现两交换平面之间的互通,包交换单元311进一步用于,将源线卡为路由线卡但目的线卡为以太线卡的报文,交换至目的线卡所插接端口单元312的以太输出缓存队列1101;和/或,将目的线卡为路由线卡但源线卡为以太线卡的报文,交换至目的线卡所插接端口单元312的以太输出缓存队列1101。
同时,端口单元312进一步包括输出调度模块1103,用于对以太输出缓存队列1101和路由输出缓存队列1102中的报文发送进行调度,在其调度 下,优先发送所在端口单元312中路由输出缓存队列1102中的报文,待发送完毕,再发送以太输出缓存队列1101中的报文。
为了优先发送路由输出缓存队列1102中的调度信息,较佳地,路由输出缓存队列1102进一步被划分为用于缓存路由数据包的路由数据输出缓存队列和用于缓存路由调度信息的调度信息输出缓存队列(图11中未示出这两个队列的划分)。在这种情况下,输出调度模块1103进一步调度优先发送路由信息输出缓存队列中的路由调度信息,待发送完毕,再发送路由数据输出缓存队列中的路由数据包。
包交换单元311是交换核心,其确定每个报文所要缓存到的输出缓存队列类型时,可以直接从报文中提取源线卡和目的线卡地址,然后获取源线卡和目的线卡的类型,从而根据源线卡和目的线卡类型确定出输出缓存队列类型。在实际中,如方法实施例描述中所述,可以在各线卡中为报文打上标记,这样包交换单元311根据报文携带的标记直接处理即可。在后者情况下,如图12所示包交换单元311的结构示意图,包交换单元311包括线卡接入检测模块1201,标记维护模块1202和交换处理模块1203;其中,
线卡接入检测模块1201,用于在检测到线卡接入端口单元312时,通知接入的以太线卡:在其发送来的待交换报文中加入以太平面标记;通知接入的路由线卡:在其发送来的目的线卡为以太线卡的待交换报文中加入以太平面标记,在其发送来的目的线卡为路由线卡的待交换报文中加入路由平面标记。
标记维护模块1202,用于保存以太平面标记和路由平面标记并提供给线卡接入检测模块1201和交换处理模块1203。
交换处理模块1203,用于根据所接收自端口单元312的待交换报文中的标记,将携带以太平面标记的待交换报文交换至目的线卡所插接端口单元312的以太输出缓存队列1101中;将携带路由平面标记的待交换报文交换至目的线卡所插接端口单元312的路由输出缓存队列1102中。
如前所述,路由输出缓存队列1102被划分为缓存路由数据包的路由数 据输出缓存队列和缓存路由调度信息的调度信息输出缓存队列。因此,为了进一步区分路由数据包和路由调度信息,将路由平面标记分为标识路由数据包的低优先级路由平面标记和标识路由调度信息的高优先级路由平面标记。
那么,交换处理模块1203进一步用于,在处理携带路由平面标记的待交换报文时,将携带低优先级路由平面标记的待交换路由数据报文交换至目的线卡所插接端口单元的路由数据输出缓存队列中;将携带高优先级路由平面标记的待交换调度信息报文交换至目的线卡所插接端口单元的路由调度信息输出缓存队列中。
当端口单元312作为入端口时,其输入缓存可以不划分队列或划分队列。图11中示出了一个端口单元312,即端口单元1作为入端口且划分队列时的具体结构,本领域技术人员可以明白每个端口单元312作为入端口时其结构都相同。如图11所示,端口单元312包括报文区分模块1113、输入调度模块1114和输入缓存,输入缓存被划分为相互独立的以太输入缓存队列1111和路由输入缓存队列1112;不同端口单元312的输入缓存相互独立。
报文区分模块1113,用于接收到来自外部的待转发报文后,将源线卡和/或目的线卡为以太线卡的报文,放入以太输入缓存队列1111中;将源线卡和目的线卡为路由线卡的报文,放入路由输入缓存队列1112中。
输入调度模块1114,用于调度按照预设的队列间调度策略调度以太输入缓存队列1111和路由输入缓存队列1112的报文发送。队列间调度策略可以为任意一种调度策略,例如RR调度策略,WRR调度策略或路由输入缓存队列1112优先调度策略。该输入调度模块1114可以与所在端口单元的输出调度模块1103合并,作为所在端口单元的调度模块,负责总调度。
以太输入缓存队列1111和路由输入缓存队列1112可以为真实的缓存队列也可以为虚拟缓存队列,如果采用虚拟缓存队列,则每一个虚拟缓存队列包括计数器和控制器,当入端口的输入报文占用的缓存超过了计数器所允许的最大计数值时,控制器将后续包丢弃。在本发明实施例中,计数器的最大计数值可以设置成为缓存队列分配的固定大小。
下面对图13示出的本发明实施例中路由线卡32和以太线卡31的改进分别进行描述。
图13为图10中路由线卡32的结构示意图。如图13所示,路由线卡32包括报文标记模块1301、发送缓存1310、接收缓存1320、分布式调度器1302和队列间调度器1303,其中,
发送缓存1310被配置为相互独立的路由发送缓存队列1311和以太发送缓存队列1312,均用于缓存向包交换芯片31发送的待交换报文。
报文标记模块1301,用于在接入包交换芯片31后,接收包交换芯片31返回的路由平面标记和以太平面标记;在所接收的目的线卡为路由线卡的待交换报文中加入所述路由平面标记,将携带路由平面标记的待交换报文缓存到所述路由发送缓存队列1311中;在所接收的目的线卡为以太线卡的待交换报文中加入所述以太平面标记,将携带以太平面标记的待交换报文缓存到所述路由发送缓存队列1312中。
队列间调度器1303,用于按设定的队列间调度策略,调度路由发送缓存队列1311和以太发送缓存队列1312发送报文。较佳地,调度时,该队列间调度器1303将预设的初始调度比例作为队列间调度策略执行调度操作;接收以太交换平面和路由交换平面的流量检测结果,根据流量检测结果调整初始调度比例。
分布式调度器1302,用于与包交换芯片31之间交互调度信息,在路由发送缓存队列1311发送报文时,根据调度信息控制其发送流量。
图13中的接收缓存1320,用于缓存接收自包交换芯片31的经交换报文。该接收缓存1320可以不进行队列划分或进行队列划分,在进行队列划分的情况下,接收缓存1320划分为路由接收缓存队列1321和以太接收缓存队列1322,将接收的携带路由平面标记的报文缓存到路由接收缓存队列1321,将接收的携带以太平面标记的报文缓存到以太接收缓存队列1322。队列间调度器1303进一步负责这两个队列间的调度,调度输出的报文发送到路由线卡所连接的外网。
当本发明实施例对路由线卡的改进应用在图2的路由线卡22中时,如 图13所示,本发明实施例中的报文标记模块1301在路由线卡中的PP中实现,在实际中,也可以在FAU中实现。队列间调度器1303、发送缓存1310和接收缓存1320在FAU中实现。
图14为图10中以太线卡33的结构示意图。如图14所示,该以太线卡33包括报文标记模块1401和发送缓存队列1402,
报文标记模块1401,用于在接入包交换芯片31后,接收包交换芯片31返回的以太平面标记,在发送给包交换芯片31的待交换报文中加入以太平面标记,将标记后的待交换报文缓存到发送缓存队列1402中。
发送缓存队列1402,用于缓存等待向包交换芯片31发送的待交换报文。
当本发明实施例对以太线卡的改进应用在图1的以太线卡12中时,本发明实施例中的报文标记模块1401和发送缓存队列1402都在MAC层实现。
以上实施例仅以通过缓存的划分构造路由交换平面和以太交换平面为例进行描述。在实际中,该通过划分缓存构造相互隔离的交换平面的方法还可以用于构造其他交换平面。例如,将以太交换平面替换为其他交换平面,在路由交换平面和以太交换平面上叠加一个或一个以上其他类型的交换平面。因此本发明实施例的交换方案适应于在一个包交换芯片中构造多个交换平面的情况,且能够报文一个不允许丢包的交换平面交换不丢包,其实现为:
当在包交换芯片上实现多个交换平面时,首先为每个端口配置独立的输出缓存,然后根据可插接的线卡类型,分别从每个端口的输出缓存中为每类线卡划分出一个独立的输出缓存队列,使得每个端口都具有对应于各类线卡的输出缓存队列。
对应于同一类型报文的输出缓存队列组成一个交换平面。在多种线卡类型中有一种线卡所承载的报文在交换网中不允许丢包,该线卡称为不允许丢包线卡。
交换时,当报文的源线卡和目的线卡类型相同时,将报文交换至目的线卡所插接端口中与目的线卡类型对应的输出缓存队列中。
当报文的源线卡和目的线卡类型不同时,分为两种情况:
其一、如果报文的源线卡和目的线卡之一为不允许丢包的线卡,则将源线卡和目的线卡中允许丢包的线卡类型作为选定线卡类型,将该报文交换至目的线卡所插接端口中与选定线卡类型对应的输出缓存队列中。
其二、如果源线卡和目的线卡均为允许丢包的线卡,则按照预设规则,将该报文交换至目的线卡所插接端口中与源线卡或目的线卡类型对应的输出缓存队列中。所述预设规则为:交换至源线卡对应的输出缓存队列,或交换至目的线卡对应的输出缓存队列。
对于包交换芯片的每个端口,在输出调度时,按照优先级进行调度,首先发送不允许丢包的线卡类型对应的输出缓存队列中的报文,待发送完毕,再调度发送其他输出缓存队列中的报文。其中,调度发送其他输出缓存队列中的报文时,可以根据任意一种队列间调度策略调度,不一定严格遵循优先级原则。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。