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

一种发送报文的方法和装置与流程

2021-11-30 21:58:00 来源:中国专利 TAG:
一种发送报文的方法和装置1.本技术是于2018年6月27日提交中国国家知识产权局、申请号为cn201810678773.3、发明名称为“一种发送报文的方法、设备和系统”的中国专利申请的分案申请。
技术领域
:2.本发明涉及通信
技术领域
:,尤其涉及一种发送报文的方法和装置。
背景技术
::3.比特索引的显示复制(英文:bitindexexplicitrepublication,简称:bier)是在2014年的因特网工程任务组(英文:internetengineeringtaskforce,简称:ietf)讨论产生的一种组播转发技术。在征求意见稿(英文:requirementforcomments,简称:rfc)8279中,bier头部的熵(英文:entropy)值被定义用于流量负载分担,例如,在图1所示的系统100中,设备a、d、e和f是bier域的边缘节点,当第一流量和第二流量都需要由设备a发给设备f时,设备a可以对第一流量封装bier头时将entropy填写为数值1,对第二流量封装bier头时将entropy填写为数值2,这样设备b在接收到第一流量和第二流量时会根据entropy值的不同使得第一流量依次经过设备a、b、c和f到达设备f,而让第二流量依次经过a、b、e和f到达设备f,从而实现流量的负载分担。4.随着多级网络的快速发展和广泛应用,例如在数据中心clos网络,该网络中的每级设备的数量达到两个以上,即每级网络中的设备都存在多条等价路径,上述方法并不能使多级网络中的每级网络设备都进行灵活的负载分担。技术实现要素:5.本技术实施例提供了一种发送报文的方法、设备和系统,以根据bier头的entropy的不同部分来实现不同设备上的负载分担转发,使多级网络中的每级设备都能根据同一个entropy的不同部分,灵活实现数据流的负载分担。6.第一方面,本技术提供了一种发送报文的方法,该方法包括第一设备生成包含bier头的第一报文。该bier头包含熵entropy。该entropy用于沿着转发路径转发第一报文,其中,该entropy包含第一部分和第二部分。第一部分与第二部分不同。第一设备根据第一报文的目的地址,确定存在多条用于转发所述第一报文的转发表项。第一设备根据第一部分从所述多条转发表项中选择一条转发表项。所选择的转发表项包含第二设备的地址,其中,第二设备为所述第一设备的下一跳设备。第一设备向第二设备发送第一报文,其中,第二部分用于所述第二设备从多条用于转发所述第一报文的转发表项中选择转发表项。7.通过上述方法,第一设备可以根据第一部分对报文进行负载分担,第二设备也可以根据第二部分对报文进行负载分担,这样可以通过entropy的不同部分来实现不同设备上的负载分担转发,控制数据流的路径,从而实现对报文的多级负载分担。8.结合第一方面,在第一种可能的实现方式中,第一部分和第二部分占用entropy的比特位不同。9.通过使用报文bier头中的entropy的不同比特位,实现对报文的多级负载分担。10.结合第一方面,在第二种可能的实现方式中,第一设备根据第一设备的多条用于转发所述第一报文的转发表项的数量和第二设备的多条用于转发第一报文的转发表项的数量确定所述第一报文的bier头的entropy值。第一设备上存在多条用于转发第一报文的转发表项也就是说第一设备上存在用于转发第一报文的多条负载分担路径,第二设备上存在多条用于转发第一报文的转发表项也就是说第二设备上存在多条用于转发第一报文的负载分担路径,第一设备根据第一设备的负载分担数和第二设备的负载分担数来生成entropy,可以实现精确控制每个设备上转发第一报文时使用的转发表项,例如:将第一部分设置为0001,则第一设备用多条转发路径中的第一条转发路径发送第一报文,将第二部分设置为0003,则第二设备用多条转发路径中第三条转发路径发送第一报文,从而分别实现多个设备中每个设备转发第一报文的转发路径的控制。11.结合第一方面,在第三种可能的实现方式中,第一设备生成包含bier头的第一报文包括:第一设备从第四设备接收第二报文。第一设备对第二报文封装bier头生成第一报文。12.结合第一方面,在第四种可能的实现方式中,所述转发表项可以是比特索引转发表项(英文:bitindexforwardingtable,简称:bift)。13.结合第一方面,在第五种可能的实现方式中,所述entropy的值等于第一部分的值和第二部分的值的和,其中第一部分的值根据第一设备的多条用于转发所述第一报文的转发表项的数量生成,第二部分的值根据第二设备的多条用于转发第一报文的转发表项的数量生成。14.第二方面,本技术提供了一种发送报文的方法,该方法包括:第二设备接收第一设备发送的第一报文。第一报文包含bier头,该bier头包含熵entropy,该entropy用于沿着转发路径转发所述第一报文。该entropy包含第一部分和第二部分,其中,第一部分与第二部分不同。第一部分用于第一设备从多条用于转发第一报文的转发表项中选择一条转发表项。第二设备根据第一报文的目的地址确定存在多条用于转发第一报文的转发表项。第二设备根据第二部分从该多条转发表项中选择一条转发表项。所选择的转发表项包含第三设备的地址,该第三设备为第二设备的下一跳设备。第二设备向第三设备发送第一报文。15.结合第二方面,在第一种可能的实现方式中,第一部分和第二部分占用entropy的比特位不同。16.结合第二方面,在第二种可能的实现方式中,第一设备根据第一设备的多条用于转发第一报文的转发表项的数量和第二设备的多条用于转发第一报文的转发表项的数量确定第一报文的bier头的entropy值。17.结合第二方面,在第三种可能的实现方式中,该entropy还包含第三部分,其中,该第三部分和第一部分和第二部分都不相同。该第三部分用于上述第三设备从多条用于转发所述第一报文的转发表项中选择转发表项,其中第三设备有多条发送第一报文的等价路径。18.第三方面,本技术提供了一种发送报文的设备。该设备包括生成单元、确定单元、选择单元和发送单元。生成单元用于生成包含bier头的第一报文。该bier头包含熵entropy。该entropy用于沿着转发路径转发第一报文。该entropy包含第一部分和第二部分,其中,第一部分与第二部分不同。确定单元用于根据第一报文的目的地址确定存在多条用于转发第一报文的转发表项。选择单元用于根据第一部分从多条转发表项中选择一条转发表项。所选择的转发表项包含第二设备的地址,其中,第二设备为设备的下一跳设备。发送单元用于向第二设备发送第一报文。第二部分用于第二设备从多条用于转发第一报文的转发表项中选择一条转发表项。19.结合第三方面,在第一种可能的实现方式中,第一部分和第二部分占用entropy的比特位不同。20.结合第三方面,在第二种可能的实现方式中,确定单元还用于根据第一设备的多条用于转发第一报文的转发表项的数量和第二设备的多条用于转发第一报文的转发表项的数量确定。21.结合第三方面,在第三种可能的实现方式中,该设备还包括接收单元,其中,接收单元用于从第四设备接收第二报文。生成单元用于对所述第二报文封装bier头生成所述第一报文。22.第四方面,本技术提供了一种发送报文的设备。该设备包括接收单元、确定单元、选择单元和发送单元。接收单元用于接收第一设备发送的第一报文。第一报文包含bier头,该bier头包含entropy。该entropy用于沿着转发路径转发第一报文,其中,entropy包含第一部分和第二部分,第一部分与所述第二部分不同。第一部分用于第一设备从多条用于转发第一报文的转发表项中选择一条转发表项。确定单元用于根据第一报文的目的地址确定存在多条用于转发第一报文的转发表项。选择单元用于根据第二部分从多条转发表项中选择一条转发表项。该选择的转发表项包含第三设备的地址,其中,第三设备为所述第二设备的下一跳设备。发送单元用于向第三设备发送第一报文。23.结合第四方面,在第一种可能的实现方式中,第一部分和第二部分占用entropy的比特位不同。24.结合第四方面,在第二种可能的实现方式中,所述第一报文的bier头的entropy值根据第一设备的多条用于转发第一报文的转发表项的数量和第二设备的多条用于转发第一报文的转发表项的数量确定。25.第五方面,本技术提供了一种网络中确定流量传输路径的系统,该系统包括第一设备和第二设备。第一设备用于生成包含bier头的第一报文,以及根据第一报文的目的地址确定存在多条用于转发第一报文的转发表项,并根据第一部分从多条转发表项中选择一条转发表项,向所述第二设备发送所述第一报文。该bier头包含熵entropy。entropy用于沿着转发路径转发第一报文。该entropy包含第一部分和第二部分,其中,所述第一部分与所述第二部分不同。所选择的转发表项包含第二设备的地址,该第二设备为所述第一设备的下一跳设备。26.第二设备用于接收第一设备发送的第一报文,根据第一报文的目的地址确定存在多条用于转发第一报文的转发表项,以及根据所述第二部分从所述多条转发表项中选择一条转发表项,向第三设备发送第一报文,其中所述第三设备为所述第二设备的下一跳设备。27.结合第五方面,在第一种可能的实现方式中,第一部分和第二部分占用该entropy的比特位不同。28.结合第五方面,在第二种可能的实现方式中,所述第一设备还用于根据所述第一设备的多条用于转发所述第一报文的转发表项的数量和第二设备的多条用于转发所述第一报文的转发表项的数量确定所述第一报文的bier头的entropy值。29.结合第五方面,在第一种可能的实现方式中,所述第一设备还用于从第四设备接收第二报文,并对所述第二报文封装bier头生成所述第一报文。30.第六方面,本技术提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面以及各个可能实现方式的的方法。31.第七方面,本技术提供了另一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第二方面以及各个可能实现方式的所述的方法。32.第八方面,本技术提供了一种设备,所述网络设备包括网络接口、处理器、存储器和连接所述网络接口、处理器和存储器的总线。所述存储器用于存储程序、指令或代码,所述处理器用于执行所述存储器中的程序、指令或代码,完成上述第一方面以及各个可能实现方式的所述的方法。33.第九方面,本技术提供了一种设备,所述网络设备包括网络接口、处理器、存储器和连接所述网络接口、处理器和存储器的总线。所述存储器用于存储程序、指令或代码,所述处理器用于执行所述存储器中的程序、指令或代码,完成上述第二方面以及各个可能实现方式的所述的方法。附图说明34.图1为本发明实施例提供的一种发送报文的应用场景示意图。35.图2为本发明实施例提供的又一种发送报文的应用场景示意图。36.图3为本发明实施例提供的一种发送报文的方法流程示意图。37.图4为本发明实施例提供的又一种发送报文的方法流程示意图。38.图5为本发明实施例提供的一种发送报文的设备。39.图6为本发明实施例提供的又一种发送报文的设备。40.图7为本发明实施例提供的又一种发送报文的设备。41.图8为本发明实施例提供的又一种发送报文的设备。42.图9为本发明实施例提供的一种发送报文的系统。具体实施方式43.本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。44.图1提供了一种发送报文的系统架构示意图,该系统100包括:设备a、设备b、设备c设备d、设备e和设备f以及与设备a连接的主机a,与设备e连接的主机e,与设备f连接的主机f,与设备d连接的主机d,其中,与主机连接的设备还可称为边缘设备,例如设备a还可以称为边缘设备a,边缘设备可以对从bier域外接收到的报文封装bier并将携带有bier头的报文进行转发。该系统100既可以发送组播报文,还可以发送单播报文,并且还可以通过边缘设备a、d、e或f对报文封装bier头,利用bier头对报文进行负载分担。例如,第一报文和第二报文都由设备a发给到设备f,设备a可以对第一报文和第二报文封装bier头,对第一报文封装bier头时填写entropy值为1,对第二报文封装bier头时填写entropy值为2,并将封装后的第一报文和第二报文发送给设备b,由于设备b到达设备f存在两条等价路径,即设备b可以将报文发送到设备c,也可以将报文发送到设备e,因此设备b存在两条转发表项。设备b接收第一报文和第二报文,根据第一报文和第二报文的各自的bier头中entropy值以及该值与设备b的转发表项对第一报文和第二报文进行负载分担,其中,设备b根据报文的bier头的entropy以及转发表项转发报文的具体方法可以参考rfc8279协议的第6节中“bierintra‑domainforwardingprocedures”所描述的相关方法,此处不再赘述。45.上述方案中,设备b是将entropy字段的20比特的值作为一个整体使用,是将entropy字段所填写的数值作为一个整体来确定将组播报文发送的路径,也就是说,与主机相连接的设备a1、b1、a2和b2可以根据报文bier头中entropy值对报文进行负载分担,而设备c1、d1、c2和d2等就无法继续根据报文bier头中entropy值对报文对接收到的报文进行负载分担。举例来说,在图2中,例如下图设备a1要复制流量给设备a2和b2,可以由a1经过设备c1到达设备s1或s2,其中设备s1或s2再往下复制到设备a2和b2的路径是固定的;或者由设备a1经过设备d1到达设备s3或s4,其中设备s3或s4再往下复制到设备a2和b2的路径是固定的。传统方案中,将流量负载分担到四个不同的路径具体通过对报文封装bier头并填写entropy=1,则该报文由设备a1发送到设备c1,而设备c1可能选择将该报文发送到设备s1;如果对报文封装bier头时填写entropy=2,则该报文由设备a1选择发送到设备d1,而设备d1可能选择将该报文发送到设备s4;如果对报文封装bier头时填写entropy=3,则该报文选择的路径可能是由设备a1经过设备c1到达设备s1;如果报文封装entropy=4,则该报文选择的路径可能是由设备a1经过设备d1达到设备s4。尽管对报文封装时分别使用4种entropy值,但由于不能实现每级设备都对发送数据流进行负载分担,使得设备a1经过设备c1到达设备s2和由设备a1经过设备d1到达设备s3这两个路径没有用于数据流的发送,而其他用于发送数据流的路径可能出现流量过大的现象,造成部分路径流量过载的问题。46.为了解决上述技术问题,本技术提供一种新的发送报文的方法,该方法可以通过每级设备根据不同的标识实现报文发送的负载分担,该方法不仅可以适用于图1所示的系统100,还可以适用于图2所示的clos这种多级网络系统200,实现对报文的负载分担。47.以图2所示系统200为例对本技术所提供的新方法进行说明,在系统200中,每层设备都存在多条负载分担的路径。与主机a1连接的设备a1以及与主机b1连接的设备b1在多级网络中可以称为第三层设备,还可以称为一级叶子节点或接入层设备,设备a1和设备b1可以是具备数据转发功能的路由器或交换机等设备,该设备可以对从主机接收的报文封装bier头。与设备a1和b1类似,设备a2和b2也可以称为三层设备、一级叶子节点或接入层设备,中间层设备c1、d1、c2和d2在多层网路中称为第二级设备,还可以称为二级叶子节点或聚合层设备。上层设备s1、s2、s3和s4在多层网络中可以称为第一层设备、核心层设备等。在多层网络系统200中,三层设备a1从主机a1接收报文,将该报文封装bier头并填写entropy值。三层设备根据报文bier头的entropy的部分值以及三层设备的bift对该报文进行负载分担,发送到二级设备c1和d1。二级设备c1和d1接收到该报文,根据报文bier头的entropy的另外一部分以及设备的bift对该报文负载分担,发送到一级设备s1和s2,由此,通过对发送数据流的路径进行精确控制,使报文可以在多级网络中实现负载分担。48.下面以图2所示系统200为例,对图3中所示发送报文的方法进行说明,具体方法包括:49.s310,第一设备生成包含bier头的第一报文。50.在一种可能的实现方式中,第一报文的bier头包含entropy。该entropy用于沿着转发路径转发第一报文。entropy字段的值可以根据默认值生成,也可以由边缘设备填充生成。如果第一设备是边缘设备,第一设备可以在生成报文时根据需要填充entropy字段的值。该entropy字段包括第一部分和第二部分,其中,第一部分和第二部分都用于设备确定发送路径,还可以将第一部分称为第一标识,第二部门称为第二标识。entropy字段有20比特位,第一部分和第二部分可以是entropy字段的不同比特位,例如第一部分可以指entropy字段最右边的一个比特的值,第二部分可以指entropy字段从右往左第二个比特的值。第一部分和第二部分所占用的比特的数量可以根据设备的bift进行选择,即设备的bift越多需要的比特就越多。51.在一种可能的实现方式中,第一报文的bier头的entropy值可以由第一设备填充,也可以是由默认值生成。第一设备根据第一设备存储的多条用于转发所述第一报文的转发表项的数目和第二设备存储的多条用于转发第一报文的转发表项的数目确定所述第一报文的bier头的entropy值,其中第一设备和第二设备为多层网络中不同层级的设备,例如第一设备为一级叶子节点或接入层设备,第二设备为二级叶子节点或中间层设备,第一设备将第一报文发送给第二报文。第一设备存储的多条用于转发第一报文的转发表项可以是bift。52.在一种可能的实现方式中,如果第一设备为边缘设备,第一报文的bier头的entropy值可以由第一设备填充。第一设备上存在多条用于转发第一报文的转发表项也就是说第一设备上存在用于转发第一报文的多条负载分担路径,第二设备上存在多条用于转发第一报文的转发表项也就是说第二设备上存在多条用于转发第一报文的负载分担路径,第一设备根据第一设备的负载分担数和第二设备的负载分担数来生成entropy,可以实现精确控制每个设备上转发第一报文时使用的转发表项,例如:将第一部分设置为0001,则第一设备用多条转发路径中的第一条转发路径发送第一报文,将第二部分设置为0003,则第二设备用多条转发路径中第三条转发路径发送第一报文,从而分别实现多个设备中每个设备转发第一报文的转发路径的控制。entropy的值可以是第一部分数值和第二部分数值的和,其中第一设备根据第一部分的值选择转发报文的对应的转发路径,第二设备根据第二部分的值选择转发报文的对应的路径。53.举例来说,在接入层设备和中间层设备都如图2所示,存在两条发送报文的等价路径。图中设备a1选择往设备c1或设备d1发送第一报文的路径就用p1的值来表示,图中设备c1往设备s1或设备s2的选择、或者设备d2往设备s3或者设备s4发送第一报文的路径就是用p2的值来表示。第一设备根据p1和p2计算出需要封装的entropy值=(p1‑1)*1 (p2‑1)*2,p1和p2都可以取值1或2,该取值是根据如前所述设备a1和设备c1都存在发送报文到下一跳的两条等价路径。第一设备将这个计算的entropy值,在控制面完成计算后下发给转发面。54.在一种可能的实现方式中,在多级网络中,第一设备可以是边缘设备,还可以称为一级叶子节点或接入层设备,第一设备从bier域外接收第一报文,例如组播报文,第一设备对接收到的组播报文封装bier头。第一设备对组播报文封装的bier头中包括比特串(bitstring),该比特串用于标识发送第一报文到bier域外的出口设备。55.在一种可能的实现方式中,第一设备从第四设备接收第二报文,并对第二报文封装bier头生成所述第一报文,例如边缘设备从bier域外第四设备接收第二报文,边缘设备将第二报文封装bier头生成第一报文。56.举例来说,接入层设备达到中间层设备的路径只有两条,因此1个比特用“0”和“1”就可以对这两条路径进行区分,该比特可以对应于设备的两个bift。如果接入层设备达到中间层设备的等价路径有三条,对应于三条bift,则需要两个比特来进行区分,则第一部分就需要entropy的中从右往左的第一和第二这两个比特位来区别三条不同的bift,第二部分可以从右往左第3比特开始,也可以从右往左的第4比特位开始,本技术并不要求第一部分和第二部分是entropy中连续的比特位,第一部分和第二部分所使用的比特位可以不是连续的,不重叠。如果接入层设备到达中间层设备的等价路径有48条,对应于48条bift,则需要使用entropy中从右往左的前6比特。57.s320,第一设备根据第一报文的目的地址确定存在多条用于转发第一报文的转发表项。58.在一种可能的实现方式中,在多级网络中存在多级网络设备,第一设备为一级叶子节点或接入设备,第二设备为二级叶子节点或聚合层设备,一级叶子节点到二级叶子节点或聚合层设备存在多条等价多径(英文:equalcostmultipath,简称:ecmp),接入设备生成多个bift,该多个转发表项对应不同的转发路径。59.举例来说,设备a1将报文发送到中间层设备包括两条等价路径,分别为由设备a1到设备c1和由设备a1到设备d1。设备a1根据这两条等价路径生成两条bift,这两个bift的下一跳分别为设备c1和设备d1。60.s330,第一设备根据第一部分从多条转发表项中选择一条转发表项,所选择的转发表项包含第二设备的地址,其中,第二设备为第一设备的下一跳设备。61.在一种可能的实现方式中,第一设备存储有参数(x,y),其中x和y都为整数,y的值与第一设备确定的多个等价路径的数量相等,即y的取值与第一设备确定存在多个转发第一报文的数量相等,例如第一设备确定发送第一报文到下一跳设备存在3条等价路径,则y取值为3。第一设备根据参数(x,y)对第一报文的bier头的entropy进行计算,并获得计算结果。第一设备可以将上述对应于多条等价路径的多条转发表项进行排序,然后根据计算结果和转发表项的排序从多个转发表项中选择一条转发表项,并根据比特串和该bift确定下一跳为第二设备的地址,其中根据比特串和bift确定下一跳的实施方法可以参考rfc8279第6节“bierintra‑domainforwardingprocedures”部分的描述,在此不再赘述。该第二设备可以是多级网络的中间层设备。62.举例来说,图2中的接入层设备a1从主机a1接收组播报文,该组播报文需要被发送到接入层设备a2和b2。接入层设备a1从bier域外接收组播报文并对该组播报文封装bier头,形成新的组播报文。由于接入层设备a1到中间层设备存在两条等价路径,包括由接入层设备a1到中间层设备c1和由接入层设备a1到中间层设备c2,因此接入设备a1将组播报文发送到下一跳可以包括两条不同的bift。接入层设备a1根据配置的参数,对bier头的entropy值进行计算,然后根据计算结果确定bift,例如当计算的数值为0时,则根据第一个bift确定下一跳,如果计算结果为1,则根据第二个bift确定下一跳。63.举例来说,接入设备a1可以存储参数(x1,y1),其中y的取值与接入设备发送组播报文可选的bift的数量相等。接入设备a1将组播报文的bier头中的entropy值除以参数x获得一个值,再将该值对y取余,设备a1根据最终得出的结果确定发送组播报文的bift,然后根据该bift中确定下一跳。例如,将x设置为1,y设置为2,设备a1将entropy值除以1取整数,再对所取整的数除以2取余数,如果余数为0则根据与0对应的第一个bift确定下一跳设备为设备c1,如果余数为1则根据与1对应的第二个bift确定下一跳设备为设备d1,其中,上述参数的可以根据需要配置,本技术对参数的设置不做限制。根据计算结果确定使用哪个bier,具体可以参照rfc8279中的6.5和6.6章节中对转发计算部分内容的描述,在此不再赘述。64.接入层设备a1根据对bier头中的entropy值进行计算的结果确定bift,进而根据bift确定发送报文的下一跳,这样可以根据不同entropy值将报文发送到不同路径,对流量实现负载分担。65.s340,第一设备向第二设备发送第一报文,第二部分用于第二设备从多条用于转发第一报文的转发表项中选择第二设备转发第一报文的转发表项。66.在一种可能的实现方式中,第二设备为多级网络中的中间设备,还可以称为二级叶子节点或聚合层设备。同第一设备相似,第二设备到上层设备存在两个以上的等价路径,第二设备同样包括两个以上的bift。第二设备根据第二部分发送第二报文到第三设备的方法可以参考步骤s303的相关方法,即第二设备通过利用第二设备存储的参数(x2,y2)对第一报文bier头的entropy的第二部分进行计算,并根据计算结果选择转发第一报文的转发表项,具体实施可以参考步骤s303中第一设备选择转发表项的方法,此处不再赘述。67.在一种可能的实现方式中,边缘节点可以对从bier域外接收的报文封装bier头,并填充entropy值。例如,第一级设备存储参数(x1=1,y1=2),那么第二级设备(x2=x1*y1=2,y2=2),其中y1的取值与第一级设备转发报文的路径的数量相等,y2的取值与第二级设备转发报文的路径的数量相等。第一级设备对报文封装bier头时填充entropy=(p1‑1)*x1 (p2‑1)*x2;其中p1的取值为1到2的整数,p2的取值为1到2的整数。根据上述取值,entropy可以取值0或1或2或3。还可以举例,如第一级设备的负载分担数为两路,第二级的负载分担数为48路,则第一级设备存数的参数(x1=1,x2=2),第二级设备存数的参数(x2=x1*y1=2,y2=48),则边缘节点对报文封装bier头是填充entropy=(p1‑1)*x1 (p2‑1)*x2,其中,p1可以取值1到2的整数,p2可以取值1到48的整数。通过上述方案,根据接入层设备和中间层设备所存储的参数,并将接入层的参数与第一部分进行计算,中间层设备的参与第二部分进行计算,将entropy分段使用,例如entropy右边n个比特位为第一部分,或者中间m个比特位为第二部分,或者通过除法的方式取其中的n个比特位,m和n都为大于0的整数,从而实现流量的负载分担。此外,还可以通过接入层设备对该entropy的值进行填充,使流量的分配路径变得可控,这样有利于将流量均匀的分配在不同的路径上。68.下面为本技术提供两种对entropy值分段使用的方法实施例。69.方法一:以图2为例对方法一进行说明。对于接入设备a1,存在两条到达中间层设备c1和c2的路径,根据这两条不同的路径建立两个bift,转发表1对应下一跳为中间层设备c1的转发路径,转发表2为对应下一跳为中间层设备d1的转发路径。为了确定报文发送使用的bift,接入层设备a1可以存储有两个参数(x1=1,y1=2),可以是对entropy值除以x取整数,再对y取余,接入设备a1根据计算结果和bift的关系,选择转发报文的bift,例如取余结果为0选择使用bift排序为1的bift,取余结果为1选择使用bift排序为2的bift。对于中间层设备c1可以设置两个参数(x2=2,y2=2),表示对entropy值除以x取整数,再对y取余,接入设备a1根据计算结果和bift的对应关系,确定转发报文的bift,例如取余结果为0选择使用bift排序为1的bift,取余结果为1选择使用bift排序为2的bift,具体如下:70.如果entropy值为0,对接入设备a1来说计算后的结果为0,则接入设备a1选择与数值0对应的bift,接入设备根据bift确定下一跳为c1;对中间层设备c1来说计算后的结果为0,则中间层设备c1选择与0对应的bift,并根据该bift确定下一跳为上层设备s1,由此可以确定该报文的转发路径由接入层设备a1发送到中间层设备c1,再由中间层设备将报文发送到上层设备s1。71.如果entropy值为1,对接入设备a1来说计算后的结果为1,则接入设备a1选择与数值1对应的bift,接入设备根据bift确定下一跳为d1;对中间层设备d1来说计算后的结果为0,则中间层设备d1选择与0对应的bift,并根据该bift确定下一跳为上层设备s4,由此可以确定该报文的转发路径由接入层设备a1发送到中间层设备d1,再由中间层设备将报文发送到上层设备s4。72.如果entropy值为2,对接入设备a1来说计算后的结果为0,则接入设备a1选择与数值0对应的bift,接入设备根据bift确定下一跳为c1;对中间层设备c1来说计算后的结果为1,则中间层设备c1选择与1对应的bift,并根据该bift确定下一跳为上层设备s2,由此可以确定该报文的转发路径由接入层设备a1发送到中间层设备c1,再由中间层设备将报文发送到上层设备s2。73.如果entropy值为3,对接入设备a1来说计算后的结果为1,则接入设备a1选择与数值1对应的bift,接入设备根据bift确定下一跳为d1;对中间层设备d1来说计算后的结果为1,则中间层设备d1选择与1对应的bift,并根据该bift确定下一跳为上层设备s3,由此可以确定该报文的转发路径由接入层设备a1发送到中间层设备d1,再由中间层设备将报文发送到上层设备s3。74.上述方法还可以通过使用二进制来计算,其中,第一部分可以为entropy字段右边第一比特位,第二部分可以为从右往左第二比特位,具体如下:75.如果entropy=(00000000000000000000),右边第一比特位为0,则接入设备a1选择与数值0对应的bift,接入设备根据bift确定下一跳为c1。右边第二比特位为0,则中间层设备c1选择与0对应的bift,并根据该bift确定下一跳为上层设备s1,由此可以确定该报文的转发路径由接入层设备a1发送到中间层设备c1,再由中间层设备将报文发送到上层设备s1。76.如果entropy=(00000000000000000001),右边第一比特位为1,则接入设备a1选择与数值1对应的bift,接入设备根据bift确定下一跳为d1。右边第二比特位为0,则中间层设备d1选择与0对应的bift,并根据该bift确定下一跳为上层设备s4,由此可以确定该报文的转发路径由接入层设备a1发送到中间层设备d1,再由中间层设备将报文发送到上层设备s4;77.如果entropy=(00000000000000000010),右边第一比特位为0,则接入设备a1选择与数值0对应的bift,接入设备根据bift确定下一跳为c1,右边第二比特位为1,则中间层设备c1选择与1对应的bift,并根据该bift确定下一跳为上层设备s2,由此可以确定该报文的转发路径由接入层设备a1发送到中间层设备c1,再由中间层设备将报文发送到上层设备s2。78.如果entropy=(00000000000000000011),右边第一比特位为1,则接入设备a1选择与数值1对应的bift,接入设备根据bift确定下一跳为d1,右边第二比特位为1,则中间层设备d1选择与1对应的bift,并根据该bift确定下一跳为上层设备s3,由此可以确定该报文的转发路径由接入层设备a1发送到中间层设备d1,再由中间层设备将报文发送到上层设备s3。79.方法二:多级网络中的各层设备可以设定参数x和y,其中参数x和y的值都设置为2的指数,例如接入层设备设定参数(x=20,y=21),中间层设备设定参数(x=21,y=21),其表示的含义和用途与上面的方法一中的参数相同。在实施例二中,在每个设备上根据报文bier头的entropy值取其部分值时,在算法上可以简化:80.对于接入层设备,将entropy值除以20再对21取余,可以简化为entropy值右移0比特,再对y取余。根据取余结果确定使用接入层设备的bift,以及确定下一跳的方法可参考实施例一中的方法,在此不再赘述。81.对于中间层设备,将entropy值除以21再对21取余,可以简化为entropy值右移1个比特,再对y值取余。82.在方法二中,包括20比特位的entropy值,最右边的比特位的值可以是第一部分,该比特位的值决定了接入层设备的路径选择,从右边第二比特位的值可以是第二部分,该比特位的值决定了中间层设备的路径选择。由于图2中接入层设备进行负载分担的路径只有2条,因此使用1个比特位的0值和1值这两个值就可以表示两条不同的路径。同样的,entropy值的从右到左第二个比特位的值,决定了中间层设备的路径选择,由于图2的中间层设备负载分担的路径只有2条,因此使用1个比特的0值和1值这两个值就可以表示两条不同的路径。83.如果接入层设备到达上层设备的路径选择有3条,可以使用20bit中的右边第一和第二两个比特来表示这3条路径,此时接入层设备的参数为(x=20,y=22),该参数中x和y分别表示比特的位置和比特的长度,例如该参数表示从右边第0比特开始的两个比特位。如果中间层设备的路径选择有48条,则可以使用20比特中的6比特来表示这48条路径,此时中间层设备的参数为(x=22,y=26),表示从最右边第2比特开始的6个比特。该方案中间层设备可以选择最右第2比特开始的6个比特,也可以选择最右第3比特开始的6个比特等等,本技术对第一部分和第二部分并不要求比特位相连。84.如图4所示,为本技术提供了一种发送报文的又一种方法流程示意图,第一设备可以是图2中的设备a1、b1、a2和b2,还可以是图3方法流程图中的第一设备,并且可以实现图3中第一设备的功能。第二设备可以是图2中的设备c1、d1、c2和d2。该方法包括:85.s410,第一设备生成包含bier头的第一报文。该步骤的具体实施可以参考图3中的步骤s301,此处不再赘述。86.s420,第一设备根据第一报文的目的地址确定存在多条用于转发第一报文的转发表项。该步骤的具体实施可以参考图3中的步骤s302,此处不再赘述。87.s430,第一设备根据第一部分从该多条转发表项中选择一条转发表项,该转发表项中的下一跳为第二设备。该步骤的具体实施可以参考图3中的步骤s303,此处不再赘述。88.s440,第一设备向第二设备发送第一报文。89.s450,第二设备接收第一设备的第一报文。90.s460,第二设备根据第一报文的目的地址确定存在多条用于转发第一报文的转发表项。91.在一种可能的实现方式中,第二设备接收第一报文,并根据第二报文中携带的目的地址确定存在多条等价路径,相应的第二设备中存在多条用于转发第一报文到下一跳的转发表项。92.s470,第二设备根据第二部分从所述多条转发表项中选择一条转发表项。该步骤的具体实施可以参考图3中的步骤s303,此处不再赘述。93.s480,第二设备向第三设备发送第一报文。94.在一种可能的实现方式中,第二设备为多级网路中的中间层设备,第三设备为一层设备或者核心设备,第二设备向第三设备发送第一报文存在多条等价路径。第二设备根据第二部分从多条转发表项中选择一条转发表项,并根据该选的转发表项向第三设备发送第一报文。95.在一种可能的实现方式中,第一报文的bier头的entropy还包括第三部分,该第三部分用于第三设备从多条bift中选择一条bift。96.如图5所示,为本技术提供了一种发送报文的设备,该设备可以是图1中的设备b,也可以是图2中的设备a1、b1、a2和b2,还可以是方法流程图3和图4中的第一设备,可以实现所述第一设备的功能。所述第一设备包括生成单元501、确定单元502,选择单元503和发送单元504。97.在一种可能的实现方式中,生成单元501用于生成包含bier头的第一报文。该bier头包含entropy,该entropy用于沿着转发路径转发所述第一报文。该entropy包含第一部分和第二部分,其中,第一部分与第二部分不同。确定单元502用于根据第一报文的目的地址确定存在多条用于转发第一报文的转发表项。选择单元503用于根据第一部分从多条转发表项中选择一条转发表项。所选择的转发表项包含第二设备的地址,其中第二设备为第一设备的下一跳设备。发送单元504用于向第二设备发送第一报文。第二部分用于第二设备从多条用于转发第一报文的转发表项中选择一条转发表项。98.在一种可能的实现方式中,第一部分和第二部分占用的entropy的比特位不同。99.在一种可能的实现方式中,确定单元502还用于根据第一设备的多条用于转发第一报文的转发表项的数量和第二设备的多条用于转发第一报文的转发表项的数量确定所述第一报文的bier头的entropy值。100.在一种可能的实现方式中,该设备还包括接收单元,其中,接收单元用于从第四设memory,简称:cam),例如三态内容寻址存储器(英文:ternarycam,简称:tcam),随机存取存储器(英文:random‑accessmemory,简称:ram)。111.存储器703也可以集成在处理器702中。如果存储器703和处理器702是相互独立的器件,存储器573和处理器702相连,例如存储器703和处理器702可以通过总线通信。网络接口701和处理器702可以通过总线通信,网络接口701也可以与处理器702直连。112.总线704可以包括任意数量的互联的总线和桥,总线704将包括由处理器702代表的一个或多个处理器702和存储器703代表的存储器的各种电路链接在一起。总线704还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。113.在一种可能的实现方式中,网络接口701用于向第二设备发送第一报文,其中第一报文bier头的entropy的第二部分用于第二设备从多条用于转发第一报文的转发表项中选择一条转发表项。处理器702用于生成包含bier头的第一报文,还用于根据第一报文的目的地址确定存在多条用于转发第一报文的转发表项,以及用于根据第一部分从多条转发表项中选择一条转发表项。该bier头包含熵entropy。该entropy用于沿着转发路径转发第一报文。该entropy包含第一部分和第二部分,其中,第一部分与第二部分不同。所选择的转发表项包含第二设备的地址,其中,第二设备为设备的下一跳设备。114.在一种可能的实现方式中,第一部分和第二部分占用entropy的比特位不同。115.在一种可能的实现方式中,处理器702还用于根据第一设备的多条用于转发第一报文的转发表项的数量和第二设备的多条用于转发第一报文的转发表项的数量确定所述第一报文的bier头的entropy值。116.在一种可能的实现方式中,该设备还包括接收单元,其中,接收单元用于从第四设备接收第二报文。生成单元用于对所述第二报文封装bier头生成所述第一报文。117.在该具体实施方式中,所述处理器702和所述网络接口701的具体实现可以参考图3和图4中所述第一设备的功能和实施步骤,为了简洁,不再赘述。118.如图8所示,为本技术提供了另一种发送报文的设备,该设备可以是图2中的设备c1、d1、c2和d2,该设备还可以是方法流程图3和图4中的第二设备,可以实现所述第二设备的功能。该设备包括网络接口801和处理器802,还可以包括存储器803。119.处理器802包括但不限于中央处理器(英文:centralprocessingunit,简称:cpu),网络处理器(英文:networkprocessor,简称:np),专用集成电路(英文:application‑specificintegratedcircuit,简称:asic)或者可编程逻辑器件(英文:programmablelogicdevice,缩写:pld)中的一个或多个。上述pld可以是复杂可编程逻辑器件(英文:complexprogrammablelogicdevice,缩写:cpld),现场可编程逻辑门阵列(英文:field‑programmablegatearray,缩写:fpga),通用阵列逻辑(英文:genericarraylogic,缩写:gal)或其任意组合。处理器802负责管理总线804和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节,电源管理以及其他控制功能。存储器803可以用于存储处理器802在执行操作时所使用的数据,例如可以存储第二设备用于转发第一报文的转发表项。120.网络接口801可以是有线接口,例如光纤分布式数据接口(英文:fiberdistributeddatainterface,简称:fddi)、以太网(英文:ethernet)接口。网络接口801也可以是无线接口,例如无线局域网接口。121.存储器803可以是包括但不限于内容寻址存储器(英文:content‑addressablememory,简称:cam),例如三态内容寻址存储器(英文:ternarycam,简称:tcam),随机存取存储器(英文:random‑accessmemory,简称:ram)。122.存储器803也可以集成在处理器802中。如果存储器803和处理器802是相互独立的器件,存储器803和处理器802相连,例如存储器803和处理器802可以通过总线通信。网络接口801和处理器802可以通过总线通信,网络接口801也可以与处理器802直连。123.总线804可以包括任意数量的互联的总线和桥,总线804将包括由处理器802代表的一个或多个处理器802和存储器803代表的存储器的各种电路链接在一起。总线804还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。124.在一种可能的实现方式中,网络接口801用于接收第一报文以及向第三设备发送第一报文,其中,第一报文包含bier头,该bier头包含entropy。该entropy用于沿着转发路径转发第一报文,其中,entropy包含第一部分和第二部分,第一部分与所述第二部分不同。第一部分用于第一设备从多条用于转发第一报文的转发表项中选择一条转发表项。处理器802根据第一报文的目的地址确定存在多条用于转发第一报文的转发表项,以及根据第二部分从多条转发表项中选择一条转发表项。该选择的转发表项包含第三设备的地址,其中,第三设备为所述第二设备的下一跳设备。125.在一种可能的实现方式中,第一部分和第二部分占用entropy的比特位不同。126.在一种可能的实现方式中,所述第一报文的bier头的entropy值根据第一设备的多条用于转发第一报文的转发表项的数量和第二设备的多条用于转发第一报文的转发表项的数量确定。127.在该具体实施方式中,所述处理器802和所述网络接口801的具体实现可以参考图3和图4中所述的第二设备的功能和实施步骤,为了简洁,不再赘述。128.如图9所示,为本技术提供一种发送报文的系统。该系统包括第一设备901和第二设备902。129.在一种可能的实现方式中,第一设备901用于生成包含bier头的第一报文,以及根据第一报文的目的地址确定存在多条用于转发第一报文的转发表项,并根据第一部分从多条转发表项中选择一条转发表项,向所述第二设备发送所述第一报文。该bier头包含熵entropy。entropy用于沿着转发路径转发第一报文。该entropy包含第一部分和第二部分,其中,所述第一部分与所述第二部分不同。所选择的转发表项包含第二设备902的地址,该第二设备902为所述第一设备901的下一跳设备。130.第二设备902用于接收第一设备901发送的第一报文,根据第一报文的目的地址确定存在多条用于转发第一报文的转发表项,以及根据所述第二部分从所述多条转发表项中选择一条转发表项,向第三设备发送第一报文,其中所述第三设备为所述第二设备的下一跳设备。131.在一种可能的实现方式中,第一部分和第二部分占用该entropy的比特位不同。132.在一种可能的实现方式中,第一设备901还用于根据所述第一设备901的多条用于转发所述第一报文的转发表项的数量和第二设备902的多条用于转发所述第一报文的转发表项的数量确定所述第一报文的bier头的entropy值。133.在一种可能的实现方式中,所述第一设备901还用于从第四设备接收第二报文,并对所述第二报文封装bier头生成所述第一报文。134.所述第一设备既可以是图1中的设备b,也可以是图2中的设备a1、b1、a2和b2,还可以是方法流程图3和图4中的第一设备,可以实现第一设备的功能。所述第二设备可以是设备c1、d1、c2和d2,该设备还可以是方法流程图3和图4中的第二设备,可以实现第二设备的功能。135.在上述实施方式中,所述第一设备901具体实现可以参考图3和图4中所述的第一设备的功能和实施步骤。所述第二设备902具体实现可以参考图3和图4中所述的第二设备的功能和实施步骤,为了简洁,不再赘述。136.应理解,在本技术的各种实施例中,上述各方法的序号的大小并不意味着执行顺序的先后,各方法的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。137.在本技术所提供的几个实施例中,应该理解到,所公开的方法和设备,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。138.所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。139.另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个单元中。上述集成的模块既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。140.所述集成的单元如果以硬件结合软件的形式实现并作为独立的产品销售或使用时,所述软件可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案对现有技术做出贡献的部分技术特征可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的部分或全部步骤。而前述的存储介质可以是u盘、移动硬盘、只读存储器(简称:rom,英文:read‑onlymemory)、随机存取存储器(简称:ram,英文:randomaccessmemory)、磁碟或者光盘。当前第1页12当前第1页12
再多了解一些

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

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

相关文献