一种基于dvpn的数据传输方法和设备的制作方法

文档序号:7867244阅读:157来源:国知局
专利名称:一种基于dvpn的数据传输方法和设备的制作方法
技术领域
本发明涉及通信技术领域,特别是涉及一种基于DVPN(Dynamic Virtual PrivateNetwork,动态虚拟专用网络)的数据传输方法和设备。
背景技术
越来越多的企业希望利用公共网络组建VPN (Virtual Private Network,虚拟专用网络),以连接地理位置不同的多个分支机构;然而企业分支机构通常采用动态地址接入公共网络,使得通信一端无法事先知道对端的公网地址,为组建VPN提出了难题。为此提出了 DVPN 技术,其通过 NHRP (Next Hop Resolution Protocol,下一跳解析协议)或者 VAM(VPN Address Management, VPN地址管理)协议收集、维护和分发动态变化的公网地址信息,从而在企业网各分支机构使用动态地址接入公网的情况下,在各分支机构间建立VPN。 DVPN包括Full-Mesh (全互联)网络,在Full-Mesh网络中,Spoke之间可以建立direct (直连)隧道直接进行通信,且Hub主要作为路由信息交换的中心;具体的,Spoke在向Server (服务器)注册后可以获得Hub的信息,并与Hub建立永久的隧道连接;且任意两个Spoke之间可以建立direct隧道,该direct隧道是动态的,在一段规定时间内没有数据交互时需要被删除。在Full-Mesh网络中,隧道建立过程包括如下步骤
步骤1、如图1所示的Site(节点)接入网络的初始状态示意图;在初始状态下,各Site都接入到网络,但彼此之间没有建立隧道。步骤2、如图2所示的Site向Server注册示意图;在各Site向Server注册的过程中,各Site可以通过注册请求报文和回应报文的交互,获得Hub或Spoke的身份,且在Spoke和Hub之间建立隧道;其中,该Server可以是NHS (对应于NHRP实现的方式)或者VAM Server (对应于VAM实现的方式)。步骤3、如图3所示的Spoke之间建立direct隧道示意图;在Spoke之间建立direct隧道的过程中,假设Spokel与PCl相连,Spoke2与PC2相连,当PCl需要发送数据给PC2时,Spokel向Server发送下一跳解析请求报文,Server将Spoke2注册的公网地址通过下一跳解析响应报文通知给Spokel,之后Spokel可以利用Spoke2的公网地址建立到Spoke2 的 direct 隧道。在所有Spoke之间都建立direct隧道之后,可以形成一个Full-Mesh网络,如图4所示,为Full-Mesh网络的示意图;该网络中包括Spoke和Hub之间的隧道以及Spoke和Spoke之间的direct隧道;此时,各Spoke之间的数据可以直接通过Spoke之间的direct隧道转发,而不需要通过Hub进行中转。现有技术中,Spoke之间在通过direct隧道进行数据转发时,Spoke之间的direct隧道并不一定是最短转发路径。如图5所示,为Full-Mesh网络转发路径Cost (开销)示意图;Sp0kel到达Spoke2的direct隧道需要经历8跳(此转发路径经过8个路由器或三层交换机),而Spokel至Hub至Spoke2的路径需要经历2+4=6跳,Spokel至Spoke3至Spoke2的路径需要经历2+2=4跳。

发明内容
本发明提供一种基于DVPN的数据传输方法和设备,以通过较小的路径开销传输数据,并降低数据的转发延迟。为了达到上述目的,本发明实施例提供一种基于动态虚拟专用网络DVPN的数据传输方法,应用于包括多个Spoke的网络中,各Spoke上维护有邻居开销Cost表,所述邻居Cost表中记录了本设备与邻居Spoke之间的Cost值,该方法包括以下步骤
Spoke向邻居Spoke发送开销请求Cost Request报文,所述Cost Request报文中携 带了目的Spoke的信息;由所述邻居Spoke在收到所述Cost Request报文之后,利用所述目的Spoke的信息查询本地维护的邻居Cost表,获得本设备与所述目的Spoke之间的Cost值;
所述Spoke接收邻居Spoke返回的开销响应Cost Response报文,所述Cost Response报文中携带了所述邻居Spoke与所述目的Spoke之间的Cost值;
所述Spoke比较本设备与所述目的Spoke之间的Cost值和本设备至所述邻居Spoke至所述目的Spoke之间的Cost值,并在需要向所述目的Spoke发送数据时,通过Cost值最小的路径向所述目的Spoke发送数据。所述网络中还包括有服务器,各Spoke维护邻居Cost表的过程,进一步包括各Spoke在向所述服务器发起注册的过程中,接收来自所述服务器的注册应答报文,所述注册应答报文中携带了生存时间TTL值N;
各Spoke均向本设备的邻居Spoke发送保活Keepalive报文,所述Keepalive报文中携带了所述TTL值N;
各Spoke在收到来自邻居Spoke的Keepalive报文后,获得Keepalive报文中携带的TTL值M,并确定本设备与邻居Spoke之间的Cost值为(N_M);
各Spoke在本地维护的邻居Cost表中记录所述邻居Spoke的信息与所述Cost值(N_M)之间的对应关系。所述目的Spoke的信息包括目的Spoke的公网地址;所述Spoke向邻居Spoke发送开销请求Cost Request报文的过程,进一步包括
所述Spoke在需要向目的Spoke发送数据时,向邻居Spoke发送携带所述目的Spoke的公网地址的Cost Request报文。所述Spoke通过Cost值最小的路径向所述目的Spoke发送数据,具体包括所述Spoke在Cost值最小的路径为所述Spoke至邻居Spoke至目的Spoke时,通过所述Spoke与目的Spoke之间的direct隧道地址对所述数据进行第一层封装,并通过所述Spoke与邻居Spoke之间的direct隧道地址对第一层封装后的数据进行第二层封装,并将第二层封装后的数据发送给所述邻居Spoke ;
由所述邻居Spoke在收到第二层封装后的数据时,解第二层封装得到第一层封装后的数据,并将第一层封装后的数据发送给所述目的Spoke。所述Spoke通过Cost值最小的路径向所述目的Spoke发送数据,具体包括所述Spoke在Cost值最小的路径为所述Spoke至邻居Spoke至目的Spoke时,通过所述Spoke与邻居Spoke之间的direct隧道地址对所述数据进行封装,并在封装后的数据的指定字段中携带所述目的Spoke的公网地址,并将封装后的数据发送给所述邻居Spoke ;
由所述邻居Spoke在收到封装后的数据时,如果发现指定字段中携带的公网地址不是本设备的公网地址,则将封装后的数据的目的地址修改为所述指定字段中携带的公网地址,并将修改后的数据发送给所述目的Spoke。本发明实施例提供一种基于动态虚拟专用网络DVPN的数据传输设备,作为Spoke应用于包括多个Spoke的网络中,所述设备包括
维护模块,用于维护邻居开销Cost表,所述邻居Cost表中记录了本设备与邻居Spoke之间的Cost值;
报文发送模块,用于向邻居Spoke发送开销请求Cost Request报文,所述CostRequest报文中携带了目的Spoke的信息;由所述邻居Spoke在收到所述Cost Request报文之后,利用所述目的Spoke的信息查询本地维护的邻居Cost表,获得本设备与所述目的 Spoke之间的Cost值;
接收模块,用于接收邻居Spoke返回的开销响应Cost Response报文,所述CostResponse报文中携带了所述邻居Spoke与目的Spoke之间的Cost值;
比较模块,用于比较本设备与所述目的Spoke之间的Cost值和本设备至所述邻居Spoke至所述目的Spoke之间的Cost值;
数据发送模块,用于在需要向所述目的Spoke发送数据时,通过Cost值最小的路径向所述目的Spoke发送数据。所述网络中还包括有服务器;所述维护模块,进一步用于在向所述服务器发起注册的过程中,接收来自所述服务器的注册应答报文,且所述注册应答报文中携带了生存时间TTL值N ;向本设备的邻居Spoke发送保活Keepalive报文,所述Keepalive报文中携带了所述TTL值N ;在收到来自邻居Spoke的Keepalive报文后,获得Keepalive报文中携带的TTL值M,并确定本设备与邻居Spoke之间的Cost值为(N-M);在本地维护的邻居Cost表中记录所述邻居Spoke的信息与所述Cost值(N-M)之间的对应关系。所述目的Spoke的信息包括所述目的Spoke的公网地址;所述报文发送模块,具体用于在需要向目的Spoke发送数据时,向邻居Spoke发送携带所述目的Spoke的公网地址的 Cost Request 报文。所述数据发送模块,进一步用于在Cost值最小的路径为本设备至邻居Spoke至目的Spoke时,通过本设备与目的Spoke之间的direct隧道地址对所述数据进行第一层封装,并通过本设备与邻居Spoke之间的direct隧道地址对第一层封装后的数据进行第二层封装,并将第二层封装后的数据发送给所述邻居Spoke ;由所述邻居Spoke在收到第二层封装后的数据时,解第二层封装得到第一层封装后的数据,并将第一层封装后的数据发送给所述目的Spoke。所述数据发送模块,进一步用于在Cost值最小的路径为本设备至邻居Spoke至目的Spoke时,通过本设备与邻居Spoke之间的direct隧道地址对所述数据进行封装,并在封装后的数据的指定字段中携带所述目的Spoke的公网地址,并将封装后的数据发送给所述邻居Spoke ;由所述邻居Spoke在收到封装后的数据时,如果发现指定字段中携带的公网地址不是本设备的公网地址,则将封装后的数据的目的地址修改为所述指定字段中携带的公网地址,并将修改后的数据发送给所述目的Spoke。与现有技术相比,本发明实施例至少具有以下优点本发明实施例中,能够确定DVPN中各Spoke之间转发数据的最短路径,并可以通过最短路径传输数据,从而以较小的路径开销传输数据,并降低数据的转发延迟。


图1是现有技术的Full-Mesh网络中Site接入网络的初始状态示意 图2是现有技术的Full-Mesh网络中Site向Server注册示意 图3是现有技术的Full-Mesh网络中Spoke之间建立direct隧道示意 图4是现有技术的Full-Mesh网络的示意图; 图5是现有技术的Full-Mesh网络转发路径Cost示意 图6是本发明实施例提供的一种基于DVPN的数据传输方法流程 图7是本发明实施例的具体应用场景意 图8是本发明实施例提出的一种基于DVPN的数据传输设备结构图。
具体实施例方式下面结合附图对本发明实施例进行详细描述。针对现有技术中存在的问题,本发明实施例提出了一种基于DVPN的数据传输方法,该方法可以应用在DVPN的Full-Mesh网络中;且在Full-Mesh网络中,可以至少包括服务器(Server)和多个Spoke (包含Hub和Spoke)。本发明实施例中,各Spoke上维护有邻居Cost表,且该邻居Cost表中记录了本设备与邻居Spoke之间的Cost值(即转发跳数或者策略优先级等)。假设Full-Mesh网络中包括 Spokel、Spoke2 和 Spoke3,则SpokeI 上记录 Spokel 与 Spoke2 之间的 Cost 值、SpokeI 与Spoke3 之间的 Cost 值;Spoke2 上记录 Spoke2 与 Spokel 之间的 Cost 值、Spoke2 与 Spoke3之间的Cost值;Spoke3上记录Spoke3与Spokel之间的Cost值、Spoke3与Spoke2之间的Cost 值。具体的,各Spoke上为了维护邻居Cost表,则一种优选的实施方式为
各Spoke在向服务器发起注册的过程中,接收来自服务器的注册应答报文(Registerr印lay报文),该注册应答报文中携带了 TTL (Time To Live,生存时间)值N ;该TTL值N为Full-Mesh网络的TTL值,且服务器向该Full-Mesh网络中的每个Spoke所发送的注册应答报文中,均携带了相同的TTL值N。各Spoke从服务器上获得TTL值N之后,如果各Spoke建立起Full-Mesh的隧道连接(即所有Spoke之间建立direct隧道),则各Spoke均向本设备的邻居Spoke发送Keepalive (保活)报文(Keepalive报文可以定时发送),且该Keepalive报文的IP头中携带了 TTL值N ;例如,Spokel向Spoke2发送携带TTL值N的Keepalive报文,并向Spoke3发送携带TTL值N的Keepalive报文;Spoke2向Spokel发送携带TTL值N的Keepalive报文,并向Spoke3发送携带TTL值N的Keepalive报文;Spoke3向Spokel发送携带TTL值N的Keepalive报文,并向Spoke2发送携带TTL值N的Keepalive报文。各Spoke在收到来自邻居Spoke的Keepalive报文之后,获得Keepalive报文中携带的TTL值M,并确定本设备与邻居Spoke之间的Cost值为(N-M);以Spokel和Spoke2之间的处理为例,Spokel通过本设备与Spoke2之间的direct隧道向Spoke2发送携带TTL值N的Keepalive报文,且Spoke2通过本设备与Spokel之间的direct隧道向Spokel发送携带TTL值N的Keepalive报文;Spokel在收到来自Spoke2的Keepalive报文后,从Keepalive报文的IP头中获得TTL值M,并确定Spokel与Spoke2之间的Cost值为(N-M);Spoke2在收到来自Spokel的Keepalive报文后,从Keepalive报文的IP头中获得TTL值M,并确定Spoke2与Spokel之间的Cost值为(N_M)。各Spoke在本地所维护的邻居Cost表中记录邻居Spoke的信息(如邻居Spoke的公网地址)与Cost值(N-M)之间的对应关系。例如,在Spokel的邻居Cost表上,将记录Spoke2的公网地址与Cost值(N-M)之间的对应关系,并记录Spoke3的公网地址与Cost值(N-M)之间的对应关系;在Spoke2的邻居Cost表上 ,将记录Spokel的公网地址与Cost值(N-M)之间的对应关系,并记录Spoke3的公网地址与Cost值(N-M)之间的对应关系;在Spoke3的邻居Cost表上,将记录Spokel的公网地址与Cost值(N-M)之间的对应关系,并记录Spoke2的公网地址与Cost值(N-M)之间的对应关系。本发明实施例中,由于是针对Full-Mesh网络的处理,因此Full-Mesh网络的各Spoke按照上述方式进行处理后,均可以在本地维护的邻居Cost表中记录邻居Spoke的信息与Cost值(N-M)之间的对应关系。基于本地维护的邻居Cost表,如图6所示,本发明实施例所提出的基于DVPN的数据传输方法可以包括以下步骤
步骤601, Spoke向邻居Spoke(即目的Spoke之外的其它邻居Spoke)发送Cost Request(开销请求)报文,该Cost Request报文中携带了目的Spoke的信息;该目的Spoke的信息包括但不限于该目的Spoke的公网地址。本发明实施例中,Spoke向邻居Spoke发送Cost Request报文的过程,进一步包括Spoke在需要向目的Spoke发送数据时,向邻居Spoke发送携带目的Spoke的公网地址的Cost Request报文;例如,Spokel在需要向Spoke2发送数据时,向邻居Spoke发送携带Spoke2的公网地址的Cost Request报文;或者,Spoke定时触发向邻居Spoke发送携带目的Spoke的公网地址的Cost Request报文;例如,Spokel定时触发向邻居Spoke发送携带Spoke2的公网地址的Cost Request报文和携带Spoke3的公网地址的Cost Request报文。以图7为本发明实施例的应用场景示意图,则对于Spokel来说,当有数据需要通过Spokel转发给Spoke2时,该Spokel需要向所有邻居Spoke (即Spoke3、SpokeN和Hub)发送Cost Request报文;其中,该Cost Request报文中携带了 Spoke2的公网地址,且该Cost Request报文用于使各邻居Spoke查询本设备到达Spoke2的direct隧道的Cost值。步骤602,邻居Spoke在收到Cost Request报文之后,利用目的Spoke的信息查询本地维护的邻居Cost表,获得本设备与目的Spoke之间的Cost值。具体的,由于邻居Spoke本地维护的邻居Cost表中记录了邻居Spoke的信息与Cost值(N-M)之间的对应关系,因此邻居Spoke在收到Cost Request报文之后,可以直接利用目的Spoke的信息查询到目的Spoke对应的Cost值,该目的Spoke对应的Cost值为本设备与目的Spoke之间的Cost值。步骤603,邻居Spoke向Spoke返回Cost Response (开销响应)报文,该CostResponse报文中携带了邻居Spoke与目的Spoke之间的Cost值。步骤604, Spoke在收到Cost Response报文之后,比较本设备与目的Spoke之间的Cost值和本设备至邻居Spoke至目的Spoke之间的Cost值,并在需要向目的Spoke发送数据时,通过Cost值最小的路径向目的Spoke发送数据。如图7 所不,Spokel 向所有邻居 Spoke (即 Spoke3、SpokeN 和 Hub)发送 CostRequest报文之后,能够收到来自所有邻居Spoke的Cost Response报文;来自Spoke3的Cost Response报文中携带了 Cost值2 (即Spoke3与Spoke2之间的Cost值为2);来自SpokeN的Cost Response报文中携带了 Cost值5 (即SpokeN与Spoke2之间的Cost值为5);来自Hub的Cost Response报文中携带了 Cost值4 (即Hub与Spoke2之间的Cost值为4)。基于上述邻居Spoke向Spoke返回的Cost Response报文以及Spoke本地维护的邻居Cost表,Spokel可以获知Spokel与Spoke2之间的Cost值为8, Spokel至Spoke3至Spoke2 之间的 Cost 值为 4 (2+2), Spokel 至 SpokeN 至 Spoke2 之间的 Cost 值为 7 (2+5), Spokel至Hub至Spoke2之间的Cost值为6 (2+4);通过比较本设备与目的Spoke之间的Cost值和本设备至邻居Spoke至目的Spoke之间的Cost值,Cost值最小的路径为Spokel至Spoke3至Spoke2,因此Spokel在需要向Spoke2发送数据时,可以通过Cost值最小的路径Spoke I至Spoke3至Spoke2的路径向目的Spoke发送数据。综上所述,本发明实施例能够优化隧道转发路径,并降低数据转发延迟。例如,Spokel至Spoke3至Spoke2的Cost值为4,是最短路径;此时Spokel可以将PCl发送给PC2的数据从direct隧道切换到Spokel至Spoke3至Spoke2的隧道上进行转发,由于减小了转发路径的跳数,从而可以降低转发延迟。本发明实施例中,Spoke在收到邻居Spoke向Spoke返回的Cost Response报文之前,如果Spoke需要向目的Spoke发送数据,则Spoke可以直接通过Spoke和目的Spoke之间的direct隧道转发数据;或者,Spoke还可以通过Spoke至Hub至目的Spoke之间的路径转发数据。本发明实施例中,Spoke通过Cost值最小的路径向目的Spoke发送数据的方式,具体包括但不限于如下方式
方式一、Spoke在Cost值最小的路径为Spoke至邻居Spoke至目的Spoke时,通过Spoke与目的Spoke之间的direct隧道地址对数据进行第一层封装,并通过Spoke与邻居Spoke之间的direct隧道地址对第一层封装后的数据进行第二层封装,并将第二层封装后的数据发送给邻居Spoke ;进一步的,邻居Spoke在收到第二层封装后的数据时,可以解第二层封装,以得到第一层封装后的数据,并将第一层封装后的数据发送给目的Spoke。如图7所示,Spokel通过Spokel与Spoke2之间的direct隧道地址对数据(PCI发送给PC2的数据)进行第一层封装,但不发送,并通过Spokel与Spoke3之间的direct隧道地址对第一层封装后的数据进行第二层封装,并将第二层封装后的数据发送给Spoke3 ;Spoke3在收到第二层封装后的数据时,解掉第二层封装,还原为通过Spokel与Spoke2之间的direct隧道地址进行封装的第一层封装后的数据,并将第一层封装后的数据发送给Spoke2。方式二、Spoke在Cost值最小的路径为Spoke至邻居Spoke至目的Spoke时,通过Spoke与邻居Spoke之间的direct隧道地址对数据进行封装,并在封装后的数据的指定字段中携带目的Spoke的公网地址,并将封装后的数据发送给邻居Spoke ;由邻居Spoke在收到封装后的数据时,如果发现指定字段中携带的公网地址不是本设备的公网地址,则将封装后的数据的目的地址修改为指定字段中携带的公网地址,并将修改后的数据发送给目的 Spoke。如图7所示,Spokel通过Spokel与Spoke3之间的direct隧道地址对数据(PCl发送给PC2的数据)进行封装,在封装后的数据的指定字段(如私有协议报文头)中携带Spoke2的公网地址,并将封装后的数据发送给Spoke3 ;Spoke3在收到封装后的数据时,如果发现私有协议报文头中携带的公网地址不是本设备的公网地址,则保留数据的源地址,将封装后的数据的目的地址修改为私有协议报文头中携带的公网地址,并将修改后的数据发送给Spoke2。
基于与上述方法同样的发明构思,本发明实施例还提出了一种基于动态虚拟专用网络DVPN的数据传输设备,作为Spoke应用于包括多个Spoke的网络中,如图8所示,所述设备(即Spoke)包括
维护模块11,用于维护邻居开销Cost表,所述邻居Cost表中记录了本设备与邻居Spoke之间的Cost值;
报文发送模块12,用于向邻居Spoke发送开销请求Cost Request报文,所述CostRequest报文中携带了目的Spoke的信息;由所述邻居Spoke在收到所述Cost Request报文之后,利用所述目的Spoke的信息查询本地维护的邻居Cost表,获得本设备与所述目的Spoke之间的Cost值;
接收模块13,用于接收邻居Spoke返回的开销响应Cost Response报文,所述CostResponse报文中携带了邻居Spoke与目的Spoke之间的Cost值;
比较模块14,用于比较本设备与所述目的Spoke之间的Cost值和本设备至所述邻居Spoke至所述目的Spoke之间的Cost值;
数据发送模块15,用于在需要向所述目的Spoke发送数据时,通过Cost值最小的路径向所述目的Spoke发送数据。所述网络中还包括有服务器;所述维护模块11,进一步用于在向所述服务器发起注册的过程中,接收来自所述服务器的注册应答报文,且所述注册应答报文中携带了生存时间TTL值N ;向本设备的邻居Spoke发送保活Keepalive报文,所述Keepalive报文中携带了所述TTL值N ;在收到来自邻居Spoke的Keepalive报文后,获得Keepalive报文中携带的TTL值M,并确定本设备与邻居Spoke之间的Cost值为(N_M);在本地维护的邻居Cost表中记录所述邻居Spoke的信息与所述Cost值(N-M)之间的对应关系。所述目的Spoke的信息包括所述目的Spoke的公网地址;所述报文发送模块12,具体用于在需要向目的Spoke发送数据时,向邻居Spoke发送携带所述目的Spoke的公网地址的Cost Request报文。所述数据发送模块15,进一步用于在Cost值最小的路径为本设备至邻居Spoke至目的Spoke时,通过本设备与目的Spoke之间的direct隧道地址对所述数据进行第一层封装,并通过本设备与邻居Spoke之间的direct隧道地址对第一层封装后的数据进行第二层封装,并将第二层封装后的数据发送给所述邻居Spoke ;由所述邻居Spoke在收到第二层封装后的数据时,解第二层封装得到第一层封装后的数据,并将第一层封装后的数据发送给所述目的Spoke。所述数据发送模块15,进一步用于在Cost值最小的路径为本设备至邻居Spoke至目的Spoke时,通过本设备与邻居Spoke之间的direct隧道地址对所述数据进行封装,并在封装后的数据的指定字段中携带所述目的Spoke的公网地址,并将封装后的数据发送给所述邻居Spoke ;由所述邻居Spoke在收到封装后的数据时,如果发现指定字段中携带的公网地址不是本设备的公网地址,则将封装后的数据的目的地址修改为所述指定字段中携带的公网地址,并将修改后的数据发送给所述目的Spoke。其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储 介质(可以是⑶-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。上述本发明序号仅仅为了描述,不代表实施例的优劣。以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。
权利要求
1.一种基于动态虚拟专用网络DVPN的数据传输方法,应用于包括多个Spoke的网络中,其特征在于,各Spoke上维护有邻居开销Cost表,所述邻居Cost表中记录了本设备与邻居Spoke之间的Cost值,该方法包括以下步骤 Spoke向邻居Spoke发送开销请求Cost Request报文,所述Cost Request报文中携带了目的Spoke的信息;由所述邻居Spoke在收到所述Cost Request报文之后,利用所述目的Spoke的信息查询本地维护的邻居Cost表,获得本设备与所述目的Spoke之间的Cost值; 所述Spoke接收邻居Spoke返回的开销响应Cost Response报文,所述Cost Response报文中携带了所述邻居Spoke与所述目的Spoke之间的Cost值; 所述Spoke比较本设备与所述目的Spoke之间的Cost值和本设备至所述邻居Spoke至所述目的Spoke之间的Cost值,并在需要向所述目的Spoke发送数据时,通过Cost值最小的路径向所述目的Spoke发送数据。
2.如权利要求1所述的方法,其特征在于,所述网络中还包括有服务器,各Spoke维护邻居Cost表的过程,进一步包括 各Spoke在向所述服务器发起注册的过程中,接收来自所述服务器的注册应答报文,所述注册应答报文中携带了生存时间TTL值N ; 各Spoke均向本设备的邻居Spoke发送保活Keepalive报文,所述Keepalive报文中携带了所述TTL值N ; 各Spoke在收到来自邻居Spoke的Keepalive报文后,获得Keepalive报文中携带的TTL值M,并确定本设备与邻居Spoke之间的Cost值为(N-M); 各Spoke在本地维护的邻居Cost表中记录所述邻居Spoke的信息与所述Cost值(N_M)之间的对应关系。
3.如权利要求1或2所述的方法,其特征在于,所述目的Spoke的信息包括目的Spoke的公网地址;所述Spoke向邻居Spoke发送开销请求Cost Request报文的过程,进一步包括 所述Spoke在需要向目的Spoke发送数据时,向邻居Spoke发送携带所述目的Spoke的公网地址的Cost Request报文。
4.如权利要求1所述的方法,其特征在于,所述Spoke通过Cost值最小的路径向所述目的Spoke发送数据,具体包括 所述Spoke在Cost值最小的路径为所述Spoke至邻居Spoke至目的Spoke时,通过所述Spoke与目的Spoke之间的direct隧道地址对所述数据进行第一层封装,并通过所述Spoke与邻居Spoke之间的direct隧道地址对第一层封装后的数据进行第二层封装,并将第二层封装后的数据发送给所述邻居Spoke ; 由所述邻居Spoke在收到第二层封装后的数据时,解第二层封装得到第一层封装后的数据,并将第一层封装后的数据发送给所述目的Spoke。
5.如权利要求1所述的方法,其特征在于,所述Spoke通过Cost值最小的路径向所述目的Spoke发送数据,具体包括 所述Spoke在Cost值最小的路径为所述Spoke至邻居Spoke至目的Spoke时,通过所述Spoke与邻居Spoke之间的direct隧道地址对所述数据进行封装,并在封装后的数据的指定字段中携带所述目的Spoke的公网地址,并将封装后的数据发送给所述邻居Spoke ; 由所述邻居Spoke在收到封装后的数据时,如果发现指定字段中携带的公网地址不是本设备的公网地址,则将封装后的数据的目的地址修改为所述指定字段中携带的公网地址,并将修改后的数据发送给所述目的Spoke。
6.一种基于动态虚拟专用网络DVPN的数据传输设备,作为Spoke应用于包括多个Spoke的网络中,其特征在于,所述设备包括 维护模块,用于维护邻居开销Cost表,所述邻居Cost表中记录了本设备与邻居Spoke之间的Cost值; 报文发送模块,用于向邻居Spoke发送开销请求Cost Request报文,所述CostRequest报文中携带了目的Spoke的信息;由所述邻居Spoke在收到所述Cost Request报文之后,利用所述目的Spoke的信息查询本地维护的邻居Cost表,获得本设备与所述目的Spoke之间的Cost值; 接收模块,用于接收邻居Spoke返回的开销响应Cost Response报文,所述CostResponse报文中携带了所述邻居Spoke与目的Spoke之间的Cost值; 比较模块,用于比较本设备与所述目的Spoke之间的Cost值和本设备至所述邻居Spoke至所述目的Spoke之间的Cost值; 数据发送模块,用于在需要向所述目的Spoke发送数据时,通过Cost值最小的路径向所述目的Spoke发送数据。
7.如权利要求6所述的设备,其特征在于,所述网络中还包括有服务器; 所述维护模块,进一步用于在向所述服务器发起注册的过程中,接收来自所述服务器的注册应答报文,且所述注册应答报文中携带了生存时间TTL值N ;向本设备的邻居Spoke发送保活Keepalive报文,所述Keepalive报文中携带了所述TTL值N ;在收到来自邻居Spoke的Keepalive报文后,获得Keepalive报文中携带的TTL值M,并确定本设备与邻居Spoke之间的Cost值为(N-M);在本地维护的邻居Cost表中记录所述邻居Spoke的信息与所述Cost值(N-M)之间的对应关系。
8.如权利要求6或7所述的设备,其特征在于,所述目的Spoke的信息包括所述目的Spoke的公网地址; 所述报文发送模块,具体用于在需要向目的Spoke发送数据时,向邻居Spoke发送携带所述目的Spoke的公网地址的Cost Request报文。
9.如权利要求6所述的设备,其特征在于, 所述数据发送模块,进一步用于在Cost值最小的路径为本设备至邻居Spoke至目的Spoke时,通过本设备与目的Spoke之间的direct隧道地址对所述数据进行第一层封装,并通过本设备与邻居Spoke之间的direct隧道地址对第一层封装后的数据进行第二层封装,并将第二层封装后的数据发送给所述邻居Spoke ;由所述邻居Spoke在收到第二层封装后的数据时,解第二层封装得到第一层封装后的数据,并将第一层封装后的数据发送给所述目的Spoke。
10.如权利要求6所述的设备,其特征在于,所述数据发送模块,进一步用于在Cost值最小的路径为本设备至邻居Spoke至目的Spoke时,通过本设备与邻居Spoke之间的direct隧道地址对所述数据进行封装,并在封装后的数据的指定字段中携带所述目的Spoke的公网地址,并将封装后的数据发送给所述邻居Spoke ;由所述邻居 Spoke在收到封装后的数据时,如果发现指定字段中携带的公网地址不是本设备的公网地址,则将封装后的数据的目的地址修改为所述指定字段中携带的公网地址,并将修改后的数据发送给所述目的Spoke。
全文摘要
本发明公开了一种基于DVPN的数据传输方法和设备,该方法包括Spoke向邻居Spoke发送CostRequest报文;所述Spoke接收所述邻居Spoke返回的CostResponse报文,所述CostResponse报文中携带了所述邻居Spoke与目的Spoke之间的Cost值;所述Spoke比较本设备与所述目的Spoke之间的Cost值和本设备至所述邻居Spoke至所述目的Spoke之间的Cost值,并在需要向所述目的Spoke发送数据时,通过Cost值最小的路径向所述目的Spoke发送数据。本发明中,能够降低数据的转发延迟。
文档编号H04L12/741GK103023783SQ20121050727
公开日2013年4月3日 申请日期2012年12月3日 优先权日2012年12月3日
发明者王佩龙, 毛昱 申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1