CN113259248A - 用于确定转发业务流的链路的方法及装置 - Google Patents
用于确定转发业务流的链路的方法及装置 Download PDFInfo
- Publication number
- CN113259248A CN113259248A CN202010364422.2A CN202010364422A CN113259248A CN 113259248 A CN113259248 A CN 113259248A CN 202010364422 A CN202010364422 A CN 202010364422A CN 113259248 A CN113259248 A CN 113259248A
- Authority
- CN
- China
- Prior art keywords
- link
- column
- row
- links
- determining
- 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.)
- Granted
Links
Images
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/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/7453—Address table lookup; Address filtering using hashing
-
- 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/16—Multipoint routing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请公开了一种用于确定转发业务流的链路的方法、装置及存储介质,属于通信技术领域。在本申请实施例中,第一转发设备可以获取第一业务流的标识信息,根据第一业务流的标识信息、链路带宽矩阵和N条链路分别对应的链路状态,确定用于转发第一业务流的第一链路。由此可见,本申请实施例中无需根据每个转发设备的设备标识进行哈希运算,也无需通过比较多个哈希值来确定由哪个转发设备来进行转发,运算量相对较小,效率较高。
Description
本申请要求于2020年2月7日提交的申请号为202010082312.7、申请名称为“一种基于非等值负载分担的转发方法、装置及系统”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及通信技术领域,特别涉及一种用于确定转发业务流的链路的方法及装置。
背景技术
目前在组播场景中,组播数据的接收端可以连接多个转发设备。该多个转发设备均可以接收到组播源发送的组播数据。在这种情况下,多个转发设备可以通过哈希算法来确定是否由自身来将组播数据转发给接收端。当该多个转发设备中的任一个转发设备接收到组播数据之后,该任一个转发设备可以使用与其他转发设备相同的哈希算法,根据自身的接口标识和组播数据的信息进行哈希运算,得到第一哈希值。该任一个转发设备还可根据其他设备的接口标识和组播数据的信息进行哈希运算,得到其他设备对应的哈希值。该任一个转发设备从得到的所有哈希值中确定最大哈希值。如果最大哈希值对应的设备为自身,则该转发设备可以作为选中的转发设备向接收端转发组播数据,如果最大哈希值对应的设备不为自身,则该转发设备不进行组播数据的转发。接收端连接的转发设备的数量决定了需要进行哈希运算的数量,并且接收端所连接的每个转发设备需要对计算得到的哈希值比较大小,计算量较大且效率较低。
发明内容
本申请提供了一种用于确定转发业务流的链路的方法及装置,能够减少计算量并提高效率。所述技术方案如下:
第一方面,本申请提供了一种用于确定转发业务流的链路的方法,应用于第一转发设备,所述方法包括:获取第一业务流的标识信息;根据链路带宽矩阵、所述第一业务流的标识信息和N条链路分别对应的链路状态,从所述N条链路中确定用于转发所述第一业务流的第一链路,所述链路带宽矩阵用于指示所述N条链路分别对应的链路带宽,所述N不小于2。
在本申请实施例中,第一转发设备可以获取第一业务流的标识信息,根据第一业务流的标识信息、链路带宽矩阵和N条链路分别对应的链路状态,确定用于转发第一业务流的第一链路。由此可见,本申请实施例中无需根据每个转发设备的设备标识进行哈希运算,也无需通过比较多个哈希值来确定由哪个转发设备来进行转发,运算量相对较小,效率较高。
在一种实现方式中,本申请实施例提供的确定转发业务流的链路的方法还可以包括:获取第二业务流的标识信息;根据所述第二业务流的标识信息、所述链路带宽矩阵和所述N条链路分别对应的链路状态,从所述N条链路中确定用于转发所述第二业务流的第二链路。在本申请实施例中,对于接收到的业务流,第一转发设备均可以采用本申请实施例提供的方法来确定用来转发业务流的链路,可针对业务流选择用来转发的链路,有助于实现多条业务流的负载分担。
在一种实现方式中,所述根据链路带宽矩阵、所述第一业务流的标识信息和N条链路分别对应的链路状态,从所述N条链路中确定用于转发所述第一业务流的第一链路的实现过程可以包括:对所述第一业务流的标识信息进行哈希运算,得到第一哈希值;根据所述链路带宽矩阵、所述第一哈希值和所述N条链路分别对应的链路状态,从所述N条链路中确定所述第一链路。
在一种可能的实现方式中,所述链路带宽矩阵为M×(N+3)矩阵,所述M不小于1,所述M行中的第i行对应第i种链路带宽,所述i的取值范围为1至M,所述N列中的第j列对应第j条链路,所述第j列包括的x个第一元素用于指示所述第j条链路为第x种链路带宽,所述x的取值范围为1至M,所述第N+3列表示带宽差,所述第N+2列表示累加配置带宽,所述第N+1列表示累加实际带宽;所述第N+3列中的第i+1行的元素为第i+1行对应的链路带宽与第i行对应的链路带宽的差值,所述第N+3列中的第1行的元素为第1种链路带宽的值;所述第N+2列中的第i+1行的元素为第N+3列中第i+1行的元素与所述N列中第i+1行包括的第一元素的个数的乘积与所述第N+2列中第i行的元素的和,所述第N+2列中的第1行的元素为所述N列中第1行包括的第一元素的个数;所述第N+1列中的第i+1行的元素为第N+3列中的第i+1行的元素与所述N列中N-Y列中第i+1行包括的第一元素的个数的乘积与所述第N+1列中第i行元素的和,所述Y为链路状态为故障的链路数量,所述Y的取值范围为0至N-1,所述第N+3列中的第1行的元素为所述N列中N-Y列中第1行包括的第一元素的个数。
在一种实现方式中,链路带宽矩阵的第N+1列、第N+2列以及第N+3列也可以分别单独存储为一个向量。
当链路带宽矩阵为上述的链路带宽矩阵时,所述根据链路带宽矩阵、所述第一哈希值和N条链路分别对应的链路状态,从所述N条链路中确定所述第一链路的实现过程可以包括:根据所述第N+2列中的第M行的元素和所述第一哈希值,确定第一数值k1;从所述第N+2列中的第1行的元素开始,确定值大于所述k1的元素所在的行数Z;根据所述k1、所述第N+2列中第(Z-1)行的元素和所述第N+3列中第Z行的元素,确定第二数值k2;根据所述N列中的第Z行的元素、所述k2和所述N条链路分别对应的链路状态,确定所述第一链路。
在一种实现方式中,所述根据所述N列中的第Z行的元素、所述k2和所述N条链路分别对应的链路状态,确定所述第一链路的实现过程可以包括:在所述N列中的第Z行的元素中查找第k2个第一元素所在的列;如果所述第k2个第一元素所在的列对应的链路状态为正常,则将所述第k2个第一元素所在的列对应的链路确定为所述第一链路。
在一种实现方式中,如果查找到的第k2个第一元素所在的列对应的链路状态为故障,则根据所述第一哈希值和所述第N+1列中的第P行的元素,确定第三数值k3,所述P为除去链路状态为故障的Y条链路之外剩余的N-Y条链路所对应的链路带宽的种类数量;从所述N+1列中的第1行的元素开始,确定值大于所述k3的元素所在的行数Z’;根据所述k3、所述第N+1列中的第(Z’-1)行的元素和所述第N+3列中第Z’行的元素,确定第四数值k4;在所述N-Y列中的第Z’行的元素中查找第k4个第一元素所在的列,将所述第k4个第一元素所在列对应的链路确定为所述第一链路。
在本申请实施例中,通过对业务流的标识信息进行哈希,进而通过查找链路带宽矩阵即可以确定出用于转发业务流的链路,无需对每条链路或者是每个转发设备的标识信息进行哈希,减少了计算量,提高了负载分担的效率。在本申请实施例中,当确定出的链路为故障时,通过第二次运算即可以避开故障链路确定出其他正常链路来转发该业务流,提高了业务转发的稳定性以及负载分担的效率。
在另一种可能的实现方式中,所述链路带宽矩阵为M×(N+2)矩阵,所述M不小于1,所述M行中的第i行对应第i种链路带宽,所述i的取值范围为1至M,所述N列中的第j列对应第j条链路,所述第j列包括的x个第一元素用于指示所述第j条链路为第x种链路带宽,所述x的取值范围为1至M,所述第N+2列表示配置带宽,所述第N+1列表示实际带宽;所述第N+2列第i行的元素为所述N列的第i行包括的第一元素的数量;所述第N+1列第i行的元素为所述N列中N-Y列中的第i行包括的第一元素的数量,所述Y为链路状态为故障的链路数量,所述Y的取值为范围为0至N-1。
当链路带宽矩阵为上述的第二种链路带宽矩阵时,所述根据链路带宽矩阵、所述第一哈希值和N条链路分别对应的链路状态,从所述N条链路中确定所述第一链路的实现过程可以包括:根据所述M和所述第一哈希值,确定第五数值t1,所述t1的取值范围为1至M;根据所述第N+2列中第1行至第M行中的第t1个元素和所述第一哈希值,确定第六数值t2;根据所述t1、所述t2、所述链路带宽矩阵和所述N条链路分别对应的链路状态,确定所述第一链路。
在一种实现方式中,所述根据所述t1、所述t2、所述链路带宽矩阵和所述N条链路分别对应的链路状态,确定所述第一链路的实现过程可以包括:在所述N列中的第t1行按照预设方向查找第t2个第一元素所在的列;如果所述第t2个第一元素所在的列对应的链路状态为正常,则所述第t2个第一元素所在的列对应的链路确定为所述第一链路。
在一种实现方式中,如果所述第t2个第一元素所在的列对应的链路状态为故障,则根据所述第一哈希值和P,确定第七数值t3,所述P为除去链路状态为故障的Y条链路之外剩余的N-Y条链路所对应的链路带宽的种类数量;根据所述第N+1列中从第1行到第M行的第t3个元素和所述第一哈希值,确定第八数值t4;在所述N-Y列中的第t3行查找第t4个第一元素所在的列;将所述第t4个第一元素所在的列对应的链路确定为所述第一链路。
在一种实现方式中,对于前述的两种链路带宽矩阵,所述链路带宽矩阵还可以包括第M+1行,所述第M+1行中的第j列的元素用于指示第j条链路对应的链路状态。也即,可以通过链路带宽矩阵的第M+1行来存放每条链路对应的链路状态。
在一种实现方式中,所述第一业务流可以为组播业务流,在这种情况下,在根据链路带宽矩阵、所述第一业务流的标识信息和N条链路分别对应的链路状态,从所述N条链路中确定用于转发所述第一业务流的第一链路之后,如果所述第一链路为所述第一转发设备对应的链路,则通过所述第一链路转发所述第一业务流;如果所述第一链路不为所述第一转发设备对应的链路,则不对所述第一业务流进行转发。
本申请实施例提供的确定转发业务流的链路的方法可以用于组播场景中,在该种场景中,N条链路可以是多个转发设备上的链路,该多个转发设备中的每个转发设备均可以采用上述方法来确定用于转发第一业务流的第一链路。因此,在确定出第一链路之后,第一转发设备可以检测第一链路是否为自身的链路,如果是则转发,如果不是则不转发。如此,实现了组播场景中多条业务流在多个转发设备上的负载分担。
在一种实现方式中,在组播场景中,第一转发设备在确定用于转发业务流的链路之前,还可以获取所述第一转发设备的配置信息和其他转发设备的配置信息,所述配置信息包括所述第一转发设备和所述其他转发设备所属的负载分担组的信息以及所述负载分担组包括的N条链路的链路带宽;根据所述配置信息,生成所述链路带宽矩阵。
其中,所述其他转发设备的配置信息由所述其他转发设备发送至所述第一转发设备。或者,所述替他转发设备的配置信息也可以是静态配置在第一转发设备上的。
在一种实现方式中,在本申请实施例中,所述第一业务流也可以为单播业务流,在这种情况下,在根据链路带宽矩阵、所述第一业务流的标识信息和N条链路分别对应的链路状态,从所述N条链路中确定用于转发所述第一业务流的第一链路之后,第一转发设备可以通过所述第一链路对所述第一业务流进行转发。
本申请实施例提供的确定转发业务流的链路的方法还可以应用于单播业务场景中。在该种场景中,第一转发设备上可以包括N条链路,第一转发设备在接收到业务流之后,可以通过本申请实施例提供的方法来确定到底通过N条链路中的哪条链路来发送该业务流,实现了多条业务流在单个转发设备的多条链路上的负载分担。
在一种实现方式中,在单播业务场景中,第一转发设备在确定转发业务流的链路之前,还可以获取所述N条链路的链路标识和链路带宽;根据所述N条链路的链路标识和链路带宽,生成所述链路带宽矩阵。其中,N条链路的链路标识以及链路带宽可以是静态配置在该第一转发设备上的。
第二方面,本申请还提供了一种用于确定转发业务流的链路的装置,所述用于确定转发业务流的链路的装置具有实现上述第一方面中用于确定转发业务流的链路的方法对应的功能。所述用于确定转发业务流的链路的装置包括至少一个模块,该至少一个模块用于实现上述第一方面所提供的用于确定转发业务流的链路的方法。
第三方面,本申请还提供了一种网络设备,所述网络设备的结构中包括处理器和存储器,所述存储器用于存储支持网络设备执行上述第一方面所提供的用于确定转发业务流的链路的方法的程序,以及存储用于实现上述第一方面所提供的用于确定转发业务流的链路的方法所涉及的数据。所述处理器被配置为用于执行所述存储器中存储的程序。所述存储设备的操作装置还可以包括通信总线,该通信总线用于该处理器与存储器之间建立连接。
第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面所述的用于确定转发业务流的链路的方法。
第五方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面所述的用于确定转发业务流的链路的方法。
上述第二方面、第三方面、第四方面和第五方面所获得的技术效果与第一方面中对应的技术手段获得的技术效果近似,在这里不再赘述。
本申请提供的技术方案带来的有益效果至少包括本申请实施例中无需根据每个转发设备的设备标识进行哈希运算,也无需通过比较多个哈希值来确定由哪个转发设备来进行转发,运算量相对较小,效率较高。
附图说明
图1是本申请实施例提供的一种将用于确定转发业务流的链路的方法应用于组播业务场景的实施环境图;
图2是本申请实施例提供的一种将用于确定转发业务流的链路的方法应用于单播业务场景的实施环境图;
图3是本申请实施例提供的一种网络设备的结构示意图;
图4是本申请实施例提供的另一种网络设备的结构示意图;
图5是本申请实施例提供的又一种网络设备的结构示意图;
图6是本申请实施例提供的一种用于确定转发业务流的链路的方法流程图;
图7是本申请实施例提供的另一种用于确定转发业务流的链路的方法流程图;
图8是本申请实施例提供的一种用于确定转发业务流的链路的装置结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
图1是本申请实施例提供的一种将用于确定转发业务流的链路的方法应用于组播业务场景的实施环境图。如图1所示,该实施环境中可以包括第一转发设备101、第二转发设备102、组播发送端103和组播接收端104。其中,第一转发设备101和第二转发设备102均与组播接收端104建立有通信连接。并且,第一转发设备101和第二转发设备102可以均与组播发送端103建立有通信连接。
在一种可能的实现方式中,第一转发设备101和第二转发设备102可以通过交换机105与组播接收端104进行通信。第一转发设备101和第二转发设备102在接收到组播发送端103发送的组播业务流之后,可以通过本申请实施例提供的确定转发业务流的链路的方法,确定用于转发该组播业务流的链路,进而在确定该链路为自身对应的链路的情况下,相应转发设备通过该链路转发该组播业务流,而另一个转发设备则不进行组播业务流的转发。如此,实现不同的组播业务流的负载分担。第一转发设备101和第二转发设备102分别通过二层接口与组播接收端104进行通信。或者,第一转发设备101和第二转发设备102也可以分别通过以太网链路聚合(Eth-trunk)接口与组播接收端104进行通信。
另外,在本申请实施例中,第一转发设备101和第二转发设备102可以采用协议无关组播(protocol independent protocol,PIM)协议与组播发送端103连接。或者,第一转发设备101和第二转发设备102可以通过以太虚拟专用网络(ethernet virtual privatenetwork,EVPN)与组播发送端103连接。或者,第一转发设备101和第二转发设备102可以通过组播虚拟专用网络(multicast virtual private network,MVPN)与组播发送端103连接。
其中,第一转发设备101和第二转发设备102可以为路由器,也可以为其他具有路由转发功能的网络设备,本申请实施例对此不作限定。并且,在图1中仅以两个转发设备为例来说明本申请实施例的实施环境,在实际应用中,转发设备的数量可以多于两个,例如,可以包括3个、4个或者更多,在这种情况下,每个转发设备均可以使用本申请实施例提供的方法来确定接收到的组播业务流所对应的链路,从而将各个组播业务流分担至各个转发设备,以实现组播业务的负载分担。
图2是本申请实施例提供的一种将用于确定转发业务流的链路的方法应用于单播业务场景的实施环境图。如图2所示,在该实施环境中可以包括第一转发设备101、第二转发设备102、多个第一客户端103以及多个第二客户端104。其中,多个第一客户端103可以均与第一转发设备101进行通信,第一转发设备101可以与第二转发设备102进行通信,第二转发设备102可以与多个第二客户端104进行通信。
其中,如图2所示,第一转发设备101和第二转发设备102上可以均配置有Eth-trunkA接口,该Eth-trunkA接口可以包括多个成员口,例如,可以包括三个成员口1-3。其中,第一转发设备101上的成员口1-3与第二转发设备102上的成员口1-3一一对应,形成三条链路。
当任一第一客户端103作为发送端发送单播业务流时,第一转发设备101可以采用本申请实施例提供的方法确定用于转发该单播业务流的链路,进而通过相应地成员口转发该单播业务流。相应地,第二转发设备102可以通过对应的成员口接收该单播业务流,并将该单播业务流转发至对应的第二客户端。当任一第二客户端104作为发送端发送单播业务流时,第二转发设备102则可以参考前述第一转发设备101的实现方式对该单播业务流进行转发。其中,第一转发设备101和第二转发设备102可以为路由器、交换机等具有数据转发功能的网络设备。
图3是本申请实施例提供的一种网络设备的结构示意图。该网络设备具有实现上述图1或图2中所示的第一转发设备和第二转发设备的功能,该功能可以基于硬件实现,也可以基于硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。
参见图3,该网络设备包括至少一个处理器301,通信总线302,存储器303以及至少一个通信接口304。
处理器301可以是一个网络处理器(network processing unit,CPU),通用中央处理器(central processing unit,CPU),微处理器,特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于控制本申请方案程序执行的集成电路。
通信总线302可包括一通路,在上述组件之间传送信息。
存储器303可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其它类型的静态存储设备,随机存取存储器(random access memory,RAM))或者可存储信息和指令的其它类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)、只读光盘(compactdisc read-only memory,CD-ROM)或其它光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其它磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于此。存储器303可以是独立存在,通过通信总线302与处理器301相连接。存储器303也可以和处理器301集成在一起。
通信接口304,使用任何收发器一类的装置,用于与其它设备或通信网络通信,如以太网,无线接入网(RAN),无线局域网(wireless local area networks,WLAN)等。
在具体实现中,作为一种实施例,处理器301可以包括一个或多个CPU,例如图2中所示的CPU0和CPU1。
在具体实现中,作为一种实施例,网络设备可以包括多个处理器,例如图3中所示的处理器301和处理器305。这些处理器中的每一个可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
其中,存储器303用于存储执行本申请方案的程序代码,并由处理器301来控制执行。处理器301用于执行存储器303中存储的程序代码306。程序代码306中可以包括一个或多个软件模块。该网络设备可以通过处理器301以及存储器303中的程序代码306中的一个或多个软件模块,来实现下述方法中的任意可能的实现方式中的方法。
参见图4,在另一种可能的设计中,该网络设备可以包括处理器401、发送器402、接收器403、随机存取存储器404、只读存储器405以及总线406。其中,处理器401通过总线406分别耦接发送器402、接收器403、随机存取存储器404以及只读存储器405。其中,当需要运行网络设备时,通过固化在只读存储器中的基本输入/输出系统或者嵌入式系统中的bootloader引导系统进行启动,引导网络设备进入正常运行状态。在网络设备进入正常运行状态后,在随机存取存储器中运行应用程序和操作系统,使得该处理器执行下述实施例中下述方法中的任意可能的实现方式中的方法。
参见图5,在另一种可能的设计中,该网络设备包括主控板501和接口板502,进一步,还可以包括交换网板503。该网络设备用于执行下述方法中的任意可能的实现方式中的方法。具体地,该网络设备包括用于执行下述方法中的任意可能的实现方式中的方法的模块。
在另一种可能的设计中,该网络设备包括控制器和第一转发子设备。第一转发子设备包括:接口板,进一步,还可以包括交换网板。第一转发子设备用于执行接口板的功能,进一步,还可以执行上述中交换网板的功能。控制器包括接收器、处理器、发送器、随机存取存储器、只读存储器以及总线。其中,处理器通过总线分别耦接接收器、发送器、随机存取存储器以及只读存储器。其中,当需要运行控制器时,通过固化在只读存储器中的基本输入/输出系统或者嵌入式系统中的bootloader引导系统进行启动,引导控制器进入正常运行状态。在控制器进入正常运行状态后,在随机存取存储器中运行应用程序和操作系统,使得该处理器执行上述中主控板的功能。
接下来对本申请实施例提供的用于确定转发业务流的链路的方法进行说明。
图6和图7是本申请实施例提供的两种用于确定转发业务流的链路的方法流程图。其中,图6用于在单个转发设备上的多条链路中选择一条链路进行负载分担的情况,例如,图2所示的单播业务的Eth-trunk场景中。图7用于从多个转发设备对应的多条链路中选择一条链路进行负载分担的情况,例如图1所示的组播业务场景中。该方法可以应用于图1或2所示的任一转发设备中,在本实施例中以该方法应用于第一转发设备中为例对该方法的实现过程进行说明。参见图6和图7,该方法包括以下步骤:
步骤601:第一转发设备获取第一业务流的标识信息。
在本申请实施例中,第一转发设备可以接收第一业务流,并获取第一业务流的标识信息。其中,根据应用场景的不同,第一业务流可能为单播业务流,也可能为组播业务流。
第一业务流的标识信息可以是能够唯一标识该业务流的信息。例如,可以获取属于第一业务流的报文中的五元组信息作为该第一业务流的标识信息,或者是获取第一业务流的报文中的IPv6源地址和IPv6头的流标签作为第一业务流的标识信息。或者是直接将第一业务流的报文中的IPv6头的流标签作为第一业务流的标识信息。
步骤602:第一转发设备根据链路带宽矩阵、第一业务流的标识信息和N条链路分别对应的链路状态,从N条链路中确定用于转发第一业务流的第一链路,该链路带宽矩阵用于指示N条链路分别对应的链路带宽,N不小于2。
在获取到第一业务流的标识信息之后,第一转发设备可以对第一业务流的标识信息进行哈希运算,得到第一哈希值,之后,根据链路带宽矩阵、第一哈希值和N条链路分别对应的链路状态,从该N条链路中确定第一链路。
其中,链路带宽矩阵可以有不同的实现方式,相应地,根据链路带宽矩阵、第一哈希值和N条链路分别对应的链路状态确定第一链路的方法也可以不同。接下来,本申请实施例将对其中可能的两种实现方式进行详细的说明。
第一种实现方式:
在该种实现方式中,链路带宽矩阵为M×(N+3)矩阵,M不小于1。M可以等于1,也可以为不小于2的其他数值。M行中的第i行对应第i种链路带宽,i的取值为大于或等于1且小于或等于M的整数,也可称为i的取值范围为1至M所确定的整数区间,N列中的第j列对应第j条链路,第j列包括的x个第一元素用于指示第j条链路为第x种链路带宽,x的取值范围为1至M,第N+3列表示带宽差,第N+2列表示累加配置带宽,第N+1列表示累加实际带宽。
其中,第N+3列中的第i+1行的元素为第i+1行对应的链路带宽与第i行对应的链路带宽的差值,第N+3列中的第1行的元素为第1种链路带宽的值;
第N+2列中的第i+1行的元素为第N+3列中第i+1行的元素与N列中第i+1行包括的第一元素的个数的乘积与第N+2列中第i行的元素的和,第N+2列中的第1行的元素为N列中第1行包括的第一元素的个数;
第N+1列中的第i+1行的元素为第N+3列中的第i+1行的元素与N列中N-Y列中第i+1行包括的第一元素的个数的乘积与第N+1列中第i行元素的和,Y为链路状态为故障的数量,Y的取值范围为0至N-1,第N+3列中的第1行的元素为N列中N-Y列中第1行包括的第一元素的个数。
如下表1中所示矩阵,假设N为16,也即存在16条链路,M等于7,也即存在7种链路带宽。在这种情况下,链路带宽矩阵将为7×(16+3)的矩阵。
表1链路带宽矩阵的示意
Num0 | Num1 | Num2 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
\\ | 7 | 5 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | LsBs |
60 | 267 | \\ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | BwBs6(bw=100) |
20 | 147 | \\ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | BwBs5(bw=40) |
10 | 107 | 67 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | BwBs4(bw=20) |
6 | 77 | 57 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | BwBs3(bw=10) |
2 | 47 | 39 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | BwBs2(bw=4) |
1 | 27 | 23 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | BwBs1(bw=2) |
1 | 16 | 14 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | BwBs0(bw=1) |
其中,该矩阵所包括的7行中的第i行对应第i种链路带宽。其中,i的取值为大于或等于1且小于或等于7的整数,也可称为i的取值范围为1至7所确定的整数区间。当i=1时,第1行对应第1种链路带宽。当i=2时,第2行对应第2种链路带宽,以此类推。在表1的示例中,通过BwBs(i-1)来标识第i种链路带宽,也即表1中的BwBs0所标识的带宽为第1种链路带宽,BwBs1所标识的带宽为第2种链路带宽,以此类推,BwBs6所标识的带宽为第7种链路带宽。其中,在上述示例中,第1种链路带宽为1,第2种链路带宽为2,第3种链路带宽为4,第4种链路带宽为10,第5种链路带宽为20,第6种链路带宽为40,第7种链路带宽为100。
该矩阵所包括的16列中第j列对应第j条链路。其中,j的取值为大于或等于1且小于或等于16的整数,也可称为j的取值范围为1至16所确定的整数区间。当j=1时,第1列元素对应第1条链路。当j=2时,第2列元素对应第2条链路,以此类推。在表1的示例中,j-1所标识的列对应第j条链路,例如:表1中0所标识的列对应第1条链路,表1中1所标识的列对应第2条链路,以此类推,表1中15所标识的列对应第16条链路。
另外,在16列中第j列包括的x个第一元素用于指示第j条链路的链路带宽为第x种链路带宽,x的取值为大于等于1且小于等于7的整数,也可称为x的取值范围为1至7所确定的整数区间。其中,第一元素可以包括1,相应地,第j列中的剩余元素可以包括与第一元素不同的元素,例如,可以包括0。当然,第一元素也可以包括其他数值,其他元素为另外的数值,只要二者不同即可,本申请实施例对此不作限定。
表1中以第一元素为1为例,0所标识的第1条链路对应的第1列元素中从第1行到第7行包括2个第一元素,由此可知,第1条链路对应的链路带宽为第2种链路带宽。1所标识的第2条链路对应的第2列元素中从第1行至第7行包括3个第一元素,因此,第2条链路对应的链路带宽为第3种链路带宽。同理可知,第3条链路对应的链路带宽为第4种链路带宽,第4条链路和第5条链路对应的链路带宽均为第7种链路带宽,第6条链路至第10条链路对应的链路带宽为第1种链路带宽。第11条链路至第14条链路对应的链路带宽均为第3种链路带宽。第15条链路对应的链路带宽为第4种链路带宽。第16条链路对应的链路带宽为第5种链路带宽。
如表1中所示,第N+3列也即第19列为带宽差列,用Num0表示。第19列中的第1行的元素为第1种链路带宽的值,第19列中的第i+1行的元素为第i+1行对应的链路带宽与第i行对应的链路带宽的差值。如表1中所示,第19列中第2行的元素为第2行对应的链路带宽与第1行对应的链路带宽的差值,也即2-1=1。第19列中第3行的元素为第3行对应的链路带宽与第2行对应的链路带宽的差值,也即4-2=2。第19列中第4行的元素为第4行对应的链路带宽与第3行对应的链路带宽的差值,也即10-4=6。以此类推,可知,第19列中第5行的元素为20-10=10,第6行的元素为40-20=20,第7行的元素为100-40=60。
如表1所示,第N+2列也即第18列表示累加配置带宽,用Num1表示。第18列中的第1行元素为前述的16条链路对应的16列中第1行包括的第一元素的个数,在表1的示例中,第一元素为1,如表1所示,16列中第1行包括的1的个数为16,因此可得第18列中第1行元素为16。第18列中第i+1行的元素为第N+3列中第i+1行的元素与N列中第i+1行包括的第一元素的个数的乘积与第N+2列中第i行的元素的和。如表1所示,16条链路对应的16列中第2行包括的第一元素的个数为11,第19列中第2行的元素为1,第18列中第1行的元素也为16,所以,第18列中第2行的元素即为:1*11+16=27。同理,第18列中第3行的元素为第19列中第3行的元素与16列中第3行包括的第一元素的个数的乘积与第18列中第2行元素的和,也即为2*10+27=47。以此类推,第18列中第4行的元素为:6*5+47=77,第5行的元素为:10*3+77=107,第6行的元素为:20*2+107=147,第7行的元素为60*2+147=267。
如表1中所示,第N+1列也即第17列表示累加实际带宽,用Num2表示。第17列中的第1行的元素为16列中16-Y列中第1行包括的第一元素的个数。其中,Y为链路状态为故障的链路数量。
在本申请实施例中,链路状态可以通过链路带宽矩阵的第M+1行所包含的元素来表示,也即,链路带宽矩阵还可以包括第M+1行,其中,第M+1行中的第j列的元素可以用于指示第j条链路对应的链路状态。如表1所示,该链路带宽矩阵的第8行第1列的元素用于指示第1条链路的链路状态,第8行第2列的元素用于指示第2条链路的链路状态,以此类推。其中,当元素为1时,指示对应的链路的链路状态为正常,当元素为0时,则指示对应的链路的链路状态为故障。用于指示链路状态的元素的数值还可以取其他数值,在此不进行限定。
在表1的示例中,通过链路带宽矩阵的第8行的元素可以看出,第8行中第4列和第5列的元素为0,因此可知,第4条链路和第5条链路的链路状态为故障。也即,16条链路中有两条链路是故障的。相应地,在16条链路对应的16列中除去这两条链路对应的两列之外,剩余14列中第1行包括的第一元素的个数为14,因此可以得出第17列中的第1行的元素为14。
而对于第17列中第i+1行的元素,其等于第N+3列中的第i+1行的元素与N列中N-Y列中第i+1行包括的第一元素的个数的乘积与第N+1列中第i行元素的和。如表1所示,第19列中第2行的元素为1,16条链路对应的16列中除去故障的两列外剩余的14列中第2行包括的第一元素的个数为9,第17列中第1行的元素为14,由此可以得到第17列中第2行的元素为:1*9+14=23。同理,第17列中第3行的元素为第19列中第3行的元素乘以第除去故障的两列之外剩余14列中第3行包括的第一元素的个数,之后加上第17列中第2行的元素,也即2*8+23=39。以此类推,第17列中第4行的元素为:6*3+39=57,第5行的元素为:10*1+57=67,第6行的元素为:20*0+67=67,第7行的元素为:60*0+67=67。
在上述示例中,配置的带宽的种类一共有7种,可以通过第18列中第8行元素来表示配置的带宽为7种,也即,第18列中第8行的元素可以为7。16条链路对应的链路带宽种类一共是6种,分别为1、2、4、10、20和100。其中,去除掉16条链路中故障的两条链路对应的链路带宽bw=100,剩余的14条链路对应的链路带宽种类为5种,分别为1、2、4、10和20,可以通过第17列中第8行的元素来表示状态正常的链路对应的链路带宽种类数。相应地,在本申请实施例中,在第17列中可以计算第1行至第5行的元素,剩余两行的元素可以不进行计算。
在一些可能的实现方式中,各条链路的链路状态也可以单独存储为一个链路状态向量,在这种情况下,链路带宽矩阵也可以不包括第M+1行。以表1为示例,该链路带宽矩阵可以不包括第8行,而是可以将第8行单独存储为一个链路状态向量。这样,在使用链路状态时,第一转发设备可以直接通过该链路状态向量来确定各条链路的链路状态。
在另一些可能的实现方式中,链路带宽矩阵中的第N+1列、第N+2列以及第N+3列也可以均各自以一个向量的形式进行存储,本申请实施例对此不作限定。
当链路带宽矩阵为第一种实现方式中的链路带宽矩阵时,第一转发设备确定用于转发第一业务流的第一链路的过程可以包括:根据第N+2列中的第M行的元素和第一哈希值,确定第一数值k1;从第N+2列中的第i行的元素开始,确定值大于k1的元素所在的行数Z;根据k1、第N+2列中第(Z-1)行的元素和第N+3列中第Z行的元素,确定第二数值k2;根据N列中的第Z行的元素、k2和N条链路分别对应的链路状态,确定第一链路。
举例说明,第一转发设备通过对第一业务流的标识信息进行哈希,可以得到第一哈希值。第一转发设备可以对第一哈希值与第N+2列中第M行的元素取模,将取模得到的值加1,从而得到k1,之后,第一转发设备可以从第N+2列中的第1行元素开始,确定值大于k1的元素所在的行数Z。在确定Z之后,第一转发设备可以计算k1与第N+2列中第(Z-1)行的元素之间的差值,之后计算该差值和第N+3列中第Z行的元素之间的比值,并对该比值进行取整,得到第二数值k2。如果Z=1,则直接确定k2=Z=1。
以上述表1中的示例为例,第N+2列中第M行的元素即为第18列中第7行的元素267,假设第一转发设备对第一哈希值和267进行取模,得到的k1=100。之后,第一转发设备可以从第18列中的第1行元素开始,查找值大于100的元素所在的行,由表1中可知,第5行的元素的值大于100,因此可以得出Z=5。之后,第一转发设备可以计算k1与第18列中第4行的元素之间的差值,也即100-77=23。计算23和第19列中第5行的元素的比值,并对比值进行取整,也即计算23和10的比值,并对比值取整,可以得到k2=2。
在确定出第二数值k2之后,第一转发设备可以在N列中的第Z行的元素中查找第k2个第一元素所在的列,如果这一列对应的链路的链路状态为正常,则可以将这一列对应的链路确定为第一链路。
如果第一转发设备在第Z行的元素中找到的第k2个第一元素所在的列对应的链路状态为故障,则第一转发设备可以根据第一哈希值和第N+1列中的第P行的元素,确定第三数值k3,P为除去链路状态为故障的Y条链路之外剩余的N-Y条链路所对应的链路带宽的种类数量;从第N+1列中的第1行的元素开始,确定值大于k3的元素所在的行数Z’;根据k3、第N+1列中的第(Z’-1)行的元素和第N+3列中第Z’行的元素,确定第四数值k4;在N-Y列中的第Z’行的元素中查找第k4个第一元素所在的列,将第k4个第一元素所在列对应的链路确定为第一链路。
其中,第一转发设备可以对第一哈希值和第N+1列中的第M行的元素进行取模,得到k3,之后,第一转发设备可以从第N+1列中的第1行的元素开始,确定值大于k3的元素所在的行数Z’。在确定Z’之后,第一转发设备可以计算k3与第N+1列中第Z’-1行的元素之间的差值,计算该差值和第N+3列中的第Z’行的元素之间的比值,并对该比值取整,得到k4。之后,在除故障的Y条链路之外的剩余N-Y条链路对应的N-Y列中的第Z’行的元素中查找第k4个第一元素所在的列,将第k4个第一元素所在列对应的链路确定为第一链路。
以上述表1为例,且以Z=5,k2=2为例,第一转发设备可以在16条链路对应的16列中的第5行元素中查找第2个第一元素所在的列。其中,在查找时,第一转发设备可以按照从第1列到第16列的顺序,或者是从第16列到第1列的顺序,在第5行元素中查找第2个第一元素所在的列,此时,查找到的第2个第一元素所在的列将为第5列。之后,第一转发设备可以确定第5条链路对应的链路状态。由于第8行第5列的元素为0,因此可知,第5条链路的链路状态为故障,所以不可以将第5条链路作为转发第一业务流的第一链路。此时,第一转发设备可以对第一哈希值和第17列中第P行的元素进行取模。在本示例中,除去2条故障链路之外剩余的14条链路对应的链路带宽的种类数量为5,因此,P=5,所以第17列中第P行的元素即为67。第一转发设备可以对第一哈希值和67进行取模,得到k3。假设k3=32,第一转发设备可以从第17列中的第1行的元素开始,确定值大于32的元素所在的行的行数,由表1中可知,值大于32的元素所在的行为第3行,所以可得Z’=3。之后,计算k3与第17列中第2行的元素之间的差值,为32-23=9。计算9和第19列中第3行的元素2之间的比值,并对该比值进行取整,可得k4=4。在除2条故障链路之外剩余14条链路对应的14列中的第3行的元素中查找第4个第一元素所在的列。其中,可以按照从第1列到第16列的顺序进行查找,在这种情况下,查找到的列即为第12列,由于第12列对应的链路状态为正常,因此,可以将第12条链路作为用于转发第一业务流的第一链路。当然,也可以按照第16列到第1列的顺序查找,此时,查找到的列为第13列,第13列对应的链路状态为正常,因此可以将第13条链路作为用于转发第一业务流的第一链路。
第二种实现方式:
在该种实现方式中,链路带宽矩阵为M×(N+2)矩阵,M为大于或等于1的整数,M可以等于1,也可以包括大于或等于2的其他数值。M行中的第i行对应第i种链路带宽,i的取值为大于或等于1且小于或等于M的整数,也可称为i的取值范围为1至M所确定的整数区间,N列中的第j列对应第j条链路,第j列包括的x个第一元素用于指示第j条链路为第x种链路带宽,x的取值范围为1至M,第N+2列表示配置带宽,第N+1列表示实际带宽;
第N+2列第i行的元素为N列的第i行包括的第一元素的数量;
第N+1列第i行的元素为N列中N-Y列中的第i行包括的第一元素的数量,Y为链路状态为故障的链路数量,Y的取值为范围为0至N-1。
如下表2中所示,假设N为16,也即存在16条链路,M等于7,也即存在7种链路带宽。在这种情况下,链路带宽矩阵将为7×(16+2)的矩阵。
表2链路带宽矩阵的示意
Num1 | Num2 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
7 | 5 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | LsBs7 |
2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | BwBs6 |
2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | BwBs5 |
3 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | BwBs4 |
5 | 3 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | BwBs3 |
10 | 8 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | BwBs2 |
11 | 9 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | BwBs1 |
16 | 14 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | BwBs0 |
其中,该矩阵的7行中的第i行对应第i种链路带宽,i的取值为大于或等于1且小于或等于7的整数,也可称为i的取值范围为1至7所确定的整数区间。当i=1时,第1行对应第1种链路带宽。当i=2时,第2行对应第2种链路带宽,以此类推。在表2的示例中,通过BwBs(i-1)来标识第i种链路带宽,也即,表2中的BwBs0所标识的带宽为第1种链路带宽,BwBs1所标识的带宽为第2种链路带宽,以此类推,BwBs6所标识的带宽为第7种链路带宽。
该矩阵中的16列中第j列对应第j条链路,其中,j的取值为大于或等于1且小于或等于16的整数,也可称为j的取值范围为1至16所确定的整数区间。当j=1时,第1列元素对应第1条链路,当j=2时,第2列元素对应第2条链路,以此类推。在表2的示例中,通过j-1来标识第j条链路,也即,表2中0所标识列对应第1条链路,1所标识的列对应第2条链路,以此类推,15标识的列对应第16条链路。
在一种实现方式中,该矩阵还可以包括第M+1行,第M+1行中的第j列的元素用于指示第j条链路的链路状态。其中,当第M+1行中的第j列的元素为第一指示元素时,用于标识第j条链路的链路状态为正常,为第二指示元素时,用于标识第j条链路的链路状态为故障。在表2的示例中,第M+1行即为第8行,第一指示元素为1,第二指示元素为0。当然,也可以第一指示元素为0,第二指示元素为1。
在一种实现方式中,链路带宽矩阵中也可以不包括第M+1行,而是可以直接将第M+1行作为一个链路状态向量进行单独存储。例如,在表2的示例中,即可以将第8行的元素存储为一个链路状态向量,当第一转发设备使用链路状态时,可以通过该链路状态向量来确定相应链路的状态。
在16列中第j列包括的x个第一元素用于指示第j条链路的链路带宽为第x种链路带宽,x的取值为大于或等于1且小于或等于7的整数,也可称为x的取值范围为1至7所确定的整数区间。其中,第一元素可以包括1,相应地,第j列中的剩余元素可以包括与第一元素不同的元素,例如,可以包括0。当然,第一元素也可以包括其他数值,其他元素为另外的数值,只要二者不同即可,本申请实施例对此不作限定。
表2中以第一元素为1为例,0所标识的第1条链路对应的第1列元素中从第1行到第7行包括2个第一元素,由此可知,第1条链路对应的链路带宽为第二种链路带宽。1所标识的第2条链路对应的第2列元素中从第1行至第7行包括3个第一元素,因此,第2条链路对应的链路带宽为第三种链路带宽。同理可知,第3条链路对应的链路带宽为第4种链路带宽,第4条链路和第5条链路对应的链路带宽均为第7种链路带宽,第6条链路至第10条链路的链路带宽为第1种链路带宽。第11条链路至第14条链路对应的链路带宽均为第3种链路带宽。第15条链路对应的链路带宽为第4种链路带宽,第16条链路对应的链路带宽为第5种链路带宽。
该链路带宽矩阵中的第N+2列也即第18列为配置带宽列,用Num1表示。第18列第i行的元素为16条链路对应的16列的第i行包括的第一元素的数量。例如,第18列第1行的元素为16条链路对应的16列中的第1行包括的第一元素的数量,如表2中所示,16条链路对应的16列中的第1行包括的第一元素的数量为16,因此,第18列第1行的元素为16。同理,第18列第2行的元素为16条链路对应的16列中的第2行包括的第一元素的数量,如表2所示,为11。如此类推,第18列第3行的元素为10,第18列第4行的元素为5,第18列第5行的元素为3,第18列第6行和第7行的元素均为2。
该链路带宽矩阵中的第N+1列也即第17列为实际带宽列,用Num2表示。第17列第i行的元素为16条链路中除去故障的Y条链路之外剩余N-Y条正常链路对应的N-Y列的第i行包括的第一元素的数量。在表2中,16条链路中的第4条链路和第5条链路为故障链路,因此,第17列中的第i行的元素即为16条链路中除去故障的2条链路之外剩余14条正常链路对应的14列的第i行包括的第一元素的数量。例如,第17列中第1行的元素为14条正常链路对应的14列的第1行包括的第一元素的数量,也即为14,第17列中的第2行的元素为14条正常链路对应的14列的第1行包括的第一元素的数量,也即为9。同理可知,第17列中的第3行的元素为8,第4行的元素为3,第5行的元素为1,第6行和第7行的元素均为0。
另外,在该链路带宽矩阵包括第M+1行的情况下,第N+2列第M+1行的元素可以用于表示配置的链路带宽的种类数量,在表2的示例中,配置的链路带宽的种类数量为7,因此,第18列第8行的元素为7。第N+1列第M+1行的元素可以用于表示N条链路中除去故障的Y条链路之外剩余的N-Y条链路对应的链路带宽的种类数量。在表2的示例中,16条链路中的第4条链路和第5条链路为故障链路,剩余的14条链路对应的链路带宽的种类数量为5,因此,第17列第8行的元素为5。
上述的链路带宽矩阵中的第N+1列、第N+2列也可以均各自以一个向量的形式进行存储,本申请实施例对此不作限定。
当链路带宽矩阵为第二种实现方式中的链路带宽矩阵时,第一转发设备确定用于转发第一业务流的第一链路的过程可以包括:根据所述M和第一哈希值,确定第五数值t1,t1的取值为大于或等于1且小于或等于M的整数,也可称为t1的取值范围为1至M所确定的整数区间;根据第N+2列中第1行至第M行中的第t1个元素和第一哈希值,确定第六数值t2;根据t1、t2、链路带宽矩阵和N条链路分别对应的链路状态,确定第一链路。
根据上述内容可知,第一转发设备通过对第一业务流的标识信息进行哈希,可以得到第一哈希值。第一转发设备可以对第一哈希值与M进行取模,之后,将取模得到的值加1,得到t1。之后,对第一哈希值和第N+2列中第1行至第M行中的第t1个元素进行取模,并将取模得到的值加1,得到t2。
以上述表2中的示例为例,假设M=7,第一哈希值为23,则t1=3。之后,对第一哈希值和第18列中第3个元素进行取模,也即对23和10进行取模,得到的值为3,因此可知t2=4。
在确定t1和t2之后,第一转发设备可以在N列中的第t1行按照预设方向查找第t2个第一元素所在的列;如果第t2个第一元素所在的列对应的链路状态为正常,则将第t2个第一元素所在的列对应的链路确定为第一链路。如果第t2个第一元素所在的列对应的链路状态为故障,则根据第一哈希值和P,确定第七数值t3,其中,P为除去链路状态为故障的Y条链路之外剩余的N-Y条链路所对应的链路带宽的种类数量;根据第N+1列中从第1行到第M行的第t3个元素和第一哈希值,确定第八数值t4;在N-Y列中的第t3行查找第t4个第一元素所在的列;将第t4个第一元素所在的列对应的链路确定为第一链路。其中,预设方向可以包括从第1列到第N列,或者,可以包括从第N列到第1列。
以表2为例,且以t1=3,t2=4为例,第一转发设备可以在16条链路对应的16列中的第3行按照预设方向查找第4个第一元素所在的列。其中,该预设方向可以是从第1列到第16列,也可以是从第16列到第1列。以预设方向为从第16列到第1列为例,16列中第3行中的第4个第一元素所在的列为第12列,由于第13列对应的第13条链路的链路状态为正常,因此,可以直接将第13条链路作为转发第一业务流的第一链路。
如果预设方向为从第1列到第16列,则16列中第3行的第4个第一元素所在的列为第5列。由于第5列对应的第5条链路的链路状态为故障,因此不能将第5条链路作为转发第一业务流的链路。在这种情况下,第一转发设备可以对第一哈希值和P进行取模,并将取模得到的值加1,从而得到t3。在本示例中,P=5,因此,t3=4。之后,第一转发设备可以对第一哈希值和第N+1列中从1行至第M行的第t3个元素取模,并将取模得到的值加1,从而得到t4。在本示例中,第17列中第4个元素为3,所以可得t4=3。之后,第一转发设备可以在除2条故障链路之外剩余14条链路对应的14列中的第4行查找第3个第一元素所在的列。同样的,可以从第1列到第16列进行查找,此时,14列中第4行中第3个第一元素所在的列为第16列,因此,可以将第16列所对应的第16条链路作为用于转发第一业务流的第一链路。或者,也可以包括从第16列到第1列进行查找,此时,14列中第4行中第3个第一元素所在的列为第3列,因此,可以将第3列所对应的第3条链路作为用于转发第一业务流的第一链路。
在得到用于转发第一业务流的第一链路之后,如果第一业务流为单播业务流,则可以参见图6,执行步骤603。当然,如果第一业务流为组播业务流,则参见图7,第一转发设备可以执行步骤604或605。
步骤603:第一转发设备通过第一链路对第一业务流进行转发。
在单播业务场景中,第一转发设备上可以包括N条链路,这N条链路可以作为一个负载分担组进行负载分担。在这种场景中,当第一转发设备通过前述步骤601和602确定出第一链路之后,可以直接通过第一链路对应的端口转发该第一业务流。
步骤604:如果第一链路为第一转发设备对应的链路,则第一转发设备通过第一链路转发第一业务流。
在组播业务场景中,多个转发设备可以作为一个负载分担组,此时,N条链路可以分别为多个转发设备上的链路。在这种场景中,在接收到一个组播业务流之后,当根据组播业务流的组播源地址和目的地址,从转发表中确定该组播业务流对应的负载分担组后,负载分担组中的第一转发设备通过前述步骤601和602确定出第一链路,之后,可以根据第一链路的链路标识判断第一链路是否为第一转发设备上的链路,如果第一链路为第一转发设备上的链路,则第一转发设备可以通过第一链路转发第一业务流。
同样的,多个转发设备中除第一转发设备的其他转发设备也会执行前述的步骤601和602,并判断确定出的第一链路是否自身的链路,如果是,则转发第一业务流,否则,则执行步骤605。
步骤605:如果第一链路不为第一转发设备对应的链路,则第一转发设备不对第一业务流进行转发。
如果根据第一链路的链路标识确定第一链路不为第一转发设备上的链路,则说明第一业务流不由第一转发设备进行转发,而是分担至了其他转发设备的链路上,此时,第一转发设备则不对第一业务流进行转发。
上述实施例的第一转发设备确定用于转发第一业务流的第一链路的过程中,对于每一条经过第一转发设备的业务流,第一转发设备均可以参照上述实施例的方法来确定该业务流的链路,从而实现对多个业务流的负载分担。
在本申请实施例中,第一转发设备可以获取第一业务流的标识信息,之后,对第一业务流的标识信息进行哈希运算得到第一哈希值,进而根据第一哈希值、链路带宽矩阵和N条链路分别对应的链路状态,通过取模运算和除法运算确定用于转发第一业务流的第一链路。由此可见,本申请实施例中无需根据每个转发设备的设备标识进行哈希运算,也无需通过比较多个哈希值来确定由哪个转发设备来进行转发,运算量相对较小,效率较高。
值得注意的是,在上述实施例中,通过步骤601至步骤603可以实现在单播业务场景下的负载分担,通过步骤601、步骤602、604和步骤605可以实现在组播业务场景下的负载分担。无论哪种业务场景下的负载分担,均需通过链路配置得到链路带宽矩阵。基于此,接下来分别对两种业务场景下转发设备的配置方法进行说明。
一、组播业务场景
在组播业务场景中,多个转发设备上均可以获取配置信息。以第一转发设备为例,第一转发设备可以获取自身的配置信息和与其属于同一负载分担组的其他转发设备的配置信息。其中,配置信息可以包括该负载分担组的信息、相应设备的链路的链路带宽。其中,负载分担组的信息可以包括负载分担组的标识信息、负载分担组包括的链路以及链路数量。
可选地,该配置信息还可以包括负载分担组中的链路数量以及其他协议信息。
第一转发设备的配置信息可以静态配置在第一转发设备上,其他转发设备的配置信息可以由其他转发设备发送至第一转发设备。或者,在另一种可能的实现方式中,第一转发设备的配置信息和其他转发设备的配置信息可以均静态的配置在第一转发设备上。
以图1中所示的两个转发设备为例,假设第一转发设备为R1,第二转发设备为R2,则R1上的配置信息和在R2上的配置信息可以如下:
其中,Multicast forwarding-load-balance-ucmp(组播转发负载平衡非等值负载分担)grpxxx[number 2]表示一个负载分担组grpxxx,由R1和R2两台路由器进行负载分担,R1使用192.168.1.11标识、R2使用192.168.1.12标识;其中的[number 2]是可选的配置,可以根据其下的配置自动生成[number 2],表示负载分担组的链路数量为2。Interfacegi1/0/1表示接口带宽为1Gbps,Interface 10gi1/0/1表示接口带宽为10Gbps;Ip addr192.168.1.11和Ip addr 192.168.1.12表示配置接口地址,其中,Ip addr是指互联网协议地址(Internet protocol address);pim sm表示配置接口的pim协议使能,配置此命令行以后就会往该接口发送PIM Hello报文及接收PIM Hello报文。Pim force-dr表示该接口始终为选定路由器(designated router,DR)状态,对于收到的下游组播加入,不仅生成组播下游状态,而且会向上游组播源侧发送组播加入。forwarding-load-balance-ucmp grpxxx表示该接口使用负载分担组grpxxx进行负载分担的转发。
R1和R2根据上面的配置,在接收到PIM Hello报文的情况下,建立接口的“PIM DR”状态为DR状态,对于收到的因特网组管理协议(internet group management protocol,IGMP)组播加入,会建立组播表项的下游出接口,并向上游组播源方向发送组播加入。R1和R2即可以根据上述配置信息生成链路带宽矩阵,进而在接收到组播业务流时,通过上述方法来对组播业务流进行负载分担。
上述示例中是在每个转发设备上均静态配置了自身以及其他转发设备的信息。在另一种实现方式中,各个转发设备上也可以仅配置自身的信息,其他转发设备的信息可以由其他转发设备发送至该转发设备。如果各个转发设备上仅配置自身的信息,则根据不同场景,各个设备可以通过不同的报文向除自身之外的其他设备发送自身的配置信息。
如果是PIM场景,也即多个转发设备采用PIM协议与组播发送端103连接,则各个转发设备之间可以通过PIM Hello报文向其他设备发送自身的配置信息。如果多个转发设备通过EVPN与组播发送端103连接,则可以采用边界网关协议(border gateway protocol,BGP)EVPN消息来向其他转发设备发送自身的配置信息。
二、单播业务场景
在单播业务场景中,以图2中所示的两个转发设备为例,假设第一转发设备为R1,第二转发设备为R2,则R1上的配置信息和在R2上的配置信息可以如下:
其中,ucmp enable this_method表示使用本申请实施例提供的方法进行负载分担。R1上的eth-trunk 1包含有三个成员接口。R2上的eth-trunk 1也包含有三个成员接口。
R1和R2即可以根据上述配置信息生成链路带宽矩阵,进而在接收到单播业务流时,通过上述方法来对单播业务流进行负载分担。
参见图8,本申请实施例提供了一种用于确定转发业务流的链路的装置800,该装置800可以集成于前述的转发设备中,该装置800包括获取模块801和处理模块802,其中,获取模块801可以用于执行前述实施例中的步骤601,处理模块802可以用于执行前述实施例中的步骤602以及步骤605。
在一种实现方式中,获取模块801还用于:获取第二业务流的标识信息;处理模块802还用于:根据第二业务流的标识信息、链路带宽矩阵和N条链路分别对应的链路状态,从N条链路中确定用于转发第二业务流的第二链路。
在一种实现方式中,处理模块802具体用于:对第一业务流的标识信息进行哈希运算,得到第一哈希值;根据链路带宽矩阵、第一哈希值和N条链路分别对应的链路状态,从N条链路中确定第一链路。
在一种实现方式中,链路带宽矩阵为M×(N+3)矩阵,M不小于1,M行中的第i行对应第i种链路带宽,i的取值范围为1至M,N列中的第j列对应第j条链路,第j列包括的x个第一元素用于指示第j条链路为第x种链路带宽,x的取值范围为1至M,第N+3列表示带宽差,第N+2列表示累加配置带宽,第N+1列表示累加实际带宽;第N+3列中的第i+1行的元素为第i+1行对应的链路带宽与第i行对应的链路带宽的差值,第N+3列中的第1行的元素为第1种链路带宽的值;第N+2列中的第i+1行的元素为第N+3列中第i+1行的元素与N列中第i+1行包括的第一元素的个数的乘积与第N+2列中第i行的元素的和,第N+2列中的第1行的元素为N列中第1行包括的第一元素的个数;第N+1列中的第i+1行的元素为第N+3列中的第i+1行的元素与N列中N-Y列中第i+1行包括的第一元素的个数的乘积与第N+1列中第i行元素的和,Y为链路状态为故障的链路数量,Y的取值范围为0至N-1,第N+3列中的第1行的元素为N列中N-Y列中第1行包括的第一元素的个数。
在一种实现方式中,处理模块802具体用于:根据第N+2列中的第M行的元素和第一哈希值,确定第一数值k1;从第N+2列中的第1行的元素开始,确定值大于k1的元素所在的行数Z;根据k1、第N+2列中第(Z-1)行的元素和第N+3列中第Z行的元素,确定第二数值k2;根据N列中的第Z行的元素、k2和N条链路分别对应的链路状态,确定第一链路。
在一种实现方式中,处理模块802具体用于:在N列中的第Z行的元素中查找第k2个第一元素所在的列;如果第k2个第一元素所在的列对应的链路状态为正常,则将第k2个第一元素所在的列对应的链路确定为第一链路。
在一种实现方式中,处理模块802具体还用于:如果查找到的第k2个第一元素所在的列对应的链路状态为故障,则根据第一哈希值和第N+1列中的第P行的元素,确定第三数值k3,P为除去链路状态为故障的Y条链路之外剩余的N-Y条链路所对应的链路带宽的种类数量;从N+1列中的第1行的元素开始,确定值大于k3的元素所在的行数Z’;根据k3、第N+1列中的第(Z’-1)行的元素和第N+3列中第Z’行的元素,确定第四数值k4;在N-Y列中的第Z’行的元素中查找第k4个第一元素所在的列,将第k4个第一元素所在列对应的链路确定为第一链路。
在一种实现方式中,链路带宽矩阵为M×(N+2)矩阵,M不小于1,M行中的第i行对应第i种链路带宽,i的取值范围为1至M,N列中的第j列对应第j条链路,第j列包括的x个第一元素用于指示第j条链路为第x种链路带宽,x的取值范围为1至M,第N+2列表示配置带宽,第N+1列表示实际带宽;第N+2列第i行的元素为N列的第i行包括的第一元素的数量;第N+1列第i行的元素为N列中N-Y列中的第i行包括的第一元素的数量,Y为链路状态为故障的链路数量,Y的取值为范围为0至N-1。
在一种实现方式中,处理模块802具体用于:根据M和第一哈希值,确定第五数值t1,t1的取值范围为1至M;根据第N+2列中第1行至第M行中的第t1个元素和第一哈希值,确定第六数值t2;根据t1、t2、链路带宽矩阵和N条链路分别对应的链路状态,确定第一链路。
在一种实现方式中,处理模块802具体用于:在N列中的第t1行按照预设方向查找第t2个第一元素所在的列;如果第t2个第一元素所在的列对应的链路状态为正常,则第t2个第一元素所在的列对应的链路确定为第一链路。
在一种实现方式中,处理模块802具体还用于:如果第t2个第一元素所在的列对应的链路状态为故障,则根据第一哈希值和P,确定第七数值t3,P为除去链路状态为故障的Y条链路之外剩余的N-Y条链路所对应的链路带宽的种类数量;根据第N+1列中从第1行到第M行的第t3个元素和第一哈希值,确定第八数值t4;在N-Y列中的第t3行查找第t4个第一元素所在的列;将第t4个第一元素所在的列对应的链路确定为第一链路。
在一种实现方式中,链路带宽矩阵还包括第M+1行,第M+1行中的第j列的元素用于指示第j条链路对应的链路状态。
在一种实现方式中,第一业务流为组播业务流,该装置800还包括发送模块803;发送模块803,用于如果第一链路为第一转发设备对应的链路,则通过第一链路转发第一业务流;处理模块802,还用于如果第一链路不为第一转发设备对应的链路,则不对第一业务流进行转发。
在一种实现方式中,处理模块802还用于:
获取第一转发设备的配置信息和其他转发设备的配置信息,配置信息包括第一转发设备和其他转发设备所属的负载分担组的信息以及负载分担组包括的N条链路的链路带宽;
根据配置信息,生成链路带宽矩阵。
在一种实现方式中,其他转发设备的配置信息由其他转发设备发送至第一转发设备。
在一种实现方式中,第一业务流为单播业务流,该装置800还包括发送模块803,发送模块803用于:通过第一链路对第一业务流进行转发。
在一种实现方式中,处理模块802还用于:获取N条链路的链路标识和链路带宽;根据N条链路的链路标识和链路带宽,生成链路带宽矩阵。
综上所述,在本申请实施例中,第一转发设备可以获取第一业务流的标识信息,之后,对第一业务流的标识信息进行哈希运算得到第一哈希值,进而根据第一哈希值、链路带宽矩阵和N条链路分别对应的链路状态,通过取模运算和除法运算确定用于转发第一业务流的第一链路。由此可见,本申请实施例中无需根据每个转发设备的设备标识进行哈希运算,也无需通过比较多个哈希值来确定由哪个转发设备来进行转发,运算量相对较小,效率较高。
需要说明的是:上述实施例提供的用于确定转发业务流的链路的装置在确定转发业务流的链路时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的用于确定转发业务流的链路的装置与用于确定转发业务流的链路的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如:同轴电缆、光纤、数据用户线(digital subscriber line,DSL))或无线(例如:红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如:软盘、硬盘、磁带)、光介质(例如:数字通用光盘(digital versatile disc,DVD))、或者半导体介质(例如:固态硬盘(solid state disk,SSD))等。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述为本申请提供的实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (28)
1.一种用于确定转发业务流的链路的方法,其特征在于,应用于第一转发设备,所述方法包括:
获取第一业务流的标识信息;
根据链路带宽矩阵、所述第一业务流的标识信息和N条链路分别对应的链路状态,从所述N条链路中确定用于转发所述第一业务流的第一链路,所述链路带宽矩阵用于指示所述N条链路分别对应的链路带宽,所述N不小于2。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取第二业务流的标识信息;
根据所述第二业务流的标识信息、所述链路带宽矩阵和所述N条链路分别对应的链路状态,从所述N条链路中确定用于转发所述第二业务流的第二链路。
3.根据权利要求1或2所述的方法,其特征在于,所述根据链路带宽矩阵、所述第一业务流的标识信息和N条链路分别对应的链路状态,从所述N条链路中确定用于转发所述第一业务流的第一链路包括:
对所述第一业务流的标识信息进行哈希运算,得到第一哈希值;
根据所述链路带宽矩阵、所述第一哈希值和所述N条链路分别对应的链路状态,从所述N条链路中确定所述第一链路。
4.根据权利要求3所述的方法,其特征在于,所述链路带宽矩阵为M×(N+3)矩阵,所述M不小于1,所述M行中的第i行对应第i种链路带宽,所述i的取值范围为1至M,所述N列中的第j列对应第j条链路,所述第j列包括的x个第一元素用于指示所述第j条链路为第x种链路带宽,所述x的取值范围为1至M,所述第N+3列表示带宽差,所述第N+2列表示累加配置带宽,所述第N+1列表示累加实际带宽;
所述第N+3列中的第i+1行的元素为第i+1行对应的链路带宽与第i行对应的链路带宽的差值,所述第N+3列中的第1行的元素为第1种链路带宽的值;
所述第N+2列中的第i+1行的元素为第N+3列中第i+1行的元素与所述N列中第i+1行包括的第一元素的个数的乘积与所述第N+2列中第i行的元素的和,所述第N+2列中的第1行的元素为所述N列中第1行包括的第一元素的个数;
所述第N+1列中的第i+1行的元素为第N+3列中的第i+1行的元素与所述N列中N-Y列中第i+1行包括的第一元素的个数的乘积与所述第N+1列中第i行元素的和,所述Y为链路状态为故障的链路数量,所述Y的取值范围为0至N-1,所述第N+3列中的第1行的元素为所述N列中N-Y列中第1行包括的第一元素的个数。
5.根据权利要求4所述的方法,其特征在于,所述根据链路带宽矩阵、所述第一哈希值和N条链路分别对应的链路状态,从所述N条链路中确定所述第一链路包括:
根据所述第N+2列中的第M行的元素和所述第一哈希值,确定第一数值k1;
从所述第N+2列中的第1行的元素开始,确定值大于所述k1的元素所在的行数Z;
根据所述k1、所述第N+2列中第(Z-1)行的元素和所述第N+3列中第Z行的元素,确定第二数值k2;
根据所述N列中的第Z行的元素、所述k2和所述N条链路分别对应的链路状态,确定所述第一链路。
6.根据权利要求5所述的方法,其特征在于,根据所述N列中的第Z行的元素、所述k2和所述N条链路分别对应的链路状态,确定所述第一链路包括:
在所述N列中的第Z行的元素中查找第k2个第一元素所在的列;
如果所述第k2个第一元素所在的列对应的链路状态为正常,则将所述第k2个第一元素所在的列对应的链路确定为所述第一链路。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
如果查找到的第k2个第一元素所在的列对应的链路状态为故障,则根据所述第一哈希值和所述第N+1列中的第P行的元素,确定第三数值k3,所述P为除去链路状态为故障的Y条链路之外剩余的N-Y条链路所对应的链路带宽的种类数量;
从所述N+1列中的第1行的元素开始,确定值大于所述k3的元素所在的行数Z’;
根据所述k3、所述第N+1列中的第(Z’-1)行的元素和所述第N+3列中第Z’行的元素,确定第四数值k4;
在所述N-Y列中的第Z’行的元素中查找第k4个第一元素所在的列,将所述第k4个第一元素所在列对应的链路确定为所述第一链路。
8.根据权利要求3所述的方法,其特征在于,所述链路带宽矩阵为M×(N+2)矩阵,所述M不小于1,所述M行中的第i行对应第i种链路带宽,所述i的取值范围为1至M,所述N列中的第j列对应第j条链路,所述第j列包括的x个第一元素用于指示所述第j条链路为第x种链路带宽,所述x的取值范围为1至M,所述第N+2列表示配置带宽,所述第N+1列表示实际带宽;
所述第N+2列第i行的元素为所述N列的第i行包括的第一元素的数量;
所述第N+1列第i行的元素为所述N列中N-Y列中的第i行包括的第一元素的数量,所述Y为链路状态为故障的链路数量,所述Y的取值为范围为0至N-1。
9.根据权利要求8所述的方法,其特征在于,所述根据链路带宽矩阵、所述第一哈希值和N条链路分别对应的链路状态,从所述N条链路中确定所述第一链路包括:
根据所述M和所述第一哈希值,确定第五数值t1,所述t1的取值范围为1至M;
根据所述第N+2列中第1行至第M行中的第t1个元素和所述第一哈希值,确定第六数值t2;
根据所述t1、所述t2、所述链路带宽矩阵和所述N条链路分别对应的链路状态,确定所述第一链路。
10.根据权利要求9所述的方法,其特征在于,所述根据所述t1、所述t2、所述链路带宽矩阵和所述N条链路分别对应的链路状态,确定所述第一链路包括:
在所述N列中的第t1行按照预设方向查找第t2个第一元素所在的列;
如果所述第t2个第一元素所在的列对应的链路状态为正常,则所述第t2个第一元素所在的列对应的链路确定为所述第一链路。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
如果所述第t2个第一元素所在的列对应的链路状态为故障,则根据所述第一哈希值和P,确定第七数值t3,所述P为除去链路状态为故障的Y条链路之外剩余的N-Y条链路所对应的链路带宽的种类数量;
根据所述第N+1列中从第1行到第M行的第t3个元素和所述第一哈希值,确定第八数值t4;
在所述N-Y列中的第t3行查找第t4个第一元素所在的列;
将所述第t4个第一元素所在的列对应的链路确定为所述第一链路。
12.根据权利要求4或8所述的方法,其特征在于,所述链路带宽矩阵还包括第M+1行,所述第M+1行中的第j列的元素用于指示第j条链路对应的链路状态。
13.根据权利要求1至12任一所述的方法,其特征在于,所述第一业务流为组播业务流,所述根据链路带宽矩阵、所述第一业务流的标识信息和N条链路分别对应的链路状态,从所述N条链路中确定用于转发所述第一业务流的第一链路之后,还包括:
所述第一转发设备在确定所述第一链路为其对应的链路,通过所述第一链路转发所述第一业务流。
14.根据权利要求1至13任一所述的方法,其特征在于,所述方法还包括:
获取所述第一转发设备的配置信息和其他转发设备的配置信息,所述配置信息包括所述第一转发设备所属的负载分担组的信息、所述其他转发设备所属的负载分担组的信息以及所述负载分担组包括的N条链路的链路带宽;
根据所述配置信息,生成所述链路带宽矩阵。
15.一种用于确定转发业务流的链路的装置,其特征在于,设于第一转发设备,所述装置包括:
获取模块,用于获取第一业务流的标识信息;
处理模块,用于根据链路带宽矩阵、所述第一业务流的标识信息和N条链路分别对应的链路状态,从所述N条链路中确定用于转发所述第一业务流的第一链路,所述链路带宽矩阵用于指示所述N条链路分别对应的链路带宽,所述N不小于2。
16.根据权利要求15所述的装置,其特征在于,
所述获取模块还用于获取第二业务流的标识信息;
所述处理模块还用于根据所述第二业务流的标识信息、所述链路带宽矩阵和所述N条链路分别对应的链路状态,从所述N条链路中确定用于转发所述第二业务流的第二链路。
17.根据权利要求15或16所述的装置,其特征在于,所述处理模块具体用于:
对所述第一业务流的标识信息进行哈希运算,得到第一哈希值;
根据所述链路带宽矩阵、所述第一哈希值和所述N条链路分别对应的链路状态,从所述N条链路中确定所述第一链路。
18.根据权利要求17所述的装置,其特征在于,所述链路带宽矩阵为M×(N+3)矩阵,所述M不小于1,所述M行中的第i行对应第i种链路带宽,所述i的取值范围为1至M,所述N列中的第j列对应第j条链路,所述第j列包括的x个第一元素用于指示所述第j条链路为第x种链路带宽,所述x的取值范围为1至M,所述第N+3列表示带宽差,所述第N+2列表示累加配置带宽,所述第N+1列表示累加实际带宽;
所述第N+3列中的第i+1行的元素为第i+1行对应的链路带宽与第i行对应的链路带宽的差值,所述第N+3列中的第1行的元素为第1种链路带宽的值;
所述第N+2列中的第i+1行的元素为第N+3列中第i+1行的元素与所述N列中第i+1行包括的第一元素的个数的乘积与所述第N+2列中第i行的元素的和,所述第N+2列中的第1行的元素为所述N列中第1行包括的第一元素的个数;
所述第N+1列中的第i+1行的元素为第N+3列中的第i+1行的元素与所述N列中N-Y列中第i+1行包括的第一元素的个数的乘积与所述第N+1列中第i行元素的和,所述Y为链路状态为故障的链路数量,所述Y的取值范围为0至N-1,所述第N+3列中的第1行的元素为所述N列中N-Y列中第1行包括的第一元素的个数。
19.根据权利要求18所述的装置,其特征在于,所述处理模块具体用于:
根据所述第N+2列中的第M行的元素和所述第一哈希值,确定第一数值k1;
从所述第N+2列中的第1行的元素开始,确定值大于所述k1的元素所在的行数Z;
根据所述k1、所述第N+2列中第(Z-1)行的元素和所述第N+3列中第Z行的元素,确定第二数值k2;
根据所述N列中的第Z行的元素、所述k2和所述N条链路分别对应的链路状态,确定所述第一链路。
20.根据权利要求19所述的装置,其特征在于,所述处理模块具体用于:
在所述N列中的第Z行的元素中查找第k2个第一元素所在的列;
如果所述第k2个第一元素所在的列对应的链路状态为正常,则将所述第k2个第一元素所在的列对应的链路确定为所述第一链路。
21.根据权利要求20所述的装置,其特征在于,所述处理模块具体还用于:
如果查找到的第k2个第一元素所在的列对应的链路状态为故障,则根据所述第一哈希值和所述第N+1列中的第P行的元素,确定第三数值k3,所述P为除去链路状态为故障的Y条链路之外剩余的N-Y条链路所对应的链路带宽的种类数量;
从所述N+1列中的第1行的元素开始,确定值大于所述k3的元素所在的行数Z’;
根据所述k3、所述第N+1列中的第(Z’-1)行的元素和所述第N+3列中第Z’行的元素,确定第四数值k4;
在所述N-Y列中的第Z’行的元素中查找第k4个第一元素所在的列,将所述第k4个第一元素所在列对应的链路确定为所述第一链路。
22.根据权利要求17所述的装置,其特征在于,所述链路带宽矩阵为M×(N+2)矩阵,所述M不小于1,所述M行中的第i行对应第i种链路带宽,所述i的取值范围为1至M,所述N列中的第j列对应第j条链路,所述第j列包括的x个第一元素用于指示所述第j条链路为第x种链路带宽,所述x的取值范围为1至M,所述第N+2列表示配置带宽,所述第N+1列表示实际带宽;
所述第N+2列第i行的元素为所述N列的第i行包括的第一元素的数量;
所述第N+1列第i行的元素为所述N列中N-Y列中的第i行包括的第一元素的数量,所述Y为链路状态为故障的链路数量,所述Y的取值为范围为0至N-1。
23.根据权利要求22所述的装置,其特征在于,所述处理模块具体用于:
根据所述M和所述第一哈希值,确定第五数值t1,所述t1的取值范围为1至M;
根据所述第N+2列中第1行至第M行中的第t1个元素和所述第一哈希值,确定第六数值t2;
根据所述t1、所述t2、所述链路带宽矩阵和所述N条链路分别对应的链路状态,确定所述第一链路。
24.根据权利要求22所述的装置,其特征在于,所述处理模块具体用于:
在所述N列中的第t1行按照预设方向查找第t2个第一元素所在的列;
如果所述第t2个第一元素所在的列对应的链路状态为正常,则所述第t2个第一元素所在的列对应的链路确定为所述第一链路。
25.根据权利要求24所述的装置,其特征在于,所述处理模块具体还用于:
如果所述第t2个第一元素所在的列对应的链路状态为故障,则根据所述第一哈希值和P,确定第七数值t3,所述P为除去链路状态为故障的Y条链路之外剩余的N-Y条链路所对应的链路带宽的种类数量;
根据所述第N+1列中从第1行到第M行的第t3个元素和所述第一哈希值,确定第八数值t4;
在所述N-Y列中的第t3行查找第t4个第一元素所在的列;
将所述第t4个第一元素所在的列对应的链路确定为所述第一链路。
26.根据权利要求18或21所述的装置,其特征在于,所述链路带宽矩阵还包括第M+1行,所述第M+1行中的第j列的元素用于指示第j条链路对应的链路状态。
27.根据权利要求15至26任一所述的装置,其特征在于,所述第一业务流为组播业务流,所述装置还包括发送模块;
所述发送模块,用于如果所述第一链路为所述第一转发设备对应的链路,则通过所述第一链路转发所述第一业务流;
所述处理模块,还用于如果所述第一链路不为所述第一转发设备对应的链路,则不对所述第一业务流进行转发。
28.根据权利要求27所述的装置,其特征在于,所述处理模块还用于:
获取所述第一转发设备的配置信息和其他转发设备的配置信息,所述配置信息包括所述第一转发设备和所述其他转发设备所属的负载分担组的信息以及所述负载分担组包括的N条链路的链路带宽;
根据所述配置信息,生成所述链路带宽矩阵。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
BR112022015508A BR112022015508A2 (pt) | 2020-02-07 | 2020-09-17 | Método e aparelho para determinação de enlace para encaminhamento de fluxo de serviço |
EP20917791.4A EP4092976A4 (en) | 2020-02-07 | 2020-09-17 | Method and apparatus for determining link forwarding service flow |
MX2022009685A MX2022009685A (es) | 2020-02-07 | 2020-09-17 | Método y aparato para determinar el enlace para reenviar flujo de servicio. |
PCT/CN2020/116010 WO2021155663A1 (zh) | 2020-02-07 | 2020-09-17 | 用于确定转发业务流的链路的方法及装置 |
US17/882,343 US11876680B2 (en) | 2020-02-07 | 2022-08-05 | Method and apparatus for determining link for forwarding service flow |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010082312 | 2020-02-07 | ||
CN2020100823127 | 2020-02-07 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113259248A true CN113259248A (zh) | 2021-08-13 |
CN113259248B CN113259248B (zh) | 2023-03-10 |
Family
ID=77220047
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010364422.2A Active CN113259248B (zh) | 2020-02-07 | 2020-04-30 | 用于确定转发业务流的链路的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113259248B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114221907A (zh) * | 2021-12-06 | 2022-03-22 | 北京百度网讯科技有限公司 | 网络哈希配置方法、装置、电子设备和存储介质 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101510854A (zh) * | 2009-03-31 | 2009-08-19 | 杭州华三通信技术有限公司 | 一种业务负载分担的方法、系统和设备 |
CN102271368A (zh) * | 2011-07-27 | 2011-12-07 | 哈尔滨工业大学深圳研究生院 | 基于跨层资源优化的空天信息网络信息传输方法及系统 |
CN103312613A (zh) * | 2012-03-16 | 2013-09-18 | 中兴通讯股份有限公司 | 业务报文转发方法和装置 |
US20140254374A1 (en) * | 2013-03-11 | 2014-09-11 | Cisco Technology, Inc. | Methods and devices for providing service clustering in a trill network |
CN104301256A (zh) * | 2014-10-31 | 2015-01-21 | 杭州华三通信技术有限公司 | 一种sdn网络动态预留带宽的方法及控制器 |
CN106332141A (zh) * | 2016-09-13 | 2017-01-11 | 杭州华三通信技术有限公司 | 流量负载分担的方法和装置 |
CN106559324A (zh) * | 2015-09-24 | 2017-04-05 | 华为技术有限公司 | 一种基于等价多路径转发报文的方法及网络设备 |
CN106803812A (zh) * | 2015-11-26 | 2017-06-06 | 华为技术有限公司 | 一种用于实现负载分担的方法和装置 |
CN109842556A (zh) * | 2017-11-27 | 2019-06-04 | 华为终端有限公司 | 带宽确定方法、路由器及终端设备 |
CN110113263A (zh) * | 2019-05-16 | 2019-08-09 | 北京邮电大学 | 一种通信路径确定方法及装置 |
CN110661703A (zh) * | 2018-06-30 | 2020-01-07 | 北京华为数字技术有限公司 | 一种实现快速重路由的方法和装置 |
-
2020
- 2020-04-30 CN CN202010364422.2A patent/CN113259248B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101510854A (zh) * | 2009-03-31 | 2009-08-19 | 杭州华三通信技术有限公司 | 一种业务负载分担的方法、系统和设备 |
CN102271368A (zh) * | 2011-07-27 | 2011-12-07 | 哈尔滨工业大学深圳研究生院 | 基于跨层资源优化的空天信息网络信息传输方法及系统 |
CN103312613A (zh) * | 2012-03-16 | 2013-09-18 | 中兴通讯股份有限公司 | 业务报文转发方法和装置 |
US20140254374A1 (en) * | 2013-03-11 | 2014-09-11 | Cisco Technology, Inc. | Methods and devices for providing service clustering in a trill network |
CN104301256A (zh) * | 2014-10-31 | 2015-01-21 | 杭州华三通信技术有限公司 | 一种sdn网络动态预留带宽的方法及控制器 |
CN106559324A (zh) * | 2015-09-24 | 2017-04-05 | 华为技术有限公司 | 一种基于等价多路径转发报文的方法及网络设备 |
CN106803812A (zh) * | 2015-11-26 | 2017-06-06 | 华为技术有限公司 | 一种用于实现负载分担的方法和装置 |
CN106332141A (zh) * | 2016-09-13 | 2017-01-11 | 杭州华三通信技术有限公司 | 流量负载分担的方法和装置 |
CN109842556A (zh) * | 2017-11-27 | 2019-06-04 | 华为终端有限公司 | 带宽确定方法、路由器及终端设备 |
CN110661703A (zh) * | 2018-06-30 | 2020-01-07 | 北京华为数字技术有限公司 | 一种实现快速重路由的方法和装置 |
CN110113263A (zh) * | 2019-05-16 | 2019-08-09 | 北京邮电大学 | 一种通信路径确定方法及装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114221907A (zh) * | 2021-12-06 | 2022-03-22 | 北京百度网讯科技有限公司 | 网络哈希配置方法、装置、电子设备和存储介质 |
CN114221907B (zh) * | 2021-12-06 | 2023-09-01 | 北京百度网讯科技有限公司 | 网络哈希配置方法、装置、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113259248B (zh) | 2023-03-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10938748B2 (en) | Packet processing method, computing device, and packet processing apparatus | |
US10158558B1 (en) | Segment routing of packets according to a multicast distribution tree in a network | |
US9553736B2 (en) | Aggregating data traffic from access domains | |
US9397934B2 (en) | Methods for packet forwarding though a communication link of a distributed link aggregation group using mesh tagging | |
US9215172B2 (en) | Hashing-based routing table management | |
US9094323B2 (en) | Probe packet discovery of entropy values causing specific paths to be taken through a network | |
CN109728962B (zh) | 一种发送报文的方法和设备 | |
CN108123901B (zh) | 一种报文传输方法和装置 | |
US20150063094A1 (en) | Method, apparatus, and system for detecting connectivity | |
CN111654406B (zh) | 一种双向转发检测方法和装置 | |
CN112737956A (zh) | 报文的发送方法和第一网络设备 | |
US9246797B2 (en) | PORT based redundant link protection | |
CN107332793B (zh) | 一种报文转发方法、相关设备及系统 | |
CN113259248B (zh) | 用于确定转发业务流的链路的方法及装置 | |
CN109120556B (zh) | 一种云主机访问对象存储服务器的方法及系统 | |
CN116094987A (zh) | 转发路径的确定方法及装置 | |
CN109218117B (zh) | 链路检测方法、装置及网络设备 | |
CN115277542A (zh) | 一种组播流负载分担的方法和网络设备 | |
CN117176546A (zh) | 故障处理方法、相关设备和系统 | |
WO2021155663A1 (zh) | 用于确定转发业务流的链路的方法及装置 | |
US20190036817A1 (en) | Transport network control apparatus, communication system, forwarding node control method, and program | |
RU2819422C1 (ru) | Способ и устройство для определения линии связи для переадресации потока услуг | |
CN109218059A (zh) | 一种实现故障检测的方法、设备和系统 | |
CN111953786A (zh) | 全网报文的录取系统、方法、装置、网络设备及存储介质 | |
CN115225708B (zh) | 一种报文转发方法计算机设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |