包交换电路及包交换方法技术

技术编号:7976372 阅读:186 留言:0更新日期:2012-11-16 01:42
本发明专利技术提供一种包交换电路及包交换方法。每个输入端口均具有输入缓存,每个输出端口均具有输出缓存;第一轮询单元,用于对输入端口的输入缓存进行轮询;路由计算单元,用于对轮询到的输入缓存中存储的至少一个数据包进行路由计算,确定数据包对应的输出端口;共享缓存,用于存储经过路由计算单元确定输出端口的数据包,并根据输出端口将数据包在共享缓存中的存储地址存入相应的控制缓存中;第二轮询单元对多个控制缓存进行轮询,在轮询到的控制缓存中获得至少一个数据包在共享缓存中的存储地址,根据存储地址在共享缓存中获得数据包存入相应的输出端口的输出缓存中。

【技术实现步骤摘要】

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

【技术保护点】
一种包交换电路,其特征在于,包括:多个输入端口、多个输出端口、第一轮询单元、路由计算单元、共享缓存、与输出端口一一对应的控制缓存、以及第二轮询单元,其中,每个输入端口均具有输入缓存,每个输出端口均具有输出缓存;所述输入端口,用于接收数据包并将所述数据包存储在自身的输入缓存中;所述第一轮询单元,用于对所述输入端口的输入缓存进行轮询;所述路由计算单元,用于对所述第一轮询单元轮询到的输入缓存中存储的至少一个数据包进行路由计算,确定所述数据包对应的输出端口;所述共享缓存,用于存储经过所述路由计算单元确定输出端口的数据包,并根据输出端口将数据包在共享缓存中的存储地址存入相应的控制缓存中;所述第二轮询单元,用于对多个控制缓存进行轮询,在轮询到的控制缓存中获得至少一个数据包在共享缓存中的存储地址,并根据所述存储地址在共享缓存中获得数据包,并存入相应的输出端口的输出缓存中;所述输出端口,用于读取自身的输出缓存并发送数据包。

【技术特征摘要】
1.一种包交换电路,其特征在于,包括多个输入端口、多个输出端口、第一轮询单兀、路由计算单元、共享缓存、与输出端口一一对应的控制缓存、以及第二轮询单元,其中,每个输入端口均具有输入缓存,每个输出端口均具有输出缓存; 所述输入端口,用于接收数据包并将所述数据包存储在自身的输入缓存中; 所述第一轮询单元,用于对所述输入端口的输入缓存进行轮询; 所述路由计算单元,用于对所述第一轮询单元轮询到的输入缓存中存储的至少一个数据包进行路由计算,确定所述数据包对应的输出端口 ; 所述共享缓存,用于存储经过所述路由计算单元确定输出端口的数据包,并根据输出端口将数据包在共享缓存中的存储地址存入相应的控制缓存中; 所述第二轮询单元,用于对多个控制缓存进行轮询,在轮询到的控制缓存中获得至少一个数据包在共享缓存中的存储地址,并根据所述存储地址在共享缓存中获得数据包,并存入相应的输出端口的输出缓存中; 所述输出端口,用于读取自身的输出缓存并发送数据包。2.根据权利要求I所述的包交换电路,其特征在于,所述第二轮询单元还用于检测轮询到的控制缓存所对应的输出端口的输出缓存是否反压;如果反压,轮询下一个控制缓存。3.根据权利要求I或2所述的包交换电路,其特征在于,所述共享缓存还用于判断待存入共享缓存的数据包与已存入共享缓存的数据包之间是否相同; 如果相同,丢弃所述待存入共享缓存的数据包; 如果不同,将所述待存入共享缓存的数据包存入共享缓存。4.根据权利要求I至3中任一项所述的包交换电路,其特征在于,所述共享缓存中数据包的存储地址,按照数据包到达共享缓存...

【专利技术属性】
技术研发人员:万玉鹏卢海彦余剑
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1