一种提高硬件表项利用率的方法和装置转让专利

申请号 : CN201210132714.9

文献号 : CN102629915B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘如冰孙中良

申请人 : 杭州华三通信技术有限公司

摘要 :

本发明公开了一种提高硬件表项利用率的方法,该方法包括:设备进行ND表项学习并下发到硬件,将学习到的ND表项中IPv6全球单播地址的ND表项转换为IPv6路由表项下发到硬件。基于同样的发明构思,本发明还提出一种装置,能够节省ND表项的硬件容量。

权利要求 :

1.一种提高硬件表项利用率的方法,应用于支持IPv6和IPv4的双协议栈的设备,其特征在于,所述方法包括:所述设备进行邻居发现ND表项学习;

所述设备将学习到的ND表项下发到硬件;其中,所述ND表项包括IPv6全球单播地址的ND表项和IPv6本地链路地址的ND表项;

将学习到的ND表项中IPv6全球单播地址的ND表项转换为IPv6路由表项;

所述设备将转换后的IPv6路由表项下发到硬件;

其中,所述将学习到的ND表项中IPv6全球单播地址的ND表项转换为IPv6路由表项,包括:将所述ND表项中的IPv6全球单播地址添加全为1的128位掩码信息作为IPv6路由表项中的目的IP地址。

2.根据权利要求1所述的方法,其特征在于,所述方法进一步包括:所述设备进行地址解析协议ARP表项学习;

所述设备将学习到的ARP表项下发到硬件;

所述设备将学习到的ARP表项中任一MAC地址的第一个学习到的ARP表项以外的其他ARP表项转换为IPv4路由表项;

所述设备将转换后的IPv4路由表项下发到硬件;

所述将学习到的ARP表项中任一MAC地址的第一个学习到的ARP表项以外的其他ARP表项转换为IPv4路由表项,包括:将ARP表项中的IPv4单播地址添加全为1的32位掩码信息作为IPv4路由表项中的目的IP地址。

3.根据权利要求2所述的方法,其特征在于,

下发到硬件的IPv6本地链路地址的ND表项至少包括:IPv6本地链路地址、出接口信息和MAC地址;

下发到硬件的IPv6全球单播地址的ND表项至少包括:IPv6全球单播地址、出接口信息和MAC地址;

下发到硬件的所述转换后的IPv6路由表项至少包括:目的IP地址、出接口 信息和MAC地址;

下发到硬件的所述ARP表项至少包括:IPv4单播地址、出接口信息和MAC地址;

下发到硬件所述转换后的IPv4路由表项至少包括:目的IP地址、出接口信息和MAC地址。

4.根据权利要求3所述的方法,其特征在于,所述方法进一步包括:根据IP报文的目的IP地址查找到的IPv6路由表项或IPv4路由表项中的出接口信息和MAC地址,则根据查找到的IPv6路由表项或IPv4路由表项中的出接口信息和MAC地址为IP报文封装以太网报文头,将封装后的以太网报文进行转发。

5.一种装置,应用于支持IPv6和IPv4的双协议栈的设备,其特征在于,所述装置包括:表项学习单元、IPv6处理单元和存储单元;

所述表项学习单元,用于进行邻居发现ND表项学习,将学习到的ND表项记录于所述存储单元的ND表;其中,所述ND表项包括IPv6全球单播地址的ND表项和IPv6本地链路地址的ND表项;

所述IPv6处理单元,用于将所述存储单元中所述ND表中IPv6全球单播地址的ND表项转换为IPv6路由表项,将转换后的IPv6路由表项记录于所述存储单元的IPv6路由表;

其中,所述IPv6处理单元,具体用于将所述存储单元中所述ND表中IPv6全球单播地址的ND表项转换为IPv6路由表项,包括:用于将所述ND表项中的IPv6全球单播地址添加全为1的128位掩码信息作为IPv6路由表项中的目的IP地址。

6.根据权利要求5所述的装置,其特征在于,所述装置进一步包括:IPv4处理单元;

所述表项学习单元,进一步用于进行地址解析协议ARP表项学习,将学习到的ARP表项记录于存储单元的ARP表;

所述IPv4处理单元,用于将所述存储单元中所述ARP表中任一MAC地址 的第一个学习到的ARP表项以外的其他ARP表项转换为IPv4路由表项,将转换后的IPv4路由表项记录于所述存储单元的IPv4路由表;

其中,所述IPv4处理单元,具体用于将所述存储单元中所述ARP表中任一MAC地址的第一个学习到的ARP表项以外的其他ARP表项转换为IPv4路由表项,包括:将ARP表项中的IPv4单播地址添加全为1的32位掩码信息作为IPv4路由表项中的目的IP地址。

7.根据权利要求6所述的装置,其特征在于,

所述IPv6本地链路地址的ND表项至少包括:IPv6本地链路地址、出接口信息和MAC地址;

所述IPv6全球单播地址的ND表项至少包括:IPv6全球单播地址、出接口信息和MAC地址;

所述IPv6路由表中转换后的IPv6路由表项至少包括:目的IP地址、出接口信息和MAC地址;

所述ARP表项至少包括:IPv4单播地址、出接口信息和MAC地址;

所述IPv4路由表中转换后的IPv4路由表项至少包括:目的IP地址、出接口信息和MAC地址。

8.根据权利要求7所述的装置,其特征在于,所述装置进一步包括:收发单元;

所述收发单元,根据IP报文的目的IP地址查找到所述存储单元中的IPv6路由表项或IPv4路由表项包含的出接口信息和MAC地址,则根据查找到的IPv6路由表项或IPv4路由表项中的出接口信息和MAC地址为IP报文封装以太网报文头,将封装后的以太网报文进行转发。

说明书 :

一种提高硬件表项利用率的方法和装置

技术领域

[0001] 本发明涉及通信技术领域,特别涉及一种提高硬件表项利用率的方法和装置。

背景技术

[0002] IPv6是IPv4的下一代网络协议,解决了IPv4地址遗乏的问题,与IPv4相比,具有固定长度的简洁报文头和内置的安全性,提供更好的服务质量(QoS)支持和移动性支持。邻居发现(ND)协议作为IPv6的基础协议,提供了地址解析、路由器发现、邻居不可达检测、重复地址检测等功能。
[0003] IPv4网络向IPv6网络过渡需要一个很长的时间,因此网络中的主机、服务器和网关设备必须支持IPv4和IPv6双协议栈(Dual Stack)。对于一个需要连接因特网的双栈主机至少需要三个地址,分别为:IPv4单播地址(可以有多个);IPv6本地链路地址(1ink-local);IPv6全球单播地址(可以有多个)。其中,IPv6本地链路地址是IPv6引入受限的单播地址,只能用在一个受限的范围内。所有的地址都以FE80开头,使用了IPv6前缀FE80::/10。当在一个节点上启动IPv6协议栈,启动时节点的每个接口自动配置一个本地链路地址。本地链路地址只能用于本地链路范围,不能在站点内的子网间路由。一个全球单播地址的节点在本地链路上,使用默认IPv6路由器的本地链路地址,而不使用路由器的全球单播地址。
[0004] 参见图1,图1为现有实现中一个网关设备上的一台主机的ND表项的示意图。图1中,FE80::F898:C536:EF8B:DC70为IPv6本地链路地址;2001::B9D3:5AAD:25E1:6660为IPv6全球单播地址;001b-2188-9779为该主机的MAC地址。
[0005] 由上可见,一个主机的IP地址从1个增加到3个的时候,其中,IPv4单播地址和IPv6全球单播地址都为1个时,该主机的ND表项学习2个、ARP表项学习1个,基于硬件转发的网关设备的ND表项和地址解析协议(ARP)硬件表项容量有限,网关设备支持的主机数量就会下降。

发明内容

[0006] 有鉴于此,本发明提供一种提高硬件表项利用率的方法和装置,能够节省ND表项的硬件容量。
[0007] 为解决上述技术问题,本发明的技术方案是这样实现的:
[0008] 一种提高硬件表项利用率的方法,应用于支持IPv6和IPv4的双协议栈的设备,所述方法包括:
[0009] 所述设备进行邻居发现ND表项学习;
[0010] 所述设备将学习到的ND表项下发到硬件;其中,所述ND表项包括IPv6全球单播地址的ND表项和IPv6本地链路地址的ND表项;
[0011] 将学习到的ND表项中IPv6全球单播地址的ND表项转换为IPv6路由表项;
[0012] 所述设备将转换后的IPv6路由表项下发到硬件。
[0013] 一种装置,应用于支持IPv6和IPv4的双协议栈的设备,所述装置包括:表项学习单元、IPv6处理单元和存储单元;
[0014] 所述表项学习单元,用于进行邻居发现ND表项学习,将学习到的ND表项记录于所述存储单元的ND表;其中,所述ND表项包括IPv6全球单播地址的ND表项和IPv6本地链路地址的ND表项;
[0015] 所述IPv6处理单元,用于将所述存储单元中所述ND表中IPv6全球单播地址的ND表项转换为IPv6路由表项,将转换后的IPv6路由表项记录于所述存储单元的IPv6路由表。
[0016] 综上所述,本发明实施例中将不存在IPv6本地链路地址的ND表项转换为IPv6路由表项下发到硬件,能够节省ND表项的硬件容量。

附图说明

[0017] 图1为现有实现中一个网关设备上的一台主机的ND表项的示意图;
[0018] 图2为本发明实施例中处理ND表项的方法流程图;
[0019] 图3为本发明具体实施例中支持IPv6和IPv4的双协议栈的网络结构示意图;
[0020] 图4为本发明具体实施例中应用于IPv6和IPv4的双协议栈的设备中的装置的结构示意图。

具体实施方式

[0021] 为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明所述方案作进一步地详细说明。
[0022] 本发明中提出一种提高硬件表项利用率的方法,应用于支持IPv6和IPv4的双协议栈的设备中,该设备可以是网络中的网关设备、主机设备等任何执行ND学习以及ARP学习的网络设备;该设备将学习到IPv6全球单播链路地址的ND表项转换为IPv6路由表项下发到硬件,能够节省ND表项硬件容量。
[0023] 本实施例将以网关设备学习主机设备的ND表项为例。参见图2,图2为网关设备处理ND表项的方法流程图,该方法的包括以下步骤:
[0024] 步骤201,网关设备对任一主机设备进行ND表项学习,并将学习到的ND表项下发到硬件。
[0025] 本步骤中网关设备学习到的ND表项包括:IPv6全球单播地址,和/或IPv6本地链路地址,出接口信息和MAC地址,其中,出接口信息包括VLAN ID和端口号,MAC地址为所述任一主机设备的MAC地址。ND表项的学习过程与学习结果同现有实现,这里不再赘述。
[0026] 步骤202,网关设备将学习到的ND表项中IPv6全球单播地址的ND表项转换为IPv6路由表项并下发到硬件。
[0027] 本步骤中,将不存在IPv6本地链路地址的其他ND表项,即IPv6全球单播地址的ND表项转换为IPv6路由表项下发到硬件。节省了存储ND表项的硬件容量。
[0028] 将ND表项转换为IPv6路由表项的方法为:将所述ND表项中的IPv6全球单播地址添加全为1的128位掩码信息作为IPv6路由表项中的目的IP地址。由于对IPv6全球单播地址添加全1的128位掩码信息,即,利用从ND表项转换后的路由表项进行路由查找时,根据IPv6地址进行精确匹配,确定该IPv6地址对应的MAC地址,所属VLAN以及端口,从而为三层报文封装以太网报文头并将封装后的以太网报文从相应的端口转发到其他设备。由此可见,本实施例将部分ND表项转换为路由表项进行存储,不仅减少了ND表项数目,还可以利用转换后的路由表项中的信息为三层报文封装以太网头并做二层转发,而无需再查找ND表项和MAC表项,简化了部分三层报文的转发流程。
[0029] 本发明实施例中还可以将在IPv4网络中学习到的ARP表项转换为IPv4路由表项下发,具体过程为:
[0030] 网关设备对所述任一主机设备进行地址解析协议ARP表项学习,将学习到的ARP表项下发到硬件,并将学习到的ARP表项中任一MAC地址的第一个学习到的ARP表项以外的其他ARP表项转换为IPv4路由表项下发到硬件。
[0031] 其中,下发到硬件的ARP表项包括:IPv4单播地址、出接口信息和MAC地址。下发到硬件的IPv4路由表项包括:目的IP地址、出接口信息和MAC地址。
[0032] 本发明实施例中将ARP表项转换为IPv4路由表项的方法为:将所述ARP表项中的IPv4单播地址添加全为1的32位掩码信息作为IPv4路由表项中的目的IP地址。由于对IPv6全球单播地址添加全1的32位掩码信息,即,利用从ARP表项转换后的路由表项进行路由查找时,根据IPv4地址进行精确匹配,确定该IPv4地址对应的MAC地址,所属VLAN以及端口,从而为三层报文封装以太网报文头并将封装后的以太网报文从相应的端口转发到其他设备。由此可见,本实施例将部分ARP表项转换为路由表项进行存储,不仅减少了ARP表项数目,还可以利用转换后的路由表项中的信息为三层报文封装以太网头并做二层转发,而无需再查找ARP表项和MAC表项,简化部分三层报文的转发流程。
[0033] 当网关设备根据IP报文的目的IP地址在路由表中进行路由查找时,若网关设备在路由表中查找到的IPv6路由表项包含出接口信息和MAC地址,则根据出接口信息和MAC地址将IP报文封装为以太网报文并封装后的转换后的以太网报文进行转发;若网关设备在路由表中查找到IPv6路由表项未包含出接口信息和MAC地址,则按已有方式进行转发,本实施例不再详细描述。
[0034] 当网关设备根据IP报文的目的IP地址在路由表中进行路由查找时,若网关设备在路由表中查找到IPv4路由表项包含出接口信息和MAC地址,则根据出接口信息和MAC地址将IP报文封装为以太网报文并封装后的转换后的以太网报文进行转发;若网关设备在路由表中查找到IPv4路由表项未包含出接口信息和MAC地址,则按已有方式进行转发,本实施例不再详细描述。
[0035] 参见图3,图3为本发明具体实施例中支持IPv6和IPv4的双协议栈的网络结构示意图。图3中网关设备301和主机设备302为支持IPv6和IPv4的双协议栈的网络设备,其中,主机设备的IPv6全球单播地址为2001::1,IPv6本地链路地址为FE80::223:89FF:FE59:F200,IPv4单播地址为192.168.1.0和10.10.10.1。
[0036] 本领域中,IPv6地址是以冒号“:”分隔的一连串16比特的十六进制数组成。IPv6地址被分为8组,每组的16比特用4个十六进制数来表示,组和组之间用冒号隔开。为了简化,IPv6地址的每组十六进制数的前导“0”可以省略;或者,IPv6地址中连续的两组或多组均为0,则可以用双冒号“::”代替。
[0037] 网关设备301从主机设备302学习到的ND表项至少包含表1所示信息。
[0038]目的IP地址 出接口信息 目的MAC地址
2001::1 Vlan46;GE6/0/46 0023-8959-f200
FE80::223:89FF:FE59:F200 Vlan46;GE6/0/46 0023-8959-f200
[0039] 表1
[0040] 网关设备301从主机设备302学习的ARP表项至少包含表2所示的信息。
[0041]目的IP地址 出接口信息 目的MAC地址
192.168.1.0 Vlan46;GE6/0/46 0023-8959-f200
10.10.10.1 Vlan46;GE6/0/46 0023-8959-f200
[0042] 表2
[0043] 网关设备301下发到硬件的IPv6本地链路地址的ND表项至少包含表3所示的信息。
[0044]目的IP地址 出接口信息 目的MAC地址
FE80::223:89FF:FE59:F200 Vlan46;GE6/0/46 0023-8959-f200
[0045] 表3
[0046] 网关设备301下发到硬件的IPv6全球单播地址的ND表项至少包含表4所示信息。
[0047]目的IP地址 出接口信息 目的MAC地址
2001::1 Vlan46;GE6/0/46 0023-8959-f200
[0048] 表4
[0049] 网关设备301下发到硬件的IPv6路由表中转换后的IPv6路由表项至少包含表5所示信息。
[0050]目的IP地址 出接口信息 目的MAC地址
2001::1/128 Vlan46;GE6/0/46 0023-8959-f200
[0051] 表5
[0052] 网关设备301下发到硬件的ARP表项至少包含表6所示信息
[0053]目的IP地址 出接口信息 目的MAC地址
192.168.1.0 Vlan46;GE6/0/46 0023-8959-f200
[0054] 表6
[0055] 网关设备301下发到硬件的IPv4路由表中转换后的IPv4路由表项至少包含表7所示信息。
[0056]目的IP地址 出接口信息 目的MAC地址
10.10.10.1/32 Vlan46;GE6/0/46 0023-8959-f200
[0057] 表7
[0058] 表1中的IPv6全球单播地址2001::1添加全1的128位掩码信息添加到IPv6路由表项中,通过IPv6路由表项下发到硬件。表2中MAC地址0023-8959-f200第二个学习到的ARP表项中IPv4单播地址为10.10.10.1添加全1的32位掩码信息添加到IPv4路由表项中,通过IPv4路由表项下发到硬件;表2中,MAC地址0023-8959-f200第一个学习到的ARP表项仍记录在硬件的ARP表中。
[0059] 基于同样的发明构思,本发明具体实施例还提出一种装置,可应用于IPv6和IPv4的双协议栈的装置中。参见图4,图4为本发明具体实施例中应用于IPv6和IPv4的双协议栈的设备中的装置的结构示意图。该装置包括:表项学习单元401、IPv6处理单元402和存储单元403。
[0060] 表项学习单元401,用于进行邻居发现ND表项学习,将学习到的ND表项记录于存储单元403的ND表;其中,所述ND表项包括IPv6全球单播地址的ND表项和IPv6本地链路地址的ND表项。
[0061] IPv6处理单元402,用于将存储单元403中所述ND表中IPv6全球单播地址的ND表项转换为IPv6路由表项,将转换后的IPv6路由表项记录于存储单元的IPv6路由表。
[0062] 较佳地,该装置进一步包括:IPv4处理单元404。
[0063] 表项学习单元401,进一步用于进行地址解析协议ARP表项学习,将学习到的ARP表项记录于存储单元403的ARP表。
[0064] IPv4处理单元404,用于将存储单元402中所述ARP表中任一MAC地址的第一个学习到的ARP表项项以外的其他ARP表项转换为IPv4路由表项,将转换后的IPv4路由表项记录于存储单元402的IPv4路由表。
[0065] 较佳地,
[0066] 所述IPv6本地链路地址的ND表项至少包括:IPv6本地链路地址、出接口信息和MAC地址;
[0067] 所述IPv6全球单播地址的ND表项至少包括:IPv6全球单播地址、出接口信息和MAC地址;
[0068] 所述IPv6路由表中转换后的IPv6路由表项至少包括:目的IP地址、出接口信息和MAC地址;
[0069] 所述ARP表项至少包括:IPv4单播地址、出接口信息和MAC地址;
[0070] 所述IPv4路由表中转换后的IPv4路由表项至少包括:目的IP地址、出接口信息和MAC地址。
[0071] 较佳地,
[0072] IPv6处理单元402,用于将所述ND表项中的IPv6全球单播地址添加全为1的128位掩码信息作为IPv6路由表项中的目的IP地址。
[0073] IPv4处理单元404,用于将所述ARP表项中的IPv4单播地址添加全为1的32位掩码信息作为IPv4路由表项中的目的IP地址。
[0074] 较佳地,该装置进一步包括:收发单元405。
[0075] 收发单元405,根据IP报文的目的IP地址查找到存储单元402中的IPv6路由表项或IPv4路由表项包含的出接口信息和MAC地址,则根据查找到的IPv6路由表项或IPv4路由表项中的出接口信息和MAC地址为IP报文封装以太网报文头,将封装后的以太网报文进行转发。
[0076] 上述实施例的单元可以集成于一体,也可以分离部署;可以合并为一个单元,也可以进一步拆分成多个子单元。
[0077] 综上所述,本发明实施例中将学习到的ND表项和ARP表项下发到硬件,并将不存在IPv6本地链路地址的ND表项转换为IPv6路由表项下发到硬件,将学习到的第一个ARP表项之外的ARP表项转换为IPv4路由表项下发到硬件,能够节省ND表项和ARP表项的硬件容量,增加该网关设备支持的双协议栈主机的数量。
[0078] 双协议栈网络中,通过本发明具体实施例中的方法,网关设备在不扩充硬件支持表项的规格情况下。支持的主机数量比原来至少增加1倍。从而解决双协议栈网络中,随着主机的增加,网关设备ND表项不够用的困局。
[0079] 例如,1个有8K(8×1024)ND硬件表项的网关设备,原来的实现可以支持最多4K(4×1024)台主机。由于使用了此方案,就可以最少支持8K台主机。
[0080] 本发明具体实施例中将部分ND表项和ARP表项转换为路由表项,不会引起路由表项的存储问题。网关设备的路由表硬件容量一般都远大于ND表项,例如对于网络设备路由表可达512K,而ND表项最大64K。
[0081] 以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。