CN107547407B - 报文传输方法、装置和实现装置 - Google Patents

报文传输方法、装置和实现装置 Download PDF

Info

Publication number
CN107547407B
CN107547407B CN201710837762.0A CN201710837762A CN107547407B CN 107547407 B CN107547407 B CN 107547407B CN 201710837762 A CN201710837762 A CN 201710837762A CN 107547407 B CN107547407 B CN 107547407B
Authority
CN
China
Prior art keywords
address
message
ipv6
bits
ipv4
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.)
Active
Application number
CN201710837762.0A
Other languages
English (en)
Other versions
CN107547407A (zh
Inventor
李光
赵海峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou H3C Technologies Co Ltd
Original Assignee
Hangzhou H3C Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hangzhou H3C Technologies Co Ltd filed Critical Hangzhou H3C Technologies Co Ltd
Priority to CN201710837762.0A priority Critical patent/CN107547407B/zh
Publication of CN107547407A publication Critical patent/CN107547407A/zh
Application granted granted Critical
Publication of CN107547407B publication Critical patent/CN107547407B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本公开提供了一种报文传输方法、装置和实现装置,属于互联网技术领域。其中,该方法应用于网络边缘设备,该网络边缘设备存储的ND表的关键字的长度与预设偏移位数相对应,该方法包括:如果预发送的报文为IPv6报文,提取IPv6报文的目的IP地址;所述目的IP地址为128位;当需要查ND表时,将目的IP地址偏移预设偏移位数,取偏移位数后的关键字长度的地址位,查ND表;根据ND表的查表结果发送IPv6报文。本公开中的ND表的关键字的长度与预设偏移位数相对应,节省了ND表占用的存储空间,扩展了ND表的容量。同时,使用位数较少的关键字查询ND表,可以缩短查询时间,提高查询效率。

Description

报文传输方法、装置和实现装置
技术领域
本公开涉及互联网技术领域,尤其是涉及一种报文传输方法、装置和实现装置。
背景技术
随着互联网的快速发展,网络中的设备也越来越多,对IP(Internet Protocol,网际协议)地址的需求越来越多,而IPv4(Internet Protocol version4,网际协议第四版)地址为32位,地址数量越来越匮乏。为了解决IPv4地址匮乏的问题,128位的IPv6(InternetProtocol version6,网际协议第六版)地址成为下一代互联网的核心标准。
在IPV6的典型组网中,局域网内的网络设备是通过ND(Neighbor Di scovery,邻居发现)协议指导转发的。其转发模型一般是:以全部128位I PV6地址和接口所在的VPN(Virtual Private Network,虚拟专用网)作为关键字(Key),查询主机路由表(如路由表、ND表等),得到指导转发的下一跳(next hop简称NH)标识信息,使用该标识信息作为访问下一跳表的关键字(Key)。当网络设备访问外部网络时,会查询IPV6路由表,和ND协议不同的是,查询IPV6路由表时,先根据掩码生成部分IPV6地址,比如2002::,IPV6的路由表为16位掩码,则只需匹配IPV6地址的前16位。
一般路由表的规格小于ND表,可以用性能很好但成本较高的TCAM(ternarycontent addressable memory,三态内容寻址存储器)实现。而ND表则可以用SRAM(StaticRandom Access Memory,静态随机存取存储器)来实现。同样对于IPV4来说,也是路由表放到TCAM,ARP(Address Resolution Protocol,地址解析协议)表放到SRAM中。无论是IPV4还是IPV6,均基于路由最长匹配原则,而ARP表/ND表都是使用流量(也称报文)的全部DIP(目的IP)作为关键字(Key),所以ARP表/ND表的优先级高于路由表。
在数据通信网络中,用户设备与IPv6网络之间进行通信,需要通过网络边缘设备进行报文转发。例如,网络边缘设备接收到来自IPv6网络的IPv6报文,IPv6报文中携带有128位的目的IP地址,该目的IP地址即为目标用户设备的IPv6地址。网络边缘设备使用该128位的目的IP地址作为关键字(Key),查询路由表和ND表,来确定下一跳信息,如目的MAC(Media Access Control,介质接入控制层)地址,根据确定的目的MAC地址,封装报文并发送至目标用户设备。
由于网络边缘设备与用户终端相连,其维护的ND表中的表项数目本身比较庞大,同时ND表的关键字为全部128位的IPv6地址,导致查表时长较长,且ND表占用的存储空间很大,消耗了网络边缘设备大量的内存资源。
发明内容
有鉴于此,本公开的目的在于提供一种报文传输方法、装置和实现装置,可以节省ND表占用的存储空间,扩展ND表的容量,缩短查询时间,提高查询效率。
为了实现上述目的,本公开采用的技术方案如下:
第一方面,本公开提供了一种报文传输方法,所述方法应用于网络边缘设备,所述网络边缘设备存储的ND表的关键字的长度与预设偏移位数相对应;所述方法包括:
如果预发送的报文为IPv6报文,提取所述IPv6报文的目的IP地址;所述目的IP地址为128位;
当需要查ND表时,将所述目的IP地址偏移所述预设偏移位数,取偏移后的所述关键字长度的地址位,查所述ND表;
根据所述ND表的查表结果发送所述IPv6报文。
第二方面,本公开提供了一种报文传输装置,所述装置应用于网络边缘设备,所述网络边缘设备存储的ND表的关键字的长度与预设偏移位数相对应;所述装置包括:
目的IP提取模块,用于如果预发送的报文为IPv6报文,提取所述IPv6报文的目的IP地址;所述目的IP地址为128位;
ND表查询模块,用于当需要查ND表时,将所述目的IP地址偏移预设偏移位数,取偏移后的所述关键字长度的地址位,查所述ND表;
报文发送模块,用于根据所述ND表的查表结果发送所述IPv6报文。
第三方面,本公开实施例提供了一种报文传输的实现装置,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器执行所述机器可执行指令以实现上述方法。
第四方面,本公开实施例提供了一种机器可读存储介质,所述机器可读存储介质存储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,所述机器可执行指令促使所述处理器实现上述方法。
上述报文传输方法、装置、实现装置和机器可读存储介质,所采用的ND表中存储的关键字的长度与预设偏移位数相对应,与原有的ND表中存储全部128位的IP地址相比,节省了ND表占用的存储空间,扩展了ND表的容量。同时,使用位数较少的关键字查询ND表,可以缩短查询时间,提高查询效率。
本公开的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本公开的上述技术即可得知。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本公开具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本公开的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本公开实施例提供的报文传输方法和装置的应用环境图;
图2为IP报文三层转发的示意图;
图3为本公开实施例提供的第一种报文传输方法的流程图;
图4为现有的ND表查询示意图;
图5为本公开实施例提供的第二种报文传输方法的流程图;
图6为本公开实施例提供的第三种报文传输方法的流程图;
图7~图9为采用本公开实施例提供的报文传输方法的示例图;
图10为本公开实施例提供的第一种报文传输装置的结构框图;
图11为本公开实施例提供的第二种报文传输装置的结构框图;
图12为本公开实施例提供的一种报文传输的实现装置的结构示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合附图对本公开的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
图1为本公开实施例提供的报文传输方法和装置的应用环境图。如图1所示,用户终端10通过网络边缘设备20连接到网络30。其中,网络30包括IPv6网络,也可以包括IPv4网络。用户终端10支持IPv6协议或支持IPv4协议,或者同时支持IPv4协议和IPv6协议。网络边缘设备20可以是交换机、用户网关或路由器等设备,支持IPv6路由和转发功能,用于对来自网络30或来自用户终端10的报文进行转发。网络边缘设备20在执行ND协议的邻居不可达检测等功能时,也可以自行生成报文,发送至对应的用户终端。
如图2所示的IP报文三层转发示意图,以在上述网络边缘设备20实现为例,网络边缘设备20接收到IP报文后,可以通过查找路由表(如图中的IPv4/v6路由表)或缓存表(如图中的ARP/ND表)得到NH ID(下一跳标识),使用NH ID查询下一跳表,得到下一跳信息,比如出端口,源MAC地址(也可以简称为源MAC)、目的MAC地址(也可以简称为目的MAC),出接口的VLAN(Virtual Local Area Network,虚拟局域网)信息等。
考虑到ND表占用的存储空间较大,本公开实施例对ND表中的关键字的长度进行了修改,由原来的128位修改为与预设偏移位数相对应的位数,例如为32位。基于此,本公开实施例提供了一种报文传输方法、装置、实现装置和机器可读存储介质,下面通过以下实施例进行阐述。
本实施例提供了一种报文传输方法,该方法应用于图1中所示的网络边缘设备20。网络边缘设备20支持IPv6协议,该网络边缘设备20中存储的ND表的关键字的长度与预设偏移位数相对应,其中,ND表的关键字的长度与按照预设偏移位数偏移后的剩余地址字段的长度匹配。例如:对于IP地址为128位,预设偏移位数为96时,按照预设偏移位数96偏移后,剩余地址字段的长度为32位,对应的关键字的长度可以是32位,也可以是24位等,本发明实施例中的关键字长度的取值范围可以小于或等于112位,且大于或等于16位。
如图3所示的报文传输方法的流程图,该方法包括以下步骤:
步骤S301,如果预发送的报文为IPv6报文,提取IPv6报文的目的IP地址(Destination Internet Protocol,DIP);该目的IP地址为128位。
其中,预发送的报文可以是网络边缘设备20接收的来自网络30的IPv6报文,报文中包含目标用户终端的IP地址,网络边缘设备20需要将该IPv6报文转发至该用户终端。预发送的报文也可以是网络边缘设备20自行生成的IPv6报文,报文中同样包含目的IP地址,网络边缘设备20需要将该IPv6报文发送至该目的IP地址对应的用户终端。用户终端可以是计算机或移动终端。
网络边缘设备20在处理预发送的IPv6报文时,首先查询硬件转发表(也称快速转发表,IP FDB Table,IP Forwarding DataBase Table),如果从硬件转发表中可以快速查询到IPv6报文的目的IP地址对应的用户终端的MA C(Media Access Control,介质接入控制层)地址,则可以根据硬件转发表的查询结果发送上述IPv6报文,无需再查询路由表和ND表。硬件转发表中的信息来源于路由表和ND表,如果网络边缘设备20同时支持IPv4协议,硬件转发表中的信息还可能来源于ARP表。如果网络边缘设备之前向该目的IP地址对应的用户终端发送过报文,则硬件转发表中即存有该目的IP地址对应的用户终端的MAC地址和出接口等信息。
如果从硬件转发表中没有查询到IPv6报文的目的IP地址,则需要查询ND表和路由表,可以先找路由表确定出目的IP地址是否处于该网络边缘设备的直连网段,如果是,查询ND表。将查询路由表和ND表得到的信息添加到硬件转发表中。
步骤S302,当需要查ND表时,将目的IP地址偏移预设偏移位数,取偏移后的关键字长度的地址位,查ND表。
由于网络边缘设备20中存储的ND表的关键字的长度与预设偏移位数相对应,因此,在查询ND表时,先根据与预设偏移位数相对应对目的IP地址进行偏移操作,以使目的IP地址的位数与ND表的关键字的位数相同。将目的IP地址偏移预设偏移位数的具体操作可以灵活进行,例如从首位开始向尾位方向偏移,或者,也可以从尾位开始向首位方向偏移,或者,从中间的某一设定位开始向尾位方向或首位方向偏移。然后在偏移后的剩余位中,选取一定长度的地址位,用于查ND表。所选取的地址位的位数与ND表的关键字的位数相同。其中,预设偏移位数与ND表的关键字的长度之和可以等于128,或者小于128。
例如,如果ND表的关键字的长度为112位,预设偏移位数为16位,假设预发送的IPv6报文(也称流量)的DIP为10:0000:0000:0000:0000:0000:0000:1000/128,偏移16位后得到的剩余位为0000:0000:0000:0000:0000:1000/112,其长度与关键字的长度相同,可以直接将该剩余位作为Key,查询ND表。查找到ND表中存在对应的关键字,V6_VALID=1,IPADDR=000000000000000000001000。则该关键字对应的MAC地址等信息即为目标用户终端的下一跳信息。
如果ND表的关键字的长度为16位,预设偏移位数为112位,假设预发送的IPv6报文的DIP为10:0000:0000:0000:0000:0000:0000:1000/128,偏移112位后得到的剩余位为1000/16,其长度与关键字的长度相同,可以直接将该剩余位作为Key,查询ND表。查找到ND表中存在对应的关键字,V6_VALID=1,IPADDR=1000。则该关键字对应的MAC地址等信息即为目标用户终端的下一跳信息。
如果ND表的关键字的长度为48位,预设偏移位数为64位,假设预发送的IPv6报文的DIP为10:0000:0000:0000:0000:0100:0000:1000/128,偏移64位后得到的剩余位为0000:0100:0000:1000/64,从该64位的剩余位中,根据关键字长度,选取前48位,即地址位0000:0100:0000/48作为Key,查询ND表。查找到ND表中存在对应的关键字,V6_VALID=1,IPADDR=000001000000。则该关键字对应的MAC地址等信息即为目标用户终端的下一跳信息。
如果ND表的关键字的长度为32位,预设偏移位数为96位,假设预发送的IPv6报文的DIP为10:0000:0000:0000:0000:0000:0000:1000/128,偏移96位后得到的剩余位为0000:1000/32,其长度与关键字的长度相同,可以直接将该剩余位作为Key,查询ND表。查找到ND表中存在对应的关键字,V6_VALID=1,IPADDR=00001000。则该关键字对应的MAC地址等信息即为目标用户终端的下一跳信息。
如果ND表的关键字的长度为32位,预设偏移位数为64位,假设预发送的IPv6报文的DIP为10:0000:0000:0000:0000:0100:0000:1000/128,偏移64位后得到的剩余位为0000:0100:0000:1000/64,从该64位的剩余位中,根据关键字长度,选取前32位,即地址位0000:0100/32作为Key,查询ND表。查找到ND表中存在对应的关键字,V6_VALID=1,IPADDR=00000100。则该关键字对应的MAC地址等信息即为目标用户终端的下一跳信息。
步骤S303,根据ND表的查表结果发送IPv6报文。
如果查询ND表得到了目的IP地址对应的MAC地址等信息,采用这些信息封装IPv6报文,将IPv6报文通过转发芯片发送至该MAC地址对应的用户终端。
如果查询ND表没有查找到目的IP地址对应的MAC地址,可以采用协议对应的处理方式进行处理,例如通过CPU对该目的IP地址进行解析等操作,该过程具体参考相关协议,在此不作赘述。
参见图4所示的ND表查询示意图,IPV6地址为128位,ND表需要全部128位地址和VRF(Virtual Routing Forwarding,VPN路由转发表)作为Key去查找,例如当前IPv6流量的DIP字段是3000:0001:0001:0001:0001:0001:0001:0001,此时以DIP+VRF位Key查找ND表,VRF以VRF0为例,则命中图4所示ND表中第一个表项,根据ND表得到转发该IPv6流量需要的路径和以太层封装的信息。可见,该ND表非常消耗网络设备的存储资源,增加了设计成本,本实施例具体把转发芯片中ND表的Key的长度缩减至小于128位中的任一数值,例如:16位、24位、32位、48位等,以节省ND表的存储空间。
本公开实施例提供的报文传输方法,所采用的ND表中存储的Key的长度与预设偏移位数相对应,与原有的ND表中存储全部128位的IP地址相比,节省了ND表占用的存储空间,扩展了ND表的容量。同时,使用位数较少的关键字查询ND表,可以缩短查询时间,提高查询效率。
本实施例提供了另一种报文传输方法,该方法同样可以应用于图1中所示的网络边缘设备20。考虑到IPv4协议中,用户终端的IP地址为32位,ARP表的关键字的长度为32位。本实施例中的ND表的关键字的长度为32位,为了进一步节省存储空间,使用ND表同时作为IPv4报文的ARP表。该方法在上述实施例的基础上,以网络边缘设备20转发报文为例进行说明,参见图5所示的报文传输方法流程图,该方法包括以下步骤:
步骤S501,网络边缘设备接收来自网络侧的报文,判断该报文是否为IPv4报文;如果是,执行步骤S502;如果否,说明该报文为IPv6报文,执行步骤S506~步骤S508,其中,步骤S506~步骤S508与上述实施例的步骤S301~步骤S303相对应,这里不再赘述。
步骤S502,提取IPv4报文的目的IP地址。
当然,该IPv4报文也可以是网络边缘设备20自行生成的IPv4报文。报文中包含目标用户终端的目的IP地址,网络边缘设备20需要将该IPv4报文转发至目的IP地址对应的用户终端。
网络边缘设备20在处理预发送的IPv4报文时,首先查询硬件转发表,如果从硬件转发表中可以快速查询到IPv4报文的目的IP地址对应的用户终端的MAC地址。则可以根据硬件转发表的查询结果发送上述IPv4报文,无需再查询路由表和ARP表。
如果从硬件转发表中没有查询到IPv4报文的目的IP地址对应的用户终端的MAC地址,则需要查询ARP表,或者先查询路由表,确定目的IP地址是否处于该网络边缘设备的直连网段,如果是,查询ARP表。将查询路由表和ARP表得到的信息添加到硬件转发表中。
步骤S503,当需要查ARP表时,使用IPv4报文的目的IP地址查ARP表。
例如,预发送的IPv4报文的DIP为192.168.0.5,IP地址192.168.0.5对应的32位16进制的地址串为C0A80005。使用IPv4报文的DIP 192.168.0.5作为Key,查询ARP表,即ND表。查找到ARP表中存在对应的关键字,V4_VALID=1,IPADDR=C0A80005。则该关键字对应的MAC地址等信息即为目标用户终端的下一跳信息。
步骤S504,根据ARP表的查表结果发送IPv4报文。
如果查询ARP表得到了目的IP地址对应的MAC地址等下一跳信息,采用这些信息封装IPv4报文,将IPv4报文通过转发芯片发送至该MAC地址对应的用户终端。
考虑到用户终端同时支持IPv4协议和IPv6协议,为了防止处理IPv4报文时,误匹配IPv6表项,或者处理IPv6报文时,误匹配IPv4表项,在ND表中,设置了与IPv4报文和IPv6报文对应的查表标识项,如表1所示ND表中的V4_VALID和V6_VALID。在表1中,“IPADDR”字段为关键字,其长度为32位。V6_VALID为IPv6报文对应的查表标识项,V6_VALID=1,表示该条表项为IPv6表项。V4_VALID为IPv4报文对应的查表标识项,V4_VALID=1,表示该条表项为IPv4表项。
表1
Figure BDA0001409059030000111
为了进一步节省存储空间,对于同时支持IPv4协议和IPv6协议的用户终端,在进行地址分配时,可以使该用户终端的IPv6地址中包含IPv4地址,或者将该用户终端的IPv4地址内嵌到IPv6地址中。如,可以设置该用户终端的IPv4地址与该用户终端的IPv6地址中预设偏移位数后的32位一致。此时,在ND表中,IPv4表项和IPv6表项可以共用同一表项,从而,可以进一步节省空间,扩展ND表的容量。
例如,ND/ARP表的关键字的长度为32位,预设偏移位数为96位。对于IPv4地址为192.168.0.5的用户终端,在为该用户终端分配IPv6地址时,可以将其IPv4地址对应的32位16进制的地址串C0A80005,嵌入IPv6地址的后32位。在ND/ARP表中,IPv4表项和IPv6表项可以共用同一表项,V6_VALID=1,V4_VALID=1,IPADDR=C0A80005。即IPv6地址10:0000:0000:0000:0000:0000:C0A8:0005/128与IPv4地址192.168.0.5具有相同的MAC地址,对应于同一个用户终端。
对于上述情况,如果预发送的IPv6报文的DIP为10:0000:0000:0000:0000:0000:C0A8:0005/128,偏移96位后得到的剩余位为C0A8:0005/32,与关键字长度相同,将该剩余位作为Key,查询ND/ARP表。对应于ND/ARP表中的如下表项:V6_VALID=1,V4_VALID=1,IPADDR=C0A80005。如果预发送的IPv4报文的DIP为192.168.0.5,使用IP地址192.168.0.5作为Key,查询ND/ARP表。同样对应于ND/ARP表中的如下表项:V6_VALID=1,V4_VALID=1,IPADDR=C0A80005。因此,DIP为10:0000:0000:0000:0000:0000:C0A8:0005的IPv6报文和DIP为192.168.0.5的IPv4报文可以通过查询ND/ARP表,发往同一用户终端。
如果ND/ARP表的关键字的长度为32位,预设偏移位数为48位。对于IPv4地址为192.168.0.5的用户终端,在为该用户终端分配IPv6地址时,可以将其IPv4地址对应的32位16进制的地址串C0A80005,嵌入IPv6地址中从第49位开始的32位,即第49位~第80位。在ND表中,IPv4表项和IPv6表项可以共用同一表项,V6_VALID=1,V4_VALID=1,IPADDR=C0A80005。即IPv6地址10:0000:0000:C0A8:0005:0000:0000:0000/128与IPv4地址192.168.0.5具有相同的MAC地址,对应于同一个用户终端。
对于上述情况,如果预发送的IPv6报文的DIP为10:0000:0000:C0A8:0005:0000:0000:0000/128,偏移48位后,按照关键字长度32位取地址位,得到C0A8:0005/32,将该地址位作为Key,查询ND/ARP表。对应于ND/ARP表中的如下表项:V6_VALID=1,V4_VALID=1,IPADDR=C0A80005。如果预发送的IPv4报文的DIP为192.168.0.5,使用IP为192.168.0.5作为Key,查询ND/ARP表。同样对应于ND/ARP表中的如下表项:V6_VALID=1,V4_VALID=1,IPADDR=C0A80005。因此,DIP为10:0000:0000:C0A8:0005:0000:0000:0000/128的IPv6报文和DIP为192.168.0.5的IPv4报文可以通过查询ND/ARP表,发往同一用户终端。
本公开实施例提供的报文传输方法,ND表的关键字的长度为32位,比使用全部128位的IPv6地址节省了3/4的空间。而且,ND表项同时作为IPv4报文的ARP表项,ND表项和ARP表项共用同一表项,进一步节省了存储空间,扩展了ND表的容量。ND表项和ARP表项共用同一表项,在IPv4和IPv6双栈开启时,不会增加设备的ARP/ND内存开销。采用将IPv4地址嵌入同一用户终端的IPv6地址中的地址配置方式,使地址分配更灵活。
本实施例还提供了一种报文传输方法,该方法在上述实施例提供的报文传输方法的基础上实现。该方法中预设偏移位数是预先设置于网络边缘设备的指定位置的。例如,可以在路由表中设置有偏移位表项,该偏移位表项用于存储预设偏移位数。或者,可以为预设偏移位数单独设置一个表,其存储的位置可以灵活设置,本公开对此不进行限定。
下面以在路由表中存储预设偏移位数为例进行说明,交换机每配置一个接口,都会向转发芯片下发一条到本机(即报文端口为:TO CPU)的网段路由,用来把未解析的邻居流量报告给CPU,触发学习邻居。本实施例在设计转发芯片时,在路由表中,增加一个偏移位表项ND_KEY_OFFSET。比如,交换机学习配置了一个VLAN接口10,IP地址是:10:0000:0000:0000:0000:0000:0000:0001,掩码64位,同时,该路由表中还增设有ND_KEY_OFFSET表项,该表项即上述偏移位表项。则其对应的路由表项如表2所示,其中,ND_KEY_OFFSET表示IP地址10:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx/128对应的偏移位数为96。
表2
IP地址 掩码 报文端口 ND_KEY_OFFSET
10:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx 64 TO CPU 96
图6示出了该报文传输方法的流程图,如图6所示,该方法包括如下步骤:
步骤S601,如果预发送的报文为IPv6报文,提取IPv6报文的目的IP地址;所述目的IP地址为128位。
步骤S602,从指定位置获取目的IP地址对应的预设偏移位数。该指定位置本公开即为上述路由表。
步骤S603,将目的IP地址偏移预设偏移位数,取偏移位数后的关键字长度的地址位,查ND表。
例如,如果IPv6报文的DIP为10:0000:0000:0000:0000:0000:0000:1000/128,查询路由表,根据路由表2所示字段中ND_KEY_OFFSET标识的偏移位数96偏移后,得到剩余位0000:1000/32,与关键字长度相同。采用剩余位0000:1000/32作为Key,查询ND表。
步骤S604,根据ND表的查表结果发送IPv6报文。
具体地,路由表可以存储于TCAM(ternary content addressable memo ry,三态内容寻址存储器)中,而ND表可以存储于哈希表结构的SRAM(Static Random AccessMemory,静态随机存取存储器)中。
在该实施例中,ND表中也可以包括有与IPv4报文和IPv6报文对应的查表标识项,如表1所示,在此不再赘述。
以下分三种情况详细介绍本实施例的报文传输方法的执行过程。
第一种情况,如图7所示,当网络边缘设备接收到来自网络侧的IPv6报文时,通过查询ND表,得到了目的MAC地址等信息。查表转发的过程包括如下步骤:
步骤S701,提取流量(IPv6报文)的目的IP地址,得到该流量的DIP,例如:10:0000:0000:0000:0000:0000:0000:1000;
步骤S702,查询路由表,得到对应的表项:IP地址10:0000:0000:0000:0000:0000:0000:0000,掩码64,ND_KEY_OFFSET=96;
步骤S703,根据查询路由表得到的ND_KEY_OFFSET=96,将流量的DIP进行地址偏移,得到关键字00001000,转发目的地是CPU;
步骤S704,根据关键字00001000查询ND表,找到对应的表项V6_VALID=1,IPADDR=00001000;从而得到该表项中的MAC地址;
步骤S705,根据ND表的查表结果转发上述流量。
第二种情况,如图8所示,当网络边缘设备接收到来自网络侧的IPv6报文时,通过查询ND表,没有得到目的MAC地址等信息。查表转发的过程包括如下步骤:
步骤S801,提取流量(IPv6报文)的目的IP地址,得到该流量的DIP,例如:10:0000:0000:0000:0000:0000:0000:3000;
步骤S802,查询路由表,得到对应的表项:IP地址10:0000:0000:0000:0000:0000:0000:0000,掩码64,ND_KEY_OFFSET=96;
步骤S803,根据查询路由表得到的ND_KEY_OFFSET=96,将流量的DIP进行地址偏移,得到关键字00003000,转发目的地是CPU;
步骤S804,根据关键字00003000查询ND表,没有找到对应的表项;
步骤S805,根据路由表查询结果,将上述流量发送至CPU,由CPU对该DIP进行解析。
第三种情况,对于同一用户终端,IPv6表项和IPv4表项共用同一表项。如图9所示,如果接收到的是IPv6报文,报文的查表转发过程包括如下步骤:
步骤S901,当接收到IPv6报文时,提取IPv6报文的DIP,得到DIP,例如:10:0000:0000:0000:0000:0000:C0A8:0005;
步骤S902,查询路由表,得到对应的表项:IP地址10:0000:0000:0000:0000:0000:0000:0000,掩码64,ND_KEY_OFFSET=96;
步骤S903,根据查询路由表得到的ND_KEY_OFFSET=96,将流量的DIP进行地址偏移,得到关键字C0A80005,转发目的地是CPU;根据C0A80005查询ND/ARP表;
步骤S904,查找到对应的表项V4_VALID=1,V6_VALID=1,IPADDR=C0A80005;
步骤S905,根据ND/ARP表的查表结果转发相应报文。
如果接收到的是IPv4报文,报文的查表转发过程包括如下步骤:
步骤S911,当接收到IPv4报文时,提取IPv4报文的DIP,得到DIP,例如:192.168.0.5;
步骤S912,根据IP地址192.168.0.5查询ND/ARP表;
鉴于IPv4报文的目的IP地址192.168.0.5所对应的关键字与上述IPv6报文的DIP对应的关键字相同,可以采用上述的步骤S904和步骤S905转发该IPv4报文。即IPv6地址10:0000:0000:0000:0000:0000:C0A8:0005和IPv4地址192.168.0.5对应同一用户终端,主机的MAC地址和VLAN及端口都相同,ND/ARP表中将对应该用户终端的IPv4表项和IPv6表项合并为同一表项,进一步节省存储空间。
本实施例提供的报文传输方法,通过查路由表获取目的IP地址对应的预设偏移位数,对目的IP地址进行偏移后,采用剩余位查询ND表,可以缩短查询时间,提高查询效率。
需要说明的是,上述各方法实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本实施例提供了一种与上述方法实施例相对应的报文传输装置,该装置应用于图1中所示的网络边缘设备20,网络边缘设备存储的ND表的关键字的长度与预设偏移位数相对应。如图10所示,该装置包括:
目的IP提取模块1001,用于如果预发送的报文为IPv6报文,提取IPv6报文的目的IP地址;所述目的IP地址为128位;
ND表查询模块1002,用于当需要查ND表时,将目的IP地址偏移预设偏移位数,取偏移后的关键字长度的地址位,查ND表;
报文发送模块1003,用于根据ND表的查表结果发送IPv6报文。
当ND表的关键字的长度为32位时,ND表同时可作为IPv4报文的ARP表。
目的IP提取模块1001,还用于如果预发送的报文为IPv4报文,提取IPv4报文的目的IP地址;
ND表查询模块1002,还用于当需要查ARP表时,使用IPv4报文的目的IP地址查ARP表;
报文发送模块1003,还用于根据ARP表的查表结果发送IPv4报文。
在另一实施例中,上述装置还可包括地址分配模块。地址分配模块与报文发送模块1003连接,用于如果与网络边缘设备连接的用户终端同时支持IPv4协议和IPv6协议,在进行地址分配时,设置用户终端的IPv4地址与所述用户终端的IPv6地址中预设偏移位数后的32位一致。
在图11所示的另一实施例中,所述预设偏移位数是预先设置于所述网络边缘设备的指定位置的;上述装置还包括:
获取模块1101,用于在查ND表之前,从指定位置获取目的IP地址对应的预设偏移位数。
其中,路由表存储于TCAM中,ND表存储于哈希表结构的SRAM中。
上述ND表中还可以包括有与IPv4报文和IPv6报文对应的查表标识项。
本公开实施例提供的报文传输装置,所采用的ND表中存储的IP地址的长度与预设偏移位数相对应,与原有的ND表中存储全部128位的IP地址相比,节省了ND表占用的存储空间,扩展了ND表的容量。同时,使用位数较少的关键字查询ND表,可以缩短查询时间,提高查询效率。当ND表项同时作为IPv4报文的ARP表项时,还可以进一步节省存储空间。
本实施例提供了一种与上述方法实施例相对应的报文传输的实现装置。图12为该实现装置的结构示意图,如图12所示,该设备包括处理器1201和存储器1202;其中,存储器1202用于存储一条或多条计算机指令,一条或多条计算机指令被处理器执行,以实现上述报文传输方法。
进一步,图12所示的实现装置还包括总线1203和转发芯片1204,处理器1201、转发芯片1204和存储器1202通过总线1203连接。该报文传输的实现装置可以是网络边缘设备。
其中,存储器1202可能包含高速随机存取存储器(RAM,Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。总线1203可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图12中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
转发芯片1204用于通过网络接口与至少一个用户终端及其它网络单元连接,将封装好的IPv4报文或IPv6报文通过网络接口发送至用户终端。
处理器1201可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器1201中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器1201可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DigitalSignal Processing,简称DSP)、专用集成电路(Application Specific IntegratedCircuit,简称ASIC)、现成可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1202,处理器1201读取存储器1202中的信息,结合其硬件完成前述实施例的方法的步骤。
本发明实施例还提供了一种机器可读存储介质,该机器可读存储介质存储有机器可执行指令,该机器可执行指令在被处理器调用和执行时,机器可执行指令促使处理器实现上述报文传输方法,具体实现可参见方法实施例,在此不再赘述。
本发明实施例所提供的报文传输装置及报文传输的实现装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块或单元可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。

Claims (12)

1.一种报文传输方法,其特征在于,所述方法应用于网络边缘设备,所述网络边缘设备存储的邻居发现ND表的关键字的长度与预设偏移位数相对应;其中,所述预设偏移位数与所述ND表的关键字的长度之和小于或等于128;所述方法包括:
如果预发送的报文为IPv6报文,提取所述IPv6报文的目的IP地址;所述目的IP地址为128位;
当需要查ND表时,将所述目的IP地址偏移所述预设偏移位数,取偏移后的所述关键字长度的地址位,查所述ND表;
根据所述ND表的查表结果发送所述IPv6报文。
2.根据权利要求1所述的方法,其特征在于,当所述ND表的关键字的长度为32位时,所述ND表同时作为IPv4报文的地址解析协议ARP表;所述方法还包括:
如果预发送的报文为IPv4报文,提取所述IPv4报文的目的IP地址;
当需要查ARP表时,使用所述IPv4报文的目的IP地址查所述ARP表;
根据所述ARP表的查表结果发送所述IPv4报文。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
如果与所述网络边缘设备连接的用户终端同时支持IPv4协议和IPv6协议,在进行地址分配时,设置所述用户终端的IPv4地址与所述用户终端的IPv6地址中所述预设偏移位数后的32位一致。
4.根据权利要求1所述的方法,其特征在于,所述预设偏移位数是预先设置于所述网络边缘设备的指定位置的;
查所述ND表的步骤之前,所述方法还包括:
从所述指定位置获取所述目的IP地址对应的预设偏移位数。
5.根据权利要求4所述的方法,其特征在于,所述ND表存储于哈希表结构的SRAM中;
所述ND表中还包括有与IPv4报文和IPv6报文对应的查表标识项。
6.一种报文传输装置,其特征在于,所述装置应用于网络边缘设备,所述网络边缘设备存储的邻居发现ND表的关键字的长度与预设偏移位数相对应;其中,所述预设偏移位数与所述ND表的关键字的长度之和小于或等于128;所述装置包括:
目的IP提取模块,用于如果预发送的报文为IPv6报文,提取所述IPv6报文的目的IP地址;所述目的IP地址为128位;
ND表查询模块,用于当需要查ND表时,将所述目的IP地址偏移所述预设偏移位数,取偏移后的所述关键字长度的地址位,查所述ND表;
报文发送模块,用于根据所述ND表的查表结果发送所述IPv6报文。
7.根据权利要求6所述的装置,其特征在于,当所述ND表的关键字的长度为32位时,所述ND表同时作为IPv4报文的地址解析协议ARP表;
所述目的IP提取模块,还用于如果预发送的报文为IPv4报文,提取所述IPv4报文的目的IP地址;
所述ND表查询模块,还用于当需要查ARP表时,使用所述IPv4报文的目的IP地址查所述ARP表;
所述报文发送模块,还用于根据所述ARP表的查表结果发送所述IPv4报文。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
地址分配模块,用于如果与所述网络边缘设备连接的用户终端同时支持IPv4协议和IPv6协议,在进行地址分配时,设置所述用户终端的IPv4地址与所述用户终端的IPv6地址中所述预设偏移位数后的32位一致。
9.根据权利要求6所述的装置,其特征在于,所述预设偏移位数是预先设置于所述网络边缘设备的指定位置的;
所述装置还包括:获取模块,用于在查所述ND表之前,从所述指定位置获取所述目的IP地址对应的预设偏移位数。
10.根据权利要求9所述的装置,其特征在于,所述ND表存储于哈希表结构的SRAM中;
所述ND表中还包括有与IPv4报文和IPv6报文对应的查表标识项。
11.一种报文传输的实现装置,其特征在于,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器执行所述机器可执行指令以实现权利要求1至5任一项所述的方法。
12.一种机器可读存储介质,其特征在于,所述机器可读存储介质存储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,所述机器可执行指令促使所述处理器实现权利要求1至5任一项所述的方法。
CN201710837762.0A 2017-09-15 2017-09-15 报文传输方法、装置和实现装置 Active CN107547407B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710837762.0A CN107547407B (zh) 2017-09-15 2017-09-15 报文传输方法、装置和实现装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710837762.0A CN107547407B (zh) 2017-09-15 2017-09-15 报文传输方法、装置和实现装置

Publications (2)

Publication Number Publication Date
CN107547407A CN107547407A (zh) 2018-01-05
CN107547407B true CN107547407B (zh) 2021-03-09

Family

ID=60964009

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710837762.0A Active CN107547407B (zh) 2017-09-15 2017-09-15 报文传输方法、装置和实现装置

Country Status (1)

Country Link
CN (1) CN107547407B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109995662A (zh) * 2019-03-07 2019-07-09 盛科网络(苏州)有限公司 一种ACL短key匹配部分ipv6地址的芯片实现方法
CN113364891B (zh) * 2020-03-03 2023-07-18 瑞昱半导体股份有限公司 网络通信装置以及网络映像表的操作方法
CN113315814B (zh) * 2021-05-08 2022-04-08 清华大学 一种IPv6网络边界设备快速发现方法及系统
CN113452809B (zh) * 2021-06-29 2023-01-20 新华三信息安全技术有限公司 一种地址段解析方法、装置、电子设备及介质
CN115412528A (zh) * 2022-08-08 2022-11-29 北京达佳互联信息技术有限公司 一种主机路由地址存储方法、装置、电子设备及存储介质
CN117651029B (zh) * 2024-01-29 2024-04-19 深圳市新蕾电子有限公司 下一跳资源的更新方法、装置、终端设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101834802A (zh) * 2010-05-26 2010-09-15 华为技术有限公司 转发数据包的方法及装置
CN102223289A (zh) * 2010-04-15 2011-10-19 杭州华三通信技术有限公司 一种存储IPv4地址和IPv6地址的方法和装置
CN102629915A (zh) * 2012-04-28 2012-08-08 杭州华三通信技术有限公司 一种提高硬件表项利用率的方法和装置
CN105450527A (zh) * 2014-06-05 2016-03-30 华为技术有限公司 处理报文、发送信息、接收信息的方法及装置
CN105827530A (zh) * 2016-03-11 2016-08-03 中国互联网络信息中心 一种兼容ipv4/ipv6的ip二分查找方法及装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101827138B (zh) * 2010-05-21 2013-06-05 杭州华三通信技术有限公司 一种优化的ipv6过滤规则处理方法和设备
CN103004166B (zh) * 2011-07-13 2015-08-19 华为技术有限公司 一种IPv6报文处理方法及装置
US8713169B2 (en) * 2011-10-11 2014-04-29 Cisco Technology, Inc. Distributed IPv6 neighbor discovery for large datacenter switching systems
CN102857968B (zh) * 2012-09-11 2014-11-19 南京邮电大学 基于IPv6的物联网终端与互联网主机的通信方法
US9577914B2 (en) * 2012-10-16 2017-02-21 Cisco Technology, Inc. Eliminating IPV6 neighbor solicitations in constrained computer networks

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102223289A (zh) * 2010-04-15 2011-10-19 杭州华三通信技术有限公司 一种存储IPv4地址和IPv6地址的方法和装置
CN101834802A (zh) * 2010-05-26 2010-09-15 华为技术有限公司 转发数据包的方法及装置
CN102629915A (zh) * 2012-04-28 2012-08-08 杭州华三通信技术有限公司 一种提高硬件表项利用率的方法和装置
CN105450527A (zh) * 2014-06-05 2016-03-30 华为技术有限公司 处理报文、发送信息、接收信息的方法及装置
CN105827530A (zh) * 2016-03-11 2016-08-03 中国互联网络信息中心 一种兼容ipv4/ipv6的ip二分查找方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"IPv6 路由查找算法研究";陈祥云;《山东通信技术》;20090930;第29卷(第3期);14-17 *

Also Published As

Publication number Publication date
CN107547407A (zh) 2018-01-05

Similar Documents

Publication Publication Date Title
CN107547407B (zh) 报文传输方法、装置和实现装置
US7760720B2 (en) Translating native medium access control (MAC) addresses to hierarchical MAC addresses and their use
US7039018B2 (en) Technique to improve network routing using best-match and exact-match techniques
CN109921995B (zh) 一种配置地址表的方法、fpga和应用该fpga的网络设备
US10791051B2 (en) System and method to bypass the forwarding information base (FIB) for interest packet forwarding in an information-centric networking (ICN) environment
EP2214356A1 (en) System for forwarding a packet with a hierarchically structured variable-length identifier
US20210320863A1 (en) Packet processing method, apparatus, and device, and packet forwarding method, apparatus, and device
US8848707B2 (en) Method for IP longest prefix match using prefix length sorting
JP6122971B2 (ja) イーサネットパケットの転送
CN106982163B (zh) 按需获取路由的方法及网关
CN109714274B (zh) 一种获取对应关系的方法和路由设备
CN107580079B (zh) 一种报文传输方法和装置
WO2017190559A1 (zh) 路由查找方法、装置、分配节点、查找节点及入口节点
US20160014024A1 (en) Packet forwarding
WO2021088561A1 (zh) 位索引显式复制网络中负载分担的方法、装置及设备
US20150124808A1 (en) Network System and Network Relay Device
CN107147581B (zh) 路由表项的维护方法和装置
WO2006063217A1 (en) Maskable content addressable memory
JP5050978B2 (ja) 伝送情報転送装置及び方法
CN108306825B (zh) 一种等价转发表项生成方法和vtep设备
US20230041395A1 (en) Method and Device for Processing Routing Table Entries
CN108777654B (zh) 报文转发方法及路由设备
KR100748090B1 (ko) 고속 라우터에서의 패킷 처리 장치 및 그 방법
CN103368852A (zh) 用于处理哈希冲突的方法和系统
CN107547687B (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