一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于多播封包复制的复制串列表结构的制作方法

2022-02-22 01:53:13 来源:中国专利 TAG:
1.本发明涉及一种串列表结构,且特别涉及一种用于多播封包(multicastpacket)复制的复制串列表(replicationlisttable,rpltable)结构。
背景技术
::2.多播是指把封包同时传递给一组(group)的多个接收者。也就是说,对于交换机(switch)而言,当其输入端口(port)收到一个多播封包,且要求得到这多播封包的一组的多个接收者有耦接交换机的多个输出端口时,交换机就需要把这多播封包送交到这多个输出端口,并可能因输出的第三层逻辑接口(layer3logicalinterface)不同而需要对封包标头(header)进行修改。3.另外,因为虚拟局域网(virtuallocalareanetwork,vlan)的应用,所以交换机上的一个实体输出端口还可能属于多个vlan。在这种情况下,交换机也会从这实体输出端口送出多个标头不同的封包。总而言之,针对多播封包,交换机是会根据复制串列(rpl)表,决定要在某一输出端口上复制出几个标头不同的封包,且这动作称为封包复制(packetreplication)。举例来说,请参阅图1a至图1d,图1a至图1d分别是现有的rpl表结构的示意图。4.在现有技术中,针对每一组的多个接收者有耦接到的输出端口会产生一指标来指到rpl表的一项目(entry),且图1a的项目包含rep_id和next_ptr两个字段。rep_id字段用来指示交换机该如何去修改封包标头,且next_ptr字段则用来指示交换机是否还需要去读取其他项目的rep_id字段。例如,当next_ptr字段为空值(null)时,交换机就不需去读取其他项目的rep_id字段,或者说代表一串列的结束。另外,针对有指示交换机还需去读取其他项目的rep_id字段的next_ptr字段,图1a至图1d只用带箭头的线条来表示next_ptr字段为指示交换机到哪一项目中以读取它的rep_id字段。因此,交换机可逐一读取该串列的rep_id字段,以知道共要复制出几个封包,并也知道每一个封包的标头该如何去修改。5.为了方便以下说明,这里只以grp_idx=9的这一组的多个接收者有耦接到输出端口p0、p1和p2,并产生指标{p0,grp_idx=9}、{p1,grp_idx=9}和{p2,grp_idx=9}为例。因此,再以指标{p2,grp_idx=9}为例,交换机就可逐一读取其所指的串列的项目,以知道共要复制出四个封包,或者说知道共要由输出端口p2送出这四个封包,并也知道这四个封包的标头要分别依照rep_id字段为a、b、c和d的指示去做修改。举例来说,rep_id字段为a的指示可能是要将封包标头内的vlanid和sourcemacaddress修改为100和0x000102030405,而rep_id字段为b的指示则可能是要将封包标头内的vlanid和sourcemacaddress修改为200和0x000102888888。总而言之,当要对输出端口p2复制出这四个封包时,图1a的rpl表就需要消耗四个rep_id字段和四个next_ptr字段,以至于其使用效率不佳。6.另外,相较于图1a的项目,图1b的项目包含了多个,例如两个rep_id字段:rep_id0和rep_id1。因此,当要对输出端口p2复制出这四个封包时,图1b的rpl表就会比图1a的rpl表少消耗两个next_ptr字段,以至于提高了rpl表的使用效率。但当要对输出端口p0复制出一个封包时,图1b的rpl表却会比图1a的rpl表多消耗一个rep_id字段,即其rep_id1字段为无效(invalid)。由此可见,在复制封包数量不同的情况下,图1a的rpl表结构和图1b的rpl表结构将各有优劣。7.最后,现有技术还能支持项目共享,以提升rpl表的使用效率。如图1c和图1d所示,rep_id字段为b和c经妥善配置后,将能够被指标{p1,grp_idx=9}和{p2,grp_idx=9}所指的串列所共享。然而,这些被共享的rep_id字段却只能被放在串列的最后,且每一串列只能在最后才有发生共享的机会。也就是说,现有技术在项目共享上仍有些限制。因此,如何设计出一种新的rpl表结构以提升rpl表的使用效率,并降低项目共享的限制则成为本领域的一项重要课题。技术实现要素:8.有鉴于此,本发明实施例提供一种用于多播封包复制的复制串列表结构,包括多个项目。每一项目包含第一字段、第二字段、第三字段和第四字段。针对这些项目的每一者,第一字段用来宣告该项目是否为一程序执行的结束,第二字段用来宣告第四字段作为指示交换机该如何去修改封包标头的第一形态字段,或者作为指示串列跳跃(jump)到其他项目的第二形态字段,且第三字段则预设作为指示交换机该如何去修改封包标头的第一形态字段。9.优选地,针对这些项目的每一者,当第二字段宣告第四字段作为第一形态字段时,第四字段用来指示交换机该如何去修改多播封包的标头,并当第一字段宣告该项目不为程序执行的结束时,该项目与紧邻的下一项目则为同一串列,使得交换机将能够继续根据下一项目的第一字段至第四字段来修改多播封包的标头。10.优选地,针对这些项目的每一者,当第二字段宣告第四字段作为第二形态字段时,第四字段则用来指示串列跳跃到第四字段的内容所指的其他项目,使得交换机将能够继续根据其他项目的第一字段至第四字段来修改多播封包的标头。11.优选地,针对这些项目的每一者,第二字段还可用来宣告第四字段作为指示串列调用到其他项目的第三形态字段。当第二字段宣告第四字段作为第三形态字段时,第四字段则用来指示串列调用到第四字段的内容所指的其他项目,使得交换机将能够继续根据其他项目的第一字段至第四字段来修改多播封包的标头,并当程序执行结束时,串列则返回到与该项目紧邻的下一项目,使得交换机将能够再继续根据下一项目的第一字段至该第四字段来修改多播封包的标头。12.优选地,针对这些项目的每一者,第二字段还可用来第三字段和第四字段分别作为第三形态字段和第二形态字段。当第二字段宣告第三字段和第四字段分别作为第三形态字段和第二形态字段时,第三字段则用来指示串列调用到第三字段的内容所指的其他项目,使得交换机将能够继续根据第三字段的内容所指的其他项目的第一字段至第四字段来修改多播封包的标头,并当程序执行结束时,串列则跳跃到第四字段的内容所指的其他项目,使得交换机将能够继续根据第四字段的内容所指的其他项目的第一字段至第四字段来修改多播封包的标头。13.为使能更进一步了解本发明的特征及技术内容,请参阅以下有关本发明的详细说明与附图,然而所提供的附图仅用于提供参考与说明,并非用来对本发明加以限制。附图说明14.图1a至图1d分别是现有的rpl表结构的示意图。15.图2是本发明实施例所提供的rpl表结构的示意图。16.图3a和图3b是图2的rpl表结构在第一优选应用下的示意图。17.图4a和图4b是图2的rpl表结构在第二优选应用下的示意图。18.图5是图2的rpl表结构在第三优选应用下的示意图。19.图6是图2的rpl表结构在第四优选应用下的示意图。具体实施方式20.以下是通过特定的具体实施例来说明本发明的实施方式,本领域技术人员可由本说明书所提供的内容了解本发明的优点与效果。本发明可通过其他不同的具体实施例加以实行或应用,本说明书中的各项细节也可基于不同观点与应用,在不背离本发明的构思下进行各种修改与变更。另外,本发明的附图仅为简单示意说明,并非依实际尺寸的描绘,事先声明。以下的实施方式将进一步详细说明本发明的相关技术内容,但所提供的内容并非用以限制本发明的保护范围。21.应当理解的是,虽然本文中可能会使用到“第一”、“第二”、“第三”等术语来描述各种组件或者信号,但这些组件或者信号不应受这些术语的限制。这些术语主要是用以区分一组件与另一组件,或者一信号与另一信号。另外,本文中所使用的术语“或”,应视实际情况可能包含相关联的列出项目中的任一个或者多个的组合。22.请参阅图2,图2是本发明实施例所提供的rpl表结构的示意图。如图2所示,rpl表结构包括多个项目,例如项目1至项目9,每一项目包含end、mode、rep_id0和rep_id1四个字段。针对这些项目的每一者,end字段用来宣告项目是否为一程序执行的结束,mode字段用来宣告rep_id1字段作为指示交换机该如何去修改封包标头的第一形态字段,或者作为指示串列跳跃到其他项目的第二形态字段,且rep_id0字段则预设作为指示交换机该如何去修改封包标头的第一形态字段。为了方便以下说明,本实施例只以end字段为0来表示宣告项目不为程序执行的结束,并以end字段为1来表示宣告项目为程序执行的结束,但本发明不以此为限制。类似地,本实施例只以mode字段为0或1来表示宣告rep_id1字段作为第一形态字段或第二形态字段,但本发明亦不以此为限制。因此,可请一并参阅图3a和图3b,图3a和图3b是图2的rpl表结构在第一优选应用下的示意图。23.如图3a所示,再同样以指标{p2,grp_idx=9}所指的串列为例,本实施例可把rep_id0字段和rep_id1字段为a和b的项目6,与rep_id0字段和rep_id1字段为c和d的项目7紧邻配置在一起,并把项目6、项目7的mode字段都设定为0,但项目6、项目7的end字段则分别设定为0和1。这样一来,交换机就可把紧邻的项目6、项目7视为同一串列,以知道共要由输出端口p2送出四个封包,并也知道这四个封包的标头要分别依照rep_id0字段和rep_id1字段为a、b、c和d的指示去做修改。也就是说,针对这些项目的每一者,当mode字段宣告rep_id1字段作为第一形态字段时,rep_id1字段则用来指示交换机该如何去修改多播封包的标头,并当end字段宣告当前项目不为程序执行的结束时,当前项目与紧邻的下一项目视为同一串列,使得交换机将能够继续根据下一项目的四个字段来修改多播封包的标头。24.另外,当输出端口没有这么多个标头不同的封包要送出,或者有某个标头不同的封包要取消送出时,rep_id0字段和rep_id1字段也可为null。总而言之,本实施例的每一项目可最多指示两个标头的修改方式,且相较于现有技术,因为紧邻的下一项目能视为同一串列,所以本实施例可不需要next_ptr字段,而是需要end字段来宣告程序执行的结束。接着,假如当配置不到紧邻的项目时,mode字段还可宣告rep_id1字段作为指示串列跳跃到其他项目的第二形态字段,例如本实施例将用以jump_ptr来表示,且为了方便以下说明,本实施例也只用带箭头的线条来表示jump_ptr为指示串列跳跃到哪一其他项目中。因此,可请一并参阅图4a和图4b,图4a和图4b是图2的rpl表结构在第二优选应用下的示意图。25.如图4a所示,因为rep_id0字段和rep_id1字段为b和c将能够被指标{p1,grp_idx=9}和{p2,grp_idx=9}所指的串列所共享,所以本实施例可把rep_1d0字段和rep_id1字段为b和c的项目7放在指标{p2,grp_idx=9}所指的串列的最后一个项目,即项目7的end字段设定为1,并把指标{p1,grp_idx=9}所指到的项目4的end字段和mode字段分别设定为0和1,使得其rep_id1字段被作为jump_ptr以指示指标{p1,grp_idx=9}所指的串列跳跃到项目7。也就是说,针对这些项目的每一者,当mode字段宣告rep_id1字段作为第二形态字段时,rep_id1字段则用来指示串列跳跃到rep_id1字段的内容所指的其他项目,使得交换机将能够继续根据其他项目的四个字段来修改多播封包的标头。26.另外,为了更进一步说明jump_ptr的操作原理,图3b和图4b则改成设计输出端口p1和p2要再都增加送出一个标头为依照rep_id1字段为e的指示去做修改的封包。因此,相较于图4a,本实施例可改把rep_1d0字段和rep_id1字段为null和e的项目8放在指标{p2,grp_idx=9}所指的串列的最后一个项目,即项目8的end字段设定为1,且项目7的end字段改设定为0,然后依旧把指标{p1,grp_idx=9}所指到的项目4的end字段和mode字段分别设定为0和1,使得其rep_id1字段被作为jump_ptr以指示指标{p1,grp_idx=9}所指的串列跳跃到项目7。这样一来,相较于图3b的指标{p1,grp_idx=9}和{p2,grp_idx=9},图4b的指标{p1,grp_idx=9}和{p2,grp_idx=9}则少消耗掉一个项目。27.由此可见,当要对某一输出端口复制出较多个封包时,本实施例可配置紧邻的下一项目作为同一串列,并且可使得rep_id1字段作为jump_ptr以指示串列跳跃到其他项目,从而相较于现有技术,本实施例可省去next_ptr字段的空间开销。例如,在复制封包数量较大时,相较于图1a的rpl表结构,本实施例的rpl表结构可大约节省50%的字段空间,而相较于图1b的rpl表结构,本实施例的rpl表结构也可大约节省33%的字段空间。另外,当要对某一输出端口复制出较少个封包时,本实施例的rpl表的使用效率就都比图1a和图1b的rpl表的使用效率好。28.另一方面,为了落实降低项目共享的限制,针对这些项目的每一者,mode字段还可用来宣告rep_id1字段作为指示串列调用到其他项目的第三形态字段,例如本实施例将用以call_ptr来表示,且为了方便以下说明,本实施例也只用带箭头的线条来表示call_ptr为指示串列调用到哪一其他项目中。需说明的是,call_ptr的作用就相当于程序设计中的函数调用(functioncall),所以当函数结束时,即其程序执行结束,返回地址(returnaddress)则应该是与调用此函数的项目紧邻的下一项目。类似地,本实施例只以mode字段为2来表示宣告rep_id1字段作为第三形态字段,但本发明亦不以此为限制。因此,可请一并参阅图5,图5是图2的rpl表结构在第三优选应用下的示意图。请注意,为了方便以下说明,图5又改回设计输出端口p1和p2要分别送出两个和四个封包的例子。29.如图5所示,再同样以指标{p2,grp_idx=9}所指的串列为例,交换机就可先读到项目6的rep_id0字段为a,然后根据项目6的call_ptr去读到项目9的rep_id0字段和rep_id1字段为b和c,且由于项目9的end字段为1,代表程序执行的结束,所以指标{p2,grp_idx=9}所指的串列则返回到与项目6紧邻的下一项目,即rep_id0字段为d的项目7。也就是说,针对这些项目的每一者,当mode字段宣告rep_id1字段作为第三形态字段时,rep_id1字段则用来指示串列调用到rep_id1字段的内容所指的其他项目,使得交换机将能够继续根据其他项目的四个字段来修改多播封包的标头,并当程序执行结束时,串列则返回到与该项目紧邻的下一项目,使得交换机将能够再继续根据下一项目的四个字段来修改多播封包的标头。30.由此可见,相较于现有技术,本实施例的共享字段不用局限放在串列的最后,且每一串列也不用只能在最后才有发生共享的机会。另外,本实施例更不局限mode字段只能宣告rep_id1字段作为其他用途。例如,针对这些项目的每一者,mode字段还可用来宣告rep_id0字段和rep_id1字段分别作为第三形态字段和第二形态字段,且为了方便以下说明,本实施例只以mode字段为3来表示宣告rep_id0字段和rep_id1字段分别作为第三形态字段和第二形态字段,即call_ptr和jump_ptr,但本发明亦不以此为限制。因此,可请一并参阅图6,图6是图2的rpl表结构在第四优选应用下的示意图。31.如图6所示,再同样以指标{p2,grp_idx=9}所指的串列为例,交换机就可先根据项目6的call_ptr去读到项目9的rep_id0字段和rep_id1字段为b和c,但在指标{p2,grp_idx=9}所指的串列返回时,则根据项目6的jump_ptr跳跃到rep_id0字段和rep_id1字段为a和d的项目8。也就是说,针对这些项目的每一者,当mode字段宣告rep_id0字段和rep_id1字段分别作为第三形态字段和第二形态字段时,rep_id0字段则用来指示串列调用到rep_id0字段的内容所指的其他项目,使得交换机将能够继续根据rep_id0字段的内容所指的其他项目的四个字段来修改多播封包的标头,并当程序执行结束时,串列则跳跃到rep_id1字段的内容所指的其他项目,使得交换机将能够再继续根据rep_id1字段的内容所指的其他项目的四个字段来修改多播封包的标头。32.简单地说,rpl表结构的每一项目可包含至少一rep_id字段,且该至少一rep_id字段则原本就用来指示交换机该如何去修改封包标头,但在本实施例中,每一项目还包含mode字段,以用来宣告该至少一rep_id字段作为其他用途。如前所述,根据mode字段的宣告,rep_id字段可被作为jump_ptr以指示串列跳跃到其他项目,或者作为call_ptr以指示串列调用到其他项目。由于相关细节已如同前述内容所述,故在此就不再多加赘述。总而言之,本实施例可任意组合一个项目内的多个用途不同的rep_id字段,或者多个相同用途的rep_id字段也可放置在一个项目内,以达成交换机要对输出端口所完成的封包复制。另外,根据前述内容的教示,本
技术领域
:中普通技术人员应可理解到,本实施例的rpl表结构也可省略end字段,而是改用其他方式来宣告程序执行的结束。例如,在rep_id字段被作为jump_ptr时,本实施例也可用jump_ptr以指到自身的项目,或者用jump_ptr为null来表示宣告程序执行的结束,但本发明亦不以此为限制。33.综上所述,本发明实施例所提供的用于多播封包复制的rpl表结构,可配置紧邻的下一项目作为同一串列,并可利用jump_ptr和call_ptr来达到项目共享,从而相较于现有技术,本实施例提升了rpl表的使用效率,并也降低项目共享的限制。34.以上所提供的内容仅为本发明的优选可行实施例,并非因此局限本发明的权利要求范围,所以凡是运用本发明说明书及附图内容所做的等效技术变化,均包含于本发明的权利要求范围内。35.【符号说明】36.1至9:项目37.rep_id、next_ptr、end、mode、rep_id0、rep_id1:字段38.{p0,grp_idx=9}、{p1,grp_idx=9}、{p2,grp_idx=9}:指标。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献