以回路完成隧道封装和解封装处理的网络交换机和方法

文档序号:7627175阅读:242来源:国知局
专利名称:以回路完成隧道封装和解封装处理的网络交换机和方法
技术领域


发明内容
涉及隧道处理,特别是隧道处理过程中对数据包进行隧道封装和解封装的处理设备以及处理过程。
背景技术
无线局域网、移动IP、虚拟企业网络、IPv4和IPv6网络之间的互联互通等很多应用都需要使用隧道(tunnel)处理技术。在数据包通过隧道进行传输前,通常由交换机将一个隧道封装(tunnel encapsulation)头增加到原始数据包中,而该隧道封装头是基于该数据包的头部(header)信息并根据一定的规则计算得出的,该封装头也可以称为隧道头部(tunnelheader)。基于上述的隧道封装头信息,封装之后的数据包通过隧道被传输到目的地,即隧道的另一端。也就是说,在隧道传输过程中是使用隧道封装头信息而非原始数据包的头部信息来进行的。相应地,在上述封装后的数据包到达隧道另一端时,同样由一个交换机将上述隧道封装头去除,上述数据包被恢复为原始数据包,基于原始数据包本身的头部信息,该数据包再被传送到最终目的地。
目前,用于上述用途的交换机通常包括系统CPU以及一个或多个交换芯片,其中交换芯片从逻辑上可以分为入队列处理模块(Ingress PacketProcessing Module)、出队列处理模块(Egress Packet Processing Module)、入处理队列、出处理队列等主要组成部分。在上述隧道处理过程中对原始数据包增加隧道封装头,即隧道封装的过程,以及对封装后的数据包去除隧道封装头,即解封装的过程都是通过交换机的系统CPU完成的,如图3a、图3b所示。其对原始数据包增加隧道封装头的过程如下待传输数据包到达交换机并被置于一个入处理队列中;上述入队列处理模块从入处理队列中提取下一个待处理数据包,根据该数据包头部信息决定是否需要增加隧道封装头,如果需要,则将其传送给系统CPU;系统CPU根据上述数据包的头部信息生成隧道封装头,并将隧道封装头增加到上述数据包上,形成新的数据包,即带有封装头的数据包;系统CPU将上述带有封装头的数据包传送回交换机的出处理队列,并由出队列处理模块根据隧道封装头信息将上述带有封装头的数据包送出交换机的网络端口。
上述带有封装头的数据包在被送出交换机的网络端口后将通过相应的隧道传输到隧道目的地。相应地,在隧道目的地所在的交换机对上述带有封装头的数据包进行解隧道封装的过程如下上述带有封装头的数据包到达隧道另一端交换机,并被置于一个入处理队列中;入队列处理模块从入处理队列中提取下一个待处理数据包,并根据数据包头部信息决定是否需要解隧道封装,如果需要,则将其传送给系统CPU;系统CPU将上述带有封装头的数据包所包含的隧道封装头去除,并将该数据包恢复成原始数据包;系统CPU将上述原始数据包传送回上述出处理队列,由出队列处理模块将原始数据包送出交换机网络端口,基于原始数据包本身的头部信息该数据包被发送至目的地。
可见,在上述整个过程中,不论数据包进入隧道前的处理,还是离开隧道时的处理,都要两次进入上述交换芯片,同时还要被传输给系统CPU。不但进出交换芯片影响处理效率,而且系统CPU借助软件实现隧道处理也影响对该数据包的处理效率,同时还占用了系统CPU的资源,进一步影响了交换机的整体效率。
为此,发明人希望提供一种对上述隧道封装进行高效处理的网络交换机和相应的方法,其在不需要系统CPU参与的情况下解决上述问题。
发明内容为解决上述问题,发明人提供了一种通过回路(Loopback)以循环方式在交换芯片内部对数据包进行隧道封装处理的网络交换机以及相应的方法来提高对数据包的处理效率,在该交换机和所使用的方法中,不需要系统CPU直接参与就可以有效地完成隧道封装处理过程。
通过回路高效完成隧道封装和解封装处理的网络交换机,其包括系统CPU、若干个交换芯片,所述的交换芯片又包括入队列处理模块、出队列处理模块和入处理队列、出处理队列,其特征在于所述的交换芯片还包括专门用于隧道处理的特殊逻辑电路,用于存放相应的配置数据的内部存储设备,以及回路处理队列(Loopback queue)。
上述系统CPU与现有技术中的系统CPU相同,对整个网络交换机起到主控作用,亦具备相应的数据处理功能。
上述特殊逻辑电路,其使得入队列处理模块、出队列处理模块以及回路处理队列按照下述的方法相互配合通过循环处理的方式在交换芯片内部完成对数据包进行隧道封装和解封装的处理过程,而不再需要将数据包传送给系统CPU,在上述过程中也不再需要系统CPU的参与。
上述内部存储设备用于存放配置数据,以使得交换芯片可以决定对数据包如何进行处理,包括以本发明所述的循环处理方式进行隧道封装、解封装的处理,以及按照常规方式所进行的其他处理。
上述回路处理队列用于存放那些需要通过回路以循环方式进行隧道处理的数据包。这样,经入队列处理模块和出队列处理模块处理后的数据包,除了按照常规处理方式传送给系统CPU或通过网络端口发送到目的地以外,还增加了一种处理方式,即送入该等回路队列。
上述回路处理队列是经过特殊定义的入处理队列,系统在初始化时对该等入处理队列进行了定义使其作为回路处理队列使用。
上述交换芯片是一种专用芯片(ASIC,Application Special IntegratedCircuit,特殊用途集成电路,或称为特殊用途专用芯片,在本发明中统称为“专用芯片”),特别是高性能专用芯片(high feature switching ASIC)。
上述交换芯片也可以是普通的专用芯片。
上述通过回路完成隧道封装处理的网络交换机,其通过下述方法将隧道封装头增加到数据包上待传输数据包到达上述交换机的入处理队列,该交换机的入队列处理模块根据该数据包的头部信息,进行一系列的常规处理,并送入出处理队列;出队列处理模块对出队列中的下一个待处理数据包进行判断是否需要对该数据包进行隧道封装处理,若需要,则出队列处理模块产生一个隧道封装头,将该隧道封装头增加到该数据包中,并将带有封装头的数据包送至回路处理队列中;入队列处理模块对上述回路处理队列中的下一个待处理数据包执行常规处理,处理完毕后再次将该数据包送入出处理队列;出队列处理模块对下一个数据包进行处理,如果该数据包是带有封装头的,则基于新的数据包头也就是隧道封装头信息进行处理,最终该数据包根据隧道封装头被发送出去。
相应地,上述通过回路完成隧道封装处理的网络交换机,其通过下述方法可以完成将收到的带有隧道封装头的数据包解隧道封装的处理通过隧道传输的带有隧道封装头的数据包到达上述通过高效回路完成隧道封装处理的网络交换机的入处理队列,该交换机的入队列处理模块对该数据包进行常规处理;处理完毕后,若入队列处理模块判断该数据包带有隧道封装头,则直接将该数据包送至回路处理队列等待解隧道封装处理;入队列处理模块将回路处理队列中的带有封装头的数据包去掉隧道封装头,并将处理后的数据包送入回路处理队列;入队列处理模块根据回路处理队列中的下一个待处理数据包的原始数据包头继续对该数据包进行常规处理,处理完毕后将其送至出处理队列;出队列处理处理模块对出处理队列中的数据包进行常规处理,并基于该数据包的原始数据包头将其通过网络端口送出交换机。
上述步骤中所述的常规处理,是指本发明提供的以回路高效完成隧道封装和解封装处理的网络交换机和相应的以回路完成隧道封装和解封装处理的方法中所使用的进行隧道封装和解封装处理的特殊方法以外的其他处理方式或步骤,本领域的技术人员根据现有技术可以实现理解所述的常规处理。
通过上述步骤可见,本发明使得对数据包进行封装的处理在交换芯片内直接完成,而不再从交换芯片传送给系统CPU,从而避免了数据包两次进入交换芯片并占用系统CPU的资源的缺点,进而大大提高了隧道处理的效率。


图1是隧道技术的原理示意图。
图2a是原始数据包的数据格式。
图2b是加上隧道封装头之后的数据包的数据格式。
图3a是现有的解决方案对数据包进行隧道封装处理的工作原理示意图。
图3b是现有的解决方案对带有隧道封装头的数据包进行解封装处理的工作原理示意图。
图4a是本发明提供的解决方案对数据包进行隧道封装处理的工作原理示意图。
图4b是本发明提供的解决方案对进行解封装处理的工作原理示意图。
图5是本发明提供的解决方案对带有隧道封装头的数据包进行隧道封装和解封装处理的流程图。
图6是本发明的一个实施例中对数据包进行隧道封装处理的过程中入处理队列、出处理队列、回路处理队列中的数据变化。为简明起见,在图中仅描述了一个数据包的处理过程。
图7是与图6所示的同一个实施例中隧道另一端的交换机接收到带有隧道封装头的数据包后对该数据包进行解封装的过程中入处理队列、出处理队列、回路处理队列中的数据变化。为简明起见,在图中仍然仅描述了一个数据包的处理过程。
标号说明1、隧道封装设备11系统CPU12交换芯片
121入处理队列122出处理队列123回路处理队列2XX、现有技术中进行隧道封装和解封装的各过程201对数据包进行隧道封装过程中将数据包传送给系统CPU202对数据包进行隧道封装过程中系统CPU将封装后的数据包传回给出处理队列211对带有封装头的数据包进行解封装过程中将数据包传送给系统CPU212对带有封装头的数据包进行解封装过程中系统CPU将解封装后的数据包传回给出处理队列3X、数据包的数据域31负载域32数据包头部33隧道封装头具体实施方式
参考图1,数据包在进入隧道进行传输前,被隧道封装设备1,一般来说是交换机进行处理,加上了隧道封装头;加上了隧道封装头的数据包经过基于网络的隧道传输到隧道的另一端后,即图1中所示的401、402过程,又经过解隧道封装设备1,也是一交换机,去除了隧道封装头,恢复为原始数据包并进而传输到最终目的地。
一般来说,在上述过程中,隧道封装设备1和解隧道封装设备1是具有同种功能的交换机。
参考图2a,加上隧道封装头之前的原始数据包的格式如图2a所示,其中数据包头部32包含该数据包的最终目的地的地址信息,负载31部分则表示该数据包所传送的将被目的地设备处理的数据部分。
参考图2b,加上隧道封装头之后的数据包的格式如图2b所示。其中,隧道封装头33的信息用于隧道传输,根据该信息封装后的数据包被通过隧道传输到隧道的另一端。
参考图3a,在现有的解决方案中,当原始数据包进入交换芯片12的入处理队列121后,入队列处理模块在进行常规处理后,将原始数据包传送给系统CPU11,即过程201,系统CPU11将隧道封装头增加到原始数据包后再传回至出处理队列122,即过程202,然后出队列处理模块再将带有隧道封装头的数据包通过网络端口传送出交换机。
参考图3b,在现有的解决方案中,当封装后的数据包进入交换芯片12的入处理队列121后,入队列处理模块在进行常规处理后,仍然将封装后的数据包传送给系统CPU11,即过程211,系统CPU11将隧道封装头去除并恢复原始数据包后再将原始数据包传回至出处理队列122,即过程212,然后出队列处理模块再进行处理后将原始数据包通过网络端口传送出交换机。
参考图4a、4b、5、6a、6b、6c、6d、6e、7a、7b、7c、7d共同描述了本发明的一个实施例。
参考图4a所示,在本发明所提供的交换机中,对于需要增加隧道封装头的原始数据包,在其到达入处理队列121后,即过程500,入队列处理模块对该原始数据包进行常规处理后将该数据包送入出处理队列122,即过程501,然后出队列处理模块形成隧道封装头并增加到该数据包上,处理完毕后将带有隧道封装头的数据包送入回路处理队列123,即过程502,入队列处理模块对回路处理队列123中的数据包进行处理后再次将其送入出处理队列122,即过程503;出队列处理模块对出处理队列122中的带有封装头的数据包进行处理后将该数据包通过网络端口送出交换机,即过程504,所述的带有隧道封装头数据包最终通过隧道进行传输。
参考图5与图6a、图6b、图6c、图6d、图6e,其具体描述了上述处理过程。在处理开始前,入处理队列121、出处理队列122、回路处理队列123的状态如图6a所示,即尚未有任何数据包。在原始数据包到达入处理队列121后600,队列状态如图6b所示。处理开始后,首先,入队列处理模块对入处理队列中的下一个待处理数据包进行常规处理601,处理完毕后将数据包送至出处理队列中,此时,队列状态如图6c所示;然后出处理队列模块判断是否需要进行隧道封装处理602,若不需要,则按照常规流程将其送至出处理队列并对出处理队列中的下一个待处理数据包进行常规处理603;出处理队列模块对上述数据包进行判断604,如果需要进行隧道封装处理,则出处理队列模块根据该原始数据包头部信息产生一个隧道封装头,将该封装头增加到数据包上609,并将该数据包送至回路处理队列中607,此时,队列状态如图6d所示。
上述判断是否需要进行隧道封装处理的过程与现有技术中的常规方式相同,本领域的技术人员可以结合现有技术予以实现,不再赘述。
接着,入队列处理模块对回路处理队列中的下一个待处理数据包进行常规处理601。由于该数据包是带有封装头的,因此该处理是基于新的数据包头也就是隧道封装头信息来进行的。入队列处理模块检查到该数据包已经包括隧道封装头信息,就不再对其进行封装处理,而是将其送至出处理队列603,此时,队列状态如图6e所示。
接着,出队列处理模块对出处理队列中的下一个待处理数据包进行处理。经过判断604,基于该数据包已经包括隧道封装头信息,出队列处理模块也不再对其进行封装处理,而是将其从网络端口发送出交换机605,此时,队列状态又如图6a所示,即该数据包已经被处理完毕。
基于该数据包的隧道封装头信息,该数据包通过相应的隧道传送至隧道的另一端。
参考图4b,在隧道的另一端,本发明所提供的交换机将该带有隧道封装头的数据包进行处理。带有隧道封装头的数据包进入交换芯片12的入处理队列121后,入队列处理模块将该数据包取出隧道封装头后送到回路处理队列123,即过程511,然后,入队列处理模块再对位于回路处理队列123中的数据包进行常规处理,处理完毕后送至出处理队列122,即过程512,出队列处理模块处理完毕后将该数据包发送出交换机,即过程513。
上述具体过程可以参照图5、7a、7b、7c、7d具体描述。交换机通过隧道接收到含有隧道封装头的数据包后,如图7a所示,处理过程开始。首先,入队列处理模块对入处理队列中的下一个待处理数据包进行常规处理601,处理完毕后,若发现该数据包带有隧道封装头602,则去除该数据包包含的隧道封装头606,并将其送至回路处理队列607,此时,队列状态如图7b所示;否则,若发现该数据包不带有隧道封装头602,则将其送到出处理队列中进行常规处理603。
然后,入队列处理模块对回路处理队列中的下一个待处理数据包进行常规处理,经检查后发现其已经不带有隧道封装头即不需要再对其进行解隧道封装处理602,则使用原始数据包头部信息继续对该数据包进行常规处理,处理完毕之后送至出处理队列603,此时,队列状态如图7c所示。
接着,出队列处理模块对出处理队列中的下一个待处理数据包进行常规处理,经检查后发现该数据包不再需要进行隧道封装处理604,则最终该数据包被基于原始数据包头通过网络端口送出交换机610,此时,队列状态如图7d所示,即所接收到的数据包被处理完毕。
在上述步骤602、604中,由于被处理的数据包是交换机从隧道接收到的,其应被该交换机发送到该数据包对应的目的地,因此,出队列处理模块不会将其按照步骤609所述再次将其增加隧道封装头并再次通过隧道传输,而是直接根据该数据包内的地址信息将该数据包发送至相应的目的地。
在上述实施例中,并没有对交换芯片等硬件做出具体的选择,但这并不影响本发明的具体实施,本领域的技术人员结合上述描述的发明内容以及实施例即可以具体实施本发明。对于现有的所有网络交换机系统,按照上述内容重新设计后就可以既实现现有交换机系统的功能,又实现本发明提供的通过回路高效完成隧道封装和解封装处理的功能,从而大大提高网络交换机系统的工作效率。同样,对于本发明所述的交换芯片,其也是依据应用于现有交换机系统的现有交换芯片的功能的基础上按照本发明所述的内容实现的,因此,现有的可用于与系统CPU协同完成隧道处理的交换芯片均可以通过本发明的内容而重新设计并实现本发明所述的通过回路高效完成隧道封装和解封装处理的功能。
在本发明的另一个实施例中,对于那些尽管要求使用隧道封装技术,但是仍然希望用原始数据包头信息而不是隧道封装头信息来转发数据包的系统应用,本发明提供的交换机同样可以处理。为了适应这样的处理,在上述处理过程中提供一个选项,在出队列处理模块将隧道封装头增加到数据包中之后,可以直接把数据包发送出去而不是再次送到回路处理队列,从而实现类似系统的要求。为了实现类似的要求,可以数据包上增加一个数据域34标识是否直接将该数据包发送出去,并在上述图4a所示的实施例的基础上,在步骤502执行之前,增加一个步骤对被处理数据包中包含的上述标识数据域进行判断,若该数据域34标识直接送出交换机,则直接送出交换机即可;否则按仍然符合图4a所示的实施例处理。相应地,在图5所示的实施例基础上,在步骤607执行之前,也要相应地增加一个步骤对被处理数据包中包含的上述标识数据域34进行判断,若该数据域标识将该数据包直接送出交换机,则直接送出交换机即可;否则按仍然符合图5所示的实施例的过程。
在本实施例中,并没有将系统的组成以及具体的处理过程全部描述,而只是将与上一实施例不同之处予以描述,但本领域的技术人员根据上一实施例以及本实施例的描述可以实现本实施例。
依据本发明所述的处理方法和相应的配置信息对本发明所述的交换芯片进行配置后,本发明所提供的交换机系统就可以在不需要系统CPU参与的情况下实现隧道处理的过程,从而可以大大提高系统处理效率。
尽管本发明已经以如上所述的优选实施例予以说明,但上述实施例并非用来限定本发明,任何对该领域熟悉的技术人员,根据本发明的设计思想、具体发明内容以及实施例的启示,应该可以各种改动和调整,而通过这些改动和调整所得到的新的内容应被本发明内容所涵盖。
权利要求
1.通过回路高效完成隧道封装和解封装处理的网络交换机,其包括系统CPU(11)、若干个交换芯片(12),所述的交换芯片(12)又包括入队列处理模块、出队列处理模块和入处理队列(121)、出处理队列(122),其特征在于,所述的交换芯片(12)还包括若干回路处理队列(123),用于存放通过回路被进行隧道封装处理和解封装处理的数据包,一特殊逻辑电路,使得入处理队列模块、出处理队列模块以及回路处理队列(123)相互配合通过循环处理的方式共同在交换芯片(12)内部完成对数据包的隧道封装和解封装处理,以及若干内部存储设备,用于存放配置数据使得特殊逻辑电路可以控制其他组成部分通过回路完成隧道处理。
2.如权利要求1所述的网络交换机,其特征在于,所述的回路处理队列(123)是在系统初始化时对一个或多个入处理队列进行定义而形成的。
3.如权利要求1所述的网络交换机,其特征在于,所述的交换芯片是高性能专用芯片。
4.如权利要求1所述的网络交换机,其特征在于,所述的交换芯片是普通的专用芯片。
5.在权利要求1所述的网络交换机中所使用的通过回路对数据包高效完成隧道封装处理以及解封装的方法,其特征在于,对数据包增加隧道封装头的方法包括如下步骤待传输数据包到达所述网络交换机的入处理队列(121),该交换机的入队列处理模块根据该数据包的头部信息,进行一系列的常规处理,并送入出处理队列(122),出队列处理模块对所述数据包进行判断是否需要对该数据包进行隧道封装处理,若需要,则出队列处理模块产生一个隧道封装头,将该隧道封装头增加到该数据包中,并将带有封装头的数据包送至回路处理队列(123)中,入队列处理模块对上述回路处理队列(123)中的下一个待处理数据包执行常规处理,处理完毕后再次将该数据包送入出处理队列(122),出队列处理模块对下一个待处理数据包进行处理,如果该数据包是带有封装头的,则基于隧道封装头信息进行处理,并根据隧道封装头将该数据包送出所述的交换机;所述的对包含隧道封装头的数据包进行解封装的方法包括如下步骤通过隧道传输的带有隧道封装头的数据包到达所述交换机的入处理队列(121),该交换机的入队列处理模块对该数据包进行常规处理,处理完毕后,若入队列处理模块判断该数据包带有隧道封装头,则将该数据包去除隧道封装头后送至回路处理队列(123),入队列处理模块将回路处理队列(123)中的数据包进行常规处理,处理完毕后将其送至出处理队列(122),出队列处理模块对出处理队列(122)中的数据包进行常规处理,并基于该数据包的原始数据包头将其通过网络端口送出所述交换机。
6.如权利要求5所述的通过回路对数据包高效完成隧道封装处理以及解封装的方法,其特征在于,所述的回路处理队列(123)中同时存在带有隧道封装头的数据包和不带有封装头的数据包。
全文摘要
本发明针对现有隧道处理技术中由交换机的系统CPU完成对数据包进行隧道封装以及解封装的处理过程,提供了通过回路以循环方式在交换芯片内部对数据包高效完成隧道封装和解封装处理的网络交换机和相应的处理方法。本发明提供的交换机的特征在于交换芯片包括专门用于隧道处理的特殊逻辑电路,用于存放相应的配置数据的内部存储设备,以及回路处理队列,使得对数据包进行封装和解封装的处理在交换芯片内直接完成,而不再从交换芯片传送给系统CPU,因此大大提高了网络交换机对数据包进行隧道处理的效率。
文档编号H04L12/56GK1960324SQ200510119389
公开日2007年5月9日 申请日期2005年11月2日 优先权日2005年11月2日
发明者古陶, 张卫峰, 孙剑勇, 郑晓阳 申请人:盛科网络有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1