具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明一个实施例提供了一种选择出接口的方法。上述方法的执行主体可以是路由器,也可以是宽带远程接入服务器(broadband remote access server,BRAS)。参见图1,图1是本发明实施例提供的选择出接口的方法的流程图,该方法包括:
102、获取组播的速率。
举例来说,102的执行主体可以是路由器。具体来说,102的执行主体可以是路由器的控制平面的CPU。举例来说,路由器的接口可以统计在一定时间内接收到的所述组播的报文的总字节数。路由器的控制平面的CPU可以根据总字节数以及上述时间计算所述组播的速率。
104、将汇聚口中每个成员口的带宽与所述组播的速率进行比较,获取第一集合,所述第一集合包括所述汇聚口中带宽大于或者等于所述组播的速率的所有的成员口,所述汇聚口为所述组播的出接口,所述汇聚口包括多个成员口。
举例来说,104的执行主体可以是路由器。具体来说,104的执行主体可以是路由器的控制平面的CPU。
汇聚口包括多个成员口。汇聚口的成员口为物理接口。举例来说,物理接口可以是同步数字体系承载数据包(packet over synchronous digital hierarchy,POS)接口。物理接口也可以是快速以太网(fast Ethernet,FE)接口。
本领域的技术人员可以理解,第一集合可以只包括一个成员口,第一集合也可以包括多个成员口。
106、根据所述第一集合确定所述组播的出接口。
举例来说,106的执行主体可以是路由器。具体来说,106的执行主体可以是路由器的控制平面的CPU。
举例来说,路由器的控制平面的CPU可以从所述第一集合中随机选择一个成员口,并将该成员口作为所述组播的出接口。具体来说,路由器的控制平面的CPU选择成员口后,可以向接口板发送组播出接口表更新命令,以便对组播出接口表进行更新。组播出接口表的表项的匹配域(match field)包括组播源地址以及组播组地址。组播出接口表的表项的动作域(action field)包括出接口。组播出接口表更新命令中包含了被选择的成员口的标识。接口板的流量管理(Traffic Management,TM)芯片可以对组播出接口表进行更新。组播出接口表被更新后,组播出接口表的表项的动作域的出接口为被选择的成员口。
另外,106的执行主体也可以是路由器的转发平面的TM芯片。
举例来说,路由器的控制平面的CPU可以将所述第一集合发送至路由器的转发平面的TM芯片。TM芯片可以从所述第一集合中随机选择一个成员口,并将该成员口作为所述组播的出接口。
可见,通过本实施例提供的技术方案,将汇聚口中每个成员口的带宽与组播的速率进行比较,并将汇聚口中带宽大于或者等于组播的速率的成员口作为组播的出接口。因此,通过实施例提供的技术方案,可以解决组播的流量可能会发生丢失的技术问题。
可选的,本实施例提供的方法中,获取组播的速率可以包括:
将所述汇聚口中带宽大于或者等于所述组播的速率的所有的成员口散列在第一数组中,所述第一数组中每个元素对应一个成员口,所述汇聚口中带宽大于或者等于所述组播的速率的所有的成员口中每个成员口出现的所述第一数组中的次数与成员口的带宽成正比。
获取所述第一集合,所述第一集合为所述第一数组。
所述根据所述第一集合确定所述组播的出接口具体包括:
选择所述第一数组中的第一元素。
确定所述第一元素对应的成员口为所述组播的出接口。
可选的,本实施例提供的方法中,所述将所述汇聚口中带宽大于或者等于所述组播的速率的所有的成员口散列在第一数组中,所述第一数组中每个元素对应一个成员口,所述汇聚口中带宽大于或者等于所述组播的速率的所有的成员口中每个成员口出现的所述第一数组中的次数与成员口的带宽成正比包括:
将所述多个成员口中带宽小于所述组播的速率的所有的成员口中每个成员口的权重更新为0,所述多个成员口中每个成员口对应一个初始权重,所述多个成员口中每个成员口的初始权重与成员口的带宽成正比。
根据所述多个成员口中每个成员口的当前权重将所述汇聚口的成员口散列在所述第一数组中,所述第一数组中每个元素对应一个成员口,与所述第一数组中的元素具有对应关系的每个成员口出现在所述第一数组中的次数与成员口的当前权重成正比。
可选的,本实施例提供的方法中,所述选择所述第一数组中的第一元素包括:
为所述组播设定一个组播组标识,所述组播组标识为一个二进制数。
确定与所述组播组标识的低X比特相等的所述第一数组中的元素为所述第一元素,所述第一数组中的元素的个数为2的X次方,所述第一数组中的元素为公差为1的等差数列,所述第一数组中的最小的元素为0。
可选的,本实施例提供的方法中,所述方法还可以包括:
获取所述组播的更新后的速率。
比较汇聚口中每个成员口的带宽与所述组播的更新后的速率,获取第二集合,所述第二集合包括所述汇聚口中带宽大于或者等于所述组播的更新后的速率的所有的成员口。
根据所述第二集合确定所述组播的出接口。
图2为本发明实施例提供的一种选择出接口的装置的结构示意图。所述装置可以是路由器或者BRAS。所述装置可以通过图1所示的方法实现。如图2所示,所述装置包括第一获取单元202、第二单元204以及确定单元206。
所述第一获取单元202用于获取组播的速率。
举例来说,第一获取单元202可以是路由器的控制平面的CPU。举例来说,路由器的接口可以统计在一定时间内接收到的所述组播的报文的总字节数。路由器的控制平面的CPU可以根据总字节数以及上述时间计算所述组播的速率。
所述第二单元204包括比较单元208以及第二获取单元210。
所述比较单元208用于比较汇聚口中每个成员口的带宽与所述组播的速率。
举例来说,比较单元208可以是路由器的控制平面的CPU。
汇聚口包括多个成员口。汇聚口的成员口为物理接口。举例来说,物理接口可以是POS接口。物理接口也可以是FE接口。
本领域的技术人员可以理解,第一集合可以只包括一个成员口,第一集合也可以包括多个成员口。
所述第二获取单元210用于根据所述比较单元提供的比较结果获取第一集合,所述第一集合包括所述汇聚口中带宽大于或者等于所述组播的速率的所有的成员口,所述汇聚口为所述组播的出接口,所述汇聚口包括多个成员口。
所述确定单元206用于根据所述第一集合确定所述组播的出接口。
举例来说,确定单元206可以是路由器的控制平面的CPU。
举例来说,路由器的控制平面的CPU可以从所述第一集合中随机选择一个成员口,并将该成员口作为所述组播的出接口。具体来说,路由器的控制平面的CPU选择成员口后,可以向接口板发送组播出接口表更新命令,以便对组播出接口表进行更新。组播出接口表的表项的匹配域包括组播源地址以及组播组地址。组播出接口表的表项的动作域包括出接口。组播出接口表更新命令中包含了被选择的成员口的标识。接口板的TM芯片可以对组播出接口表进行更新。组播出接口表被更新后,组播出接口表的表项的动作域的出接口为被选择的成员口。
举例来说,确定单元206也可以是路由器的转发平面的TM芯片。
举例来说,路由器的控制平面的CPU可以将所述第一集合发送至路由器的转发平面的流TM芯片。TM芯片可以从所述第一集合中随机选择一个成员口,并将该成员口作为所述组播的出接口。
可见,通过本实施例提供的技术方案,将汇聚口中每个成员口的带宽与组播的速率进行比较,并将汇聚口中带宽大于或者等于组播的速率的成员口作为组播的出接口。因此,通过实施例提供的技术方案,可以解决组播的流量可能会发生丢失的技术问题。
可选的,本实施例提供的装置中,所述第二获取单元210可以包括散列子单元和获取子单元。
所述散列子单元,用于将所述汇聚口中带宽大于或者等于所述组播的速率的所有的成员口散列在第一数组中,所述第一数组中每个元素对应一个成员口,所述汇聚口中带宽大于或者等于所述组播的速率的所有的成员口中每个成员口出现的所述第一数组中的次数与成员口的带宽成正比。
所述获取子单元,用于获取所述第一集合,所述第一集合为所述第一数组。
所述确定单元具体包括选择子单元和确定子单元。
所述选择子单元,用于选择所述第一数组中的第一元素。
所述确定子单元,用于确定所述第一元素对应的成员口为所述组播的出接口。
可选的,本实施例提供的装置中,所述散列子单元可以包括第一子单元和第二子单元。
所述第一子单元,用于将所述多个成员口中带宽小于所述组播的速率的所有的成员口中每个成员口的权重更新为0,所述多个成员口中每个成员口对应一个初始权重,所述多个成员口中每个成员口的初始权重与成员口的带宽成正比。
所述第二子单元,用于根据所述多个成员口中每个成员口的当前权重将所述汇聚口的成员口散列在所述第一数组中,所述第一数组中每个元素对应一个成员口,与所述第一数组中的元素具有对应关系的每个成员口出现在所述第一数组中的次数与成员口的当前权重成正比。
可选的,本实施例提供的装置中,所述选择子单元具体包括第三子单元和第四子单元。
所述第三子单元,用于为所述组播设定一个组播组标识,所述组播组标识为一个二进制数。
所述第四子单元,用于确定与所述组播组标识的低X比特相等的所述第一数组中的元素为所述第一元素,所述第一数组中的元素的个数为2的X次方,所述第一数组中的元素为公差为1的等差数列,所述第一数组中的最小的元素为0。
可选的,本实施例提供的装置中,
所述第一获取单元202还用于获取所述组播的更新后的速率。
所述第二单元204还用于比较汇聚口中每个成员口的带宽与所述组播的更新后的速率,获取第二集合,所述第二集合包括所述汇聚口中带宽大于或者等于所述组播的更新后的速率的所有的成员口。
所述确定单元206还用于根据所述第二集合确定所述组播的出接口。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,可以仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文缩写为ROM,英文全称为Read-Only Memory)、随机存取存储器(英文缩写为RAM,英文全称为Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。