一种基于DVPN的路由生成方法和设备
技术领域
本发明涉及通信技术领域,尤其是涉及一种基于DVPN(DynamicVirtualPrivateNetwork,动态虚拟专用网)的路由生成方法和设备。
背景技术
越来越多的企业希望利用公共网络组建VPN(VirtualPrivateNetwork,虚拟专用网络),以连接地理位置不同的多个分支机构;然而,企业分支机构通常采用动态地址接入公共网络,通信一方无法事先知道对端公网地址。为此,DVPN通过VAM(VPNAddressManagement,VPN地址管理)协议收集、维护和分发动态变化的公网地址信息,解决了无法事先获得对端公网地址的问题。
如图1所示,为DVPN的组网示意图,包括:VAMServer(服务器)、Hub(中心点,在DVPN中可以作为路由信息交换中心)和Spoke(分支点,在DVPN中通常作为企业分支机构的网关设备);其中,Hub和Spoke是一种VAMClient(客户端),VAMClient向VAMServer注册自身的私网地址和公网地址等信息,并向VAMServer查询其它VAMClient的信息。
DVPN具有Full-Mesh(全互联)网络和Hub-Spoke网络等两种结构:如图2所示,在Full-Mesh网络中,Spoke之间可以建立隧道直接通信,Hub作为路由信息交换的中心,Spoke向VAMServer注册后获得Hub的信息,并与Hub建立永久的隧道连接,且任意两个Spoke之间也可以直接建立隧道。如图3所示,在Hub-Spoke网络中,Spoke之间不能建立隧道直接通信,只能通过Hub转发数据,Hub即作为路由信息交换的中心,又作为数据转发的中心;Spoke与Hub之间建立永久的隧道连接,Spoke之间的数据需要通过Hub转发。
其中,两个节点(Spoke与Hub,或Spoke与Spoke)之间建立隧道的过程,实际上是指二者建立DVPNSession(会话)的过程;如果两个节点已经建立DVPNSession,则说明两个节点之间可以相互通信;如果两个节点没有建立DVPNSession,则说明两个节点之间还不能相互通信。基于此,由于Spoke和Hub之间的隧道是永久隧道,因此DVPNSession一直存在,需要通过Keepalive(保活)报文进行维护;Spoke与Spoke之间的隧道是临时隧道,当Spoke之间有数据报文需要转发时,建立DVPNSession;当Spoke之间没有数据报文需要转发时,则DVPNSession将在空闲一段时间后,被自动删除。
现有技术中,需要在所有Spoke和Hub上配置协议OSPF(OpenShortestPathFirst,开放式最短路径优先)或BGP(BorderGatewayProtocol,边界网关协议);基于OSPF或BGP可以动态学习到网络中的路由信息,继而指导数据报文的转发。但是,当一个网络存在大量分支时,OSPF或BGP的运行和状态维护等,会消耗Hub和Spoke大量的系统资源。例如,当某Spoke与Hub之间的链路出现故障时,OSPF或BGP会触发网络中所有Spoke和Hub重新进行路由计算,从而会消耗Hub和Spoke大量的系统资源(该系统资源用于路由计算)。
发明内容
本发明实施例提供一种基于DVPN的路由生成方法和设备,以减少Hub和Spoke上用于路由计算的系统资源消耗。
为了达到上述目的,本发明实施例提供一种基于动态虚拟专用网DVPN的路由生成方法,应用于包括VPN地址管理VAM服务器、Hub和多个Spoke的网络中,所述网络对应的整网网段被划分为多个子网网段,每个Spoke对应一个或多个子网网段,且所述Hub对应一个或多个子网网段,该方法包括以下步骤:
网络中的Spoke向所述VAM服务器发送注册请求报文,所述注册请求报文中携带所述Spoke对应的公网地址、私网地址和子网网段;由所述VAM服务器记录所述Spoke对应的公网地址、私网地址和子网网段之间的对应关系;
所述Spoke接收来自所述VAM服务器的注册成功响应报文,所述注册成功响应报文中携带所述Hub对应的公网地址,私网地址,以及所述网络对应的整网网段;
所述Spoke利用所述网络对应的整网网段生成目的地址为所述网络对应的整网网段,下一跳为所述Hub对应的私网地址的路由;以及,利用所述Hub对应的公网地址和私网地址向所述Hub发送隧道建立请求报文,所述隧道建立请求报文中携带所述Spoke对应的子网网段;由所述Hub利用所述Spoke对应的子网网段生成目的地址为所述Spoke对应的子网网段,下一跳为所述Spoke对应的私网地址的路由;
所述Spoke接收来自所述Hub的隧道建立成功响应报文,所述隧道建立成功响应报文中携带所述Hub对应的子网网段;
所述Spoke利用所述Hub对应的子网网段生成目的地址为所述Hub对应的子网网段,下一跳为所述Hub对应的私网地址的路由。
所述方法还包括:
所述Hub向所述VAM服务器发送注册请求报文,所述注册请求报文中携带所述Hub对应的公网地址、私网地址和子网网段;由所述VAM服务器记录所述Hub对应的公网地址、私网地址和子网网段之间的对应关系。
在所述网络为Full-Mesh网络时,如果所述Spoke需要向其它Spoke发送数据报文,则所述方法还包括:
所述Spoke在利用所述数据报文的目的地址匹配到目的地址为所述网络对应的整网网段,下一跳为所述Hub对应的私网地址的路由时,所述Spoke将所述数据报文发送给所述Hub;以及,向所述VAM服务器发送查询请求报文,所述查询请求报文中携带所述数据报文的目的地址;由所述VAM服务器利用所述目的地址查询其它Spoke对应的子网网段,以得到所述其它Spoke对应的公网地址和私网地址;
所述Spoke接收来自所述VAM服务器的查询成功响应报文,所述查询成功响应报文中携带所述其它Spoke对应的公网地址和私网地址;
所述Spoke利用所述其它Spoke对应的公网地址和私网地址向其它Spoke发送隧道建立请求报文,该隧道建立请求报文中携带所述Spoke对应的子网网段;由所述其它Spoke利用所述Spoke对应的子网网段生成目的地址为所述Spoke对应的子网网段,下一跳为所述Spoke对应的私网地址的路由;
所述Spoke接收来自所述其它Spoke的隧道建立成功响应报文,该隧道建立成功响应报文中携带所述其它Spoke对应的子网网段;
所述Spoke利用所述其它Spoke对应的子网网段生成目的地址为所述其它Spoke对应的子网网段,下一跳为所述其它Spoke对应的私网地址的路由。
所述Spoke利用所述其它Spoke对应的子网网段生成目的地址为所述其它Spoke对应的子网网段,下一跳为所述其它Spoke对应的私网地址的路由,之后还包括:当所述Spoke与所述其它Spoke之间的DVPN会话Session被删除时,所述Spoke删除目的地址为所述其它Spoke对应的子网网段,下一跳为所述其它Spoke对应的私网地址的路由。
所述方法还包括:
当所述Spoke对应的子网网段发生变化时,所述Spoke将变化后的子网网段发送给所述VAM服务器,由所述VAM服务器更新所述Spoke对应的公网地址、私网地址和子网网段之间的对应关系;以及,
所述Spoke通过维护DVPNSession状态的Keepalive报文将变化后的子网网段发送给所述Hub,由所述Hub更新目的地址为所述Spoke对应的子网网段,下一跳为所述Spoke对应的私网地址的路由;以及,
当本Spoke和其它Spoke存在状态为success的DVPNSession时,所述Spoke通过维护DVPNSession状态的Keepalive报文将变化后的子网网段发送给所述其它Spoke,由所述其它Spoke更新目的地址为所述Spoke对应的子网网段,下一跳为所述Spoke对应的私网地址的路由;
当所述Hub对应的子网网段发生变化时,所述Hub将变化后的子网网段发送给所述VAM服务器,由所述VAM服务器更新所述Hub对应的公网地址、私网地址和子网网段之间的对应关系;以及,
所述Hub通过维护DVPNSession状态的Keepalive报文将变化后的子网网段分别发送给各Spoke,由所述各Spoke更新目的地址为所述Hub对应的子网网段,下一跳为所述Hub对应的私网地址的路由。
本发明实施例提供一种网络设备,作为Spoke应用于包括VPN地址管理VAM服务器、Hub和多个Spoke的动态虚拟专用网DVPN网络中,所述网络对应的整网网段被划分为多个子网网段,每个Spoke对应一个或多个子网网段,且所述Hub对应一个或多个子网网段,所述网络设备具体包括:
第一发送模块,用于向所述VAM服务器发送注册请求报文,所述注册请求报文中携带本Spoke对应的公网地址、私网地址和子网网段;由所述VAM服务器记录所述本Spoke对应的公网地址、私网地址和子网网段之间的对应关系;
第一接收模块,用于接收来自所述VAM服务器的注册成功响应报文,所述注册成功响应报文中携带所述Hub对应的公网地址,私网地址,以及所述网络对应的整网网段;
第二发送模块,用于利用所述Hub对应的公网地址和私网地址向所述Hub发送隧道建立请求报文,所述隧道建立请求报文中携带所述本Spoke对应的子网网段;由所述Hub利用所述本Spoke对应的子网网段生成目的地址为所述本Spoke对应的子网网段,下一跳为所本述Spoke对应的私网地址的路由;
第二接收模块,用于接收来自所述Hub的隧道建立成功响应报文,所述隧道建立成功响应报文中携带所述Hub对应的子网网段;
生成模块,用于利用所述网络对应的整网网段生成目的地址为所述网络对应的整网网段,下一跳为所述Hub对应的私网地址的路由;以及,利用所述Hub对应的子网网段生成目的地址为所述Hub对应的子网网段,下一跳为所述Hub对应的私网地址的路由。
在所述网络为Full-Mesh网络,且所述本Spoke需要向其它Spoke发送数据报文时;
所述第一发送模块,还用于在利用所述数据报文的目的地址匹配到目的地址为所述网络对应的整网网段,下一跳为所述Hub对应的私网地址的路由时,将所述数据报文发送给所述Hub;以及,向所述VAM服务器发送查询请求报文,所述查询请求报文中携带所述数据报文的目的地址;由所述VAM服务器利用所述目的地址查询其它Spoke对应的子网网段,以得到所述其它Spoke对应的公网地址和私网地址;
所述第一接收模块,还用于接收来自所述VAM服务器的查询成功响应报文,该查询成功响应报文中携带所述其它Spoke对应的公网地址和私网地址;
所述第二发送模块,还用于利用其它Spoke对应的公网地址和私网地址向其它Spoke发送隧道建立请求报文,该隧道建立请求报文中携带所述本Spoke对应的子网网段;由其它Spoke利用所述本Spoke对应的子网网段生成目的地址为所述本Spoke对应的子网网段,下一跳为所述本Spoke对应的私网地址的路由;
所述第二接收模块,还用于接收来自所述其它Spoke的隧道建立成功响应报文,该隧道建立成功响应报文中携带其它Spoke对应的子网网段;
所述生成模块,还用于利用其它Spoke对应的子网网段生成目的地址为其它Spoke对应的子网网段,下一跳为其它Spoke对应的私网地址的路由。
还包括:删除模块,用于当所述本Spoke与所述其它Spoke之间的DVPN会话Session被删除时,删除目的地址为所述其它Spoke对应的子网网段,下一跳为所述其它Spoke对应的私网地址的路由。
还包括:第三发送模块,用于当所述本Spoke对应的子网网段发生变化时,将变化后的子网网段发送给所述VAM服务器,由所述VAM服务器更新所述本Spoke对应的公网地址、私网地址和子网网段之间的对应关系;以及,
通过维护DVPNSession状态的Keepalive报文将变化后的子网网段发送给所述Hub,由所述Hub更新目的地址为所述本Spoke对应的子网网段,下一跳为所述本Spoke对应的私网地址的路由;以及,
当所述本Spoke上和其它Spoke存在状态为success的DVPNSession时,通过维护DVPNSession状态的Keepalive报文将变化后的子网网段发送给所述其它Spoke,由所述其它Spoke更新目的地址为所述本Spoke对应的子网网段,下一跳为所述本Spoke对应的私网地址的路由。
本发明实施例提供一种网络设备,作为Hub应用于包括VPN地址管理VAM服务器、Hub和多个Spoke的动态虚拟专用网DVPN网络中,所述网络对应的整网网段被划分为多个子网网段,每个Spoke对应一个或多个子网网段,且所述Hub对应一个或多个子网网段,所述Hub具体包括:
注册模块,用于向所述VAM服务器发送注册请求报文,所述注册请求报文中携带Hub对应的公网地址、私网地址和子网网段;由所述VAM服务器记录所述Hub对应的公网地址、私网地址和子网网段之间的对应关系;以及,接收来自所述VAM服务器的注册成功响应报文;
接收模块,用于接收来自本网络中Spoke的隧道建立请求报文,所述隧道建立请求报文中携带所述Spoke对应的子网网段;
生成模块,用于利用所述Spoke对应的子网网段生成目的地址为所述Spoke对应的子网网段,下一跳为所述Spoke对应的私网地址的路由;
发送模块,用于向所述Spoke发送隧道建立成功响应报文,所述隧道建立成功响应报文中携带本Hub对应的子网网段;由所述Spoke利用所述Hub对应的子网网段生成目的地址为所述Hub对应的子网网段,下一跳为所述Hub对应的私网地址的路由。
所述发送模块,还用于当本Hub对应的子网网段发生变化时,将变化后的子网网段发送给所述VAM服务器,由所述VAM服务器更新所述Hub对应的公网地址、私网地址和子网网段之间的对应关系;以及,
通过维护DVPNSession状态的Keepalive报文将变化后的子网网段分别发送给网络中各Spoke,由所述各Spoke更新目的地址为所述Hub对应的子网网段,下一跳为所述Hub对应的私网地址的路由。
本发明实施例提供一种VPN地址管理VAM服务器,应用于包括所述VAM服务器、Hub和多个Spoke的动态虚拟专用网DVPN网络中,所述网络对应的整网网段被划分为多个子网网段,每个Spoke对应一个或多个子网网段,且所述Hub对应一个或多个子网网段,所述VAM服务器具体包括:
接收模块,用于接收来自本网络中Spoke的第一注册请求报文,所述第一注册请求报文中携带所述Spoke对应的公网地址、私网地址和子网网段;以及,接收来自所述Hub的第二注册请求报文,所述第二注册请求报文中携带所述Hub对应的公网地址、私网地址和子网网段;
记录模块,用于记录所述Spoke对应的公网地址、私网地址和子网网段之间的对应关系;以及,记录所述Hub对应的公网地址、私网地址和子网网段之间的对应关系;
发送模块,用于向所述Spoke发送注册成功响应报文,所述注册成功响应报文中携带所述Hub对应的公网地址和私网地址,以及所述网络对应的整网网段;由所述Spoke利用所述网络对应的整网网段生成目的地址为所述网络对应的整网网段,下一跳为所述Hub对应的私网地址的路由。
在所述网络为Full-Mesh网络,且所述Spoke需要向其它Spoke发送数据报文时;
所述接收模块,还用于接收来自所述Spoke的查询请求报文,所述查询请求报文中携带所述数据报文的目的地址;
所述发送模块,还用于利用所述目的地址查询其它Spoke对应的子网网段,以得到所述其它Spoke对应的公网地址和私网地址,并向所述Spoke发送查询成功响应报文,所述查询成功响应报文中携带所述其它Spoke对应的公网地址和私网地址。
所述接收模块,还用于当所述Spoke对应的子网网段发生变化时,接收来自所述Spoke的变化后的子网网段,并更新所述Spoke对应的公网地址、私网地址和子网网段之间的对应关系;当所述Hub对应的子网网段发生变化时,接收来自所述Hub的变化后的子网网段,并更新所述Hub对应的公网地址、私网地址和子网网段之间的对应关系。
与现有技术相比,本发明实施例至少具有以下优点:本发明实施例中,Spoke和Hub能够在隧道建立过程中得到对端设备的子网网段,继而自动生成该子网网段所对应的路由,从而简化了Hub和Spoke上路由的配置过程,并可以减少Hub和Spoke上用于路由计算的系统资源消耗。
附图说明
图1是现有技术中DVPN的组网示意图;
图2是现有技术中基于Full-Mesh的DVPN的组网示意图;
图3是现有技术中基于Hub-Spoke的DVPN的组网示意图;
图4是本发明实施例提供的一种基于DVPN的路由生成方法流程示意图;
图5是本发明实施例提供的一种网络设备的结构示意图;
图6是本发明实施例提供的另一种网络设备的结构示意图;
图7是本发明实施例提供的一种VAM服务器的结构示意图。
具体实施方式
针对现有技术中存在的问题,本发明实施例提供一种基于DVPN的路由生成方法,该方法应用于包括VAM服务器、Hub和多个Spoke的DVPN网络中;该VAM服务器的公网地址为静态地址,各Spoke和Hub的公网地址为静态配置或者动态获取,各Spoke和Hub的私网地址需要按照规划静态分配。
本发明实施例中,该DVPN网络对应的整网网段被划分为多个子网网段,各Spoke对应一个或多个子网网段(即Spoke相连的branch(分支)网络使用该一个或多个子网网段),该Hub对应一个或多个子网网段(即Hub相连的branch网络使用该一个或多个子网网段)。其中,Spoke和Hub上连接的子网网段可以直接手工配置在相关视图下,在此不再详加赘述。
例如,DVPN网络的整网网段可以为192.168.0.0/16,基于此,Hub对应的子网网段可以为192.168.1.0/24,Spoke1对应的子网网段可以为192.168.2.0/24,Spoke2对应的子网网段可以为192.168.3.0/24,以此类推。
基于上述情况,如图4所示,该方法可以至少包括以下步骤:
步骤401,Spoke向VAM服务器发送注册请求报文,该注册请求报文中携带该Spoke对应的公网地址、私网地址和子网网段。
步骤402,VAM服务器在收到来自Spoke的注册请求报文之后,记录该Spoke对应的公网地址、私网地址和子网网段之间的对应关系。
此外,Hub也可以向VAM服务器发送注册请求报文,该注册请求报文中携带Hub对应的公网地址、私网地址和子网网段,由VAM服务器记录Hub对应的公网地址、私网地址和子网网段之间的对应关系。
步骤403,当Spoke注册成功时,VAM服务器向Spoke发送注册成功响应报文,该注册成功响应报文中携带Hub对应的公网地址和私网地址,以及网络对应的整网网段。
本发明实施例中,需要在VAM服务器上配置网络对应的整网网段;在VAM服务器向Spoke发送的注册成功响应报文中,还需要携带该网络对应的整网网段;基于此,Spoke在收到来自VAM服务器的注册成功响应报文之后,还可以利用该网络对应的整网网段生成目的地址为网络对应的整网网段,且下一跳为Hub对应的私网地址(即DVPNTunnel的私网地址)的路由;基于此路由,Spoke在需要发送目的地址为该整网网段的数据报文时,可以直接利用该下一跳将数据报文发送给Hub,即对应该整网网段的所有数据报文需要经过Hub进行转发处理,后续Hub基于自身的路由进行转发处理。
步骤404,Spoke在收到来自VAM服务器的注册成功响应报文之后,利用Hub对应的公网地址和私网地址向Hub发送隧道建立请求报文,且该隧道建立请求报文中携带本Spoke对应的子网网段。
具体的,Spoke在收到注册成功响应报文(即注册成功)之后,需要与Hub建立隧道(即建立DVPNSession,如果已经建立DVPNSession,说明二者之间可以相互通信;如果没有建立DVPNSession,说明二者之间还不能通信);基于此隧道建立过程,Spoke需要向Hub发送隧道建立请求报文,且该隧道建立请求报文中需要携带本Spoke对应的子网网段。
步骤405,Hub利用Spoke对应的子网网段生成目的地址为该Spoke对应的子网网段,下一跳为该Spoke对应的私网地址(即DVPNTunnel的私网地址)的路由;基于此路由,Hub在需要发送目的地址为该子网网段的数据报文时,可以利用该下一跳将数据报文发送给相应的Spoke。
步骤406,Hub在收到隧道建立请求报文之后,向Spoke发送隧道建立成功响应报文,且该隧道建立成功响应报文中携带该Hub对应的子网网段。
步骤407,Spoke在收到隧道建立成功响应报文后,利用Hub对应的子网网段生成目的地址为Hub对应的子网网段,下一跳为Hub对应的私网地址(即DVPNTunnel的私网地址)的路由;基于此路由,Spoke在需要发送目的地址为该子网网段的数据报文时,可以利用该下一跳将数据报文发送给Hub。
此外,基于隧道建立请求报文以及隧道建立成功响应报文的交互,Spoke与Hub之间可以建立DVPNSession,对此本发明实施例中不再赘述。
本发明实施例中,在网络为Full-Mesh网络时,在Spoke需要发送数据报文时,如果发现匹配该数据报文的路由是目的地址为网络对应的整网网段,且下一跳为Hub对应的私网地址的路由,则说明该数据报文的目的地址为其它Spoke,而且本Spoke和目的Spoke之间的DVPNSession还没有建立;基于此,在Spoke需要向其它Spoke发送数据报文时,如果Spoke在利用数据报文的目的地址匹配到目的地址为网络对应的整网网段,且下一跳为Hub对应的私网地址的路由,则该Spoke需要将该数据报文发送给Hub暂时转发,后续有相关路由后直接转发给其它Spoke。
进一步的,该Spoke需要向VAM服务器发送查询请求报文,该查询请求报文中携带数据报文的目的地址;之后,由VAM服务器利用该目的地址查询其它Spoke对应的子网网段,以得到其它Spoke对应的公网地址和私网地址。其中,由于VAM服务器上记录有各Spoke对应的私网地址、公网地址和子网网段之间的对应关系,因此VAM服务器在收到查询请求报文后,基于该查询请求报文中携带的目的地址可以匹配到相应的子网网段,继而可以查询到其它Spoke所对应的公网地址和私网地址,并向Spoke发送查询成功响应报文,且该查询成功响应报文中携带其它Spoke对应的公网地址和私网地址。
Spoke在收到查询成功响应报文后,利用其它Spoke对应的公网地址和私网地址向其它Spoke发送隧道建立请求报文,该隧道建立请求报文中携带本Spoke对应的子网网段;其它Spoke利用该Spoke对应的子网网段生成目的地址为该Spoke对应的子网网段,下一跳为该Spoke对应的私网地址(即DVPNTunnel的私网地址)的路由;基于此路由,其它Spoke在需要发送目的地址为该子网网段的数据报文时,可以利用该下一跳将数据报文发送给Spoke。
其它Spoke在收到隧道建立请求报文后,向Spoke发送隧道建立成功响应报文,该隧道建立成功响应报文中携带其它Spoke对应的子网网段;Spoke在收到隧道建立成功响应报文后,利用其它Spoke对应的子网网段生成目的地址为其它Spoke对应的子网网段,下一跳为其它Spoke对应的私网地址(即DVPNTunnel的私网地址)的路由;基于此路由,Spoke在发送目的地址为该子网网段的数据报文时,可以利用该下一跳将数据报文发送给其它Spoke。
此外,基于隧道建立请求报文以及隧道建立成功响应报文的交互,Spoke与其它Spoke之间可以建立DVPNSession,对此本发明实施例中不再赘述。
本发明实施例中,可以在VAM服务器上配置DVPN是Hub-Spoke组网还是Full-Mesh组网,在Spoke进行注册时,VAM服务器将DVPN是Hub-Spoke组网还是Full-Mesh组网的信息通知给Spoke。
本发明实施例中,如果两个节点之间有DVPNSession,则到达对端的路由需要保持;如果两个节点之间的DVPNSession被删除,则到达对端的路由需要删除;基于此,在网络为Full-Mesh网络时,如果Spoke与其它Spoke之间的DVPNSession被删除,则该Spoke需要删除目的地址为其它Spoke对应的子网网段,下一跳为其它Spoke对应的私网地址的路由。
本发明实施例中,当Spoke对应的子网网段发生变化时,Spoke将变化后的子网网段发送给VAM服务器,由VAM服务器更新Spoke对应的公网地址、私网地址和子网网段之间的对应关系,即由VAM服务器将当前子网网段更新为变化后的子网网段;以及,Spoke通过维护DVPNSession状态的Keepalive报文将变化后的子网网段发送给Hub(即通过keepalive报文传输变化后的子网网段),由Hub更新目的地址为Spoke对应的子网网段,下一跳为Spoke对应的私网地址的路由,即由Hub将当前子网网段更新为变化后的子网网段;以及,当Spoke和其它Spoke存在状态为success的DVPNSession时,Spoke通过维护DVPNSession状态的Keepalive报文将变化后的子网网段发送给其它Spoke(即通过keepalive报文传输变化后的子网网段),由其它Spoke更新目的地址为Spoke对应的子网网段,下一跳为Spoke对应的私网地址的路由,即由其它Spoke将当前子网网段更新为变化后的子网网段。
本发明实施例中,当Hub对应的子网网段发生变化时,Hub将变化后的子网网段发送给VAM服务器,由VAM服务器更新Hub对应的公网地址、私网地址和子网网段之间的对应关系,即由VAM服务器将当前子网网段更新为变化后的子网网段;以及,Hub通过维护DVPNSession状态的Keepalive报文将变化后的子网网段发送给各Spoke(即通过keepalive报文传输变化后的子网网段),由各Spoke更新目的地址为Hub对应的子网网段,下一跳为Hub对应的私网地址的路由,即由各Spoke将当前子网网段更新为变化后的子网网段。
基于与上述方法同样的发明构思,本发明实施例中还提供了一种网络设备,作为Spoke应用于包括VPN地址管理VAM服务器、Hub和多个Spoke的动态虚拟专用网DVPN网络中,所述网络对应的整网网段被划分为多个子网网段,每个Spoke对应一个或多个子网网段,且所述Hub对应一个或多个子网网段,如图5所示,所述网络设备具体包括:
第一发送模块11,用于向所述VAM服务器发送注册请求报文,所述注册请求报文中携带本Spoke对应的公网地址、私网地址和子网网段;由所述VAM服务器记录所述本Spoke对应的公网地址、私网地址和子网网段之间的对应关系;
第一接收模块12,用于接收来自所述VAM服务器的注册成功响应报文,所述注册成功响应报文中携带所述Hub对应的公网地址,私网地址,以及所述网络对应的整网网段;
第二发送模块13,用于利用所述Hub对应的公网地址和私网地址向所述Hub发送隧道建立请求报文,所述隧道建立请求报文中携带所述本Spoke对应的子网网段;由所述Hub利用所述本Spoke对应的子网网段生成目的地址为所述本Spoke对应的子网网段,下一跳为所本述Spoke对应的私网地址的路由;
第二接收模块14,用于接收来自所述Hub的隧道建立成功响应报文,所述隧道建立成功响应报文中携带所述Hub对应的子网网段;
生成模块15,用于利用所述网络对应的整网网段生成目的地址为所述网络对应的整网网段,下一跳为所述Hub对应的私网地址的路由;以及,利用所述Hub对应的子网网段生成目的地址为所述Hub对应的子网网段,下一跳为所述Hub对应的私网地址的路由。
本发明实施例中,在所述网络为Full-Mesh网络,且所述本Spoke需要向其它Spoke发送数据报文时;
所述第一发送模块11,还用于在利用所述数据报文的目的地址匹配到目的地址为所述网络对应的整网网段,下一跳为所述Hub对应的私网地址的路由时,将所述数据报文发送给所述Hub;以及,向所述VAM服务器发送查询请求报文,所述查询请求报文中携带所述数据报文的目的地址;由所述VAM服务器利用所述目的地址查询其它Spoke对应的子网网段,以得到所述其它Spoke对应的公网地址和私网地址;
所述第一接收模块12,还用于接收来自所述VAM服务器的查询成功响应报文,该查询成功响应报文中携带所述其它Spoke对应的公网地址和私网地址;
所述第二发送模块13,还用于利用其它Spoke对应的公网地址和私网地址向其它Spoke发送隧道建立请求报文,该隧道建立请求报文中携带所述本Spoke对应的子网网段;由其它Spoke利用所述本Spoke对应的子网网段生成目的地址为所述本Spoke对应的子网网段,下一跳为所述本Spoke对应的私网地址的路由;
所述第二接收模块14,还用于接收来自所述其它Spoke的隧道建立成功响应报文,该隧道建立成功响应报文中携带其它Spoke对应的子网网段;
所述生成模块15,还用于利用其它Spoke对应的子网网段生成目的地址为其它Spoke对应的子网网段,下一跳为其它Spoke对应的私网地址的路由。
本发明实施例中,该Spoke与还包括:
删除模块16,用于当所述本Spoke与所述其它Spoke之间的DVPN会话Session被删除时,删除目的地址为所述其它Spoke对应的子网网段,下一跳为所述其它Spoke对应的私网地址的路由。
本发明实施例中,该Spoke与还包括:第三发送模块17,用于当所述本Spoke对应的子网网段发生变化时,将变化后的子网网段发送给所述VAM服务器,由所述VAM服务器更新所述本Spoke对应的公网地址、私网地址和子网网段之间的对应关系;以及,
通过维护DVPNSession状态的Keepalive报文将变化后的子网网段发送给所述Hub,由所述Hub更新目的地址为所述本Spoke对应的子网网段,下一跳为所述本Spoke对应的私网地址的路由;以及,
当所述本Spoke上和其它Spoke存在状态为success的DVPNSession时,通过维护DVPNSession状态的Keepalive报文将变化后的子网网段发送给所述其它Spoke,由所述其它Spoke更新目的地址为所述本Spoke对应的子网网段,下一跳为所述本Spoke对应的私网地址的路由。
其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。
基于与上述方法同样的发明构思,本发明实施例中还提供了一种网络设备,作为Hub应用于包括VPN地址管理VAM服务器、Hub和多个Spoke的动态虚拟专用网DVPN网络中,所述网络对应的整网网段被划分为多个子网网段,每个Spoke对应一个或多个子网网段,且所述Hub对应一个或多个子网网段,如图6所示,所述Hub具体包括:
注册模块21,用于向所述VAM服务器发送注册请求报文,所述注册请求报文中携带Hub对应的公网地址、私网地址和子网网段;由所述VAM服务器记录所述Hub对应的公网地址、私网地址和子网网段之间的对应关系;以及,接收来自所述VAM服务器的注册成功响应报文;
接收模块22,用于接收来自本网络中Spoke的隧道建立请求报文,所述隧道建立请求报文中携带所述Spoke对应的子网网段;
生成模块23,用于利用所述Spoke对应的子网网段生成目的地址为所述Spoke对应的子网网段,下一跳为所述Spoke对应的私网地址的路由;
发送模块24,用于向所述Spoke发送隧道建立成功响应报文,所述隧道建立成功响应报文中携带本Hub对应的子网网段;由所述Spoke利用所述Hub对应的子网网段生成目的地址为所述Hub对应的子网网段,下一跳为所述Hub对应的私网地址的路由。
本发明实施例中,所述发送模块24,还用于当本Hub对应的子网网段发生变化时,将变化后的子网网段发送给所述VAM服务器,由所述VAM服务器更新所述Hub对应的公网地址、私网地址和子网网段之间的对应关系;以及,通过维护DVPNSession状态的Keepalive报文将变化后的子网网段分别发送给网络中各Spoke,由所述各Spoke更新目的地址为所述Hub对应的子网网段,下一跳为所述Hub对应的私网地址的路由。
其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。
基于与上述方法同样的发明构思,本发明实施例中还提供了一种VPN地址管理VAM服务器,应用于包括所述VAM服务器、Hub和多个Spoke的动态虚拟专用网DVPN网络中,所述网络对应的整网网段被划分为多个子网网段,每个Spoke对应一个或多个子网网段,且所述Hub对应一个或多个子网网段,如图7所示,所述VAM服务器具体包括:
接收模块31,用于接收来自本网络中Spoke的第一注册请求报文,所述第一注册请求报文中携带所述Spoke对应的公网地址、私网地址和子网网段;以及,接收来自所述Hub的第二注册请求报文,所述第二注册请求报文中携带所述Hub对应的公网地址、私网地址和子网网段;
记录模块32,用于记录所述Spoke对应的公网地址、私网地址和子网网段之间的对应关系;以及,记录所述Hub对应的公网地址、私网地址和子网网段之间的对应关系;
发送模块33,用于向所述Spoke发送注册成功响应报文,所述注册成功响应报文中携带所述Hub对应的公网地址和私网地址,以及所述网络对应的整网网段;由所述Spoke利用所述网络对应的整网网段生成目的地址为所述网络对应的整网网段,下一跳为所述Hub对应的私网地址的路由。
在所述网络为Full-Mesh网络,且所述Spoke需要向其它Spoke发送数据报文时;
所述接收模块31,还用于接收来自所述Spoke的查询请求报文,所述查询请求报文中携带所述数据报文的目的地址;
所述发送模块33,还用于利用所述目的地址查询其它Spoke对应的子网网段,以得到所述其它Spoke对应的公网地址和私网地址,并向所述Spoke发送查询成功响应报文,所述查询成功响应报文中携带所述其它Spoke对应的公网地址和私网地址。
所述接收模块31,还用于当所述Spoke对应的子网网段发生变化时,接收来自所述Spoke的变化后的子网网段,并更新所述Spoke对应的公网地址、私网地址和子网网段之间的对应关系;当所述Hub对应的子网网段发生变化时,接收来自所述Hub的变化后的子网网段,并更新所述Hub对应的公网地址、私网地址和子网网段之间的对应关系。
其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。