本发明涉及IP
技术领域:
,特别是一种IPv4重复地址检测方法和装置。
背景技术:
:在通常情况下,为了保证互联网通信的正常进行,IPv4和IPv6都可以通过地址规划和路由隔离等方式规避不同设备采用相同地址造成的地址冲突和通信障碍,但地址自动配置(如IPv6的无状态地址自动配置等场景)或者终端自主配置地址等都可能导致不同设备采用相同的IPv4或IPv6地址,从而影响终端的正常通信。传统IPv4重复地址检测方法采用免费ARP(gratuitousARP,GARP)二层技术,以本机的IPv4地址作为目的地址发送arp(AddressResolutionProtocol,地址解析协议)请求。若本机收到arp响应,则判断本机的IPv4地址重复。现有的大量操作系统(如windows等)都采用这种IPv4重复地址检测方法。传统IPv6基于三层NDP(neighbordiscoveryprotocol,邻居发现协议)判断IPv6地址的重复性。本机通过发送邻居请求报文NS,源地址设置为未制定(::),目的地址为链路范围的所有节点多播地址(FF02::1)。NS报文携带本机接口配置的IPv6地址;远端节点收到NS报文,发现NS报文携带的IPv6地址已经使用,通过邻居通告报文NA,通知本地节点;本地节点接收到NA报文,判断该IPv6地址重复。IPv6重复地址检测地址机制是IPv6地址自动配置和IPv6设备即插即用的技术基础,主要用于IPv6配置或分配时使用。配置IPv6地址的设备都需要进行重复地址检测。随着向IPv6过渡,大量的互联网络终端、设备、服务器逐步开启IPv6,同时运行IPv4和IPv6功能、配置IPv4地址和IPv6地址,即运行双栈。互联网应用复杂多样、网络/设备/服务器现状和功能需求支持IPv6的能力千差万别,导致互联网从IPv4为主、引入IPv6并过渡到IPv6为主,将是一个长期的过程,大量的网络终端、网络设备、服务器将长期运行在双栈状态。当网络设备、终端和服务器运行双栈时,IPv4和IPv6采用不同的重复地址检测技术,增加了双栈设备的技术复杂性。现有的IPv6技术已经实现IPv6地址自动配置,IPv6重复地址检测技术是其中的关键技术之一;现有IPv4重复地址检测技术无法支持IPv4地址自动配置,不利于IPv4设备同步实现各种IPv6独有的功能(如地址自动配置和设备即插即用等)和简化双栈设备,难以适用过渡后期IPv6为主,少量使用IPv4的场景,阻碍终端、网络设备和系统在IPv6过渡后期的部署和应用。技术实现要素:本发明的一个目的在于提出一种基于IPv6的IPv4地址重复地址检测方案。根据本发明的一个方面,提出一种IPv4重复地址检测方法,包括:本地节点将待检测IPv4地址编码成虚拟IPv6地址;本地节点向远端节点发送IPv6重复地址检测请求报文,在报文中携带虚拟IPv6地址;远端节点从报文中提取出虚拟IPv6地址;远端节点解码虚拟IPv6地址获取待检测IPv4地址,并根据IPv4地址进行重复地址检测。进一步地,还包括:虚拟IPv6地址包括标识位字段、待检测节点IPv4地址字段、标志字段、待检测接口IPv4地址字段、以及辅助信息字段,其中,标识位用于表明IPv6地址为虚拟IPv6地址,标志字段用于标识待检测接口IPv4地址字段、以及辅助信息字段携带的信息。进一步地,还包括:如果待检测IPv4地址为待检测节点IPv4地址,则从待检测节点IPv4地址字段提取出节点IPv4地址进行检测;如果为待检测节点IPv4地址与辅助信息,则从待检测节点IPv4地址字段提取出节点IPv4地址,从辅助信息字段提取出辅助信息,共同进行检测;如果为接口IPv4地址,则在标志字段指示出待检测接口IPv4地址字段不为空,从待检测接口IPv4地址字段提取出接口IPv4地址进行检测;如果为接口IPv4地址与辅助信息,则标志字段指示待检测接口IPv4地址字段不为空、辅助信息字段不为空,从待检测接口IPv4地址字段提取出接口IPv4地址,从辅助信息字段提取出辅助信息,共同进行检测。进一步地,还包括:辅助信息为开始端口号和结束端口号、初始端口号和端口号掩码、其他IPv4地址、或者地址掩码。进一步地,还包括:远端节点检测IPv4地址为重复地址,则向本地节点发送IPv6重复地址检测通告报文,在报文中携带IPv4地址;本地节点接收到通告报文后,更新本地IP地址重复性信息表,在信息表中标识IPv4地址是否重复。通过这样的方法,能够将待检测的IPv4地址编码成虚拟IPv6地址,按照IPv6的重复地址检测规则发送IPv6重复地址检测请求报文;远端根据获取的虚拟IPv6地址解码获得待检测IPv4地址并进行重复地址检测,从而实现了基于IPv6进行IPv4地址的重复地址检测,适用于网络向IPv6过渡阶段的网络部署和应用。根据本发明的另一个方面,提出一种IPv4重复地址检测装置,包括:本地节点,用于将待检测IPv4地址及辅助信息编码成虚拟IPv6地址,以及向远端节点发送IPv6重复地址检测请求报文,在报文中携带虚拟IPv6地址;远端节点,用于从报文中提取出虚拟IPv6地址,以及解码虚拟IPv6地址获取待检测IPv4地址及辅助信息,并检测IPv4地址及辅助信息的重复性。进一步地,还包括:虚拟IPv6地址包括标识位字段、待检测节点IPv4地址字段、标志字段、待检测接口IPv4地址字段、以及辅助信息字段,其中,标识位用于表明IPv6地址为虚拟IPv6地址,标志字段用于标识待检测接口IPv4地址字段、以及辅助信息字段携带的信息。进一步地,还包括:如果待检测IPv4地址为待检测节点IPv4地址,则从待检测节点IPv4地址字段提取出节点IPv4地址进行检测;如果为待检测节点IPv4地址与辅助信息,则从待检测节点IPv4地址字段提取出节点IPv4地址,从辅助信息字段提取出辅助信息,共同进行检测;如果为接口IPv4地址,则在标志字段指示出待检测接口IPv4地址字段不为空,从待检测接口IPv4地址字段提取出接口IPv4地址进行检测;如果为接口IPv4地址与辅助信息,则标志字段指示待检测接口IPv4地址字段不为空、辅助信息字段不为空,从待检测接口IPv4地址字段提取出接口IPv4地址,从辅助信息字段提取出辅助信息,共同进行检测。进一步地,还包括:辅助信息为开始端口号和结束端口号、初始端口号和端口号掩码、其他IPv4地址、或者地址掩码。进一步地,还包括:远端节点检测IPv4地址为重复地址,则向本地节点发送IPv6重复地址检测通告报文,在报文中携带IPv4地址;本地节点接收到通告报文后,更新本地IP地址重复性信息表,在信息表中标识IPv4地址是否重复。这样的装置,能够将待检测的IPv4地址编码成虚拟IPv6地址,按照IPv6的重复地址检测规则发送IPv6重复地址检测请求报文;远端根据获取的虚拟IPv6地址解码获得待检测IPv4地址并进行重复地址检测,从而实现了基于IPv6进行IPv4地址的重复地址检测,适用于网络向IPv6过渡阶段的网络部署和应用。附图说明此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:图1为本发明的IPv4重复地址检测方法的一个实施例的流程图。图2为本发明的虚拟IPv6地址的编码示意图。图3为本发明的IPv4重复地址检测方法的另一个实施例的流程图。图4为本发明的IPv4重复地址检测方法的又一个实施例的流程图。图5为本发明的IPv4重复地址检测装置的一个实施例的示意图。图6为本发明的IPv4重复地址检测装置的另一个实施例的示意图。具体实施方式下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。本发明的IPv4重复地址检测方法的一个实施例的流程图如图1所示。在步骤101中,本地节点将待检测IPv4地址编码成虚拟IPv6地址。在一个实施例中,可以使用预定的编码规则,使用虚拟IPv6地址的部分字段携带待检测IPv4地址。在步骤102中,本地节点向远端节点发送IPv6重复地址检测请求报文,在报文中携带虚拟IPv6地址。在步骤103中,远端节点从报文中提取出虚拟IPv6地址。在步骤104中,远端节点根据对应的编码规则解码虚拟IPv6地址获取待检测IPv4地址,并根据IPv4地址进行重复地址检测。通过这样的方法,能够将待检测的IPv4地址编码成虚拟IPv6地址,按照IPv6的重复地址检测规则发送IPv6重复地址检测请求报文;远端根据获取的虚拟IPv6地址解码获得待检测IPv4地址并进行重复地址检测,从而实现了基于IPv6进行IPv4地址的重复地址检测,适用于网络向IPv6过渡阶段的网络部署和应用。在一个实施例中,如图2所示,虚拟IPv6地址包括标识位字段、待检测节点IPv4地址字段、标志字段、待检测接口IPv4地址字段、以及辅助信息字段,其中,标识位能够表明IPv6地址为虚拟IPv6地址,远端节点根据标识位确定接收到的IPv6地址为虚拟IPv6地址。标志字段能够标识待检测接口IPv4地址字段、以及辅助信息字段携带的信息类型,远端节点根据虚拟IPv6地址结构读取该虚拟IPv6地址携带的信息。通过这样的方法,能够利用虚拟IPv6地址携带待检测的IPv4地址及标识信息,远端节点能够获取对应的信息并区分获取的信息,通过对IPv4地址的检测确定待检测IPv4地址是否重复。在一个实施例中,如图2所示,虚拟IPv6地址由16进制数2002、节点IPv4地址、标志字段、TC字段、接口IPv4地址以及后32位组成,各字段描述如下:——16进制数2002:16位,对应虚拟IPv6地址的第0位到第15位,用于标识IPv6DADNS(重复地址检测)报文携带了虚拟IPv6地址。——节点IPv4地址node_IPv4:32位,对应虚拟IPv6地址的第16位到第47位;用于编码本地节点的节点IPv4地址,如网路设备的环回地址(loopback地址)等。缺省不编码本地节点IPv4地址,即节点IPv4地址为0.0.0.0,对应的虚拟IPv6前缀为2002:0:0::/48。——标志字段F_1和F_2:共8位,对应虚拟IPv6地址的第48位到第55位,用于标识虚拟IPv6地址后64位携带的信息。——TC字段:8位,对应虚拟IPv6地址的第56位到第63位,用于编码优先等级,与IPv6报文中的流量类型(trafficclass,TC)字段和IPv4报文中的业务类型(typeofservice,TOS)字段相同,缺省未设置(即取值十六进制数0)。——接口IPv4地址intf_IPv4:32位,对应虚拟IPv6报文的第64位到第95位,编码本地节点的接口IPv4地址。当节点IPv4地址已设置,接口IPv4地址可以不设置(即取值0.0.0.0);当节点IPv4地址未设置时,接口IPv4地址必须设置。——IPv4地址掩码IP_msk:32位,对应虚拟IPv6报文的第96位到第127位,编码通常的32位掩码。当接口IPv4地址已设置,作为接口IPv4地址的掩码;当接口IPv4地址未设置,作为节点IPv4地址的掩码。——开始端口号Ps、结束端口号Pe、初始端口号Pint、端口号掩码Pmsk:均为16位。虚拟IPv6地址的第96位到第111位编码开始端口号或初始端口号;虚拟IPv6地址的第112位到第127位编码结束端口号或端口号掩码。标志字段分成4位高位标志字段F_1和4位低位标志字段F_2。F_1描述虚拟IPv6地址的第64位到第95位编码的信息类型;F_2描述虚拟IPv6地址的第96位到第127位编码的信息类型。高位标志F_1描述接口IPv4地址的编码情况,具体编码值如表1所示:高位标志F_1编码值虚拟IPv6第64-95位0不关注1不设置,即取值0.0.0.02接口IPv4地址…………表1高位标志F_1表示虚拟IPv6地址不关注、未设置第64位到第95位的信息,或者编码了接口IPv4地址,分别对应F_1=0、1、2等数值。高位标志F_1取值0、1仅在节点IPv4地址已设置时有效,表示无论虚拟IPv6地址是否已经编码了接口IPv4地址,后续处理(如重复性检测)都不考虑该虚拟IPv6地址的第64位到第95位。高位标志F_1的编码值可以调整顺序,如用F_1=1表示虚拟IPv6第64-95位编码接口IPv4地址等。低位标志F_2描述与IP地址相关的其他信息,具体编码值如表2所示:表2低位标志F_2取值0、1仅在节点IPv4地址或接口IPv4地址已设置时有效,表示针对该虚拟IPv6地址的后续处理都不考虑第96位到第127位的信息。低位标志F_2的取值顺序可以调整,如用F_2编码值取2表示其他接口IPv4地址。在一个实施例中,当低位标志F_2取值2,虚拟IPv6的第96-111位和第112-127位分别编码16位的开始端口号和结束端口号,组成端口块[开始端口号,结束端口号],取值范围都为0-65535,开始端口号必须小于结束端口号。当指定开始端口号和结束端口号,端口块与节点IPv4地址或者接口IPv4地址一起进行重复性检测。在一个实施例中,当低位标志F_2取值3,虚拟IPv6的第96位到第111位和第112-127位分别编码16位的初始端口号和端口号掩码,描述端口范围。具体的描述可以参考协议RFC6431。当指定初始端口号和端口号掩码,端口范围与节点IPv4地址或接口IPv4地址一起进行重复性检测。在一个实施例中,当低位标志F_2取值4,虚拟IPv6的第96位-127位编码本地节点的其他接口IPv4地址,与虚拟IPv6地址中的节点IPv4地址或第64位-95位编码的接口IPv4地址一起进行IPv4重复地址检测。在一个实施例中,当低位标志F_2取值5,虚拟IPv6的第96位-127位编码IPv4地址掩码。当第64位-95位的接口IPv4地址未设置,该IPv4地址掩码作为节点IPv4地址的掩码,描述节点IPv4地址段;当第64位-95位的接口IPv4地址已设置,该IPv4地址掩码作为接口IPv4地址的掩码,描述接口IPv4地址段。IPv4地址掩码用于描述IPv4地址段,与节点IPv4地址或接口IPv4地址一起进行IPv4重复地址检测。如果IPv4地址为待检测节点IPv4地址与辅助信息,则在节点IPv4地址字段封装待检测节点IPv4地址,在标志字段设置辅助信息类型,在辅助信息字段编码指定类型的辅助信息,并从节点IPv4地址字段提取出待检测节点IPv4地址,提取标志位信息并从辅助信息字段提取出辅助信息,共同进行检测;如果为待检测接口IPv4地址,则在标志字段设置接口IPv4地址字段不为空,在接口IPv4地址字段封装待检测接口IPv4地址,并从接口IPv4地址字段提取出待检测接口IPv4地址进行检测;如果为待检测接口IPv4地址与辅助信息,则标志字段指示待检测接口IPv4地址字段不为空、在辅助信息字段编码设置辅助信息类型、在辅助信息字段编码指定类型的辅助信息,并从接口IPv4地址字段提取出待检测接口IPv4地址,读取标志位信息并从辅助信息字段提取出待检测辅助信息,共同进行检测。待检测节点IPv4地址和接口IPv4地址不能同时为空,即虚拟IPv6地址必须至少编码和检测两者之一或者全部。在一个实施例中,待检测IPv4地址可以为待检测节点IPv4地址,远端节点能够从虚拟IPv6地址中节点IPv4地址字段提取出待检测节点IPv4地址进行检测。通过这样的方法,远端节点能够实现对待检测节点IPv4地址的重复性检测。在一个实施例中,待检测IPv4地址可以为待检测节点IPv4地址与辅助信息,远端节点从节点IPv4地址字段提取出待检测节点IPv4地址,读取标准字段信息确定辅助信息类型,并从辅助信息字段提取出辅助信息,共同进行检测。在一个实施例中,辅助信息可以包括开始端口号和结束端口号、初始端口号和端口号掩码、其他IPv4地址、或者地址掩码等信息。通过这样的方法,远端节点能够实现对待检测节点IPv4地址与辅助信息的重复性检测。在一个实施例中,待检测IPv4地址可以为接口IPv4地址,虚拟IPv6地址的标志字段指示出待检测接口IPv4地址字段不为空,远端节点根据标志字段信息从接口IPv4地址字段提取出待检测接口IPv4地址进行检测。通过这样的方法,远端节点能够实现对待检测端口IPv4地址的重复性检测。在一个实施例中,待检测IPv4地址可以为接口IPv4地址与辅助信息,虚拟IPv6地址的标志字段指示接口IPv4地址字段不为空、辅助信息字段不为空,远端节点根据标志字段信息从接口IPv4地址字段提取出待检测接口IPv4地址,从辅助信息字段提取出辅助信息,共同进行检测。通过这样的方法,远端节点能够实现对待检测端口IPv4地址与辅助信息的重复性检测。在一个实施例中,本地节点具有IP地址重复性信息表,记录IPv4地址是否重复。IP地址重复性信息表可以初始化其中的各项信息为不重复。这样的方法能够详细记录IPv4地址的重复性,便于在检测过程中的记录和更新。在一个实施例中,如图3所示,当远端节点接收到IPv6重复地址检测请求报文后,解析并获取虚拟IPv6地址,根据预定的编码规则解析出待检测IPv4地址并进行IPv4重复地址检测。在步骤301中,远端节点检测IPv4地址为重复地址,则向本地节点发送IPv6重复地址检测通告报文,在报文中携带IPv4地址。在步骤302中,本地节点接收到IPv6重复地址检测通告报文后,更新本地IP地址重复性信息表,在IP地址重复性信息表中标识对应的IPv4地址重复。通过这样的方法,远端节点能够将判断结果反馈给本地节点,本地节点解析并记录IPv4重复地址检测结果,完成对应IPv4重复地址检测。在一个实施例中,本发明的IPv4重复地址检测方法的一个实施例的流程图如图4所示。在步骤401中,初始化需要做重复性检测的IPv4地址、相关信息及检测要求。在步骤402中,初始化虚拟IPv6前缀。虚拟IPv6前缀V6_G_P全局有效。在步骤403中,判断是否完成所有IPv4地址的检测。若完成检测则执行步骤404,否则执行步骤405。在步骤404中,完成全部检测,结束IPv4重复地址检测。在步骤405中,将待检测的IPv4地址编码生成虚拟IPv6地址。在步骤406中,本地节点发送IPv6重复地址检测请求报文到远端节点。在步骤407中,本地节点判断是否收到了来自远端节点的IPv6重复地址检测通告报文。若收到,则执行步骤408,否则执行步骤409。在步骤408中,本地节点根据收到了IPv6重复地址检测通告报文,确定IPv4地址重复,执行步骤410。在步骤409中,本地节点根据未能收到IPv6重复地址检测通告报文,确定IPv4地址不重复,执行步骤410。在步骤410中,根据步骤408或409中的判断结果更新IP地址重复性信息表中的状态信息。返回执行步骤403。通过这样的方法,针对双栈设备基于现有IPv4重复地址检测技术存在的问题,能够把IPv4地址编码生成虚拟IPv6地址、通过虚拟IPv6地址解码获得IPv4地址并判断其重复性,并循环检测IPv4的相关信息直至检验完成,实现了基于IPv6的IPv4重复地址检测。在一个实施例中,需要做重复性检测的IPv4地址包括本地节点重启生效的IPv4地址、手工配置的IPv4、动态获取的IPv4地址,包括为接口IPv4地址指定的地址掩码、开始端口号/结束端口号、初始端口号/端口号掩码,可以同步检测的其他IPv4地址(如其他接口IPv4地址、域名服务器地址等)。可以将需要做重复性检测的IPv4地址分别表示如下:——节点IPv4地址:用16进制数MNOP:QRST表示,由节点IPv4地址生成。M、N、O、P、Q、R、S、T分别代表4位二进制数;——接口IPv4地址:用16进制数mnop:qrst表示,由接口IPv4地址生成。m、n、o、p、q、r、s、t,分别代表4位二进制数;——IPv4地址掩码:IP_msk,32位掩码,在虚拟IPv6地址中需采用16进制数格式;——其他IPv4地址:IP_other,32位IPv4地址,在虚拟IPv6地址中需采用16进制数格式——开始端口号、结束端口号:Ps,Pe,16位端口号格式,在虚拟IPv6地址中需采用16进制数格式;——初始端口号/端口号掩码:Pint,Pmsk,16位端口号格式,在虚拟IPv6地址中需采用16进制数格式;——优先等级:在虚拟IPv6地址中表示成16进制数xy,x和y均为4位二进制数,由优先等级生成。本地节点初始化虚拟IPv6前缀,用V6_G_P表示,前缀长度为/48,全局有效。初始化后的虚拟IPv6前缀用于接口IPv4地址的编码。在一个实施例中,当本地节点完成节点IPv4地址的重复性检测,则根据检测结果更新节点IPv4地址的重复性信息和虚拟IPv6前缀值。在一个实施例中,本地节点检测接口IPv4地址的重复性。本地节点首先对接口IPv4地址编码生成虚拟IPv6地址,再向远端节点发送IPv6重复地址检测请求报文DADNS,携带生成的虚拟IPv6地址,并等待远端节点的IPv6重复地址检测通告报文DADNA。本地节点的虚拟IPv6地址编码采用的信息包括初始化的虚拟IPv6前缀V6_G_P、标识F_1和F_2、优先等级、接口IPv4地址/掩码、开始端口号/结束端口号、初始端口号/端口号掩码等。IPv6DADNS(IPv6重复地址检测请求)报文和IPv6DADNA(IPv6重复地址检测通告)报文是标准的IPv6重复地址检测报文。在一个实施例中,本地节点对接口IPv4地址的检测可以循环进行,直到确定所有需要检测的接口IPv4地址的重复性。本地节点可以编码IPv4地址及掩码,用于检测IPv4地址段的重复性;本地节点可以编码IPv4地址、开始端口号及结束端口号,用于检测IPv4地址、端口块组合的重复性;本地节点可以编码IPv4地址、初始端口号及端口号掩码,用于检测IPv4地址、端口范围组合的重复性;本地节点可以编码IPv4地址和其他接口IPv4地址,用于检测多于1个接口IPv4地址的重复性。这里的接口IPv4地址指本地节点配置的接口IPv4地址,可以是未发送DADNS报文的接口的IPv4地址。采用这种方式检测的接口IPv4地址,应当未指定端口块、端口范围、掩码等信息。本地节点更新经过检测的接口IPv4地址的重复性等信息,写入IP地址重复性信息表。在一个实施例中,本发明的IPv4重复地址检测方法能够实现对节点IPv4地址的重复性检测。本地节点初始化虚拟IPv6前缀V6_G_P,并完成节点IPv4地址的重复性检测。本地节点首先确定是否配置节点IPv4地址(如网络设备的环回地址loopback等),或者已经配置的节点IPv4地址是否需要做重复性检测。当节点IPv4地址未设置或者不需要做重复性检测,虚拟IPv6前缀V6_G_P初始化为2002::/48;当节点IPv4地址已设置,其16进制数为MNOP:QRST,虚拟IPv6前缀V6_G_P初始化为2002:MNSOP:QRST::/48。当指定了节点IPv4地址的开始端口号、结束端口号,节点IPv4地址编码生成的虚拟IPv6地址采用2002:MNSOP:QRST:0200::Ps:Pe或V6_G_P:0200::Ps:Pe;当指定了节点IPv4地址的初始端口号、端口号掩码,节点IPv4地址编码生成的虚拟IPv6地址采用2002:MNSOP:QRST:0300::Pint:Pmsk或V6_G_P:0300::Pint:Pmsk;当指定了节点IPv4地址的地址掩码,节点IPv4地址编码生成的虚拟IPv6地址采用2002:MNSOP:QRST:0500::IP_msk或V6_G_P:0500::IP_msk;当指定了节点IPv4地址的其他接口IP地址,节点IPv4地址编码生成的虚拟IPv6地址采用2002:MNSOP:QRST:0400::IP_other或V6_G_P:0400::IP_other;当未做上述指定时,节点IPv4地址编码生成的虚拟IPv6地址采用2002:MNSOP:QRST::1或V6_G_P::1。在上述情况下编码生成虚拟IPv6地址,本地节点向远端节点发送IPv6重复地址检测请求报文,并等待远端节点的IPv6重复地址检测通告报文。当本地节点收到远端节点的IPv6重复地址检测通告报文IPv6DADNA报文,本地节点重置虚拟化IPv6前缀V6_G_P为2002::/48,节点IPv4地址标记为重复;否则,节点IPv4地址标记为的不重复。通过这样的方法,本地节点能够将节点IPv4地址编码为虚拟IPv6地址,通过与远端节点的配合实现节点IPv4地址检测。在一个实施例中,本发明的IPv4重复地址检测方法能够实现对接口IPv4地址的重复性检测。本地节点完成接口IPv4地址的编码,生成虚拟IPv6地址。本地节点读取接口IPv4地址相关信息,包括接口IPv4地址、IPv4地址掩码IP_msk、优先等级xy、开始/结束端口号Ps/Pe、初始端口号/掩码Pint/Pmsk、其他IPv4地址IP_other(如其他接口IPv4地址、域名解析服务器IP地址等)。各地址及其相关信息编码生成虚拟IPv6地址时应转换为16进制数。当指定了接口IPv4地址的开始端口号、结束端口号,接口IPv4地址编码生成的虚拟IPv6地址采用V6_G_P:22xy:mnop:qrst::Ps:Pe;当指定了接口IPv4地址的初始端口号、端口号掩码,接口IPv4地址编码生成的虚拟IPv6地址采用V6_G_P:23xy:mnop:qrst::Pint:Pmsk;当指定了接口IPv4地址的地址掩码,接口IPv4地址编码生成的虚拟IPv6地址采用V6_G_P:25xy:mnop:qrst::IP_msk;当指定了接口IPv4地址的其他IP地址,接口IPv4地址编码生成的虚拟IPv6地址采用V6_G_P:24xy:mnop:qrst::IP_other;当未做上述指定,接口IPv4地址编码生成的虚拟IPv6地址采用V6_G_P:20xy:mnop:qrst::0:1。通过这样的方法,本地节点能够将接口IPv4地址编码为虚拟IPv6地址,通过与远端节点的配合实现接口IPv4地址检测。在一个实施例中,可以创建IP地址重复性信息表,各IP地址重复性初始化为不重复,包括:——节点IP地址:重复性标识(初始值:不重复),重复性检测标识(初始值:检测)。——接口IPv4地址:重复性标识(初始值:不重复),优先等级(初始值:缺省等级)。当存在多个这样的IP地址时,用于一次检测2个接口IPv4地址。——接口IPv4地址/掩码:表示IPv4地址段,重复性标识(初始值:不重复),优先等级(初始值:缺省等级)。用于检测IPv4地址段的重复性。——接口IPv4地址、开始/结束端口号:表示(IPv4地址,端口块)的组合,重复性标识(初始值:不重复),优先等级(初始值:缺省等级)。用于检测(IPv4地址,端口块)组合的重复性。其中,端口块由开始端口号和结束端口号确定,即端口号大于等于开始端口号,小于等于结束端口号的都属于该端口块。——接口IPv4地址、初始端口号/掩码:表示(IPv4地址,端口范围)的组合,重复性标识(初始值:不重复),优先等级(初始值:缺省等级)。用于检测(IPv4地址,端口范围)组合的重复性。其中端口范围由初始端口号和掩码确定,即与初始端口号中由掩码指定位置的值都相同的端口号都属于该端口范围。——其他接口IPv4地址:其他未设置地址掩码、开始/结束端口号、初始端口号/掩码等信息的接口IPv4地址,用于同时检测多个这样的接口IP地址。通过这样的方法,本地节点能够创建IP地址重复性信息表记录各IP地址重复性特征。地址重复性信息表在一个实施例中,本地节点接收重复性检测结果,并根据检测结果更新IP地址重复性信息表中各地址信息的重复性信息。当检测结果是节点IPv4地址重复,节点IPv4地址信息更新为重复;当检测结果是接口IPv4地址重复,接口IPv4地址信息更新为重复;当检测结果是接口IPv4地址块重复,接口IPv4地址块信息更新为重复;当检测结果是接口IPv4地址及端口块重复,接口IPv4地址及端口块信息更新为重复;当检测结果是接口IPv4地址及端口范围重复,接口IPv4地址及端口范围信息更新为重复;当检测结果是其他接口IPv4地址重复,其他接口IPv4地址信息更新为重复。通过这样的方法实现更新IP地址重复性信息表的各项信息,记录IPv4地址的重复性。在一个实施例中,远端节点接收IPv6DADNS报文,获取IPv6地址。当IPv6地址的前16位不是2002,远端节点完成IPv6重复地址检测,并向本地节点返回地址重复信息;当IPv6地址的前16位是2002,远端节点解码虚拟IPv6地址,获得IPv4地址信息,通过查询IP地址配置表判断IPv4地址信息的重复性。对于重复的IP地址,远端节点通过接收接口intf发送IPv6重复地址检测通告报文IPv6DADNA。当远端节点完成所接收的虚拟IPv6地址解码后的IPv4地址信息的重复性检测,远端节点继续等待接收新的IPv6DADNS报文。远端节点解码虚拟IPv6地址,获得节点IPv4地址node_IPv4、接口IPv4地址intf_IPv4、地址掩码IP_msk、标识F_1和F_2、开始/结束端口号、初始端口号/掩码、其他接口IP地址等信息,具体对应关系可以如下:——虚拟IPv6地址第16位-47位:转换成点分十进制IPv4地址,作为节点IPv4地址:——虚拟IPv6地址第48位-55位:十六进制数作为标识F_1;——虚拟IPv6地址第56位-63位:十六进制数作为标识F_2;——虚拟IPv6地址第64位-95位:转成成点分十进制IPv4地址,作为接口IPv4地址;——虚拟IPv6地址第96位-127位:当F_2=0或1或4或5,转换成点分十进制IPv4地址格式,分别对应不考虑、未设置、其他接口地址和IPv4地址掩码等;当F_2=2,第96位-111位和第112位-127位的十进制数分别作为开始端口号和结束端口号;当F_2=3,第96位-111位和第112位-127位的十进制数分别作为初始端口号和端口号掩码。远端节点分别用intf_IPv4/端口块、intf_IPv4/端口范围、intf_IPv4/地址掩码查询IP地址配置表,应完全匹配才能认为查找到匹配项,即intf_IPv4地址、开始端口号、结束端口号都相同,或intf_IPv4地址、初始端口号、端口号掩码都相同,或intf_IPv4地址、地址掩码都相同,则查找到完全匹配项,即IP地址信息重复。远端节点用intf_IPv4/其他接口IPv4地址查询IP地址配置表,当intf_IPv4或其他接口IPv4地址之一重复,则IP地址信息重复。当远端节点查询IP地址配置表,确定查找的IP地址信息重复,则向本地节点发送IPv6重复地址检测通告报文IPv6DADNA。通过这样的方法,远端节点能够根据虚拟IPv6地址的前16位地址信息鉴别虚拟IPv6地址,从而对虚拟IPv6地址进行相应的解码,根据与编码规则对应的解码规则对虚拟IPv6地址进行解码,并对解码出的IPv4地址进行重复性检测,将检测结果通过IPv6地址重复性通告报文反馈给本地节点,实现基于IPv6的IPv4地址的重复性检测。本发明的IPv4重复地址检测装置的一个实施例的示意图如图5所示。在图5中,501为本地节点,能够将待检测IPv4地址编码成虚拟IPv6地址,并向远端节点发送IPv6重复地址检测请求报文,在报文中携带虚拟IPv6地址。502为远端节点,能够从IPv6重复地址检测请求报文中提取出虚拟IPv6地址,并解码虚拟IPv6地址获取待检测IPv4地址,根据解析出的IPv4地址进行重复地址检测。这样的装置,能够将待检测的IPv4地址编码成虚拟IPv6地址,按照IPv6的重复地址检测规则发送IPv6重复地址检测请求报文;远端根据获取的虚拟IPv6地址解码获得待检测IPv4地址并进行重复地址检测,从而实现了基于IPv6进行IPv4地址的重复地址检测,适用于网络向IPv6过渡阶段的网络部署和应用。在一个实施例中,本地节点和远端节点的结构如图6所示。IPv4重复性检测装置由本地节点和远端节点组成。本地节点由IP地址重复性信息表、IPv4地址编码器、IPv4重复性检测装置组成;远端节点由IPv4地址解码器、IPv4重复性检测装置组成。本地节点和远端节点都包含一个IP地址配置表,用于生成IP地址重复性信息表和远端节点查询重复性信息。IP地址重复性信息表记录IP地址信息的重复性,包括节点IPv4地址、接口IPv4地址、接口IPv4地址/地址掩码、接口IPv4地址/端口块、接口IPv4地址/端口范围、其他接口IPv4地址等组合的重复性。IPv4地址编码器用于由IPv4地址编码生成虚拟IPv6地址,IPv4地址解码器用于由虚拟IPv6解码获得IPv4地址。IPv4重复性检测装置用于在本地节点和远端节点之间收发IPv6DADNS/NA,携带虚拟IPv6地址。在本地节点中,同时负责根据检测结果更新IPv4地址重复性信息表;在远端节点中,同时负责根据解码结果查询IP地址配置表,完成重复性检测,并向本地节点发送IPv6DADNA报文。这样的装置能够把IPv4地址编码生成虚拟IPv6地址、通过虚拟IPv6地址解码获得IPv4地址并判断其重复性,通过IPv6重复地址检测请求、通告报文进行本地节点和远端节点的交互,实现了基于IPv6的IPv4重复地址检测,解决了基于IPv6环境下进行IPv4地址的重复地址检测的问题。最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制;尽管参照较佳实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者对部分技术特征进行等同替换;而不脱离本发明技术方案的精神,其均应涵盖在本发明请求保护的技术方案范围当中。当前第1页1 2 3