包处理方法以及包处理装置制造方法

文档序号:7806571阅读:292来源:国知局
包处理方法以及包处理装置制造方法【专利摘要】本发明提供一种包处理方法及包处理装置。包处理方法包含有接收针对输入包所做的转发决定,在包处理列表的第一区的输出端口栏位中记录第一信息,用于指示多个第一输出端口;在包处理列表的第一区的共同处理栏位中记录第二信息,用于指示多个第一包处理操作所共享的共同处理操作;以及在包处理列表的第一区的个别处理栏位中记录第三信息,用于指示多个第一包处理操作的个别处理操作。本发明的包处理方法及包处理装置可使用包处理框架来提供灵活的包修改及/或包复制。【专利说明】包处理方法以及包处理装置【【
技术领域
】】[0001]本发明所揭露的实施例有关于包转发(packetforwarding),特别是指一种包处理方法,用于依据基于针对输入包的转发决定所建立的包处理列表来处理输入包。【【
背景技术
】】[0002]网络交换器通常指连结不同电子装置的电脑网络装置。举例来说,网络交换器可以接收从其所连接的源电子装置所产生的输入包,并将自所接收到的该输入包衍生出的输出包发送给一个或是多个用于接收该接收到的输入包的原始的或者经过修改过的有效载荷(payload)数据的目的电子装置。一般来说,该网络交换器具有包缓冲器用于缓冲从输入端口所接收的包的包数据,并将储存于包缓冲器中的包从输出端口转发出去。若是有连接于网络交换机的不同输出端口的一组目的电子装置要求相同的包时,可从连接于该网络装置的一个输入端口的源电子装置得到请求的包,也称为组播(multicast)包。且该网络交换器会执行组播操作以传达该请求包的原始或是变更版本给该组目的电子装置。在现今的包交换器中,提供灵活且客制化的包转发/修改为关键的差异。因此,需要一种新颖的包交换器设计,其能支持灵活的包修改及/或包复制。【【
发明内容】】[0003]有鉴于此,本发明特提供以下技术方案:[0004]本发明实施例提供一种包处理方法,包含有接收针对输入包所做的转发决定;以及依据转发决定来建立输入包的包处理列表,其中建立包处理列表的步骤包含有:当转发决定指出输入包需要经过多个第一包处理操作,其中每一第一包处理操作包含有共同处理操作以及个别处理操作,以分别经由多个第一输出端口来产生多个第一输出包转发时:在包处理列表的第一区的输出端口栏位中记录第一信息,用于指不多个第一输出端口;在包处理列表的第一区的共同处理栏位中记录第二信息,用于指示多个第一包处理操作所共享的共同处理操作;以及在包处理列表的第一区的个别处理栏位中记录第三信息,用于指示多个第一包处理操作的个别处理操作。[0005]本发明实施例另提供一种包处理方法,包含有接收输入包;接收针对输入包所建立的包处理列表;以及通过依据包处理列表来处理输入包,以产生多个第一输出包,其中产生多个第一输出包的步骤包含有:从包处理列表的第一区的输出端口栏位中读取第一信息,第一信息指不多个第一输出端口;从包处理列表的第一区的共同处理栏位中读取第二信息,第二信息指示共同处理操作;从包处理列表的第一区的个别处理栏位中读取第三信息,第三信息用于指示分别涉及产生多个第一输出包的多个个别处理操作;以及针对输入包执行多个第一包处理操作,其中每一第一包处理操作包含有共同处理操作以及一个对应个别处理操作,以分别产生多个第一输出包至多个第一输出端口。[0006]本发明实施例又提供一种包处理装置,包含有转发决定产生电路,用来针对输入包产生转发决定;以及包处理列表建立电路,用来接收转发决定,以及依据转发决定来建立输入包的包处理列表;其中当转发决定指出输入包需要经过多个第一包处理操作,其中每一第一包处理操作包含有共同处理操作以及个别处理操作,以分别经由多个第一输出端口来产生多个第一输出包转发时,包处理列表建立电路在包处理列表的第一区的输出端口栏位中记录第一信息,用于指示多个第一输出端口;在包处理列表的第一区的共同处理栏位中记录第二信息,用于指示多个第一包处理操作所共享的共同处理操作;以及在包处理列表的第一区的个别处理栏位中记录第三信息,用于指示多个第一包处理操作的个别处理操作。[0007]本发明实施例又提供一种包处理装置,包含有包处理列表建立电路,用来针对输入包建立包处理列表;以及包处理电路,用来接收输入包以及包处理列表,并通过依据包处理列表来处理输入包,以产生多个第一输出包;其中包处理电路从包处理列表的第一区的输出端口栏位中读取第一信息,第一信息指不多个第一输出端口;从包处理列表的第一区的共同处理栏位中读取第二信息,第二信息指示共同处理操作;从包处理列表之第一区的个别处理栏位中读取第三信息,第三信息用于指示分别涉及产生多个第一输出包的多个个别处理操作;以及针对输入包执行多个第一包处理操作,其中每一第一包处理操作包含有共同处理操作以及一个对应个别处理操作,以分别产生多个第一输出包至多个第一输出端□。[0008]以上所述的视频产生装置、视频产生方法及显示装置可提供高图像质量并降低设计复杂度,从而降低相关系统的成本。[0009]【【专利附图】【附图说明】】(图X,而非第X图)[0010]图1为本发明中使用所提出的包处理框架的包处理装置的实施例的示意图。[0011]图2为本发明中包处理列表的数据结构的实施例的示意图。[0012]图3为本发明组播表格的数据结构的实施例的示意图。[0013]图4为本发明命令链节点的数据结构的实施例的示意图。[0014]图5为本发明命令桶阵列的数据结构的实施例的示意图。[0015]图6为本发明具有两群作用的包处理列表的实施例的示意图。[0016]图7描绘了基于图6的包处理列表来产生输出包至输出端口的包修改顺序。[0017]图8描绘了基于图6的包处理列表来产生输出包至另一输出端口的包修改顺序。[0018]图9描绘了基于图6的包处理列表来产生输出包至又一输出端口的包修改顺序。[0019]图10为本发明每端口群组命令执行方法的实施例的流程图。【【具体实施方式】】[0020]在说明书及权利要求书当中使用了某些词汇来指称特定的组件。所属领域中的技术人员应可理解,制造商可能会用不同的名词来称呼同样的组件。本说明书及权利要求书并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的基准。在通篇说明书及权利要求书当中所提及的「包含」是开放式的用语,故应解释成「包含但不限定于」。另外,「耦接」一词在此包含任何直接及间接的电气连接手段。因此,若文中描述第一装置耦接于第二装置,则代表第一装置可直接电气连接于第二装置,或透过其它装置或连接手段间接地电气连接至第二装置。[0021]本发明的主要精神是使用包处理框架(framework)来提供灵活的包修改及/或包复制。举例来说,本发明提出建立及使用新颖的包处理列表来实现灵活的包修改及/或包复制。基于远端控制器所提供的命令来启动弹性处理对于突发的软件定义网(SoftwareDefinedNetwork,SDN)应用有相当的实用性。进一步的细节将详叙如下。[0022]图1为依据本发明实施例的使用所提出的包处理框架的包处理装置的示意图。以下说明仅为范例,但并不限于此,包处理装置100可以是网络交换器或是任何支持包修改功能及/或包复制功能的电子装置。在此实施例中,包处理装置100包含有但不限定于接收器(RX)模块102、转发决定产生电路104、包处理列表(PPL)建立电路106、存储装置107、包队列/调度电路108、包处理电路110以及传送器(TX)模块112。当接收器模块102从包处理装置100的输入端口Pc/?PM’的其中之一接收输入包PKTin时,转发决定产生电路104会分析输入包PKTin的报头信息。举例来说,转发决定产生电路104可采用表格查找的方式来决定如何修改及/或复制输入包PKTin以产生输出包给指定的输出端口,并据以产生针对输入包PKTin的转发决定FD。其中转发决定FD可包含相关于应用于输入包PKTin的包修改及/或包复制的信息。由于转发决定FD可用许多传统的方法得到,因此进一步的叙述将不在此多作赘述。[0023]包处理列表建立电路106从转发决定产生电路104接收转发决定FD,并且依据转发决定FD来建立输入包PKTin的包处理列表PPL。具体地说,包处理列表PPL基于转发决定FD所给出的包修改信息及/或包复制信息来建立。[0024]请参考图2,图2为依据本发明实施例的包处理列表的数据结构的示意图。基于针对每一输入包PKTin的转发决定FD,一个包处理列表PPL可包含一个或多个区。在一实施例中,包处理列表PPL具有多个区,包含第一区202_1以及第二区202_2。第一区202_1包含有输出端口栏位204_1、共同处理栏位206_1以及个别处理栏位208_1。第二区202_2包含有输出端口栏位204_2、共同处理栏位206_2以及个别处理栏位208_2。应注意的是,建立来用于待被转发的一个输入包的包处理列表中所包含有区的数目,以及每一区中所包含的数据栏位的数目在此仅供说明之用,并不加以限定。例如图2中的包处理列表PPL可进一步包含另一区依附在第二区202_2。又例如第一区202_1和第二区202_2可分别包含额外的数据栏位,例如服务类别栏位(classofservice,CoS)。[0025]当转发决定FD指出输入包PKTin需要经过多个第一包处理操作,其中每一第一包处理操作包含有共同处理操作以及个别处理操作,以产生多个第一输出包PKTTOT_11?PKTQUT_1J,其中多个第一输出包PKTQUT_11?PKTQUT_1J经由从包处理装置100的输出端口P0?Pm所选出的多个第一输出端口来分别转发。包处理列表建立电路106在包处理列表PPL的第一区202_1的输出端口栏位204_1中记录第一信息INF11,用于指不该多个第一输出端口;在包处理列表PPL的第一区202_1的共同处理栏位206_1中记录第二信息INF12,用于指示该多个第一包处理操作所共享的该共同处理操作;以及在包处理列表PPL的第一区202_1的个别处理栏位208_1中记录第三信息INF13,用于指示该多个第一包处理操作的个别处理操作。[0026]在第一区202_1能够记录需要用来处理输入包PKTin的所有包处理操作的情况下,包处理列表PPL可以仅具有单一区(例如第一区202_1)。在另一种情况下,输入包PKTin需要经过上述第一包处理操作以及多个第二包处理操作,且每一第二包处理操作包含有该共同处理操作(由该多个第一和第二包处理操作所共用),另一共同处理操作(由所有第二包处理操作所共用但不包含于任一该多个第一包处理操作中),以及个别处理操作,可以使用第二区202_2。具体而言,当转发决定FD进一步指出输入包PKTin需要经过该多个第二包处理操作,每一第二包处理操作包含有共同处理操作、另一共同处理操作以及个别处理操作,以产生多个第二输出包PKT0UT_21?PKT0UT_2K经由从包处理装置100的输出端口P。?Pm所选出的多个第二输出端口来分别转发。包处理列表建立电路106在包处理列表PPL的第二区202_2的输出端口栏位204_2中记录第四信息INF21,用于指示该多个第二输出端口;在包处理列表PPL之第二区202_2的共同处理栏位206_2中记录第五信息INF22,用于指示该多个第二包处理操作所共享且该多个第一包处理操作不包含的该另一共同处理操作;以及在包处理列表PPL的第二区202_2的个别处理栏位208_2中记录第六信息INF23,用于指示该多个第二包处理操作的个别处理操作。[0027]如上所述,该多个第一包处理操作所共用的该共同处理操作也被该多个第二包处理操作所共用。然而,该多个第二包处理操作所共用的该共同处理操作并未被该多个第一包处理操作所共用。在此实施例中,共同处理栏位206_2中的第五信息INF22并未指示该多个第一包处理操作和第二包处理操作所共用的该共同处理操作,而仅指示被该多个第二包处理操作所共用且不被该多个第一包处理操作所共用的该共同处理操作。具体而言,依据所提出的包处理列表设计,第二区202_2具有继承自第一区202_1的共同处理操作。更具体地说,后面的区会有继承自前面的区的共同处理操作,加上并非继承自任一区的共同处理操作。因此,关于每一第二包处理操作,第一区202_1中的共同处理栏位206j中的第二信息INF12,以及第二区202_2中的共同处理栏位206_2中的第五信息INF22应该一起纳入考虑。[0028]另外,为通知随后的包处理电路110同一包处理列表PPL中的区的顺序,间断点被用来标记每一区的结束位置。如图1所示,间断点BP1指示第一区202_1的结束位置,而间断点BP2指示第二区202_2的结束位置。由于间断点BP1位于间断点BP2之前,故在产生输出包PKTqut_21?PKTqut_2K时,应考虑从间断点BP1之前的共用处理栏位以及从间断点BPi和间断点BP2之间的共用处理栏位得到的命令。[0029]在一示范性设计中,第一信息INF11以及第四信息INF21可分别为端口位映射图(portbitmap,PBM)。如图1所示,包处理装置100具有输出端口P。?PM。因此,该端口位映射图具有位长度M相等于输出端口Ptl?Pm的数目。该端口位映射图的每一个位位置可以对应至输出端口P。?Pm其中之一的一位。除此之外,可以通过条件标记(condit1nflag)来设定该端口位映射图的每一位位置,该条件标记用来指示相对应输出端口是否被选为输出一个输出包。举例来说,当设定一个位位置处的位为‘I’时,该位位置的条件标记会被认定(assert);当设定位位置处的位为‘0’时,该位位置的条件标记会被解除认定(deassert)。[0030]因此,可以使用M位的端口位映射图,并将J个位设定为‘I’,且将其余位设定为‘0’以指示选为输出第一输出包PKTQUT_11?PKTQUT_1J的多个第一输出端口。相似地,可以使用M位的端口位映射图,并将K个位设定为‘1’,且将其余位设定为‘0’以指示选为输出第二输出包PKTqut_21?PKTqut_2K的多个第二输出端口。请注意,基于每一输入包的转发决定,多个第一输出端口可以完全不同于多个第二输出端口,或是多个第一输出端口中的一个或是更多可以包含在多个第二输出端口中。换句话说,根据输入包PKTin的实际转发决定FD,利用第一包处理操作对输入包PKTin进行处理所产生的输出包,以及利用第二包处理操作对同一输入包PKTin进行处理所产生的另一输出包可以经由相同输出端口或者不同输出端口来被转发。[0031]在一示范性设计中,第二信息INF12会记录多个第一包处理操作所共用(或是多个第一和第二包处理操作所共用)的共同处理操作的每一包处理命令CMD(图中标记为CMD(S)),或是记录命令桶(commandbucket)指标CMD_pkt_ptr,其指向储存于存储装置107的命令桶阵列118中的命令桶119CMD_bkt,以及命令桶119CMD_bkt储存多个第一包处理操作所共用(或是多个第一和第二包处理操作所共用)的共同处理操作的每一包处理命令。[0032]相似地,第五信息INF22会记录该多个第二包处理操作所共用但不为第一包处理操作所共用的另一共同处理操作的每一包处理命令CMD(图中标记为CMD⑸),或是记录命令桶指标CMD_pkt_ptr,其指向命令桶阵列118中的命令桶119CMD_bkt,以及命令桶119CMD_bkt储存多个第二包处理操作所共用但不为第一包处理操作所共用的另一共同处理操作的每一包处理命令。[0033]如上所述,第三信息INF13指示多个第一包处理操作的个别处理操作,第六信息INF23指示多个第二包处理操作的个别处理操作。在一示范性设计中,第三信息INF13可在储存于存储装置107中的组播表格(multicasttable)114中记录项目的索引值Group_idx,好让多个第一包处理操作的个别处理操作能够间接通过组播表格114的方式来决定。相似地,第六信息INF23可在储存于存储装置107中的组播表格114中记录项目的索引值Group_idx,好让多个第二包处理操作的个别处理操作能够间接通过组播表格114的方式来决定。[0034]请参考图3,图3为本发明组播表格的数据结构的实施例的示意图。在此实施例中,组播表格114有多个项目(例如302_1、302_2、302_3)分别通过多个不同索引值来索引(例如Group_idx=0、Group_idx=l、Group_idx=2),且每一项目相关于对应至少一个输出端口的至少一个组播列表(multicastlist,简写为ML)。举例来说,组播表格114的第一项目302_1至少包含指向分别对应于输出端口P1I2和Pm的组播列表MLc1PMLc^MLcim的组播列表指标ML_ptr_01、ML_ptr_02以及ML_ptr_0M;组播表格114的第二项目302_2至少包含分别指向对应于输出端口P。和P1的组播列表ML1Q、ML11的组播列表指标ML_ptr_10以及ML_ptr_ll;组播表格114的第三项目302_3至少包含分别指向对应于输出端口P1和P2的组播列表ML2tl、ML22的组播列表指标ML_ptr_20以及ML_ptr_22。[0035]组播表格114中每一组播列表都具有命令链节点(commandchainnode,CCN)指标CCN_ptr,命令链节点指标CCN_ptr指向储存于存储装置107的命令链节点116。请参考图4,图4为本发明命令链节点的数据结构的实施例的示意图。每一命令链节点具有至少一个命令桶指标,每一命令桶指标指向具有对应至涉及产生输出包的个别处理操作的命令桶。举例来说,每一命令链节点都允许具有至多四个命令桶指标。如图4所示,命令链节点116_1具有两个命令桶指标CMD_bkt_ptrO、CMD_bkt_ptrl,指向命令桶阵列118中的两个命令桶119,以及命令链节点116_2具有三个命令桶指标CMD_bkt_ptrO’、CMD_bkt_ptrl’以及CMD_bkt_ptrl2,指向命令桶阵列118中的三个命令桶119。[0036]请参考图5,图5为本发明命令桶阵列的数据结构的实施例的示意图。命令桶阵列118具有多个命令桶(例如119_1、119_2、119_3、119_4、119_5)。在此实施例中,命令桶阵列118中每一命令桶都具有32字节,且命令桶中的每一命令都具有8字节。因此,每一命令桶被允许具有至多四个命令CMDpCMDpCMDyCMD315在此实施例中,命令CmDcZCMD1AMD2/CMD3可以是“插入”命令,用来增加某个新信息到包中;可以是“删除”命令,用来从包移除某个现有信息;或是可以是“修改”命令,用来修改包中某个现有信息。[0037]为了使用所提出的包处理列表来进一步加强包修改及/或包复制的弹性,所提出的包处理框架会支持组播列表链、命令链节点链、及/或命令桶链。关于组播列表链,请再次参考图3。除了命令链节点指标CCN_ptr外,组播列表可进一步具有下一组播列表指标Next_ML_ptr。在对应特定输出端口的第一组播列表的下一组播列表指标Next_ML_ptr被设定为空(图中标记为NULL)值的情况下,输出包会基于被第一组播列表的命令链节点指标CCN_ptr所指向的命令链节点,来透过处理输入包PKTin来产生至特定输出端口。在另一*清况下,对应该特定输出端口的第一组播列表的下一组播列表指标Next_ML_ptr被设定为有效指标值以指向第二组播列表,输出包会基于被第一组播列表的命令链节点指标CCN_Ptr所指向的命令链节点,来透过处理输入包PKTin来产生至特定输出端口,以及另一输出包会基于被连接至第一组播列表的第二组播列表的命令链节点指标CCN_ptr所指向的命令链节点,来透过处理输入包PKTin来产生至同一特定输出端口。简而言之,每一组播列表都代表应用于输入包PKTin的一个个别包修改/复制操作。[0038]关于该命令链节点链的操作请再次参考图4,如图4所示,命令链节点116_1具有下一命令链节点指标Next_CCN_ptr,下一命令链节点指标Next_CCN_ptr指向命令链节点116_2。因此,当依据被选择的组播列表中的命令链节点指标CCN_ptr而选择命令链节点116_1时,命令链节点116_1和命令链节点116_2所包含的所有的命令桶指标CMD_bkt_ptrO、CMD_bkt_ptrl、CMD_bkt_ptrO’、CMD_bkt_ptrl’、CMD_bkt_ptr2’都会被选用。[0039]关于命令桶指标链的操作,请再次参考图5。如图5所示,在命令桶119_1的结束部分有下一命令桶指标Ptr。举例来说,命令桶119_1可具有3个命令CMDtl?CMD2以及下一命令桶指标Ptr。在此实施例中,下一命令桶指标Ptr会指向介于命令桶119_2和命令桶119_4之间的命令桶119_3。因此,当依据被选择的命令链节点中的命令桶指标而选择命令桶119_1时,命令桶119_1和命令桶119_3所储存的所有的命令都会被选用。[0040]请再次参考图1。输入包PKTin和相关包处理列表PPL都会被排入在包队列/调度电路108的多个输出队列中的一个当中。包队列/调度电路108产生调度决定来调度针对输出队列执行的出列操作以将包以及相关包处理列表PPL从输出包出列。当输入包PKTin以及相关包处理列表PPL都出列后,后续包处理电路110便会基于其包处理列表PPL来针对输入包PKTin执行包修改及/或包复制,接着发出多个修改后输入包(即输出包)经由传送器模块112至输出端口。举例来说,输出包PKTQUT_11?PKTQUT_1J是通过基于包处理列表PPL的第一区202_1提供的完整包处理信息来处理输入包PKTin所产生,以及输出包ΡΚΤουτ_21?PKTqut_2K是通过基于包处理列表PPL的第一区202_1提供的部分包处理信息(例如第一区202_1中的共同处理栏位206j中的第二信息INF12)以及包处理列表PPL的第二区202_2提供的完整包处理信息来处理同一输入包PKTin所产生。[0041]为了更清楚地解释本发明的技术特征,以下将以基于一个输入包以及针对该输入包所建立的包处理列表来产生输出包为例作为说明。[0042]请参考图6,图6为本发明具有两个群作用(groupact1n)的包处理列表的实施例的示意图。在此范例中,包处理列表中有两个群作用,包处理列表中的第一区描述了输出端口(端口#1和端口#2)和服务类别栏位(高)(在图6中标记为CoS=High),并进一步描述了“修改”命令(M0D#1)用于共同包处理以及群作用(Gr0Up_idx#l=O)用于个别包处理。包处理列表的第二区描述了输出端口(端口#0和端口#2)和服务类别栏位(中)(在图6中标记为CoS=Med),并进一步描述了命令桶指标(CMD_bkt_ptr=5)用于共同包处理以及群作用(Group_idx#2=2)用于个别包处理。在包处理电路110中,包处理列表的第一区会首先被执行。Group_idx#l和PBM#1用来索引组播表格以得到两个组播列表,其包含指向命令链节点#1(端口#1)以及命令链节点#2(端口#2)的命令链节点指标。在命令链节点#1中,有两个命令桶指标来分别得到两个命令桶MODA和MODC。在命令链节点#2中,有两个命令桶指标来分别指向两个命令桶MODB和MODC。[0043]接着,包处理列表的第二区会被执行。Group_idX#2和PBM#2用来索引组播表格以得到两个组播列表,其包含指向命令链节点#3以及命令链节点#5的命令链节点指标,其中命令链节点#4经由命令链节点链来链结至命令链节点#3。在命令链节点#3中,有三个命令桶指标来分别得到三个命令桶MODA、M0DB和MODC,其中命令桶MODA经由命令桶链结来链结至命令桶MODA-1。在命令链节点#4中,有一个命令桶指标来得到一个命令桶MODZ0在命令链节点#5中,有一个命令桶指标来得到一个命令桶MODX。[0044]关于产生输出包的第一群组的操作,包处理电路110会依序执行第一区所描述的共同处理操作(即“修改”命令(M0D#1)),以及第一区中所描述的个别处理操作(即基于Group_idx#l所得到的命令桶)。[0045]关于产生输出包的第二群组的操作,包处理电路110会依序执行第一区所描述的共同处理操作(即“修改”命令(M0D#1)),第二区所描述的共同处理操作(即“修改”命令(M0D#2)),以及第二区中所描述的个别处理操作(即基于Gr0Up_idx#2所得到的命令桶)。[0046]如上所述,第三信息INF13/第六信息INF23可记录组播表格114中的项目的索引值Group_idx。因此,会基于透过针对组播表格114执行表格查找操作所选择到的命令链节点来决定个别处理操作。然而此并非为本发明的限制。又或者是可以直接通过至少一个命令链节点指标(未描绘于图中)来设定上述索引值Group_idx,这样一来便不需要组播表格查找的动作。简而言之,第三信息INF13/第六信息INF23也可视实际设计考虑用来记录命令链节点指标,且都属于本发明的权利范围。[0047]图7描绘了基于图6所示的包处理列表来产生输出包(例如PKTot^ZI以及ΡΚΤουτ_22)至输出端口(例如端口#0)的包修改顺序。其中第一区的共同处理栏位中的“修改”命令M0D#1、经由第二区的共同处理栏位中的命令包指标CMD_pkt_ptr=5得到的命令桶MODD、以及经由第二区的个别处理栏位中索引为Gr0Up_idx#2的组播列表以及第二区的输出端口栏位中的端口#0得到的命令链节点#3的命令桶被依序地执行,以修改入口包来产生输出包I。此外,第一区的共同处理栏位中的“修改”命令MOD#1、经由第二区的共同处理栏位中的命令包指标CMD_pkt_ptr=5得到的命令桶MODD、以及依据组播列表链结得到的命令链节点#4的命令桶会依序地被执行以修改同一入口包来产生输出包ΡΚΤουτ_22。[0048]图8描绘了基于图6中的包处理列表来产生输出包(例如PKTQUT_11)至另一输出端口(例如端口#1)的包修改顺序。其中第一区的共同处理栏位中的“修改”命令M0D#1、以及经由第一区的个别处理栏位中索引为Gr0Up_idx#l的组播列表以及第一区的输出端口栏位中的端口#1得到的命令链节点#1的命令桶被依序地执行,以修改同一入口包来产生输出包PKTQUT_11。[0049]图9描绘了基于图6中的包处理列表来产生输出包(例如以及ΡΚΤουτ_23)至又另一输出端口(例如端口#2)的包修改顺序。其中第一区的共同处理栏位中的“修改”命令MOD#1、以及经由第一区的个别处理栏位中索引为Group_idx#I的组播列表以及第一区的输出端口栏位中的端口#2得到的命令链节点#2的命令桶被依序地执行,以修改同一入口包来产生输出包PKToUT_12。此外,第一区的共同处理栏位中的“修改”命令M0D#1、经由第二区的共同处理栏位中的命令包指标CMD_pkt_ptr=5得到的命令桶MODD、以及经由第二区的个别处理栏位中索引为Gr0Up_idx#2的组播列表以及第二区的输出端口栏位中的端口#2得到的命令链节点#5的命令桶会依序地被执行以修改同一入口包来产生输出包PKTqut_23。[0050]图10为本发明每端口(per-port)群组命令执行方法的实施例的流程图。倘若大体上可达到相同的结果,并不一定需要按照图10所示的流程中的步骤顺序来进行,且图10所示的步骤不一定要连续进行,也就是说,其他步骤也可插入其中。此外,图10中的某些步骤可根据不同实施例或设计需求省略掉。在本发明的一个较佳实施例中,包处理电路110可包含有多个包处理引擎,其中每一个都可产生输出包至输出端口。因此,当产生一个或是多个包至相对应输出端口时,每一包处理引擎可采用每端口群组命令执行方法来将个别处理操作应用于输入包PKTIN。举例来说,包中的每一区以群组索引(即记录于个别处理栏位的索引值)作为结束,且在每一物理输出端口多个群组索引会依序被执行。然而,以上仅供说明的用途,并非为本发明的限制。任何采用所提出的包处理框架的电子装置都落入本发明的权利范围之中。[0051]每端口群组命令执行方法可以归纳如下:[0052]步骤1000:开始。[0053]步骤1002:使用群组索引来从组播表格得到组播列表。[0054]步骤1004:使用组播列表来得到命令链节点。[0055]步骤1006:依据命令链节点来从命令桶阵列得到命令桶。若命令链节点未使用命令链节点链,可仅基于命令链节点来得到命令桶;且若命令链节点有使用命令链节点链,可基于命令链节点及链接至命令链节点的额外命令链节点来得到命令桶。[0056]步骤1008:依据所得到的命令桶来修改输入包,并将修改后的输入包(即输出包)输出。[0057]步骤1010:检查是否有下一组播列表被组播列表链所链接。若是,则进入步骤1012;否则进入步骤1014。[0058]步骤1012:使用下一组播列表来得到命令链节点。进入步骤1006。[0059]步骤1014:检查是否有下一群组索引尚未处理。若是,则进入步骤1016;否则进入步骤1018。[0060]步骤1016:使用下一群组索引来从组播表格得到组播列表。进入步骤1004。[0061]步骤1018:结束。[0062]如图10中所示的每端口群组命令执行方法,会依序处理针对输入包建立的包处理列表中的群组索引,以及依序处理相关于相同群组索引的组播列表,以及依序处理相关于相同组播列表的命令链节点。此外,每次处理组播列表的时候都会产生修改的输入包。本领域技术人员在阅读过上述记载于图10中的每一步骤后,应能了解其中的细节,故在此不再针对其中的说明多作赘述。[0063]以上所述仅为本发明的较佳实施例,本领域相关的技术人员依据本发明的精神所做的等效变化与修改,都应当涵盖在权利要求书内。【权利要求】1.一种包处理方法,包含有:接收针对输入包所做的转发决定;以及依据所述转发决定来建立所述输入包的包处理列表,其中建立所述包处理列表的步骤包含有:当所述转发决定指出所述输入包需要经过多个第一包处理操作,其中每一第一包处理操作包含有共同处理操作以及个别处理操作,以分别经由多个第一输出端口来产生多个第一输出包转发时:在所述包处理列表的第一区的输出端口栏位中记录第一信息,用于指示所述多个第一输出端口;在所述包处理列表的所述第一区的共同处理栏位中记录第二信息,用于指示所述多个第一包处理操作所共享的所述共同处理操作;以及在所述包处理列表的所述第一区的个别处理栏位中记录第三信息,用于指示所述多个第一包处理操作的个别处理操作。2.根据权利要求1所述的包处理方法,其特征在于,所述第一信息是端口位映射图。3.根据权利要求1所述的包处理方法,其特征在于,所述第二信息记录所述共同处理操作的每一包处理命令。4.根据权利要求1所述的包处理方法,其特征在于,所述第二信息记录命令桶指标,其指向命令桶,以及所述命令桶储存所述共同处理操作的每一包处理命令。5.根据权利要求1所述的包处理方法,其特征在于,所述第三信息在组播表格中记录项目的索引值;所述项目相关于分别对应至所述多个第一输出端口的多个组播列表;每一组播列表都记录命令链节点指标;以及所述命令链节点指标指向具有至少一个命令桶指标的命令链节点,其中每一命令桶指标指向对应至涉及产生输出包的个别处理操作的命令桶。6.根据权利要求5所述的包处理方法,其特征在于,被所述命令链节点的所述至少一个命令桶指标的其中之一所指向的命令桶包含有指向下一命令桶的下一命令桶指标。7.根据权利要求5所述的包处理方法,其特征在于,所述多个组播列表的至少一个进一步包含有指向下一组播列表的下一组播列表指标;以及所述下一组播列表记录指向具有至少一个命令桶指标的命令链节点的命令链节点指标,其中所述至少一个命令桶指标指向对应至涉及产生另一输出包的另一个别处理操作的命令桶。8.根据权利要求5所述的包处理方法,其特征在于,所述命令链节点进一步具有下一命令链节点指标,所述下一命令链节点指标指向下一命令链节点,以及所述下一命令链节点具有至少一个命令桶指标,其中每一所述至少一个命令桶指标指向对应至涉及产生所述输出包的所述个别处理操作的命令桶。9.根据权利要求1所述的包处理方法,其特征在于,所述第三信息记录至少一个共同链节点指标,以及所述共同链节点指标指向具有至少一个命令桶指标的共同链节点,其中每一命令桶指标指向对应至涉及产生输出包的个别处理操作的命令桶。10.根据权利要求1所述的包处理方法,其特征在于,建立所述包处理列表的步骤进一步包含有:当所述转发决定进一步指示所述输入包需要经过多个第二包处理操作,其中每一第二包处理操作包含有所述共同处理操作、另一共同处理操作以及个别处理操作,以产生多个第二输出包经由多个第二输出端口分别转发时:在所述包处理列表的第二区的输出端口栏位中记录第四信息,用于仅指示所述多个第二输出端口;在所述包处理列表的所述第二区的共同处理栏位中记录第五信息,用于指示所述多个第二包处理操作所共享的所述另一共同处理操作;以及在所述包处理列表的所述第二区的个别处理栏位中记录第六信息,用于指示所述多个第二包处理操作的个别处理操作。11.一种包处理方法,包含有:接收输入包;接收针对所述输入包所建立的包处理列表;以及通过依据所述包处理列表来处理所述输入包,以产生多个第一输出包,其中产生所述多个第一输出包的步骤包含有:从所述包处理列表的第一区的输出端口栏位中读取第一信息,所述第一信息指不多个第一输出端口;从所述包处理列表的所述第一区的共同处理栏位中读取第二信息,所述第二信息指示共同处理操作;从所述包处理列表的所述第一区的个别处理栏位中读取第三信息,所述第三信息用于指示分别涉及产生所述多个第一输出包的多个个别处理操作;以及针对所述输入包执行多个第一包处理操作,其中每一第一包处理操作包含有所述共同处理操作以及一个对应个别处理操作,以分别产生所述多个第一输出包至所述多个第一输出端口。12.根据权利要求11所述的包处理方法,其特征在于,所述第一信息是端口位映射图。13.根据权利要求11所述的包处理方法,其特征在于,所述第二信息记录所述共同处理操作的每一包处理命令。14.根据权利要求11所述的包处理方法,其特征在于,所述第二信息记录命令桶指标,其指向命令桶,以及所述命令桶储存所述共同处理操作的每一包处理命令。15.根据权利要求11所述的包处理方法,其特征在于,所述第三信息在组播表格中记录项目的索引值;所述项目相关于分别对应至所述多个第一输出端口的多个组播列表;每一组播列表都记录命令链节点指标;以及所述命令链节点指标指向具有至少一个命令桶指标的命令链节点,其中每一命令桶指标指向对应至涉及产生输出包的个别处理操作的命令桶。16.根据权利要求15所述的包处理方法,其特征在于,被所述命令链节点的所述至少一个命令桶指标的其中之一所指向的命令桶包含有指向下一命令桶的下一命令桶指标。17.根据权利要求15所述的包处理方法,其特征在于,所述多个组播列表的至少一个进一步包含有指向下一组播列表的下一组播列表指标;以及所述下一组播列表记录指向具有至少一个命令桶指标的命令链节点的命令链节点指标,其中所述至少一个命令桶指标指向对应至涉及产生另一输出包的另一个别处理操作的命令桶。18.根据权利要求15所述的包处理方法,其特征在于,所述命令链节点进一步具有下一命令链节点指标,所述下一命令链节点指标指向下一命令链节点,以及所述下一命令链节点具有至少一个命令桶指标,其中每一所述至少一个命令桶指标指向对应至涉及产生所述输出包的所述个别处理操作的命令桶。19.根据权利要求11所述的包处理方法,其特征在于,所述第三信息记录至少一个共同链节点指标,以及所述共同链节点指标指向具有至少一个命令桶指标的共同链节点,其中每一命令桶指标指向对应至涉及产生输出包的个别处理操作的命令桶。20.根据权利要求11所述的包处理方法,进一步包含有:通过依据所述包处理列表来处理所述输入包,以产生多个第二输出包,其中产生所述多个第二输出包的步骤包含有:从所述包处理列表的第二区的输出端口栏位中读取第四信息,所述第四信息指示多个第二输出端口;从所述包处理列表之所述第二区的共同处理栏位中读取第五信息,所述第五信息仅指示另一共同处理操作;从所述包处理列表之所述第二区的个别处理栏位中读取第六信息,所述第六信息用于指示分别涉及产生所述多个第二输出包的多个个别处理操作;以及针对所述输入包执行多个第二包处理操作,其中每一第二包处理操作包含有所述共同处理操作、所述另一共同处理操作,以及一个对应个别处理操作,以分别产生所述多个第二输出包至所述多个第二输出端口。21.—种包处理装置,包含有:转发决定产生电路,用来针对输入包产生转发决定;以及包处理列表建立电路,用来接收所述转发决定,以及依据所述转发决定来建立所述输入包的包处理列表;其中当所述转发决定指出所述输入包需要经过多个第一包处理操作,其中每一第一包处理操作包含有共同处理操作以及个别处理操作,以分别经由多个第一输出端口来产生多个第一输出包转发时,所述包处理列表建立电路在所述包处理列表的第一区的输出端口栏位中记录第一信息,用于指示所述多个第一输出端口;在所述包处理列表的所述第一区的共同处理栏位中记录第二信息,用于指示所述多个第一包处理操作所共享的所述共同处理操作;以及在所述包处理列表的所述第一区的个别处理栏位中记录第三信息,用于指示所述多个第一包处理操作的个别处理操作。22.—种包处理装置,包含有:包处理列表建立电路,用来针对输入包建立包处理列表;以及包处理电路,用来接收所述输入包以及所述包处理列表,并通过依据所述包处理列表来处理所述输入包,以产生多个第一输出包;其中所述包处理电路从所述包处理列表的第一区的输出端口栏位中读取第一信息,所述第一信息指示多个第一输出端口;从所述包处理列表的所述第一区的共同处理栏位中读取第二信息,所述第二信息指示共同处理操作;从所述包处理列表之所述第一区的个别处理栏位中读取第三信息,所述第三信息用于指示分别涉及产生所述多个第一输出包的多个个别处理操作;以及针对所述输入包执行多个第一包处理操作,其中每一第一包处理操作包含有所述共同处理操作以及一个对应个别处理操作,以分别产生所述多个第一输出包至所述多个第一输出端口。【文档编号】H04L12/70GK104243300SQ201410275783【公开日】2014年12月24日申请日期:2014年6月19日优先权日:2013年6月20日【发明者】吕国正申请人:联发科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1