CN101026591B - 一种网段地址重叠的用户互访方法及路由转发设备 - Google Patents
一种网段地址重叠的用户互访方法及路由转发设备 Download PDFInfo
- Publication number
- CN101026591B CN101026591B CN2007100981214A CN200710098121A CN101026591B CN 101026591 B CN101026591 B CN 101026591B CN 2007100981214 A CN2007100981214 A CN 2007100981214A CN 200710098121 A CN200710098121 A CN 200710098121A CN 101026591 B CN101026591 B CN 101026591B
- Authority
- CN
- China
- Prior art keywords
- area
- address
- gateway
- user
- message
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供一种在不同区域中网段地址重叠的用户互访的方法及网关,具体为:第一区域网关和第二区域网关将已获得的自身区域中用户的因特网协议(IP)地址发布给对方,并向自身区域用户发送用于学习的地址解析协议(ARP)报文,所述用于学习的ARP报文的源IP地址为对方区域用户的IP地址,源媒体接入控制(MAC)地址为自身区域网关的MAC地址;第一区域用户和第二区域用户利用获得的对方区域用户的IP地址和自身区域网关的MAC地址进行互访。应用本发明方案,在无需对现有网络进行较大改动,无需复杂的配置以及要求设备具备网络地址转换(NAT)功能的情况下,实现在不同区域中网段地址重叠的用户互访。
Description
技术领域
本发明涉及路由技术,特别是涉及一种网段地址重叠的用户互访方法及路由转发设备。
背景技术
一个区域(Site)内的用户(Host)可以通过网关,即路由转发设备接入公网,从而实现对公网的访问,这里所述区域即局域网或私网。而一个区域内的用户要访问另一个区域内的用户,其情况则比较复杂。
图1是实现不同区域中用户互访的组网图。如图1所示,区域A和区域B是不同的两个私网。其中,区域A包括Host A1~Host An,通过网关A接入公网;区域B包括Host B1~Host Bn,并通过网关B接入公网。
在图1中,如果区域A中的Host A1要访问区域B中的Host B1,并且Host A1和Host B1所属的网段地址不重叠,则可以采用现有技术中的动态路由协议实现互访。而如果Host A1和Host B1所属的网段地址重叠,则由于无法激活或匹配路由,从而无法根据动态路由协议实现互访。这里所述网段地址重叠指两个网段地址完全相同,或者一个网段地址是另一个网段地址的子集。比如:Host A1所属网段地址为172.16.10.0/24,Host B1所属网段地址也为172.16.10.0/24,这两个网段地址完全相同,即Host A1所属网段地址与Host B1所属网段地址重叠。又比如:Host A1所属网段地址为172.16.10.0/24,Host B1所属网段地址为172.16.20.0/16,这两个网段地址虽然不完全相同,但网段地址172.16.10.0/24为网段地址172.16.20.0/16的子集,也可以称Host A1所属网段地址与Host B1所属网段地址重叠。
下面仍以图1为例,具体说明在网段地址重叠时无法按照动态路由协议实现用户互访的原因:
对于网段地址完全相同的情况,假设Host A1的IP地址为172.16.10.101/24,其所属网段地址为172.16.10.0/24;Host B1的IP地址为172.16.10.102/24,其所属网段地址也为172.16.10.0/24,两个网段地址完全相同。按照动态路由协议的规定,网关A需要将Host A1所属网段地址发布出去,网关B需要将Host B1所属网段地址发布出去。当网关A接收到网关B发布的路由,由于网关A自身路由表中已经存在相同网段地址的直连路由,而不会激活来自网关B的路由,即不会将接收到网段地址172.16.10.0/24添加到自身的路由表中。这样,当Host A1访问Host B1时,由于访问的目的地址属于网关A自身直连路由中的网络地址,所以不会按照动态路由协议进行三层路由转发,而仅在区域A内进行二层转发,从而无法达到Host A1访问Host B1的目的。
对于一个网段地址是另一个网段地址子集的情况,假设Host A1的IP地址为172.16.10.101/24,其所属网段地址为172.16.10.0/24;Host B1的IP地址为172.16.10.102/16,其所属网段地址为172.16.20.0/16,Host A1网段地址是Host B1网段地址的子集。与上述情况相同,网关A需要将Host A1所属网段地址发布出去,网关B需要将Host B1所属网段地址发布出去。当网关A接收到网关B发布的路由,由于网关A自身路由表中不存在相同网段地址的直连路由,网关A会将接收到网段地址172.16.20.0/16添加到自身的路由表中。当Host A1访问Host B1时,虽然网关A的路由表中存在网关B发布的路由172.16.20.0/16,但与目的地址172.16.10.102/16匹配最长的是网关A自身的直连路由172.16.10.0/24,而不是网关B发布的172.16.20.0/16。所以,按照动态路由协议的最长路由匹配的规定,网关A应该根据路由表中与目的地址匹配最长的路由对报文进行转发,所以,网关A仍然不会按照动态路由协议进行三层路由转发,而仅在区域A内进行二层转发,所以也无法达到Host A1访问Host B1的目的。
实际应用中,图1中公网可以为利用虚拟专网(VPN)技术的MPLS BGPVPN网络,也可以为运行开放最短路径优先(OSPF)协议的普通三层IP网络等。但不管是哪种网络,如果直接利用现有技术中的动态路由协议,都无法在网段地址重叠的情况下实现不同区域中用户互访。
针对上述网段地址重叠的用户无法实现互访的情况,网络地址转换(NAT)技术对此进行了改进,即:在一个区域的用户访问另一个区域的用户时,将发起访问一端的网段地址转换成与被访问一端不重叠的网段地址,然后利用这个不重叠的网段地址来实现对另一个区域用户的访问。该方法的缺点在于:其一,要求网络设备必须具备NAT功能,设备价格比较昂贵;其二,只能从NAT私网侧发起访问,否则无法实现互访;其三,由于只能从NAT私网侧发起访问,在三个或三个以上区域网段地址重叠时,实现用户互访非常困难,网络部署和维护也十分复杂。
另外,因特网协议安全虚拟专网(IPSEC VPN)技术也提出一种用户访问方法,其基本思想是在点对点连接的基础上,对每一个用户配置与访问相关的地址信息,从而实现对不同区域中地址重叠的用户的访问。IPSEC VPN技术的缺点在于:需要互访的用户都必须单独配置,其配置非常复杂,难以扩展。
综上所述,虽然目前如NAT和IPSEC VPN等技术提出了对不同区域中地址重叠的用户进行访问的方法,但由于对设备要求高、改动大、配置复杂等原因,实现起来都比较困难,还没有一种在现有网络的基础上,无需对网络设备进行较大的改动或复杂的配置,就可以在网段地址重叠的情况下不同区域的用户之间实现互访的方法。
发明内容
有鉴于此,本发明第一个目的在于提供一种网段地址重叠的用户互访的方法,可以在无需对现有网络进行较大改动,无需复杂的配置以及要求设备具备NAT功能的情况下,实现在不同区域中网段地址重叠的用户互访。
本发明的第二个发明目的在于提出一种路由转发设备,可以在无需对现有网络进行较大改动,无需复杂的配置以及NAT功能的情况下,为不同区域中网段地址重叠的用户互访提供条件。
为了达到上述第一个发明目的,本发明提出的技术方案为:
一种网段地址重叠的用户互访的方法,如果第一区域用户的网段地址和第二区域用户的网段地址重叠,所述第一区域用户的网关为第一区域网关,所述第二区域用户的网关为第二区域网关,该方法为:
A、第一区域网关和第二区域网关将已获得的自身区域用户的因特网协议IP地址发布给对方,并向自身区域用户发送用于学习的地址解析协议ARP报文,所述用于学习的ARP报文的源IP地址为对方区域用户的IP地址,源媒体接入控制MAC地址为区域网关自身的MAC地址;
B、第一区域用户和第二区域用户利用获得的对方区域用户的IP地址和自身区域网关的MAC地址进行互访。
上述方案中,步骤A所述用于学习的ARP报文为免费ARP请求报文。
上述方案中,步骤A所述第一区域网关和第二区域网关获得自身区域用户的IP地址的方法为:通过静态配置ARP表项而获得自身区域中用户的IP地址。。
上述方案中,
在第一区域网关/第二区域网关向自身区域用户发送免费ARP请求报文之后,该方法进一步包括:如果第一区域网关/第二区域网关接收到自身区域用户返回的免费ARP应答报文,则将返回的免费ARP应答报文进行单播封装后发送给第二区域网关/第一区域网关,由第二区域网关/第一区域网关解析后发送给第二区域用户/第一区域用户,第二区域用户/第一区域用户将IP地址冲突的信息上报给系统,并退出本流程。
上述方案中,所述步骤A之前进一步包括:第一区域用户发起针对第二区域用户的ARP请求过程;
步骤A所述用于学习的ARP报文为免费ARP请求报文或ARP请求过程中的报文。
上述方案中,所述ARP请求过程具体为:
第一区域用户向第一区域网关发送针对第二区域用户的ARP请求报文,第一区域网关将所述ARP请求报文封装为单播报文发送给第二区域网关;第二区域网关解析所述单播报文,将获得的ARP请求报文中源MAC地址修改为自身的MAC地址后发送给第二区域用户;
第二区域用户向第二区域网关返回针对第一区域用户的ARP应答报文,第二区域网关将所述ARP应答报文封装为单播报文发送给第一区域网关;第一区域网关解析所述单播报文,将获得的ARP应答报文中源MAC地址修改为自身的MAC地址,再发送给第一区域用户。
上述方案中,步骤A所述第一区域网关获得自身区域中用户IP地址的方法为:
通过静态配置ARP表项而获得自身区域中用户的IP地址,或者通过动态学习生成ARP表项而获得自身区域中用户的IP地址;
所述动态学习生成ARP表项的方法为:当第一区域网关接收到来自第一区域用户发送的ARP请求报文时,学习并生成第一区域用户的ARP表项,所述第一区域用户的ARP表项包括第一区域用户的IP地址和第一区域用户的MAC地址。
上述方案中,步骤A所述第二区域网关获得自身区域中用户IP地址的方法为:
通过静态配置ARP表项而获得自身区域中用户的IP地址,或者通过动态学习生成ARP表项而获得自身区域中用户的IP地址;
所述动态学习生成ARP表项的方法为:当第二区域网关接收到来自第二区域用户发送的ARP应答报文时,学习并生成第二区域用户的ARP表项,所述第二区域用户的ARP表项包括第二区域用户的IP地址和第二区域用户的MAC地址。
上述方案中,所述第一区域网关发送免费ARP请求报文的方法为:
当所述第一区域网关接收到第二区域网关发布的第二区域用户的IP地址时,第一区域网关判断出第二区域用户的IP地址为自身区域用户网段地址范围内的IP地址,向自身区域用户发送免费ARP请求报文,所述免费ARP请求报文的源IP地址为第二区域用户的IP地址,源MAC地址为第一区域网关的MAC地址。
上述方案中,在第一区域网关向自身区域用户发送免费ARP请求报文之后,该方法进一步包括:
如果第一区域网关接收到自身区域用户返回的免费ARP应答报文,则将返回的免费ARP应答报文进行单播封装后发送给第二区域网关,由第二区域网关解析后发送给第二区域用户,第二区域用户将IP地址冲突的信息上报给系统,并退出本流程。
上述方案中,所述第二区域网关发送免费ARP请求报文的方法为:
当所述第二区域网关接收到第一区域网关发布的第一区域用户的IP地址时,第二区域网关判断出第一区域用户的IP地址为自身区域用户网段地址范围内的IP地址,向自身区域用户发送免费ARP请求报文,所述免费ARP请求报文的源IP地址为第一区域用户的IP地址,源MAC地址为第二区域网关的MAC地址。
上述方案中,在第二区域网关向自身区域用户发送免费ARP请求报文之后,该方法进一步包括:
如果第二区域网关接收到自身区域用户返回的免费ARP应答报文,则将返回的免费ARP应答报文进行单播封装后发送给第一区域网关,由第一区域网关解析后发送给第一区域用户,第一区域用户将IP地址冲突的信息上报给系统,并退出本流程。
上述方案中,步骤B所述第一区域用户和第二区域用户互访的方法具体为:
如果第一区域用户/第二区域用户访问第二区域用户/第一区域用户,则第一区域用户/第二区域用户将第二区域用户/第一区域用户的IP地址作为目的IP地址携带于IP报文中,该IP报文其外封装的MAC地址为第一区域网关/第二区域网关的MAC地址,将封装MAC地址后的IP报文发送出去;当第一区域网关/第二区域网关接收到所述IP报文时,判断出IP报文的MAC地址为自身的MAC地址,将接收到的IP报文发送给第二区域网关/第一区域网关;第二区域网关/第一区域网关接收到所述IP报文后,根据IP报文中的目的IP地址将报文发送给第二区域用户/第一区域用户。
上述方案中,步骤A所述第一区域网关和第二区域网关向对方发布的自身区域用户的IP地址为32位掩码主机路由地址。
上述方案中,所述第一区域用户为第一区域网关配置的代理对象中的用户,所述第二区域用户为第二区域网关配置的代理对象中的用户,所述步骤A之前,该方法进一步包括:
第一区域网关和第二区域网关分别设置对方代理对象的网络地址为自身邻居网络地址,并将表示自身代理对象的网络地址发布给对方,所述代理对象的网络地址为32位掩码的主机路由地址。
上述方案中,所述代理对象为设备全局、虚拟专网VPN、虚拟局域网VLAN、端口或端口集合。
为了达到上述第二个发明目的,本发明提出的技术方案为:
一种路由转发设备,至少包括私网侧收发单元、公网侧收发单元,该路由转发设备还进一步包括:
路由处理单元,用于将从地址解析协议ARP处理单元获得的自身区域用户的IP地址发布给进行互访的对方区域网关,接收并记录发布给自身的对方区域用户的IP地址;
地址解析协议ARP处理单元,用于向自身区域用户发送用于学习的ARP报文,所述用于学习的ARP报文的源IP地址为进行互访的对方区域用户的IP地址,源MAC地址为区域网关自身的MAC地址;
IP报文处理单元,用于接收自身区域用户的IP报文,并根据路由处理单元中记录的对方区域用户的IP地址转发出去。
上述方案中,如果所述用于学习的ARP报文为免费ARP请求报文或ARP请求过程中的报文,所述地址解析协议ARP处理单元包括:
ARP报文处理单元,用于向自身区域用户发送免费ARP请求报文,所述免费ARP请求报文的源IP地址为进行互访的对方区域用户的IP地址,源MAC地址为区域网关自身的MAC地址;
报文封装解析单元,用于将自身区域用户发送的ARP请求报文或ARP应答报文进行单播封装,再发送给进行互访的对方区域网关;解析从对方区域网关接收到的单播报文,并将解析后获得的ARP请求报文或ARP应答报文发送给自身区域用户。
综上所述,本发明提出一种网段地址重叠的用户互访方法及路由转发设备,由于第一区域网关和第二区域网关可以获得对方区域用户的IP地址,第一区域用户和第二区域用户可以获得对方区域用户的IP地址和自身区域网关的MAC地址。在区域用户互访时,各区域用户可以利用对方区域用户的IP地址和自身区域网关的MAC地址,将发送给对方的IP报文通过自身区域网关和对方区域网关进行转发,从而在无需对现有网络进行较大改动,无需复杂的配置以及要求设备具备NAT功能的情况下,实现在不同区域中网段地址重叠的用户互访。
附图说明
图1是不同区域中用户互访时的组网图;
图2是本发明方法的流程图;
图3是本发明方法实施例一的流程图;
图4是本发明方法实施例二的流程图;
图5是区域网关为用户网边缘路由器时的组网图;
图6是本发明路由转发设备的基本结构示意图;
图7是本发明路由转发设备装置实施例的基本结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明作进一步地详细描述。
图2是本发明方法的流程图。如图2所示,如果第一区域用户的网段地址和第二区域用户的网段地址重叠,所述第一区域用户的网关为第一区域网关,所述第二区域用户的网关为第二区域网关。当第一区域用户和第二区域用户需要互访时,该方法包括以下步骤:
步骤201:第一区域网关和第二区域网关将已获得的自身区域中用户的因特网协议IP地址发布给对方,并向自身区域用户发送用于学习的地址解析协议(ARP)报文,所述用于学习的ARP报文的源IP地址为对方区域用户的IP地址,源MAC地址为自身区域网关的媒体接入控制(MAC)地址;
步骤202:第一区域用户和第二区域用户从接收到的用于学习的ARP报文中获得对方区域用户的IP地址和自身区域网关的MAC地址,并利用对方区域用户的IP地址和自身区域网关的MAC进行互访。
本发明中,由于第一区域用户和第二区域用户是不同私网中的用户,不能象现有技术同区域的用户一样通过在区域内发起ARP请求或免费ARP请求而学习到对方的IP地址和MAC地址,从而进行互访。这里所述学习指从ARP请求过程中的报文或免费ARP请求报文中获得对方的IP地址和MAC地址,并生成对方的ARP表项,至于同区域用户之间如何学习并生成ARP表项则属于现有技术,此处不再赘述。
本发明中,为了使自身区域用户能够学习到对方区域用户的IP地址,第一区域网关可以模拟第二区域用户的角色向自身区域用户发送用于学习的ARP报文,第二区域网关可以模拟第一区域用户的角色向自身用户发送用于学习的ARP报文。这样,第一区域用户和第二区域用户都可以学习到对方的IP地址。这里所述用于学习的ARP报文指接收该报文的用户可以学习到报文中源IP地址和源MAC地址,即首次接收到的ARP报文。
需要注意的是,当第一区域网关模拟第二区域用户向自身区域用户发送用于学习的ARP报文时,该报文中的MAC地址并不是第二区域用户的MAC地址,而是第一区域网关自身的MAC地址,其原因在于:如果第一区域网关向自身区域用户发送的ARP报文中IP地址和MAC地址都是第二区域用户的IP地址和MAC地址,第一区域用户学习到的IP地址和MAC地址将完全是第二区域用户的IP地址和MAC地址。那么,当第一区域用户向第二区域用户发送访问的IP报文时,IP报文的目的地址为第二区域用户的IP地址,其外封装的MAC地址为第二区域用户的MAC地址,并发送给自身区域网关,即第一区域网关。这样,按照路由转发协议的规定,第一区域网关判断出接收到的IP报文的MAC地址并不是自身的MAC地址,就仅在区域内进行二层转发,而不会通过三层转发将报文发送给第二区域网关,从而无法实现访问。
所以,在本发明中,第一区域网关向自身区域用户发送用于学习的ARP报文时,该报文中的MAC地址是第一区域网关自身的MAC地址。这样,当第一区域用户向第二区域用户发送访问的IP报文时,IP报文的目的地址为第二区域用户的IP地址,其外封装的MAC地址为第一区域网关的MAC地址,并发送给第一区域网关。第一区域网关判断出接收到的IP报文的MAC地址是自身的MAC地址,就会通过三层转发将报文发送给第二区域网关,再由第二区域网关转发给第二区域用户,从而实现访问。
上述是以第一区域网关模拟第二区域用户为例进行说明的,第二区域网关模拟第一区域用户的原理与此相同,此处不再赘述。
与同区域用户之间学习对方IP地址和MAC地址相似,本发明第一区域用户和第二区域用户也可以通过从ARP请求过程中的报文或免费ARP请求报文中获得对方的IP地址和自身区域网关的MAC地址。根据学习对方的IP地址和自身区域网关的MAC地址的方式,可以将本发明方案分为两类:
第一类方案是:第一区域用户和第二区域用户只能通过免费ARP请求报文中获得对方的IP地址和自身区域网关的MAC地址,即所述用于学习的ARP报文为免费ARP请求报文。
第二类方案是:第一区域用户和第二区域用户既可以通过免费ARP请求报文获得对方的IP地址和自身区域网关的MAC地址,也可以通过ARP请求过程中的报文来获得对方的IP地址和自身区域网关的MAC地址,即用于学习的ARP报文为免费ARP请求报文或ARP请求过程中的报文。
另外,本发明步骤201所述第一区域网关和第二区域网关可以通过两种方式获得自身区域中用户IP地址。为了更好地描述本发明的两类方案,下面先对两种方式进行详细说明。
第一种方式是通过静态配置ARP表项而获得自身区域中用户的IP地址,即区域网关事先将自身区域用户的IP地址和MAC地址静态配置在自身的ARP表项中,区域网关可以根据ARP表项直接获得自身区域用户的IP地址;
第二种方式是通过动态学习生成ARP表项而获得自身区域中用户的IP地址,即区域网关从ARP请求过程中获得IP地址。如果第一区域用户发起ARP请求过程,那么,当第一区域网关接收到来自第一区域用户发送的ARP请求报文时,可以学习并生成第一区域用户的ARP表项,生成的ARP表项与静态配置的一样,包括第一区域用户的IP地址和第一区域用户的MAC地址;当第二区域网关接收到来自第二区域用户发送的ARP应答报文时,可以学习并生成第二区域用户的ARP表项,生成的ARP表项与静态配置的一样,包括第二区域用户的IP地址和第二区域用户的MAC地址。
对于第一类方案来说,由于第一区域用户和第二区域用户只能通过免费ARP请求报文中获得对方的IP地址和自身区域网关的MAC地址,第一区域用户就无需发起ARP请求,第一区域网关和第二区域网关也只能通过静态配置ARP表项而获得自身区域用户的IP地址。
这样,当第一区域网关将自身区域用户的IP地址发布给第二区域网关时,第二区域网关可以模拟第一区域用户新进入第二区域的情形,在第二区域内发免费ARP请求报文,所述免费ARP请求报文的源IP地址为第一区域用户的IP地址,源MAC地址为第二区域网关自身的MAC地址。第二区域用户就可以通过免费ARP请求报文学习到第一区域用户的IP地址以及第二区域网关的MAC地址。
与此相似,当第二区域网关将自身区域用户的IP地址发布给第一区域网关时,第一区域网关可以模拟第二区域用户新进入第一区域的情形,在第一区域内发免费ARP请求报文,所述免费ARP请求报文的源IP地址为第二区域用户的IP地址,源MAC地址为第一区域网关自身的MAC地址。第一区域用户就可以通过该免费ARP请求报文学习到第二区域用户的IP地址以及第一区域网关的MAC地址。
实际应用中,在第一区域网关向自身区域用户发送免费ARP请求报文之后,为了检验第二区域用户的IP地址是否与自身区域用户的IP地址冲突,该方法还可以进一步包括:如果第一区域接收到自身区域用户返回的免费ARP应答报文,则将返回的免费ARP应答报文进行单播封装后发送给第二区域网关,由第二区域网关解析后发送给第二区域用户,第二区域用户将IP地址冲突的信息上报给系统,并退出本流程。
相应地,在第二区域网关向自身区域用户发送免费ARP请求报文之后,该方法还可以进一步包括:如果第二区域接收到自身区域用户返回的免费ARP应答报文,则将返回的免费ARP应答报文进行单播封装后发送给第一区域网关,由第一区域网关解析后发送给第一区域用户,第一区域用户将IP地址冲突的信息上报给系统,并退出本流程。
如果发生IP地址冲突的情况,系统就可以重新更改第一区域用户或第二区域用户的IP地址,并重新执行本发明流程,直到地址不发生冲突为止。
当第一区域用户和第二区域用户都获得了对方区域用户的IP地址和自身区域网关的MAC地址后,就可以利用对方区域用户的IP地址和自身区域网关的MAC地址实现互访。
对于本发明第二类方案来说,第一区域用户和第二区域用户既可以通过免费ARP请求报文获得对方的IP地址和自身区域网关的MAC地址,也可以通过ARP请求过程中的报文来获得对方的IP地址和自身区域网关的MAC地址;第一区域网关和第二区域网关可以通过静态配置ARP表项而获得自身区域用户的IP地址,也可以通过动态学习生成ARP表项而获得自身区域中用户的IP地址。那么,既然区域用户可以通过ARP请求过程中的报文来获得对方的IP地址和自身区域网关的MAC地址,区域网关可以通过动态学习生成ARP表项来获得自身区域中用户的IP地址,就需要事先发起ARP请求过程。假设第一区域用户为访问发起方,则在所述步骤201之前可以进一步包括:第一区域用户发起针对第二区域用户的ARP请求过程。
所述ARP请求过程为:第一区域用户向第一区域网关发送针对第二区域用户的ARP请求报文,第一区域网关将所述ARP请求报文封装为单播报文发送给第二区域网关;第二区域网关解析所述单播报文,将获得的ARP请求报文中源MAC地址修改为自身的MAC地址后发送给第二区域用户;第二区域用户向第二区域网关返回针对第一区域用户的ARP应答报文,第二区域网关将所述ARP应答报文封装为单播报文发送给第一区域网关;第一区域网关解析所述单播报文,将获得的ARP应答报文中源MAC地址修改为自身的MAC地址,再发送给第一区域用户。
需要注意的是,第一区域用户只是在步骤201之前发起ARP请求过程,而整个ARP请求过程的执行并不完全在步骤201之前。也就是说,所述ARP请求过程的执行与步骤201~步骤202并没有严格的顺序关系。
在第二类方案中,步骤201所述第一区域网关获得自身区域中用户IP地址的方法可以通过静态配置ARP表项而获得自身区域中用户的IP地址。但由于第一区域用户发起了ARP请求过程,所以,第一区域网关也可以通过动态学习生成ARP表项而获得自身区域中用户的IP地址,即:当第一区域网关接收到来自第一区域用户发送的ARP请求报文时,学习并生成第一区域用户的ARP表项,所述第一区域用户的ARP表项包括第一区域用户的IP地址和第一区域用户的MAC地址。
同样,步骤201所述第二区域网关获得自身区域中用户IP地址的方法可以通过静态配置ARP表项而获得自身区域中用户的IP地址。但由于第一区域用户发起了ARP请求过程,第二区域网关也可以通过动态学习生成ARP表项而获得自身区域中用户的IP地址,即:当第二区域网关接收到来自第二区域用户发送的ARP应答报文时,学习并生成第二区域用户的ARP表项,所述第二区域用户的ARP表项包括第二区域用户的IP地址和第二区域用户的MAC地址。
与第一类方案相似,当第一区域网关接收到第二区域网关发布的第二区域用户的IP地址时,可以模拟第二区域用户新进入第一区域的情形,在第一区域内发免费ARP请求报文,所述免费ARP请求报文的源IP地址为第二区域用户的IP地址,源MAC地址为第一区域网关自身的MAC地址。
当第二区域网关接收到第一区域网关发布的第一区域用户的IP地址时,可以模拟第一区域用户新进入第二区域的情形,在第二区域内发免费ARP请求报文,所述免费ARP请求报文的源IP地址为第一区域用户的IP地址,源MAC地址为第二区域网关自身的MAC地址。
也就是说,在第二类方案中,第一区域网关会向第一区域用户发送ARP应答报文,也会发送免费ARP请求报文。但由于发送ARP应答报文和发送免费ARP请求报文并没有严格的顺序,第一区域用户会从先到达的ARP报文中学习到源IP地址和源MAC地址。所以,步骤201中所述第一区域网关向第一区域用户发送的用于学习的ARP报文可能为免费ARP请求报文,也可能为在ARP请求过程中由第一区域网关发送给第一区域用户的ARP应答报文。
相应地,第二区域网关会向第二区域用户发送ARP请求报文,也会发送免费ARP请求报文,第二区域用户会从先到达的ARP报文中学习到第一区域用户的IP地址和第二区域网关的MAC地址。所以,步骤201中所述第二区域网关向第二区域用户发送用于学习的ARP报文可能为免费ARP请求报文,也可能为在ARP请求过程中发送给第二区域用户的ARP请求报文。
与第一类方案相同,实际应用中,在第一区域网关向自身区域用户发送免费ARP请求报文之后,为了检验第二区域用户的IP地址是否与自身区域用户的IP地址冲突,该方法还可以进一步包括:如果第一区域接收到自身区域用户返回的免费ARP应答报文,则将返回的免费ARP应答报文进行单播封装后发送给第二区域网关,由第二区域网关解析后发送给第二区域用户,第二区域用户将IP地址冲突的信息上报给系统,并退出本流程。
相应地,在第二区域网关向自身区域用户发送免费ARP请求报文之后,该方法还可以进一步包括:如果第二区域接收到自身区域用户返回的免费ARP应答报文,则将返回的免费ARP应答报文进行单播封装后发送给第一区域网关,由第一区域网关解析后发送给第一区域用户,第一区域用户将IP地址冲突的信息上报给系统,并退出本流程。
如果发生IP地址冲突的情况,系统就可以重新更改第一区域用户或第二区域用户的IP地址,并重新执行本发明流程,直到地址不发生冲突为止。
不管是第一类方案还是第二方案,第一区域用户和第二区域用户获得对方IP地址和自身区域网关的MAC地址后,就可以进行互访。其方法可以具体为:
如果第一区域用户访问第二区域用户,第一区域用户将第二区域用户的IP地址作为目的IP地址携带于IP报文中,并将该IP报文封装为第一区域网关的MAC地址,将其发送出去;当第一区域网关接收到所述IP报文时,判断出IP报文的MAC地址为自身的MAC地址,则将接收到的IP报文发送给第二区域网关;第二区域网关接收到所述IP报文后,根据IP报文中的目的IP地址将报文发送给第二区域用户;
如果第二区域用户访问第一区域用户,第二区域用户将第一区域用户的IP地址作为目的IP地址携带于IP报文中,并将该IP报文封装为第二区域网关的MAC地址,将其发送出去;当第二区域网关接收到所述IP报文时,判断出IP报文的MAC地址为自身的MAC地址,则将接收到的IP报文发送给第一区域网关;第一区域网关接收到所述IP报文后,根据IP报文中的目的IP地址将报文发送给第一区域用户。
实际应用中,第一区域用户是否发起ARP请求,第一区域网关采用哪种方式获得自身区域用户的IP地址,第二区域网关采用哪种方式获得自身区域用户的IP地址,第一区域用户通过哪种方式学习到IP地址和MAC地址,第二区域用户通过哪种方式学习到IP地址和MAC地址等都可以进行任意的组合,至于如何组合则与具体的实现相关,此处不再一一列举。
另外,本发明中所述第一区域用户和第二区域用户是指不同区域中网段地址重叠的用户,如果网段地址不重叠,则仍然通过现有技术的动态路由协议来实现访问。实际应用中,如果第一区域用户属于第一区域网关上配置的某个VLAN中的用户,第二区域用户属于第二区域网关上配置的某个VLAN中的用户,两个VLAN的网段地址重叠。那么,为了更好地标识网段地址重叠的情况,可以将这两个VLAN分别设置为代理对象,表示代理对象中用户互访时需要利用本发明方案来实现。当然,根据网段地址重叠的情况,还可以设置其它类型的代理对象。比如:第一区域网关上某个VPN中所有VLAN都与第二区域网关上VLAN的网段地址重叠,则可以将这两个VPN分别设置为代理对象。同理,如果第一区域网关上所有VPN都发生网段地址重叠现象,则可以将该网关的设备全局设置为代理对象。实际应用中,还可以将某个端口或端口集合设置为代理对象,表示从该端口或端口集合发送报文的用户的发生网段地址重叠现象时,可以应用本发明方案。
为了更好地说明本发明方案,下面用两个较佳实施例分别对本发明的两类方案进行详细描述。
实施例一
本实施例组网图仍然如图1所示,区域A和区域B为两个不同区域的私网,区域A包括Host A1~Host An,区域网关为网关A,区域B包括HostB1~Host Bn,区域网关为网关B,公网为普通三层IP网络,运行开放最短路径优先(OSPF)协议。
本实施例中,Host A1为网关A上VLAN101中的用户,Host B1为网关B上VLAN102中的用户。其中,VLAN101的虚接口地址,即IP地址为172.16.10.1/24,MAC地址为00e0-fc10-1010;Host A1的IP地址为172.16.10.101/24,MAC地址为000a-eb10-1010;VLAN102的虚接口地址,即IP地址为172.16.10.2/24,MAC地址为00e0-fc20-1020;Host B1的IP地址为172.16.10.102/24,MAC地址为000a-eb10-1020。
本实施例中,假设Host A1和Host B1要进行互访,Host A1为第一区域用户,网关A为第一区域网关,Host B1为第二区域用户,网关B为第二区域网关。网关A将VLAN101设置为代理对象,其网络地址为32位掩码的主机路由地址,即172.16.10.1/32;网关B将VLAN102设置为代理对象,其网络地址为32位掩码的主机路由地址,即172.16.10.2/32。
另外,由于本实施例是针对本发明第一类方案的实施例,Host A1和HostB1只能通过免费ARP请求报文中获得对方的IP地址和自身区域网关的MAC地址,Host A1无需发起ARP请求,网关A和网关B也只能通过静态配置ARP表项而获得自身区域用户的IP地址。
图3是本实施例的流程图。如图3所示,本实施例可以包括以下步骤:
步骤301:网关A和网关B分别设置对方代理对象的网络地址为自身邻居网络地址,并将表示自身代理对象的网络地址发布给对方。
本步骤中,网关A的代理对象网络地址为VLAN 101的虚接口地址172.16.10.1,网关B的代理对象网络地址为VLAN102的虚接口地址172.16.10.2,网关A和网关B分别将对方代理对象的网络地址设置为自身邻居。此后,网关A将VLAN101虚接口地址的32位主机路由地址172.16.10.1/32发布出去;网关B将VLAN102虚接口地址的32位主机路由地址172.16.10.2/32发布出去。
发布VLAN虚接口地址的目的是使网关A和网关B明确对方的路由,以保证在后续的报文转发过程中,可以将报文正确地转发给对方。这里,虽然网关A和网关B获得的是对方某个VLAN的地址,但实际应用中,VLAN虚接口地址也可以表示网关的地址,网关A和网关B仍然可以根据VLAN虚接口地址将报文正确转发给对方。当然,实际应用中,也可以不向对方发布VLAN虚接口地址,只要发布一个可以使对方将报文正确转发的网络地址即可。
本实施例中,为了更好地记录路由信息,可以在网关A和网关B分别设置路由表。执行本步骤后,网关A和网关B可以将对方发布的路由,即对方代理对象的网络地址记录在自身的路由表中。假设网关A中的路由表如表一所示:
目的IP地址 | 掩码 | 下一跳 |
172.16.10.1 | 32 | 127.0.0.1 |
172.16.10.2 | 32 | 11.1.1.2 |
... | ... | ... |
表一
其中,“172.16.10.1”、“32”表示网关A要发布32位掩码的主机路由,“172.16.10.2”、“32”表示接收到的网关B所发布的32位主机路由,而“127.0.0.1”、“11.1.1.2”则与发布路由时下一跳信息相关,与实际的组网相关,属于现有技术,此处不再赘述。
假设网关B中的路由表如表二所示:
目的IP地址 | 掩码 | 下一跳 |
172.16.10.2 | 32 | 127.0.0.1 |
172.16.10.1 | 32 | 12.1.1.1 |
... | ... | ... |
表二
其中,“172.16.10.2”、“32”表示网关B要发布32位掩码的主机路由,“172.16.10.1”、“32”表示接收到的网关A所发布的32位主机路由,而“127.0.0.1”、“12.1.1.1”则与发布路由时下一跳信息相关,与实际的组网相关,此处不再赘述。
实际应用中,如果网关A和网关B已经相互指定为邻居,即已经明确对方的路由,则可以省略本步骤。
步骤302:网关A通过静态配置ARP表项获得Host A1的IP地址,并将Host A1的IP地址发布给网关B;
本步骤中,由于网关A在自身的ARP表中静态配置了Host A1的ARP表项,所述网关A的ARP表可以如表三所示:
IP地址 | MAC地址 |
172.16.10.101 | 000a-eb10-1010 |
表三
网关A可以从表三中直接获得Host A1的IP地址,可以生成路由并根据动态路由协议发布出去。此时,网关A的路由表可以如表四所示:
目的IP地址 | 掩码 | 下一跳 |
172.16.10.1 | 32 | 127.0.0.1 |
172.16.10.2 | 32 | 11.1.1.2 |
172.16.10.101 | 32 | 172.16.10.101 |
... | ... | ... |
表四
步骤303:网关B接收到Host A1的IP地址后向自身区域用户发送免费ARP请求报文,所述ARP请求报文的源IP地址为Host A1的IP地址,源MAC地址为网关B自身的MAC地址;
本步骤中,当网关B接收到Host A1的IP地址时,会记录在自身的路由表中,记录情况可以如表五所示:
目的IP地址 | 掩码 | 下一跳 |
172.16.10.2 | 32 | 127.0.0.1 |
172.16.10.1 | 32 | 12.1.1.1 |
172.16.10.101 | 32 | 12.1.1.1 |
... | ... | ... |
表五
本步骤中,网关B接收到Host A1的IP地址后,由于该IP地址在自身VLAN102的网段地址范围内,网关B可以模拟Host A1新接入区域B的情形,向自身区域用户发送免费ARP请求报文。
步骤304:Host B1从免费ARP请求报文中获得Host A1的IP地址和网关B的MAC地址。
本实施例中,假设VLAN102中没有与Host A1的IP地址完全相同的用户,则包括Host B1的所有用户都会学习到Host A1的IP地址以及网关B的MAC地址。Host B1获得Host A1的IP地址以及网关B的MAC地址后,会将其记录在自身的ARP表中,Host B1的ARP表可以如表六所示:
IP地址 | MAC地址 |
172.16.10.101 | 00e0-fc20-1020 |
表六
实际应用中,如果VLAN102中有与Host A1的IP地址完全相同的用户,该用户可以将IP地址冲突的信息上报给系统,并向网关B发送返回免费ARP应答报文;网关B可以将返回的免费ARP应答报文进行单播封装后发送给网关A,再由网关A进行解析后发送给Host A1,然后Host A1将IP地址冲突的信息上报给系统。在这种情况下,系统可以在解决IP地址冲突后重新发起访问。
步骤305:网关B通过静态配置ARP表项获得Host B1的IP地址,并将Host B1的IP地址发布给网关A;
本步骤中,由于网关B在自身的ARP表中静态配置了Host B1的ARP表项,所述网关B的ARP表可以如表七所示:
IP地址 | MAC地址 |
172.16.10.102 | 000a-eb10-1020 |
表七
网关B可以从表四中直接获得Host B1的IP地址,生成路由并根据动态路由协议发布出去。此时,网关B的路由表可以如表八所示:
目的IP地址 | 掩码 | 下一跳 |
[0144]
172.16.10.2 | 32 | 127.0.0.1 |
172.16.10.1 | 32 | 12.1.1.1 |
172.16.10.101 | 32 | 12.1.1.1 |
172.16.10.102 | 32 | 172.16.10.102 |
... | ... | ... |
表八
步骤306:网关A接收到Host B1的IP地址后,向自身区域用户发送免费ARP请求报文,所述免费ARP请求报文的源IP地址为Host B1的IP地址,源MAC地址为网关A自身的MAC地址;
与步骤303相似,本步骤中,当网关A接收到Host B1的IP地址时,会记录在自身的路由表中,记录情况可以如表九所示:
目的IP地址 | 掩码 | 下一跳 |
172.16.10.1 | 32 | 127.0.0.1 |
172.16.10.2 | 32 | 11.1.1.2 |
172.16.10.101 | 32 | 172.16.10.101 |
172.16.10.102 | 32 | 11.1.1.2 |
... | ... | ... |
表九
本步骤中,网关A接收到Host B1的IP地址后,由于该IP地址在自身VLAN101的网段地址范围内,网关A可以模拟Host B1新接入区域A的情形,向自身区域用户发送免费ARP请求报文。
步骤307:Host A1从免费ARP请求报文中获得Host B1的IP地址和网关A的MAC地址。
本实施例中,假设VLAN101中没有与Host A1的IP地址完全相同的用户,则包括Host A1的所有用户都会学习到Host B1的IP地址以及网关A的MAC地址。Host A1获得Host B1的IP地址以及网关A的MAC地址,会将其记录在自身的ARP表中,Host A1的ARP表可以如表十所示:
IP地址 | MAC地址 |
172.16.10.102 | 00e0-fc10-1010 |
表十
实际应用中,如果VLAN101中有与Host B1的IP地址完全相同的用户,该用户可以将IP地址冲突的信息上报给系统,并向网关A发送返回免费ARP应答报文;网关A可以将返回的免费ARP应答报文进行单播封装后发送给网关B,再由网关B进行解析后发送给Host B1,然后Host B1以将IP地址冲突的信息上报给系统。在这种情况下,系统可以在解决IP地址冲突后重新发起访问。
执行本步骤之后,Host A1的ARP表中记录有Host B1的IP地址和网关A的MAC地址;网关A的路由表中记录有网关B的IP地址,网关A的ARP表中记录有Host A1的IP地址和MAC地址;网关B的路由表中记录有网关A的IP地址,网关B的ARP表中记录有Host B1的IP地址和MAC地址;Host B1的ARP表中记录有Host A1的IP地址和网关B的MAC地址。这样,Host A1和Host B1就可以进行互访。
Host A1访问Host B1的方法可以为:Host A1将Host B1的IP地址作为目的IP地址携带于IP报文中,并将该IP报文封装为网关A的MAC地址,将其发送出去;当网关A接收到该报文,判断出报文的MAC地址为自身的MAC地址,则按照路由表将报文发送给网关B;网关B接收到报文后,直接根据自身的ARP表,将报文发送给Host B1。如果Host B1要访问Host A1,其方法与此类似,此处不再赘述。
另外,本实施例步骤302~步骤304是网关A发布Host A1的IP地址到Host B1获得Host A1的IP地址的过程,步骤305~步骤307是网关B发布Host B1的IP地址到Host A1获得Host B1的IP地址的过程。但实际应用中,步骤302~步骤304与步骤305~步骤307并没有严格的顺序,也可以先执行步骤305~步骤307,后执行步骤302~步骤304,或者步骤302~步骤304与步骤305~步骤307交叉执行,同样可以实现本发明方案。
实施例二
本实施例组网图仍然如图1所示,区域A和区域B为两个不同区域的私网,区域A包括Host A1~Host An,区域网关为网关A,区域B包括HostB1~Host Bn,区域网关为网关B,公网为MPLS BGP VPN网络,运行MPLSBGP VPN协议。
本实施例中,Host A1为网关A上VLAN101中的用户,Host B1为网关B上VLAN102中的用户。其中,VLAN101的虚接口地址,即IP地址为172.16.10.1/24,MAC地址为00e0-fc10-1010;Host A1的IP地址为172.16.10.101/24,MAC地址为000a-eb10-1010;VLAN102的虚接口地址,即IP地址为172.16.10.2/24,MAC地址为00e0-fc20-1020;Host B1的IP地址为172.16.10.102/24,MAC地址为000a-eb10-1020。另外,本实施例中,VLAN101和VLAN102都属于同一个VPN。
本实施例中,假设Host A1和Host B1要进行互访,Host A1为第一区域用户,网关A为第一区域网关,Host B1为第二区域用户,网关B为第二区域网关。本实施例中,网关A将VLAN101设置为代理对象,其网络地址为32位掩码的主机路由地址,即172.16.10.1/32;网关B将VLAN102设置为代理对象,其网络地址为32位掩码的主机路由地址,即172.16.10.2/32。
另外,由于本实施例是针对第二类方案的实施例,Host A1需要事先发起ARP请求过程,所以,在实际应用中,Host A1和Host B1既可以通过免费ARP请求报文获得对方的IP地址和自身区域网关的MAC地址,也可以通过ARP请求过程中的报文来获得对方的IP地址和自身区域网关的MAC地址;网关A和网关B可以通过静态配置ARP表项而获得自身区域用户的IP地址,也可以通过动态学习生成ARP表项而获得自身区域中用户的IP地址。
图4是本实施例的流程图。如图4所示,本实施例可以包括以下步骤:
步骤401:网关A和网关B分别设置对方代理对象的网络地址为自身邻居网络地址,并将自身代理对象的网络地址发布给对方。
本步骤与步骤301相似,其区别在于,由于本实施例中网络采用VPN技术,网关A和网关B可以直接将对方的环回口(LOOP)设置为下一跳。假设网关A的环回口为1.1.1.1,网关B的环回口为2.2.2.2,则网关A中的路由表可以如表十一所示:
目的IP地址 | 掩码 | 下一跳 |
172.16.10.1 | 32 | 127.0.0.1 |
172.16.10.2 | 32 | 2.2.2.2 |
... | ... | ... |
表十一
而网关B中的路由表可以如表十二所示:
目的IP地址 | 掩码 | 下一跳 |
172.16.10.2 | 32 | 127.0.0.1 |
172.16.10.1 | 32 | 1.1.1.1 |
... | ... | ... |
表十二
另外,如果网关A和网关B已经互为邻居,并记录有对方的32位掩码主机路由地址,则可以省略本步骤。
步骤402:Host A1向网关A发送针对Host B1的ARP请求报文,网关A根据ARP请求报文学习并生成Host A1的ARP表项;
本步骤中,网关A可以通过动态学习生成ARP表项,从而获得Host A1的IP地址,生成的ARP表项与实施例一中静态配置的表三相同,此处不再赘述。
步骤403:网关A将Host A1的IP地址发布给网关B;
本步骤中,网关A可以从通过动态学习生成的ARP表项中获得Host A1的IP地址,生成路由并根据动态路由协议发布出去。此时,网关A的路由表与实施例一中的表四相同,此处不再赘述。
步骤404:网关A将接收到的针对Host B1的ARP请求报文封装为单播报文,并发送给网关B;
步骤405:网关B接收到Host A1的IP地址后向自身区域用户发送免费ARP请求报文,所述ARP请求报文的源IP地址为Host A1的IP地址,源MAC地址为网关B自身的MAC地址;
本步骤与实施例一的步骤303相似,网关B路由表记录情况也与实施例一中的表五相同,此处不再赘述。
步骤406:网关B解析接收到的单播报文,获得针对Host B1的ARP请求报文,将所述ARP请求报文的源MAC地址修改为自身的MAC地址后发送给Host B1。
本步骤Host B1接收到的ARP请求报文的源IP地址为Host A1的IP地址,而源MAC地址为网关B的MAC地址。
步骤407:Host B1从ARP请求报文中获得Host A1的IP地址和网关B的MAC地址。
需要注意的是,本步骤与实施例一的步骤304不同,Host B1从ARP请求报文中获得Host A1的IP地址和网关B的MAC地址,而不是从步骤405中的免费ARP请求报文获得Host A1的IP地址和网关B的MAC地址。也就是说,网关B既向Host B1发送免费ARP请求报文,又向Host B1发送从单播报文中解析出来的ARP请求报文,但本实施例中,从单播报文中解析出来的ARP请求报文比免费ARP请求报文先到达Host B1,Host B1直接从ARP请求报文获得Host A1的IP地址和网关B的MAC地址。当然,免费ARP请求报文之后也会到达Host B1,但由于已经获得IP地址和网关B的MAC地址,将不再重复学习。
Host B1获得Host A1的IP地址以及网关B的MAC地址后,会将其记录在自身的ARP表中,Host B1的ARP表与实施例一中的表六相同,此处不再赘述。
步骤408:Host B1向网关B返回ARP应答报文;
本步骤中,所述ARP应答报文的目的IP地址为Host A1的IP地址,目的MAC地址为网关B的MAC地址,源IP地址为Host B1的IP地址,源MAC地址为Host B1的MAC地址。
步骤409:网关B接收返回的ARP应答报文,学习并生成Host B1的ARP表项,所述ARP表项包括Host B1的IP地址和MAC地址,然后将HostB1的IP地址发布给网关A;
本步骤与实施例一中步骤305相似,其区别仅在于,本步骤是通过动态学习生成的ARP表项,至于网关B的ARP表项与表七相同,网关B的路由表则与表八相同,此处不再赘述。
步骤410:网关B将接收到的ARP应答报文封装为单播报文发送给网关A;
步骤411:网关A接收到Host B1的IP地址后,向自身区域用户发送免费ARP请求报文,所述免费ARP请求报文的源IP地址为Host B1的IP地址,源MAC地址为网关A自身的MAC地址;
本步骤与实施例一中的步骤306相同,网关A的路由表与表九相同,此处不再赘述。
步骤412:Host A1从免费ARP请求报文中获得Host B1的IP地址和网关A的MAC地址;
本步骤与实施例一中的307相同,Host A1的ARP表与表十相同,此处不再赘述。
步骤413:网关A将接收到的单播报文解析出来,获得的ARP应答报文,并将ARP应答报文中源MAC地址修改为自身的MAC地址,再发送给Host A1。
步骤414:Host A1和Host B1利用对方区域用户的IP地址和自身区域网关MAC地址进行互访。
本步骤中,由于Host A1的ARP表中记录有Host B1的IP地址和网关A的MAC地址;网关A的路由表中记录有网关B的IP地址,网关A的ARP表中记录有Host A1的IP地址和MAC地址;网关B的路由表中记录有网关A的IP地址,网关B的ARP表中记录有Host B1的IP地址和MAC地址;Host B1的ARP表中记录有Host A1的IP地址和网关B的MAC地址。这样,Host A1和Host B1就可以进行互访,其互访的方法与实施例一相同,此处不再赘述。
本实施例中,在第二区域侧,网关B发送的ARP请求报文先到达HostB1,免费ARP请求报文后到达Host B1,所以,Host B1是从ARP请求报文中学习到Host A1的IP地址和网关B的MAC地址;而在第一区域侧,网关A发送的免费ARP请求报文先到达Host A1,ARP应答报文后到达Host A1,Host A1是从免费ARP请求报文中学习到Host B1的IP地址和网关A的MAC地址。
但在实际应用中,网关A和网关B发布路由以及转发报文没有严格的顺序,Host A1和Host B1接收报文也没有严格的顺序。所以,步骤403~步骤413可以不按照本实施例中的顺序执行,只要符合ARP请求过程的顺序,以及网关接收到对方发布的路由会向自身区域用户发送免费ARP请求报文的顺序即可。也就是说,ARP请求过程中的步骤可以与网关发布路由以及发送免费ARP请求报文的步骤交叉执行,具体的执行顺序与实际情况相关,此处不再一一列举。
本发明实施例一和实施例二中,还可以为网关A和网关B中的ARP表项设置老化时间,当到达所述老化时间时,网关A和网关B还可以将ARP表项删除,并将对应的32位掩码的主机路由从路由表中删除。此后,如果Host A1和Host B1进行互访,需要按照本发明方案重新在网关A和网关B中生成ARP表项以及路由表。
本发明实施例一和实施例二都是基于VLAN实现的,实际应用中,也可以基于设备全局、VPN、端口或端口集合,即将设备全局、VPN等设置为代理对象,其方法与基于VLAN的方法类似,此处不再赘述。
本发明实施例一和实施例二中的网关可以为骨干网边缘路由器(PE,Provider Edge Router),也可以为用户网边缘路由器(CE,Custom EdgeRouter)。如果互访双方的网关都是PE,则组网与图1相同;如果互访双方的网关为CE,则该CE在与对方网关交互时,还需要通过PE。
下面以第一区域网关为PE,第二区域网关为CE为例对组网结构进行说明。如图5所示,该组网结构图与图1相似,实现互访的区别仅仅在于,网关A与网关B在进行交互时,还需要通过网关C。比如:在网关A发布HostA1的IP地址时,由网关C接收并记录在自身路由表,再将Host A1的IP地址路由给网关B;反之,在网关B发布Host B1的IP地址时,由网关C接收并记录在自身路由表,再将Host B1的IP地址路由给网关A。这样,网关A、网关C和网关B明确彼此路由信息后,将接收到的报文按照路由表中的路由信息直接进行三层转发即可。
本发明实施例二中是将ARP请求报文和ARP应答报文进行单播封装后发送给对方的,所述单播封装为三层的单播封装。实际应用中,也可以为三层以上的单播封装,比如:建立TCP连接,并采用TCP封装的方式将报文发送给对方,这里所述的TCP封装就是一种三层以上的单播封装方式。另外,实际应用中,也可以采用其它的非单播封装的方式,只要可以将ARP请求报文和ARP应答报文发送给对方即可。
另外,本发明实施例一和实施例二是以两个区域为例进行说明的,但实际应用中,如果有三个或三个以上区域,其网段地址重叠的用户也可以实现互访,互访的方法与本发明方案相同,此处不再赘述。
应用本发明方案,第一区域网关和第二区域网关可以获得对方区域用户的IP地址,第一区域用户和第二区域用户可以获得对方区域用户的IP地址和自身区域网关的MAC地址。在区域用户互访时,各区域用户可以利用对方区域用户的IP地址和自身区域网关的MAC地址,将发送给对方的IP报文通过自身区域网关和对方区域网关进行转发,从而在无需对现有网络进行较大改动,无需复杂的配置以及要求设备具备NAT功能的情况下,实现在不同区域中网段地址重叠的用户互访。
针对上述在不同区域中网段地址重叠的用户实现互访的方法,本发明还提出一种路由转发设备,所述的路由转发设备可以作为上述方法中所述的区域网关。
图6是本发明路由转发设备的基本结构示意图。如图6所示,该路由转发包括:私网侧收发单元601、公网侧收发单元602、路由处理单元603、地址解析协议ARP处理单元604、IP报文处理单元605。其中,
路由处理单元603,用于将从地址解析协议ARP处理单元604获得的自身区域用户的IP地址发布给进行互访的对方区域网关,并接收发布给自身的对方区域用户的IP地址;
地址解析协议ARP处理单元604,用于向自身区域用户发送用于学习的ARP报文,所述用于学习的ARP报文的源IP地址为进行互访的对方区域用户的IP地址,源MAC地址为区域网关自身的MAC地址;
IP报文处理单元605,用于接收自身区域用户发送的IP报文,并根据路由处理单元603中记录的对方区域用户的IP地址转发出去。
图7是应用本发明方案的路由转发设备的一个实施例。如图7所示,本实施例的路由转发设备包括如6所示的私网侧收发单元601、公网侧收发单元602、路由处理单元603、地址解析协议ARP处理单元604’、IP报文处理单元605。其中,所述私网侧收发单元601、公网侧收发单元602、路由处理单元603、IP报文处理单元605的功能和连接关系与图6中相同,此处不再赘述。与图6不同的是,本实施例所述地址解析协议ARP处理单元604’包括:
ARP报文处理单元6041,用于向自身区域用户发送免费ARP请求报文,所述免费ARP请求报文的源IP地址为进行互访的对方区域用户的IP地址,源MAC地址为区域网关自身的MAC地址;
报文封装解析单元6042,用于将自身区域用户发送的ARP请求报文或ARP应答报文进行单播封装,再发送给进行互访的对方区域网关;解析从对方区域网关接收到的单播报文,并将解析后获得的ARP请求报文或ARP应答报文发送给自身区域用户。
当需要实现互访时,路由处理单元603可以将从地址解析协议ARP处理单元604’获得的自身区域用户的IP地址发布给进行互访的对方区域网关,并接收发布给自身的对方区域用户的IP地址。如果接收到发布给自身的对方区域用户的IP地址,ARP报文处理单元6041可以向自身区域用户发送免费ARP请求报文,所述免费ARP请求报文的源IP地址为进行互访的对方区域用户的IP地址,源MAC地址为区域网关自身的MAC地址;如果接收到自身区域用户发送的ARP请求报文或ARP应答报文,可以由报文封装解析单元6042进行单播封装,再发送给进行互访的对方区域网关;如果接收到从对方区域网关发送的单播报文,报文封装解析单元6042可以解析所述单播报文,并将解析后获得的ARP请求报文或ARP应答报文发送给自身区域用户。
当然,如果要实现交互,网关之间需要互为邻居,路由处理单元603中不但需要记录对方区域用户的IP地址,还需要记录对方区域网关的IP地址。另外,为了能够与自身区域用户之间进行交互,地址解析协议ARP处理单元还需要记录自身区域用户的ARP表项,而不管该ARP表项是通过静态配置的还是动态学习到的。至于如何获得ARP表项、如何指定邻居等可以参见本发明方法实施例,此处不再赘述。
这样,当网关接收到自身区域用户的IP报文时,就可以根据路由处理单元603记录的对方区域用户的IP地址转发出去;同样,当接收到对方区域网关转发的IP报文,就可以根据地址解析协议ARP处理单元604’记录的自身区域用户的ARP表项,将接收到的IP报文发送给自身区域用户。
应用本发明方案,各区域用户可以利用对方区域用户的IP地址和自身区域网关的MAC地址,将发送给对方的IP报文通过自身区域网关和对方区域网关进行转发,从而在无需对现有网络进行较大改动,无需复杂的配置以及要求设备具备NAT功能的情况下,实现在不同区域中网段地址重叠的用户互访。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (18)
1.一种网段地址重叠的用户互访方法,其特征在于,如果第一区域用户的网段地址和第二区域用户的网段地址重叠,所述第一区域用户的网关为第一区域网关,所述第二区域用户的网关为第二区域网关,该方法为:
A、第一区域网关和第二区域网关将已获得的自身区域用户的因特网协议IP地址发布给对方,并向自身区域用户发送用于学习的地址解析协议ARP报文,所述用于学习的ARP报文的源IP地址为对方区域用户的IP地址,源媒体接入控制MAC地址为区域网关自身的MAC地址;
B、第一区域用户和第二区域用户利用获得的对方区域用户的IP地址和自身区域网关的MAC地址进行互访。
2.根据权利要求1所述的方法,其特征在于,步骤A所述用于学习的ARP报文为免费ARP请求报文。
3.根据权利要求2所述的方法,其特征在于,步骤A所述第一区域网关和第二区域网关获得自身区域用户的IP地址的方法为:通过静态配置ARP表项而获得自身区域中用户的IP地址。
4.根据权利要求3所述的方法,其特征在于,
在第一区域网关/第二区域网关向自身区域用户发送免费ARP请求报文之后,该方法进一步包括:如果第一区域网关/第二区域网关接收到自身区域用户返回的免费ARP应答报文,则将返回的免费ARP应答报文进行单播封装后发送给第二区域网关/第一区域网关,由第二区域网关/第一区域网关解析后发送给第二区域用户/第一区域用户,第二区域用户/第一区域用户将IP地址冲突的信息上报给系统,并退出本流程。
5.根据权利要求1所述的方法,其特征在于,所述步骤A之前进一步包括:第一区域用户发起针对第二区域用户的ARP请求过程;
步骤A所述用于学习的ARP报文为免费ARP请求报文或ARP请求过程中的报文。
6.根据权利要求5所述的方法,所述ARP请求过程具体为:
第一区域用户向第一区域网关发送针对第二区域用户的ARP请求报文,第一区域网关将所述ARP请求报文封装为单播报文发送给第二区域网关;第二区域网关解析所述单播报文,将获得的ARP请求报文中源MAC地址修改为自身的MAC地址后发送给第二区域用户;
第二区域用户向第二区域网关返回针对第一区域用户的ARP应答报文,第二区域网关将所述ARP应答报文封装为单播报文发送给第一区域网关;第一区域网关解析所述单播报文,将获得的ARP应答报文中源MAC地址修改为自身的MAC地址,再发送给第一区域用户。
7.根据权利要求6所述的方法,其特征在于,步骤A所述第一区域网关获得自身区域中用户IP地址的方法为:
通过静态配置ARP表项而获得自身区域中用户的IP地址,或者通过动态学习生成ARP表项而获得自身区域中用户的IP地址;
所述动态学习生成ARP表项的方法为:当第一区域网关接收到来自第一区域用户发送的ARP请求报文时,学习并生成第一区域用户的ARP表项,所述第一区域用户的ARP表项包括第一区域用户的IP地址和第一区域用户的MAC地址。
8.根据权利要求6所述的方法,其特征在于,步骤A所述第二区域网关获得自身区域中用户IP地址的方法为:
通过静态配置ARP表项而获得自身区域中用户的IP地址,或者通过动态学习生成ARP表项而获得自身区域中用户的IP地址;
所述动态学习生成ARP表项的方法为:当第二区域网关接收到来自第二区域用户发送的ARP应答报文时,学习并生成第二区域用户的ARP表项,所述第二区域用户的ARP表项包括第二区域用户的IP地址和第二区域用户的MAC地址。
9.根据权利要求6所述的方法,其特征在于,所述第一区域网关发送免费ARP请求报文的方法为:
当所述第一区域网关接收到第二区域网关发布的第二区域用户的IP地址时,第一区域网关判断出第二区域用户的IP地址为自身区域用户网段地址范围内的IP地址,向自身区域用户发送免费ARP请求报文,所述免费ARP请求报文的源IP地址为第二区域用户的IP地址,源MAC地址为第一区域网关的MAC地址。
10.根据权利要求9所述的方法,其特征在于,在第一区域网关向自身区域用户发送免费ARP请求报文之后,该方法进一步包括:
如果第一区域网关接收到自身区域用户返回的免费ARP应答报文,则将返回的免费ARP应答报文进行单播封装后发送给第二区域网关,由第二区域网关解析后发送给第二区域用户,第二区域用户将IP地址冲突的信息上报给系统,并退出本流程。
11.根据权利要求6所述的方法,其特征在于,所述第二区域网关发送免费ARP请求报文的方法为:
当所述第二区域网关接收到第一区域网关发布的第一区域用户的IP地址时,第二区域网关判断出第一区域用户的IP地址为自身区域用户网段地址范围内的IP地址,向自身区域用户发送免费ARP请求报文,所述免费ARP请求报文的源IP地址为第一区域用户的IP地址,源MAC地址为第二区域网关的MAC地址。
12.根据权利要求11所述的方法,其特征在于,在第二区域网关向自身区域用户发送免费ARP请求报文之后,该方法进一步包括:
如果第二区域网关接收到自身区域用户返回的免费ARP应答报文,则将返回的免费ARP应答报文进行单播封装后发送给第一区域网关,由第一区域网关解析后发送给第一区域用户,第一区域用户将IP地址冲突的信息上报给系统,并退出本流程。
13.根据权利要求1所述的方法,其特征在于,步骤B所述第一区域用户和第二区域用户互访的方法具体为:
如果第一区域用户/第二区域用户访问第二区域用户/第一区域用户,则第一区域用户/第二区域用户将第二区域用户/第一区域用户的IP地址作为目的IP地址携带于IP报文中,该IP报文其外封装的MAC地址为第一区域网关/第二区域网关的MAC地址,将封装MAC地址后的IP报文发送出去;当第一区域网关/第二区域网关接收到所述IP报文时,判断出IP报文的MAC地址为自身的MAC地址,将接收到的IP报文发送给第二区域网关/第一区域网关;第二区域网关/第一区域网关接收到所述IP报文后,根据IP报文中的目的IP地址将报文发送给第二区域用户/第一区域用户。
14.根据权利要求1所述的方法,其特征在于,步骤A所述第一区域网关和第二区域网关向对方发布的自身区域用户的IP地址为32位掩码主机路由地址。
15.根据权利要求1所述的方法,其特征在于,所述第一区域用户为第一区域网关配置的代理对象中的用户,所述第二区域用户为第二区域网关配置的代理对象中的用户,所述步骤A之前,该方法进一步包括:
第一区域网关和第二区域网关分别设置对方代理对象的网络地址为自身邻居网络地址,并将表示自身代理对象的网络地址发布给对方,所述代理对象的网络地址为32位掩码的主机路由地址。
16.根据权利要求15所述的方法,其特征在于,所述代理对象为设备全局、虚拟专网VPN、虚拟局域网VLAN、端口或端口集合。
17.一种路由转发设备,至少包括私网侧收发单元、公网侧收发单元,其特征在于,该路由转发设备还进一步包括:
路由处理单元,用于将从地址解析协议ARP处理单元获得的自身区域用户的IP地址发布给进行互访的对方区域网关,接收并记录发布给自身的对方区域用户的IP地址;
地址解析协议ARP处理单元,用于向自身区域用户发送用于学习的ARP报文,所述用于学习的ARP报文的源IP地址为进行互访的对方区域用户的IP地址,源MAC地址为区域网关自身的MAC地址;
IP报文处理单元,用于接收自身区域用户的IP报文,并根据路由处理单元中记录的对方区域用户的IP地址转发出去。
18.根据权利要求17所述的路由转发设备,其特征在于,如果所述用于学习的ARP报文为免费ARP请求报文或ARP请求过程中的报文,所述地址解析协议ARP处理单元包括:
ARP报文处理单元,用于向自身区域用户发送免费ARP请求报文,所述免费ARP请求报文的源IP地址为进行互访的对方区域用户的IP地址,源MAC地址为区域网关自身的MAC地址;
报文封装解析单元,用于将自身区域用户发送的ARP请求报文或ARP应答报文进行单播封装,再发送给进行互访的对方区域网关;解析从对方区域网关接收到的单播报文,并将解析后获得的ARP请求报文或ARP应答报文发送给自身区域用户。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007100981214A CN101026591B (zh) | 2007-04-13 | 2007-04-13 | 一种网段地址重叠的用户互访方法及路由转发设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007100981214A CN101026591B (zh) | 2007-04-13 | 2007-04-13 | 一种网段地址重叠的用户互访方法及路由转发设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101026591A CN101026591A (zh) | 2007-08-29 |
CN101026591B true CN101026591B (zh) | 2010-11-03 |
Family
ID=38744495
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007100981214A Expired - Fee Related CN101026591B (zh) | 2007-04-13 | 2007-04-13 | 一种网段地址重叠的用户互访方法及路由转发设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101026591B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102971992B (zh) * | 2010-06-29 | 2016-03-09 | 华为技术有限公司 | 虚拟专用局域网设备、网络组件和数据帧转发方法 |
CN102355417A (zh) * | 2011-10-08 | 2012-02-15 | 杭州华三通信技术有限公司 | 一种数据中心二层互联方法和装置 |
CN102710509B (zh) * | 2012-05-18 | 2015-04-15 | 杭州华三通信技术有限公司 | 一种数据中心自动配置方法及其设备 |
CN103812957B (zh) * | 2012-11-14 | 2018-02-13 | 华为技术有限公司 | 地址解析协议arp记录管理方法和装置 |
CN103023898B (zh) * | 2012-12-03 | 2016-05-11 | 杭州迪普科技有限公司 | 一种访问vpn服务端内网资源的方法及装置 |
CN103873434B (zh) * | 2012-12-10 | 2017-12-12 | 台众计算机股份有限公司 | 用以认定网点的发生事件的方法 |
CN103078964B (zh) * | 2012-12-21 | 2016-05-25 | 浙江宇视科技有限公司 | 一种能使nvc设备与nvt设备建立业务的方法和装置 |
CN105323176A (zh) * | 2014-06-20 | 2016-02-10 | 中兴通讯股份有限公司 | 地址信息的发布方法及装置 |
EP3086617A1 (en) * | 2015-04-23 | 2016-10-26 | Thomson Licensing | Repeating method and corresponding communication network device, system, computer readable program product and computer readable storage medium |
US10021072B2 (en) * | 2015-08-20 | 2018-07-10 | Mitsubishi Hitachi Power Systems, Ltd. | Security system and communication control method |
CN107800625B (zh) * | 2016-08-30 | 2020-07-07 | 新华三技术有限公司 | 一种报文转发方法及装置 |
CN108667946B (zh) * | 2017-03-31 | 2020-11-20 | 贵州白山云科技股份有限公司 | 一种多域名互备解析管理方法、装置及系统 |
CN108965092B (zh) * | 2018-07-24 | 2020-11-06 | 新华三技术有限公司 | 一种数据报文传输方法和装置 |
CN109617922B (zh) * | 2019-01-24 | 2021-04-27 | 杭州迪普科技股份有限公司 | Vpn保护网段冲突的处理方法、装置、电子设备 |
CN110062064B (zh) * | 2019-05-30 | 2022-06-21 | 新华三信息安全技术有限公司 | 一种地址解析协议arp请求报文响应方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1848808A (zh) * | 2006-01-11 | 2006-10-18 | 郑凯 | 一种基于虚拟网关技术对局域网主机公网报文进行控制的方法 |
CN1905488A (zh) * | 2006-08-15 | 2007-01-31 | 华为技术有限公司 | 采用虚拟路由器冗余协议接入用户的方法和系统 |
CN1925493A (zh) * | 2006-09-15 | 2007-03-07 | 杭州华为三康技术有限公司 | 一种arp报文处理方法及装置 |
-
2007
- 2007-04-13 CN CN2007100981214A patent/CN101026591B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1848808A (zh) * | 2006-01-11 | 2006-10-18 | 郑凯 | 一种基于虚拟网关技术对局域网主机公网报文进行控制的方法 |
CN1905488A (zh) * | 2006-08-15 | 2007-01-31 | 华为技术有限公司 | 采用虚拟路由器冗余协议接入用户的方法和系统 |
CN1925493A (zh) * | 2006-09-15 | 2007-03-07 | 杭州华为三康技术有限公司 | 一种arp报文处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN101026591A (zh) | 2007-08-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101026591B (zh) | 一种网段地址重叠的用户互访方法及路由转发设备 | |
JP5776337B2 (ja) | パケット変換プログラム、パケット変換装置、及びパケット変換方法 | |
US9237098B2 (en) | Media access control (MAC) address summation in Datacenter Ethernet networking | |
CN104396192B (zh) | 不对称网络地址封装 | |
CN103179228B (zh) | 因特网协议地址解析方法及边缘节点 | |
CN103685006A (zh) | 一种在边缘设备上的报文转发方法和边缘设备 | |
CN100596358C (zh) | 区域网络的链路层通信方法及其应用的网络设备 | |
CN106209643B (zh) | 报文转发方法及装置 | |
CN104579954B (zh) | 报文跨域转发方法、装置及通信设备 | |
CN103841037B (zh) | 组播报文转发的方法及设备 | |
CN105262667A (zh) | Overlay网络中控制组播传输的方法、装置 | |
CN104168184A (zh) | 报文转发方法及设备 | |
CN103227757A (zh) | 一种报文转发方法及设备 | |
CN103248720A (zh) | 一种查询物理地址的方法及装置 | |
CN106612224A (zh) | 应用于vxlan的报文转发方法和装置 | |
CN101043430B (zh) | 一种设备之间网络地址转换的方法 | |
CN100407704C (zh) | 媒体接入控制层地址的动态学习方法 | |
JP2019521619A (ja) | パケット転送 | |
CN107547349A (zh) | 一种虚拟机迁移的方法及装置 | |
CN103763407A (zh) | 二层虚拟局域网实现地址解析协议代理方法及局域网系统 | |
WO2013049989A1 (en) | Layer two interconnection between data centers | |
CN102932499A (zh) | Vpls网络中的mac地址学习方法及设备 | |
CN103795631A (zh) | 部署了以太网虚拟连接的网络中的流量转发方法及设备 | |
WO2013029440A1 (en) | Method and apparatus for implementing layer-2 interconnection of data centers | |
CN110034993A (zh) | 传输数据的方法、设备和网络系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No. Patentee after: Xinhua three Technology Co., Ltd. Address before: 310053 Hangzhou hi tech Industrial Development Zone, Zhejiang province science and Technology Industrial Park, No. 310 and No. six road, HUAWEI, Hangzhou production base Patentee before: Huasan Communication Technology Co., Ltd. |
|
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20101103 Termination date: 20200413 |