专利名称:包交换电路及包交换方法
技术领域:
本发明涉及通信技术,尤其涉及一种包交换电路及包交换方法。
背景技术:
包交换,也称为分组交换,它是将用户传送的数据分成一定的长度,每个部分叫做一个分组。在每个分组的前面加上一个分组头,用以指明该分组发往何地址,然后由交换机根据每个分组的分组头中的信息,将分组转发至目的地址。现有技术中,包交换电路被广泛地应用在固网以及无线通信系统中。在全球移动通信(Global SystemFor Mobile Communication,简称为GSM)以及通用移动通信系统(Universal MobileTelecommunications System,简称为UMTS)等无线通信制式中,数据包的发送通常是以固定时隙突发的方式进行传输,同时存在大量的组播或广播数据包,这就必然导致包交换电 路针对无线基站系统的应用场景在芯片设计结构上需要有所针对性,既要解决瞬时突发大流量数据包的冲击,又要考虑缓存的成本问题。现有技术中提供的包交换方式通常为在包交换电路的各输入端口的缓存中存储进入包交换电路的数据包,使用轮询调度算法轮询处理各个输入端口的缓存中存储的数据包,经过路由计算后分发给各个输出端口的缓存。对于这种采用轮询后路由分发的包交换方式,实现方法简单,资源开销小,但是,对于无线基站存在的瞬时突发大流量数据包的情况,这种包交换方式需要为每个输出端口提供较大的缓存方能保证数据包不因为缓存溢包而丢包。但是,为包交换电路的每个输出端口提供较大的输出缓存会造成存储资源的浪费以及包交换电路成本的提高。
发明内容
本发明提供一种用于解决存储资源的浪费问题,以及有效降低成本的包交换电路,包括多个输入端口、多个输出端口、第一轮询单元、路由计算单元、共享缓存、与输出端口一一对应的控制缓存、以及第二轮询单元,其中,每个输入端口均具有输入缓存,每个输出端口均具有输出缓存;所述输入端口,用于接收数据包并将所述数据包存储在自身的输入缓存中;所述第一轮询单元,用于对所述输入端口的输入缓存进行轮询;所述路由计算单元,用于对所述第一轮询单元轮询到的输入缓存中存储的至少一个数据包进行路由计算,确定所述数据包对应的输出端口 ;所述共享缓存,用于存储经过所述路由计算单元确定输出端口的数据包,并根据输出端口将数据包在共享缓存中的存储地址存入相应的控制缓存中;所述第二轮询单元,用于对多个控制缓存进行轮询,在轮询到的控制缓存中获得至少一个数据包在共享缓存中的存储地址,并根据所述存储地址在共享缓存中获得数据包,并存入相应的输出端口的输出缓存中;所述输出端口,用于读取自身的输出缓存并发送数据包。
本发明提供的基于上述包交换电路的包交换方法包括对轮询到的 输入缓存中存储的至少一个数据包进行路由计算,确定数据包的输出端口 ;将已确定输出端口的数据包存入共享缓存,根据输出端口将数据包在共享缓存中的存储地址存入相应的控制缓存中;在轮询到的控制缓存中获得至少一个数据包在共享缓存中的存储地址,并根据所述存储地址在共享缓存中获得数据包,并存入相应的输出缓存中。本发明的技术效果是将突发的大流量数据包都存储在共享缓存中,每个输出端口对应的控制缓存中存储数据包在共享缓存中的存储地址,通过读取控制缓存中的存储地址,到共享缓存中获得相应的数据包,每个输出端口的输出缓存仅需要使用较小的存储空间,可以有效减少各输出缓存的存储资源浪费。
图I为本发明实施例一提供的包交换电路的结构示意图;图2为本发明实施例二提供的基于上述实施例提供的包交换电路的包交换方法的流程图;图3为本发明实施例三提供的基于上述实施例提供的包交换电路的包交换方法的流程图;图4为本发明实施例四提供的基于上述实施例提供的包交换电路的包交换方法的流程图。
具体实施例方式图I为本发明实施例一提供的包交换电路的结构示意图,如图I所示,该包交换电路包括多个输入端口、多个输出端口、第一轮询单元、路由计算单元、共享缓存、与输出端口一一对应的控制缓存以及第二轮询单元。其中,每个输入端口均具有输入缓存,每个输出端口均具有输出缓存。具体的,输入端口用于接收数据包并将接收到的数据包存储在自身的输入缓存中;第一轮询单元用于对输入端口的输入缓存进行轮询;路由计算单元用于对第一轮询单元轮询到的输入缓存中存储的至少一个数据包进行路由计算,以确定数据包对应的输出端口 ;共享缓存用于存储经过路由计算单元确定输出端口的数据包,并根据输出端口将数据包在共享缓存中的存储地址存入相应的控制缓存中;第二轮询单元用于对多个控制缓存进行轮询,在轮询到的控制缓存中获得至少一个数据包在共享缓存中的存储地址,并根据存储地址在共享缓存中获得数据包,并存入相应的输出端口的输出缓存中;输出端口用于读取自身的输出缓存并发送数据包。其中,共享缓存用于存储来自全部输入缓存的数据包,无论该数据包是准备发往哪个输出端口的,均需要存入共享缓存中,因此,数据包可以顺序地写入共享缓存,那么数据包在共享缓存中的存储地址就可以按照数据包到达共享缓存的先后循序依次递增,而且存储地址还可以循环使用。这样更加有利于共享缓存的存储空间的有效利用,相比较于其他方式的存储有着更好的系统健壮性。同时,不需要特殊的指针电路对存储地址进行维护,节约了系统成本。该共享缓存的大小可以根据无线基站的实际应用场景而设计,要能够存储瞬时突发大流量的全部数据包,一般情况下,瞬时突发大流量的全部数据包的总量是可以预先获知的,那么,共享缓存的容量仅需根据预先获知的数据包总量来设置即可。但为了更加便利地设置该共享缓存,可以将该共享的缓存的容量设置为大于或等于全部是输入缓存的容量之和。控制缓存的数量与输出端口的数量相同,也即每个输出端口都对应有一个控制缓存,每个控制缓存中存储的内容是准备发送到其相应输出端口的数据包在共享缓存中的地址信息。第一轮询单元以及第二轮询单元都可以使用状态机或者计数器等实现其功倉泛。本发明实施例提供的包交换电路,将突发的大流量数据包都存储在共享缓存中,每个输出端口对应的控制缓存中存储数据包在共享缓存中的存储地址,通过读取控制缓存中的存储地址,到共享缓存中获得相应的数据包,每个输出端口的输出缓存仅需要使用较小的存储空间,可以有效减少各输出缓存的存储资源浪费。
在上述实施方式的基础上,该包交换电路的第二轮询单元还可以用于检测轮询到的控制缓存所对应的输出端口的输出缓存是否反压;如果反压,轮询下一个控制缓存。需要说明的是,反压是指如果当前处理的输出端口对应的输出缓存已经满了,没有足够的存储空间继续存包,则会将这样的信息反馈给自身的前一级单元(也即第二轮询单元),要求前一级单元不要再发包给自己。如果某一个输出缓存反压,则不读取其对应的控制缓存中的地址信息,而是轮询下一个控制缓存,处理下一个输出缓存,不会存在由于某一个输出缓存反压而导致发包暂停,同时对于由于反压而停止发包的输出端口的发包顺序也不会发生改变。通过这种方式可以有效降低数据包的丢包率。在上述实施方式的基础上,该包交换电路的共享缓存还可以用于判断待存入共享缓存的数据包与已存入共享缓存的数据包之间是否相同;如果相同,丢弃待存入共享缓存的数据包;如果不相同,将待存入共享缓存的数据包存入共享缓存即可。上述实施例提供的包交换电路,对于组播或者广播的数据包,经过路由计算后,存储共享缓存的仅为一个数据包,有效避免了瞬时突发大流量数据包时对于包交换电路输出缓存的拥塞情况。图2为本发明实施例二提供的基于上述实施例提供的包交换电路的包交换方法的流程图,如图2所示,该方法包括步骤201、对轮询到的输入缓存中存储的至少一个数据包进行路由计算,确定数据包的输出端口;步骤203、将已确定输出端口的数据包存入共享缓存,根据输出端口将数据包在共享缓存中的存储地址存入相应的控制缓存中;具体的,可以按照数据包到达共享缓存的先后顺序对数据包进行存储,数据包的存储地址可以依次地址,且循环使用。步骤205、在轮询到的控制缓存中获得至少一个数据包在共享缓存中的存储地址,并根据存储地址在共享缓存中获得数据包,并存入相应的输出缓存中。在上述实施方式的基础上,图3为本发明实施例三提供的基于上述实施例提供的包交换电路的包交换方法的流程图,如图3所示,在步骤205之前,该方法还可以包括步骤204、检测轮询到的控制缓存所对应的输出端口的输出缓存是否反压;
如果反压,轮询下一个控制缓存;如果不反压,执行步骤205。在上述实施方式的基础上,图4为本发明实施例四提供的基于上述实施例提供的包交换电路的包交换方法的流程图,如图4所示,在步骤203之前,该方法还可以包括步骤202、判断待存入共享缓存的数据包与已存入共享缓存的数据包之间是否相同;如果相同,丢弃待存入共享缓存的数据包;如果不相同,执行步骤203。将突发的大流量数据包都存储在共享缓存中,每个输出端口对应的控制缓存中存 储数据包在共享缓存中的存储地址,通过读取控制缓存中的存储地址,到共享缓存中获得相应的数据包,每个输出端口的输出缓存仅需要使用较小的存储空间,可以有效减少各输出缓存的存储资源浪费。最后应说明的是以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
权利要求
1.一种包交换电路,其特征在于,包括多个输入端口、多个输出端口、第一轮询单兀、路由计算单元、共享缓存、与输出端口一一对应的控制缓存、以及第二轮询单元,其中,每个输入端口均具有输入缓存,每个输出端口均具有输出缓存; 所述输入端口,用于接收数据包并将所述数据包存储在自身的输入缓存中; 所述第一轮询单元,用于对所述输入端口的输入缓存进行轮询; 所述路由计算单元,用于对所述第一轮询单元轮询到的输入缓存中存储的至少一个数据包进行路由计算,确定所述数据包对应的输出端口 ; 所述共享缓存,用于存储经过所述路由计算单元确定输出端口的数据包,并根据输出端口将数据包在共享缓存中的存储地址存入相应的控制缓存中; 所述第二轮询单元,用于对多个控制缓存进行轮询,在轮询到的控制缓存中获得至少一个数据包在共享缓存中的存储地址,并根据所述存储地址在共享缓存中获得数据包,并存入相应的输出端口的输出缓存中; 所述输出端口,用于读取自身的输出缓存并发送数据包。
2.根据权利要求I所述的包交换电路,其特征在于,所述第二轮询单元还用于检测轮询到的控制缓存所对应的输出端口的输出缓存是否反压;如果反压,轮询下一个控制缓存。
3.根据权利要求I或2所述的包交换电路,其特征在于,所述共享缓存还用于判断待存入共享缓存的数据包与已存入共享缓存的数据包之间是否相同; 如果相同,丢弃所述待存入共享缓存的数据包; 如果不同,将所述待存入共享缓存的数据包存入共享缓存。
4.根据权利要求I至3中任一项所述的包交换电路,其特征在于,所述共享缓存中数据包的存储地址,按照数据包到达共享缓存的先后顺序依次递增,且循环使用。
5.根据权利要求I至4中任一项所述的包交换电路,其特征在于,所述共享缓存的容量大于或等于全部输入缓存的容量之和。
6.一种基于权利要求I至5中任一项所述的包交换电路的包交换方法,其特征在于,包括 对轮询到的输入缓存中存储的至少一个数据包进行路由计算,确定数据包的输出端Π ; 将已确定输出端口的数据包存入共享缓存,根据输出端口将数据包在共享缓存中的存储地址存入相应的控制缓存中; 在轮询到的控制缓存中获得至少一个数据包在共享缓存中的存储地址,并根据所述存储地址在共享缓存中获得数据包,并存入相应的输出缓存中。
7.根据权利要求6所述的方法,其特征在于,所述在轮询到的控制缓存中获得至少一个数据包在共享缓存中的存储地址之前,所述方法还包括 检测轮询到的控制缓存所对应的输出端口的输出缓存是否反压; 如果反压,轮询下一个控制缓存。
8.根据权利要求6或7所述的方法,其特征在于,所述将已确定输出端口的数据包存入共享缓存之前,所述方法还包括 判断待存入共享缓存的数据包与已存入共享缓存的数据包之间是否相同; 如果相同,丢弃所述待存入共享缓存的数据包;如果不同,执行所述将已确定输出端口的数据包存入共享缓存的步骤。
9.根据权利要求6至8中任一项所述的方法,其特征在于,所述将已确定输出端口的数据包存入共享缓存具体包括 按照数据包到达共享缓存的先后顺序对所述数据包进行存储,数据包的存储地址依次递增,且循环使用。
10.根据权利要求6至9中任一项所述的方法,其特征在于,所述共享缓存的容量大于或等于全部输入缓存的容量之和。
全文摘要
本发明提供一种包交换电路及包交换方法。每个输入端口均具有输入缓存,每个输出端口均具有输出缓存;第一轮询单元,用于对输入端口的输入缓存进行轮询;路由计算单元,用于对轮询到的输入缓存中存储的至少一个数据包进行路由计算,确定数据包对应的输出端口;共享缓存,用于存储经过路由计算单元确定输出端口的数据包,并根据输出端口将数据包在共享缓存中的存储地址存入相应的控制缓存中;第二轮询单元对多个控制缓存进行轮询,在轮询到的控制缓存中获得至少一个数据包在共享缓存中的存储地址,根据存储地址在共享缓存中获得数据包存入相应的输出端口的输出缓存中。
文档编号H04L12/56GK102780611SQ20121018397
公开日2012年11月14日 申请日期2012年6月6日 优先权日2012年6月6日
发明者万玉鹏, 余剑, 卢海彦 申请人:华为技术有限公司