CN104243300B - 包处理方法以及包处理装置 - Google Patents
包处理方法以及包处理装置 Download PDFInfo
- Publication number
- CN104243300B CN104243300B CN201410275783.4A CN201410275783A CN104243300B CN 104243300 B CN104243300 B CN 104243300B CN 201410275783 A CN201410275783 A CN 201410275783A CN 104243300 B CN104243300 B CN 104243300B
- Authority
- CN
- China
- Prior art keywords
- bag
- list
- information
- pointer
- bag processing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/72—Routing based on the source address
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
- H04L12/1854—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with non-centralised forwarding system, e.g. chaincast
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供一种包处理方法及包处理装置。包处理方法包含有接收针对输入包所做的转发决定,在包处理列表的第一区的输出端口栏位中记录第一信息,用于指示多个第一输出端口;在包处理列表的第一区的共同处理栏位中记录第二信息,用于指示多个第一包处理操作所共享的共同处理操作;以及在包处理列表的第一区的个别处理栏位中记录第三信息,用于指示多个第一包处理操作的个别处理操作。本发明的包处理方法及包处理装置可使用包处理框架来提供灵活的包修改及/或包复制。
Description
【技术领域】
本发明所揭露的实施例有关于包转发(packet forwarding),特别是指一种包处理方法,用于依据基于针对输入包的转发决定所建立的包处理列表来处理输入包。
【背景技术】
网络交换器通常指连结不同电子装置的电脑网络装置。举例来说,网络交换器可以接收从其所连接的源电子装置所产生的输入包,并将自所接收到的该输入包衍生出的输出包发送给一个或是多个用于接收该接收到的输入包的原始的或者经过修改过的有效载荷(payload)数据的目的电子装置。一般来说,该网络交换器具有包缓冲器用于缓冲从输入端口所接收的包的包数据,并将储存于包缓冲器中的包从输出端口转发出去。若是有连接于网络交换机的不同输出端口的一组目的电子装置要求相同的包时,可从连接于该网络装置的一个输入端口的源电子装置得到请求的包,也称为组播(multicast)包。且该网络交换器会执行组播操作以传达该请求包的原始或是变更版本给该组目的电子装置。在现今的包交换器中,提供灵活且客制化的包转发/修改为关键的差异。因此,需要一种新颖的包交换器设计,其能支持灵活的包修改及/或包复制。
【发明内容】
有鉴于此,本发明特提供以下技术方案:
本发明实施例提供一种包处理方法,包含有接收针对输入包所做的转发决定;以及依据转发决定来建立输入包的包处理列表,其中建立包处理列表的步骤包含有:当转发决定指出输入包需要经过多个第一包处理操作,其中每一第一包处理操作包含有共同处理操作以及个别处理操作,以分别经由多个第一输出端口来产生多个第一输出包转发时:在包处理列表的第一区的输出端口栏位中记录第一信息,用于指示多个第一输出端口;在包处理列表的第一区的共同处理栏位中记录第二信息,用于指示多个第一包处理操作所共享的共同处理操作;以及在包处理列表的第一区的个别处理栏位中记录第三信息,用于指示多个第一包处理操作的个别处理操作。
本发明实施例另提供一种包处理方法,包含有接收输入包;接收针对输入包所建立的包处理列表;以及通过依据包处理列表来处理输入包,以产生多个第一输出包,其中产生多个第一输出包的步骤包含有:从包处理列表的第一区的输出端口栏位中读取第一信息,第一信息指示多个第一输出端口;从包处理列表的第一区的共同处理栏位中读取第二信息,第二信息指示共同处理操作;从包处理列表的第一区的个别处理栏位中读取第三信息,第三信息用于指示分别涉及产生多个第一输出包的多个个别处理操作;以及针对输入包执行多个第一包处理操作,其中每一第一包处理操作包含有共同处理操作以及一个对应个别处理操作,以分别产生多个第一输出包至多个第一输出端口。
本发明实施例又提供一种包处理装置,包含有转发决定产生电路,用来针对输入包产生转发决定;以及包处理列表建立电路,用来接收转发决定,以及依据转发决定来建立输入包的包处理列表;其中当转发决定指出输入包需要经过多个第一包处理操作,其中每一第一包处理操作包含有共同处理操作以及个别处理操作,以分别经由多个第一输出端口来产生多个第一输出包转发时,包处理列表建立电路在包处理列表的第一区的输出端口栏位中记录第一信息,用于指示多个第一输出端口;在包处理列表的第一区的共同处理栏位中记录第二信息,用于指示多个第一包处理操作所共享的共同处理操作;以及在包处理列表的第一区的个别处理栏位中记录第三信息,用于指示多个第一包处理操作的个别处理操作。
本发明实施例又提供一种包处理装置,包含有包处理列表建立电路,用来针对输入包建立包处理列表;以及包处理电路,用来接收输入包以及包处理列表,并通过依据包处理列表来处理输入包,以产生多个第一输出包;其中包处理电路从包处理列表的第一区的输出端口栏位中读取第一信息,第一信息指示多个第一输出端口;从包处理列表的第一区的共同处理栏位中读取第二信息,第二信息指示共同处理操作;从包处理列表之第一区的个别处理栏位中读取第三信息,第三信息用于指示分别涉及产生多个第一输出包的多个个别处理操作;以及针对输入包执行多个第一包处理操作,其中每一第一包处理操作包含有共同处理操作以及一个对应个别处理操作,以分别产生多个第一输出包至多个第一输出端口。
【附图说明】
图1为本发明中使用所提出的包处理框架的包处理装置的实施例的示意图。
图2为本发明中包处理列表的数据结构的实施例的示意图。
图3为本发明组播表格的数据结构的实施例的示意图。
图4为本发明命令链节点的数据结构的实施例的示意图。
图5为本发明命令桶阵列的数据结构的实施例的示意图。
图6为本发明具有两群作用的包处理列表的实施例的示意图。
图7描绘了基于图6的包处理列表来产生输出包至输出端口的包修改顺序。
图8描绘了基于图6的包处理列表来产生输出包至另一输出端口的包修改顺序。图9描绘了基于图6的包处理列表来产生输出包至又一输出端口的包修改顺序。图10为本发明每端口群组命令执行方法的实施例的流程图。
【具体实施方式】
在说明书及权利要求书当中使用了某些词汇来指称特定的组件。所属领域中的技术人员应可理解,制造商可能会用不同的名词来称呼同样的组件。本说明书及权利要求书并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的基准。在通篇说明书及权利要求书当中所提及的「包含」是开放式的用语,故应解释成「包含但不限定于」。另外,「耦接」一词在此包含任何直接及间接的电气连接手段。因此,若文中描述第一装置耦接于第二装置,则代表第一装置可直接电气连接于第二装置,或透过其它装置或连接手段间接地电气连接至第二装置。
本发明的主要精神是使用包处理框架(framework)来提供灵活的包修改及/或包复制。举例来说,本发明提出建立及使用新颖的包处理列表来实现灵活的包修改及/或包复制。基于远端控制器所提供的命令来启动弹性处理对于突发的软件定义网(SoftwareDefined Network,SDN)应用有相当的实用性。进一步的细节将详叙如下。
图1为依据本发明实施例的使用所提出的包处理框架的包处理装置的示意图。以下说明仅为范例,但并不限于此,包处理装置100可以是网络交换器或是任何支持包修改功能及/或包复制功能的电子装置。在此实施例中,包处理装置100包含有但不限定于接收器(RX)模块102、转发决定产生电路104、包处理列表(PPL)建立电路106、存储装置107、包队列/调度电路108、包处理电路110以及传送器(TX)模块112。当接收器模块102从包处理装置100的输入端口P0’~PM’的其中之一接收输入包PKTIN时,转发决定产生电路104会分析输入包PKTIN的报头信息。举例来说,转发决定产生电路104可采用表格查找的方式来决定如何修改及/或复制输入包PKTIN以产生输出包给指定的输出端口,并据以产生针对输入包PKTIN的转发决定FD。其中转发决定FD可包含相关于应用于输入包PKTIN的包修改及/或包复制的信息。由于转发决定FD可用许多传统的方法得到,因此进一步的叙述将不在此多作赘述。
包处理列表建立电路106从转发决定产生电路104接收转发决定FD,并且依据转发决定FD来建立输入包PKTIN的包处理列表PPL。具体地说,包处理列表PPL基于转发决定FD所给出的包修改信息及/或包复制信息来建立。
请参考图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可分别包含额外的数据栏位,例如服务类别栏位(class of service,CoS)。
当转发决定FD指出输入包PKTIN需要经过多个第一包处理操作,其中每一第一包处理操作包含有共同处理操作以及个别处理操作,以产生多个第一输出包PKTOUT_11~PKTOUT_1J,其中多个第一输出包PKTOUT_11~PKTOUT_1J经由从包处理装置100的输出端口P0~PM所选出的多个第一输出端口来分别转发。包处理列表建立电路106在包处理列表PPL的第一区202_1的输出端口栏位204_1中记录第一信息INF11,用于指示该多个第一输出端口;在包处理列表PPL的第一区202_1的共同处理栏位206_1中记录第二信息INF12,用于指示该多个第一包处理操作所共享的该共同处理操作;以及在包处理列表PPL的第一区
202_1的个别处理栏位208_1中记录第三信息INF13,用于指示该多个第一包处理操作的个别处理操作。
在第一区202_1能够记录需要用来处理输入包PKTIN的所有包处理操作的情况下,包处理列表PPL可以仅具有单一区(例如第一区202_1)。在另一种情况下,输入包PKTIN需要经过上述第一包处理操作以及多个第二包处理操作,且每一第二包处理操作包含有该共同处理操作(由该多个第一和第二包处理操作所共用),另一共同处理操作(由所有第二包处理操作所共用但不包含于任一该多个第一包处理操作中),以及个别处理操作,可以使用第二区202_2。具体而言,当转发决定FD进一步指出输入包PKTIN需要经过该多个第二包处理操作,每一第二包处理操作包含有共同处理操作、另一共同处理操作以及个别处理操作,以产生多个第二输出包PKTOUT_21~PKTOUT_2K经由从包处理装置100的输出端口P0~PM所选出的多个第二输出端口来分别转发。包处理列表建立电路106在包处理列表PPL的第二区202_2的输出端口栏位204_2中记录第四信息INF21,用于指示该多个第二输出端口;在包处理列表PPL之第二区202_2的共同处理栏位206_2中记录第五信息INF22,用于指示该多个第二包处理操作所共享且该多个第一包处理操作不包含的该另一共同处理操作;以及在包处理列表PPL的第二区202_2的个别处理栏位208_2中记录第六信息INF23,用于指示该多个第二包处理操作的个别处理操作。
如上所述,该多个第一包处理操作所共用的该共同处理操作也被该多个第二包处理操作所共用。然而,该多个第二包处理操作所共用的该共同处理操作并未被该多个第一包处理操作所共用。在此实施例中,共同处理栏位206_2中的第五信息INF22并未指示该多个第一包处理操作和第二包处理操作所共用的该共同处理操作,而仅指示被该多个第二包处理操作所共用且不被该多个第一包处理操作所共用的该共同处理操作。具体而言,依据所提出的包处理列表设计,第二区202_2具有继承自第一区202_1的共同处理操作。更具体地说,后面的区会有继承自前面的区的共同处理操作,加上并非继承自任一区的共同处理操作。因此,关于每一第二包处理操作,第一区202_1中的共同处理栏位206_1中的第二信息INF12,以及第二区202_2中的共同处理栏位206_2中的第五信息INF22应该一起纳入考虑。
另外,为通知随后的包处理电路110同一包处理列表PPL中的区的顺序,间断点被用来标记每一区的结束位置。如图1所示,间断点BP1指示第一区202_1的结束位置,而间断点BP2指示第二区202_2的结束位置。由于间断点BP1位于间断点BP2之前,故在产生输出包PKTOUT_21~PKTOUT_2K时,应考虑从间断点BP1之前的共用处理栏位以及从间断点BP1和间断点BP2之间的共用处理栏位得到的命令。
在一示范性设计中,第一信息INF11以及第四信息INF21可分别为端口位映射图(port bit map,PBM)。如图1所示,包处理装置100具有输出端口P0~PM。因此,该端口位映射图具有位长度M相等于输出端口P0~PM的数目。该端口位映射图的每一个位位置可以对应至输出端口P0~PM其中之一的一位。除此之外,可以通过条件标记(condition flag)来设定该端口位映射图的每一位位置,该条件标记用来指示相对应输出端口是否被选为输出一个输出包。举例来说,当设定一个位位置处的位为‘1’时,该位位置的条件标记会被认定(assert);当设定位位置处的位为‘0’时,该位位置的条件标记会被解除认定(deassert)。
因此,可以使用M位的端口位映射图,并将J个位设定为‘1’,且将其余位设定为‘0’以指示选为输出第一输出包PKTOUT_11~PKTOUT_1J的多个第一输出端口。相似地,可以使用M位的端口位映射图,并将K个位设定为‘1’,且将其余位设定为‘0’以指示选为输出第二输出包PKTOUT_21~PKTOUT_2K的多个第二输出端口。请注意,基于每一输入包的转发决定,多个第一输出端口可以完全不同于多个第二输出端口,或是多个第一输出端口中的一个或是更多可以包含在多个第二输出端口中。换句话说,根据输入包PKTIN的实际转发决定FD,利用第一包处理操作对输入包PKTIN进行处理所产生的输出包,以及利用第二包处理操作对同一输入包PKTIN进行处理所产生的另一输出包可以经由相同输出端口或者不同输出端口来被转发。
在一示范性设计中,第二信息INF12会记录多个第一包处理操作所共用(或是多个第一和第二包处理操作所共用)的共同处理操作的每一包处理命令CMD(图中标记为CMD(S)),或是记录命令桶(command bucket)指针CMD_bkt_ptr,其指向储存于存储装置107的命令桶阵列118中的命令桶119CMD_bkt,以及命令桶119CMD_bkt储存多个第一包处理操作所共用(或是多个第一和第二包处理操作所共用)的共同处理操作的每一包处理命令。
相似地,第五信息INF22会记录该多个第二包处理操作所共用但不为第一包处理操作所共用的另一共同处理操作的每一包处理命令CMD(图中标记为CMD(S)),或是记录命令桶指针CMD_bkt_ptr,其指向命令桶阵列118中的命令桶119CMD_bkt,以及命令桶119CMD_bkt储存多个第二包处理操作所共用但不为第一包处理操作所共用的另一共同处理操作的每一包处理命令。
如上所述,第三信息INF13指示多个第一包处理操作的个别处理操作,第六信息INF23指示多个第二包处理操作的个别处理操作。在一示范性设计中,第三信息INF13可在储存于存储装置107中的组播表格(multicast table)114中记录条目的索引值Group_idx,好让多个第一包处理操作的个别处理操作能够间接通过组播表格114的方式来决定。相似地,第六信息INF23可在储存于存储装置107中的组播表格114中记录条目的索引值Group_idx,好让多个第二包处理操作的个别处理操作能够间接通过组播表格114的方式来决定。
请参考图3,图3为本发明组播表格的数据结构的实施例的示意图。在此实施例中,组播表格114有多个条目(例如302_1、302_2、302_3)分别通过多个不同索引值来索引(例如Group_idx=0、Group_idx=1、Group_idx=2),且每一条目相关于对应至少一个输出端口的至少一个组播列表(multicast list,简写为ML)。举例来说,组播表格114的第一条目302_1至少包含指向分别对应于输出端口P1、P2和PM的组播列表ML01、ML02、ML0M的组播列表指针ML_ptr_01、ML_ptr_02以及ML_ptr_0M;组播表格114的第二条目302_2至少包含分别指向对应于输出端口P0和P1的组播列表ML10、ML11的组播列表指针ML_ptr_10以及ML_ptr_11;组播表格114的第三条目302_3至少包含分别指向对应于输出端口P1和P2的组播列表ML20、ML22的组播列表指针ML_ptr_20以及ML_ptr_22。
组播表格114中每一组播列表都具有命令链节点(command chain node,CCN)指针CCN_ptr,命令链节点指针CCN_ptr指向储存于存储装置107的命令链节点116。请参考图4,图4为本发明命令链节点的数据结构的实施例的示意图。每一命令链节点具有至少一个命令桶指针,每一命令桶指针指向具有对应至涉及产生输出包的个别处理操作的命令桶。举例来说,每一命令链节点都允许具有至多四个命令桶指针。如图4所示,命令链节点116_1具有两个命令桶指针CMD_bkt_ptr0、CMD_bkt_ptr1,指向命令桶阵列118中的两个命令桶119,以及命令链节点116_2具有三个命令桶指针CMD_bkt_ptr0’、CMD_bkt_ptr1’以及CMD_bkt_ptr12,指向命令桶阵列118中的三个命令桶119。
请参考图5,图5为本发明命令桶阵列的数据结构的实施例的示意图。命令桶阵列118具有多个命令桶(例如119_1、119_2、119_3、119_4、119_5)。在此实施例中,命令桶阵列118中每一命令桶都具有32字节,且命令桶中的每一命令都具有8字节。因此,每一命令桶被允许具有至多四个命令CMD0、CMD1、CMD2、CMD3。在此实施例中,命令CMD0/CMD1/CMD2/CMD3可以是“插入”命令,用来增加某个新信息到包中;可以是“删除”命令,用来从包移除某个现有信息;或是可以是“修改”命令,用来修改包中某个现有信息。
为了使用所提出的包处理列表来进一步加强包修改及/或包复制的弹性,所提出的包处理框架会支持组播列表链、命令链节点链、及/或命令桶链。关于组播列表链,请再次参考图3。除了命令链节点指针CCN_ptr外,组播列表可进一步具有下一组播列表指针Next_ML_ptr。在对应特定输出端口的第一组播列表的下一组播列表指针Next_ML_ptr被设定为空(图中标记为NULL)值的情况下,输出包会基于被第一组播列表的命令链节点指针CCN_ptr所指向的命令链节点,来透过处理输入包PKTIN来产生至特定输出端口。在另一情况下,对应该特定输出端口的第一组播列表的下一组播列表指针Next_ML_ptr被设定为有效指针值以指向第二组播列表,输出包会基于被第一组播列表的命令链节点指针CCN_ptr所指向的命令链节点,来透过处理输入包PKTIN来产生至特定输出端口,以及另一输出包会基于被连接至第一组播列表的第二组播列表的命令链节点指针CCN_ptr所指向的命令链节点,来透过处理输入包PKTIN来产生至同一特定输出端口。简而言之,每一组播列表都代表应用于输入包PKTIN的一个个别包修改/复制操作。
关于该命令链节点链的操作请再次参考图4,如图4所示,命令链节点116_1具有下一命令链节点指针Next_CCN_ptr,下一命令链节点指针Next_CCN_ptr指向命令链节点116_2。因此,当依据被选择的组播列表中的命令链节点指针CCN_ptr而选择命令链节点116_1时,命令链节点116_1和命令链节点116_2所包含的所有的命令桶指针CMD_bkt_ptr0、CMD_bkt_ptr1、CMD_bkt_ptr0’、CMD_bkt_ptr1’、CMD_bkt_ptr2’都会被选用。
关于命令桶指针链的操作,请再次参考图5。如图5所示,在命令桶119_1的结束部分有下一命令桶指针Ptr。举例来说,命令桶119_1可具有3个命令CMD0~CMD2以及下一命令桶指针Ptr。在此实施例中,下一命令桶指针Ptr会指向介于命令桶119_2和命令桶119_4之间的命令桶119_3。因此,当依据被选择的命令链节点中的命令桶指针而选择命令桶119_1时,命令桶119_1和命令桶119_3所储存的所有的命令都会被选用。
请再次参考图1。输入包PKTIN和相关包处理列表PPL都会被排入在包队列/调度电路108的多个输出队列中的一个当中。包队列/调度电路108产生调度决定来调度针对输出队列执行的出列操作以将包以及相关包处理列表PPL从输出包出列。当输入包PKTIN以及相关包处理列表PPL都出列后,后续包处理电路110便会基于其包处理列表PPL来针对输入包PKTIN执行包修改及/或包复制,接着发出多个修改后输入包(即输出包)经由传送器模块112至输出端口。举例来说,输出包PKTOUT_11~PKTOUT_1J是通过基于包处理列表PPL的第一区202_1提供的完整包处理信息来处理输入包PKTIN所产生,以及输出包PKTOUT_21~PKTOUT_2K是通过基于包处理列表PPL的第一区202_1提供的部分包处理信息(例如第一区202_1中的共同处理栏位206_1中的第二信息INF12)以及包处理列表PPL的第二区202_2提供的完整包处理信息来处理同一输入包PKTIN所产生。
为了更清楚地解释本发明的技术特征,以下将以基于一个输入包以及针对该输入包所建立的包处理列表来产生输出包为例作为说明。
请参考图6,图6为本发明具有两个群作用(group action)的包处理列表的实施例的示意图。在此范例中,包处理列表中有两个群作用,包处理列表中的第一区描述了输出端口(端口#1和端口#2)和服务类别栏位(高)(在图6中标记为CoS=High),并进一步描述了“修改”命令(MOD#1)用于共同包处理以及群作用(Group_idx#1=0)用于个别包处理。包处理列表的第二区描述了输出端口(端口#0和端口#2)和服务类别栏位(中)(在图6中标记为CoS=Med),并进一步描述了命令桶指针(CMD_bkt_ptr=5)用于共同包处理以及群作用(Group_idx#2=2)用于个别包处理。在包处理电路110中,包处理列表的第一区会首先被执行。Group_idx#1和PBM#1用来索引组播表格以得到两个组播列表,其包含指向命令链节点#1(端口#1)以及命令链节点#2(端口#2)的命令链节点指针。在命令链节点#1中,有两个命令桶指针来分别得到两个命令桶MOD A和MOD C。在命令链节点#2中,有两个命令桶指针来分别指向两个命令桶MOD B和MOD C。
接着,包处理列表的第二区会被执行。Group_idx#2和PBM#2用来索引组播表格以得到两个组播列表,其包含指向命令链节点#3以及命令链节点#5的命令链节点指针,其中命令链节点#4经由命令链节点链来链结至命令链节点#3。在命令链节点#3中,有三个命令桶指针来分别得到三个命令桶MOD A、MOD B和MOD C,其中命令桶MOD A经由命令桶链结来链结至命令桶MOD A-1。在命令链节点#4中,有一个命令桶指针来得到一个命令桶MOD Z。在命令链节点#5中,有一个命令桶指针来得到一个命令桶MOD X。
关于产生输出包的第一群组的操作,包处理电路110会依序执行第一区所描述的共同处理操作(即“修改”命令(MOD#1)),以及第一区中所描述的个别处理操作(即基于Group_idx#1所得到的命令桶)。
关于产生输出包的第二群组的操作,包处理电路110会依序执行第一区所描述的共同处理操作(即“修改”命令(MOD#1)),第二区所描述的共同处理操作(即“修改”命令(MOD#2)),以及第二区中所描述的个别处理操作(即基于Group_idx#2所得到的命令桶)。
如上所述,第三信息INF13/第六信息INF23可记录组播表格114中的条目的索引值Group_idx。因此,会基于透过针对组播表格114执行表格查找操作所选择到的命令链节点来决定个别处理操作。然而此并非为本发明的限制。又或者是可以直接通过至少一个命令链节点指针(未描绘于图中)来设定上述索引值Group_idx,这样一来便不需要组播表格查找的动作。简而言之,第三信息INF13/第六信息INF23也可视实际设计考虑用来记录命令链节点指针,且都属于本发明的权利范围。
图7描绘了基于图6所示的包处理列表来产生输出包(例如PKTOUT_21以及PKTOUT_22)至输出端口(例如端口#0)的包修改顺序。其中第一区的共同处理栏位中的“修改”命令MOD#1、经由第二区的共同处理栏位中的命令包指针CMD_pkt_ptr=5得到的命令桶MOD D、以及经由第二区的个别处理栏位中索引为Group_idx#2的组播列表以及第二区的输出端口栏位中的端口#0得到的命令链节点#3的命令桶被依序地执行,以修改入口包来产生输出包PKTOUT_21。此外,第一区的共同处理栏位中的“修改”命令MOD#1、经由第二区的共同处理栏位中的命令包指针CMD_pkt_ptr=5得到的命令桶MOD D、以及依据组播列表链结得到的命令链节点#4的命令桶会依序地被执行以修改同一入口包来产生输出包PKTOUT_22。
图8描绘了基于图6中的包处理列表来产生输出包(例如PKTOUT_11)至另一输出端口(例如端口#1)的包修改顺序。其中第一区的共同处理栏位中的“修改”命令MOD#1、以及经由第一区的个别处理栏位中索引为Group_idx#1的组播列表以及第一区的输出端口栏位中的端口#1得到的命令链节点#1的命令桶被依序地执行,以修改同一入口包来产生输出包PKTOUT_11。
图9描绘了基于图6中的包处理列表来产生输出包(例如PKTOUT_12以及PKTOUT_23)至又另一输出端口(例如端口#2)的包修改顺序。其中第一区的共同处理栏位中的“修改”命令MOD#1、以及经由第一区的个别处理栏位中索引为Group_idx#1的组播列表以及第一区的输出端口栏位中的端口#2得到的命令链节点#2的命令桶被依序地执行,以修改同一入口包来产生输出包PKTOUT_12。此外,第一区的共同处理栏位中的“修改”命令MOD#1、经由第二区的共同处理栏位中的命令包指针CMD_pkt_ptr=5得到的命令桶MOD D、以及经由第二区的个别处理栏位中索引为Group_idx#2的组播列表以及第二区的输出端口栏位中的端口#2得到的命令链节点#5的命令桶会依序地被执行以修改同一入口包来产生输出包PKTOUT_23。
图10为本发明每端口(per-port)群组命令执行方法的实施例的流程图。倘若大体上可达到相同的结果,并不一定需要按照图10所示的流程中的步骤顺序来进行,且图10所示的步骤不一定要连续进行,也就是说,其他步骤也可插入其中。此外,图10中的某些步骤可根据不同实施例或设计需求省略掉。在本发明的一个较佳实施例中,包处理电路110可包含有多个包处理引擎,其中每一个都可产生输出包至输出端口。因此,当产生一个或是多个包至相对应输出端口时,每一包处理引擎可采用每端口群组命令执行方法来将个别处理操作应用于输入包PKTIN。举例来说,包中的每一区以群组索引(即记录于个别处理栏位的索引值)作为结束,且在每一物理输出端口多个群组索引会依序被执行。然而,以上仅供说明的用途,并非为本发明的限制。任何采用所提出的包处理框架的电子装置都落入本发明的权利范围之中。
每端口群组命令执行方法可以归纳如下:
步骤1000:开始。
步骤1002:使用群组索引来从组播表格得到组播列表。
步骤1004:使用组播列表来得到命令链节点。
步骤1006:依据命令链节点来从命令桶阵列得到命令桶。若命令链节点未使用命令链节点链,可仅基于命令链节点来得到命令桶;且若命令链节点有使用命令链节点链,可基于命令链节点及链接至命令链节点的额外命令链节点来得到命令桶。
步骤1008:依据所得到的命令桶来修改输入包,并将修改后的输入包(即输出包)输出。
步骤1010:检查是否有下一组播列表被组播列表链所链接。若是,则进入步骤1012;否则进入步骤1014。
步骤1012:使用下一组播列表来得到命令链节点。进入步骤1006。
步骤1014:检查是否有下一群组索引尚未处理。若是,则进入步骤1016;否则进入步骤1018。
步骤1016:使用下一群组索引来从组播表格得到组播列表。进入步骤1004。
步骤1018:结束。
如图10中所示的每端口群组命令执行方法,会依序处理针对输入包建立的包处理列表中的群组索引,以及依序处理相关于相同群组索引的组播列表,以及依序处理相关于相同组播列表的命令链节点。此外,每次处理组播列表的时候都会产生修改的输入包。本领域技术人员在阅读过上述记载于图10中的每一步骤后,应能了解其中的细节,故在此不再针对其中的说明多作赘述。
以上所述仅为本发明的较佳实施例,本领域相关的技术人员依据本发明的精神所做的等效变化与修改,都应当涵盖在权利要求书内。
Claims (22)
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.一种包处理装置,包含有:
包处理列表建立电路,用来针对输入包建立包处理列表;以及
包处理电路,用来接收所述输入包以及所述包处理列表,并通过依据所述包处理列表来处理所述输入包,以产生多个第一输出包;
其中所述包处理电路从所述包处理列表的第一区的输出端口栏位中读取第一信息,所述第一信息指示多个第一输出端口;从所述包处理列表的所述第一区的共同处理栏位中读取第二信息,所述第二信息指示共同处理操作;从所述包处理列表之所述第一区的个别处理栏位中读取第三信息,所述第三信息用于指示分别涉及产生所述多个第一输出包的多个个别处理操作;以及针对所述输入包执行多个第一包处理操作,其中每一第一包处理操作包含有所述共同处理操作以及一个对应个别处理操作,以分别产生所述多个第一输出包至所述多个第一输出端口。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361837191P | 2013-06-20 | 2013-06-20 | |
US61/837,191 | 2013-06-20 | ||
US14/267,885 US20140376549A1 (en) | 2013-06-20 | 2014-05-01 | Packet processing apparatus and method for processing input packet according to packet processing list created based on forwarding decision made for input packet |
US14/267,885 | 2014-05-01 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104243300A CN104243300A (zh) | 2014-12-24 |
CN104243300B true CN104243300B (zh) | 2018-01-05 |
Family
ID=52110884
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410275783.4A Expired - Fee Related CN104243300B (zh) | 2013-06-20 | 2014-06-19 | 包处理方法以及包处理装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20140376549A1 (zh) |
CN (1) | CN104243300B (zh) |
TW (1) | TWI543575B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9172550B2 (en) * | 2013-07-19 | 2015-10-27 | Globalfoundries U.S. 2 Llc Company | Management of a multicast system in a software-defined network |
EP3047604B1 (en) | 2013-09-17 | 2021-03-24 | Cisco Technology, Inc. | Bit indexed explicit replication |
US10218524B2 (en) | 2013-09-17 | 2019-02-26 | Cisco Technology, Inc. | Bit indexed explicit replication for layer 2 networking |
US9806897B2 (en) | 2013-09-17 | 2017-10-31 | Cisco Technology, Inc. | Bit indexed explicit replication forwarding optimization |
US10461946B2 (en) | 2013-09-17 | 2019-10-29 | Cisco Technology, Inc. | Overlay signaling for bit indexed explicit replication |
JP6474710B2 (ja) * | 2015-11-18 | 2019-02-27 | Kddi株式会社 | 通信装置及びプログラム |
US10630743B2 (en) | 2016-09-23 | 2020-04-21 | Cisco Technology, Inc. | Unicast media replication fabric using bit indexed explicit replication |
US10637675B2 (en) | 2016-11-09 | 2020-04-28 | Cisco Technology, Inc. | Area-specific broadcasting using bit indexed explicit replication |
US10164794B2 (en) | 2017-04-28 | 2018-12-25 | Cisco Technology, Inc. | Bridging of non-capable subnetworks in bit indexed explicit replication |
US10893437B2 (en) * | 2018-02-27 | 2021-01-12 | Verizon Patent And Licensing Inc. | Out-of-order packet handling in 5G/new radio |
US11658837B2 (en) * | 2020-07-10 | 2023-05-23 | Realtek Semiconductor Corp. | Multicast packet replication method |
CN117978851B (zh) * | 2024-03-29 | 2024-06-07 | 苏州元脑智能科技有限公司 | 会话连接方法、交互方法、装置、设备及介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6272567B1 (en) * | 1998-11-24 | 2001-08-07 | Nexabit Networks, Inc. | System for interposing a multi-port internally cached DRAM in a control path for temporarily storing multicast start of packet data until such can be passed |
CN102123082A (zh) * | 2011-01-14 | 2011-07-13 | 中兴通讯股份有限公司 | 数据包转发方法和设备 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7224668B1 (en) * | 2002-11-27 | 2007-05-29 | Cisco Technology, Inc. | Control plane security and traffic flow management |
US8225389B2 (en) * | 2003-04-11 | 2012-07-17 | Broadcom Corporation | Method and system to provide physical port security in a digital communication system |
US20060248375A1 (en) * | 2005-04-18 | 2006-11-02 | Bertan Tezcan | Packet processing switch and methods of operation thereof |
US9769092B2 (en) * | 2010-01-18 | 2017-09-19 | Marvell International Ltd. | Packet buffer comprising a data section and a data description section |
BR112012024886B1 (pt) * | 2010-03-29 | 2018-08-07 | Huawei Technologies Co., Ltd. | Roteador agrupado e método de roteamento agrupado |
-
2014
- 2014-05-01 US US14/267,885 patent/US20140376549A1/en not_active Abandoned
- 2014-06-17 TW TW103120918A patent/TWI543575B/zh not_active IP Right Cessation
- 2014-06-19 CN CN201410275783.4A patent/CN104243300B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6272567B1 (en) * | 1998-11-24 | 2001-08-07 | Nexabit Networks, Inc. | System for interposing a multi-port internally cached DRAM in a control path for temporarily storing multicast start of packet data until such can be passed |
CN102123082A (zh) * | 2011-01-14 | 2011-07-13 | 中兴通讯股份有限公司 | 数据包转发方法和设备 |
Also Published As
Publication number | Publication date |
---|---|
TW201501499A (zh) | 2015-01-01 |
CN104243300A (zh) | 2014-12-24 |
US20140376549A1 (en) | 2014-12-25 |
TWI543575B (zh) | 2016-07-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104243300B (zh) | 包处理方法以及包处理装置 | |
EP2320609B1 (en) | A buffer processing method, a store and forward method and apparatus of hybrid service traffic | |
US9893987B2 (en) | Virtual stacking of switches | |
CN101411136B (zh) | 利用超过cam关键字长度的表索引执行查表操作的方法 | |
CN107689931A (zh) | 一种基于国产fpga的实现以太网交换功能系统及方法 | |
CN104219145B (zh) | 网络系统及路由方法 | |
CN109479031B (zh) | 用于在网络设备中处理分组的方法和装置 | |
CN1798103A (zh) | 业务量生成器和监视器 | |
JP2003204347A5 (zh) | ||
CN101707550B (zh) | 一种确定镜像数据流的方法和设备 | |
CN106789178B (zh) | 一种报文转发方法和网络设备 | |
CN106302179A (zh) | 一种管理索引表的方法及装置 | |
CN104871501A (zh) | 分组处理装置、流表项配置方法和程序 | |
CN109428825A (zh) | 一种组播报文转发方法及装置 | |
US9313141B2 (en) | Transmit scaling using multiple queues | |
JP4486031B2 (ja) | セマンティックスイッチ通信網、セマンティックスイッチ、およびセマンティック通信方法 | |
CN105491419B (zh) | 一种组合电视以及数据共享方法 | |
CN104954261B (zh) | 利用流表转发数据的方法及系统 | |
CN107733812A (zh) | 一种数据包调度方法、装置及设备 | |
CN105791237B (zh) | 协议转化方法和装置 | |
US9319333B2 (en) | Instantaneous random early detection packet dropping | |
CN104125169B (zh) | 链表处理装置、链表处理方法及相关网络交换机 | |
CN107003982A (zh) | 用于使用多个多点总线的装置和方法 | |
US9705811B2 (en) | Simultaneous queue random early detection dropping and global random early detection dropping system | |
US20030123386A1 (en) | Flexible and high-speed network packet classifying method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180105 Termination date: 20200619 |
|
CF01 | Termination of patent right due to non-payment of annual fee |