首页 / 一种GRE隧道的动态建立方法和设备

一种GRE隧道的动态建立方法和设备无效专利 发明

技术领域

本发明涉及网络技术领域,特别涉及一种GRE隧道的动态建立方法和设备。

相关背景技术

GRE ( Generic Routing Encapsulation,通用3各由封装协议)协议是对某些 网络层协议如IP/IPX等的数据报文进行封装,使这些被封装的数据报文能够 在另一个网络层协议如IP中传输。GRE协议实质上一种封装协议,它提供了 将一种协议的报文封装在另 一种协议报文中的机制,使报文能够在异种网络 中传输。异种"R文传输的通道称为Tunnel (隧道)。Tunnel是一个虚拟的点对 点的连接,提供了一条通路使封装的数据报文能够在这个通路上传输,并且 在一个Tunnel的两端分别对数据报进行封装及解封装。GRE采用了 Tunnel 技术,是VPN的第三层隧道协议。GRE隧道不能配置二层信息,但可以配 置IP;也址。
GRE利用为隧道指定的实际物理接口完成转发,下面以图l所示的网络 场景为例。Netl中所有发送到Net2的原始报文,首先被发送到隧道源端,隧 道源端根据报文头中的目的地址域来确定如何路由此包;报文的目的地址为 Net2网段地址,要经过Tunnel接口 ,则设备将此报文发给相应的Tunnel接口 。 原始报文在隧道源端进行GRE封装,填写隧道建立时确定的隧道源地址和目 的地址,然后再通过公共IP网络转发到远端VPN网络。
现有技术中建立GRE建立隧道时必须知道对端设备的IP地址。这样GRE 隧道连接建立依赖于固定的IP地址, 一旦隧道两端有一端设备IP地址更换就 必须手动更改隧道另一端的GRE Tunnel配置。另外,传统的GRE隧道建立 必须知道对方的IP地址,这样就使得使用动态IP地址的设备无法正常建立 GRE隧道。发明内容
本发明提供一种GRE隧道的动态建立方法和设备,用于在GRE隧道两 端IP地址动态变化的情况下,在GRE两端的设备之间动态建立GRE隧道。 为达到上述目的,本发明提供一种GRE隧道的动态建立方法,包括: 需要建立GRE隧道的端设备将自身用于建立GRE隧道的GRE隧道信息 传递出去,所述GRE隧道信息包括隧道关键字Key、隧道接口 IP地址和隧道 源IP地址;
所述端设备根据收到的其他端设备发送的报文中GRE隧道信息所包括的 关键字Key,判断所述GRE隧道信息是否属于自己需要建立的隧道,如果是, 则根据所述GRE隧道信息包括的对端设备隧道接口 IP地址和隧道源IP地址, 并结合自身的隧道信息与所述对端设备建立GRE隧道。
其中,所述需要建立GRE隧道的端设备将自身用于建立GRE隧道的GRE 隧道信息传递出去包括:
需要建立GRE隧道的端设备向预先设置的组播组地址发送发现报文,所 述发现报文中携带自身用于建立GRE隧道的GRE隧道信息,所述GRE隧道 信息包括隧道关键字Key、隧道接口 IP地址和隧道源IP地址;加入到所述组 播组的其他设备接收到所述发现报文。
其中,所述端设备根据收到的其他端设备发送的报文中GRE隧道信息所 包括的关键字Key,判断所述隧道信息是否属于自己需要建立的隧道,如果 是,则根据所述GRE隧道信息包括的对端设备隧道接口 IP地址和隧道源IP 地址,并结合自身的隧道信息与所述对端设备建立GRE隧道包括:
所述端设备接收对端设备通过组播方式发送的发现报文;
所述端设备获取所述发现报文中携带的所述对端设备的GRE隧道信息所 包括的关键字Key;
当所述对端设备的隧道关键字Key与所述端设备上预先配置的隧道关键 字Key相同、且所述对端设备的隧道接口 IP地址与所述端设备的隧道接口 IP 地址处于同一网段时,所述端设备将所述对端设备的隧道源IP地址作为所述
ii对端设备建立GRE隧道所使用的IP地址,与所述对端设备建立GRE隧道; 所述端设备向所述对端设备发送所述端设备的隧道源IP地址。 其中,所述与所述对端设备建立GRE隧道后,还包括: 所述端设备接收所述对端设备发送的更新4艮文;
所述端设备获取所述更新报文中GRE隧道信息所包括的所述对端设备的 隧道关键字Key、隧道接口 IP地址和变化后的隧道源IP地址;
所述端设备才艮据所述对端设备的变化后的隧道源IP地址,更新与所述对 端设备建立的所述GRE隧道,并向所述对端设备发送响应。
其中,所述与所述对端设备建立GRE隧道后,还包括:
所述端设备建立GRE隧道所使用的隧道源IP地址发生变化时,向所述 GRE隧道的对端设备发送更新报文,所述更新报文中的GRE隧道信息包括所 述端设备的隧道关键字Key 、隧道接口 IP地址和变化后的隧道源IP地址;
所述对端设备根据所述更新报文,更新与所述端设备建立的所述GRE隧道。
其中,还包括:
所述端设备向预先设置的组播组地址发送发现报文后,在预先设置的时 间内未接收到响应时,重新发送所述发现报文;重新发送所述发现报文的次 数超过预设的门限时,所述端设备进入休眠,直至配置发生变化或接收到对 端设备发送的发现报文;休眠期间内所述端设备不发送报文;和/或
所述端设备向所述GRE隧道的对端设备发送更新报文后,在预先设置的 时间内未接收到响应时,重新发送所述更新报文;重新发送所述更新报文的 次数超过预设的门限时,所述端设备进入休眠,直至配置发生变化或接收到 所述对端设备发送的发现报文;休眠期间内所述端设备不发送报文。
其中,所述需要建立GRE隧道的端设备将自身用于建立GRE隧道的GRE 隧道信息传递出去包括:
需要建立GRE隧道的端设备向网络中的GRE服务器发送注册报文,所 述注册报文的GRE隧道信息中包括隧道关键字Key、隧道接口 IP地址和隧道 源IP地址。其中,所述需要建立GRE隧道的端设备向网络中的GRE服务器发送注 册报文后还包括:
所述GRE服务器根据所述注册报文存储关于所述端设备的GRE隧道信 息的表项;
所述GRE服务器查询本地已存储的其他设备的GRE隧道信息的表项中, 是否存在与所述端设备具有相同隧道关键字Key的表项;
所述GRE服务器将具有相同隧道关键字Key的表项中的GRE隧道信息 添加在通告报文中并发送给所述端设备。
其中,所述GRE服务器将具有相同隧道关键字Key的表项中的GRE隧 道信息添加在通告4艮文中并发送给所述端设备后,还包括:
所述GRE服务器将所述端设备的GRE隧道信息添加在通告报文中,向 与所述端设备具有相同隧道关键字Key的表项所对应的设备发送。
其中,所述端设备根据收到的其他端设备发送的报文中GRE隧道信息所 包括的关键字Key,判断所述隧道信息是否属于自己需要建立的隧道,如果 是,则根据所述GRE隧道信息包括的对端设备隧道接口 IP地址和隧道源IP 地址,并结合自身的隧道信息与所述对端设备建立GRE隧道包括:
所述端设备接收网络中GRE服务器发送的通告报文;
所述端设备获取所述通告报文中携带的对端设备的GRE隧道信息所包括 的关键字Key;
当所述对端设备的隧道关键字Key与所述端设备上预先配置的隧道关键 字Key相同、且所述对端设备的隧道接口 IP地址与所述端设备的隧道接口 IP 地址处于同一网段时,所述端设备将所述对端设备的隧道源IP地址作为所述 对端设备建立GRE隧道所使用的IP地址,与所述对端设备建立GRE隧道。 其中,所述与所述对端设备建立GRE隧道后,还包括: 所述端设备在隧道源IP地址发生变化时,向所述GRE服务器发送通告报 文,所述通告才艮文中携带隧道关键字Key、隧道接口 IP地址以及变化后的隧 道源IP ;也址;
13其中,所述与所述对端设备建立GRE隧道后,还包括: 所述端设备接收所述GRE服务器发送的通告才艮文,所述通告才艮文中携带
所述对端设备的隧道关键字Key、隧道接口 IP地址和隧道源IP地址;
所述端设备检测到所述对端设备建立GRE隧道的隧道源IP地址发生变化
时,更新与所述对端i殳备建立的所述GRE隧道。
其中,所述端设备接收所述GRE服务器发送的通告报文包括: 所述端设备接收所述GRE服务器在检测到所述对端设备建立GRE隧道
所使用的隧道源IP地址发生变化时发送的通告报文;或
所述端设备接收所述GRE服务器通过组播方式向本端设备发送的通告报 文,所述通告报文中携带所述GRE服务器中已存储的所有表项。
本发明还提供一种网络设备,用于GRE隧道的动态建立,包括: 隧道信息发送单元,用于将自身用于建立GRE隧道的GRE隧道信息传
递出去,所述GRE隧道信息包括隧道关键字Key、隧道接口 IP地址和隧道源
IP地址;
隧道建立单元,用于根据收到的其他端设备发送的报文中GRE隧道信息 所包括的关键字Key,判断所述GRE隧道信息是否属于自己需要建立的隧道, 如果是,则根据所述GRE隧道信息包括的对端设备隧道接口 IP地址和隧道源 IP地址,并结合自身的隧道信息与所述对端设备建立GRE隧道。
其中,所述隧道信息发送单元包括:第一隧道信息发送子单元,用于向 预先设置的组播组地址发送发现报文,所述发现报文中携带自身用于建立 GRE隧道的GRE隧道信息,所述GRE隧道信息包括隧道关键字Key、隧道 接口 IP地址和隧道源IP地址,使得加入到所述组播组的其他设备接收到所述 发现报文。
其中,所述隧道建立单元包括:
第一隧道信息获取子单元,用于接收所述对端设备通过组播方式发送的 发现报文时,获取所述发现报文中携带的所述对端设备的GRE隧道信息所包括的关键字Key;
第一隧道建立子单元,用于当所述第一隧道信息获取子单元获取的对端 设备的隧道关键字Key与所述端设备上预先配置的隧道关键字Key相同、且 所述对端设备的隧道接口 IP地址与所述端设备的隧道接口 IP地址处于同一网 段时,将所述对端设备的隧道源IP地址作为所述对端设备建立GRE隧道所使 用的IP地址,与所述对端设备建立GRE隧道;
隧道信息通知子单元,用于向所述对端设备发送所述端设备的隧道源IP 地址。
其中,还包括:第一隧道更新单元,用于接收所述对端设备发送的更新 报文时,获取所述更新报文中GRE隧道信息所包括的所述对端设备的隧道关 键字Key、隧道接口 IP地址和变化后的隧道源IP地址;根据所述第一隧道更 新信息获取子单元获取的对端i殳备的变化后的隧道源IP地址,更新与所述对 端设备建立的所述GRE隧道,并向所述对端设备发送响应;
第一隧道更新信息发送单元,用于在建立GRE隧道所使用的隧道源IP 地址发生变化时,向所述GRE隧道的对端设备发送更新报文,所述更新报文 中的GRE隧道信息包括所述端设备的隧道关键字Key、隧道接口 IP地址和变 化后的隧道源IP地址,触发所述对端设备更新已建立的GRE隧道;
休眠控制单元,用于所述隧道信息发送单元向预先设置的组播组地址发 送发现报文后,在预先设置的时间内未接收到响应时,重新发送所述发现报 文;重新发送所述发现报文的次数超过预设的门限时,控制自身设备进入休 眠,直至配置发生变化或接收到所述对端设备发送的发现报文;休眠期间内 自身设备不发送报文;和/或所述第一隧道更新信息发送单元向.所述GRE隧道 的对端设备发送更新报文后,在预先设置的时间内未接收到响应时,重新发 送所述更新报文;重新发送所述更新报文的次数超过预设的门限时,控制自 身设备进入休眠,直至配置发生变化或接收到所述对端设备发送的发现报文; 休眠期间内自身设备不发送报文。
其中,所述隧道信息发送单元包括:第二隧道信息发送子单元,用于向 网络中的GRE服务器发送注册报文,所述注册报文的GRE隧道信息中包括隧道关4建字Key、隧道4妄口 IP地址和隧道源IP地址。 其中,所述隧道建立单元包括:
第二隧道信息获取子单元,用于接收到网络中GRE服务器发送的通告报 文时,获取所述通告报文中携带的对端设备的GRE隧道信息所包括的关键字 Key;
第二隧道建立子单元,用于当所述第二隧道信息获取子单元获取的对端 设备的隧道关键字Key与所述端设备上预先配置的隧道关键字Key相同、且 所述对端设备的隧道接口 IP地址与所述端设备的隧道接口 IP地址处于同 一 网 段时,所述端设备将所述对端设备的隧道源IP地址作为所述对端设备建立 GRE隧道所使用的IP地址,与所述对端设备建立GRE隧道。
其中,还包括:第二隧道更新信息发送单元,用于在自身设备的隧道源 IP地址发生变化时,向所述GRE服务器发送通告报文,所述通告报文的GRE 隧道信息中携带隧道关键字Key、隧道接口 IP地址以及变化后的隧道源IP地 址;
第二隧道更新单元,用于接收所述GRE服务器发送的通告报文,所述通 告报文的GRE隧道信息中携带所述对端设备的隧道关键字Key、隧道接口 IP 地址和隧道源IP地址;当4企测到所述对端设备建立GRE隧道的隧道源IP地 址发生变化时,更新与所述对端设备建立的所述GRE隧道。
本发明还提供一种GRE服务器,包括:
通告报文生成单元,用于生成通告报文,所述通告报文中携带GRE隧道 目的端设备的GRE隧道信息,所述GRE隧道信息包括隧道关键字Key、隧 道接口 IP地址以及变化后的隧道源IP地址;
通告报文发送单元,用于将所述通告报文向所述GRE隧道的源端设备发送。
其中,还包括:注册报文接收单元,用于接收网络设备发送的注册报文, 所述注册报文中携带网络设备的GRE隧道信息,所述GRE隧道信息包括隧 道关键字Key、隧道接口 IP地址以及变化后的隧道源IP地址;表项存储单元,用于根据所述注册报文存储关于所述网络设备的GRE隧 道信息的表项;
表项更新单元,用于在接收到关于GRE隧道一端的网络设备在建立GRE 隧道所使用的隧道源IP地址发生变化的通告报文时,根据所述通告报文更新 已存储的所述网络设备的GRE隧道信息的表项。
其中,所述通告4艮文生成单元包括:
表项查询子单元,用于查询本地已存储的网络设备的GRE隧道信息的表 项中,是否存在与GRE隧道的源端设备具有相同隧道关键字Key的表项;
通告报文生成子单元,用于根据所述表项查询子单元查询到的表项,将 查找到的具有相同隧道关4建字Key的表项中的GRE隧道信息添加在通告报文 中,并通过所述通告报文发送单元向所述GRE隧道的源端设备发送;还用于 将所述源端设备的GRE隧道信息添加在通告报文中,并通过所述通告报文发 送单元向与所述源端设备所述具有相同隧道关键字Key的表项所对应的设备 发送。
其中,所述通告报文发送单元包括:
第一通告报文发送子单元,用于在检测到GRE隧道一端的设备建立GRE 隧道所使用的IP地址发生变化时,向所述GRE另隧道一端的设备发送通告才艮 文;或
第二通告报文发送子单元,用于定期向GRE隧道两端的设备发送通告报 文;或
第三通告报文发送子单元,用于通过组播方式向GRE隧道两端的设备发 送通告报文,所述通告报文中携带所述表项存储单元中已存储的所有表项。 与现有技术相比,本发明具有以下优点:
通过使用本发明,通过报文中携带的GRE隧道信息,在GRE隧道两端 IP地址动态变化的情况下,在GRE两端的设备之间建立GRE隧道,使得GRE 隧道的建立和更新更加灵活,可以实时4全测调整GRE隧道状态,提高GRE 隧道数据传输有效性和网络带宽的有效利用率。另外,实现了通过组播方式 和在网络中部署GRE服务器的方法,在网络中建立GRE隧道的设备间传递
17GRE隧道信息。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行 清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例, 而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有 做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。 本发明提供一种GRE隧道的动态建立方法,如图2所示,包括: 步骤s201 、需要建立GRE隧道的端设备将自身用于建立GRE隧道的GRE 隧道信息传递出去,所述GRE隧道信息包括隧道关键字Key、隧道接口IP地 址和隧道源IP ;l也址。
18步骤s202、端设备根据收到的其他端设备发送的报文中GRE隧道信息所 包括的关键字Key,判断GRE隧道信息是否属于自己需要建立的隧道,如果 是,则根据GRE隧道信息包括的对端设备隧道接口 IP地址和隧道源IP地址, 并结合自身的隧道信息与对端设备建立GRE隧道。
本发明中通过报文中携带的GRE隧道信息,可以在GRE隧道两端IP地 址动态变化的情况下,在GRE两端的设备之间建立GRE隧道,使得GRE隧 道的建立和更新更加灵活。具体的,本发明采用两种方式实现动态GRE隧道 的建立和维护。 一是采用组播方式传递GRE隧道信息;另一种方式采用GRE Server收集并传递GRE隧道信息,从而维护及时更新GRE隧道两端动态IP 地址的方式实现动态GRE隧道。以下分别对这两种GRE隧道的建立方式进 行描述。
(一)采用组^"方式实现GRE隧道的动态建立和维护
采用组播方式实现动态GRE隧道时,需要在GRE隧道两端的路由器上配 置能唯一标识此GRE隧道的关键字Key,使用关键字Key以及组播方式实现 GRE隧道建立和维护的流程主要分为三个阶段:发现阶段、更新阶段、休眠 阶段。发现阶段主要是GRE隧道源端发现GRE隧道目的端并建立GRE隧道的 过程;更新阶段为GRE隧道建立后,GRE隧道两端IP地址变化时对GRE隧道的 IP进行更新的过程;休眠阶段是指由于网络故障或配置错误等原因导致GRE 隧道建立失败时,GRE隧道源端和目的端进入休眠阶段。
以下以图3所示的应用场景为例,描述本发明中采用组播方式实现GRE隧 道动态建立的方法。图3中所示的路由器A、路由器B和路由器C位于同一网段。 以需要在路由器A和路由器B之间建立GRE隧道TunnelO、路由器A和路由器C 之间建立GRE隧道Tunnell为例,则预先在路由器A、路由器B和路由器C上分 别配置GRE隧道的关键字Key ,假设路由器A上配置的关键字Key为 {0001,0002},路由器B上配置的关键字Key为(0001),路由器C上配置的关键 字Key为(0002〉。
则GRE隧道的发现阶段如图4所示,包括以下流程:
步骤s401、路由器A获取到建立TunnelO所需的源IP地址后,以特定的组播
19地址向网络发送发现(Discovery )报文,传递自身的GRE隧道信息,GRE隧道信息包括路由器A的隧道关键字Key、隧道接口IP地址以及所获取的GRE隧道源IP地址,对于路由器A,假设Tunnel0对应的关键字Key为0001,隧道接口IP地址为1.1丄1, GRE隧道源IP地址为lO.l丄l,则发现报文中传递的GRE隧道信息包括(0001, l丄l.l, 10.1.1.1)。网络中需要建立GRE隧道的各路由器加入到该组播组,可以接收到路由器A通过组播方式发送的发现报文。
步骤s402、加入到该组播组的路由器B收到发现报文后,判断发现报文中的关键字Key与本设备上配置的关键字Key相同,且根据发现报文中携带的隧道接口 IP地址判断与路由器A位于同 一 网段,则将该发现报文中携带的GRE隧道源IP地址写入本设备隧道目的IP地址。
若路由器C也收到了路由器A发送的发现报文,由于发现报文中的关键字Key与本设备上配置的关键字Key不同,因此路由器C不会对该发现报文进行任何响应。
步骤s403、路由器B以单播方式向路由器A回应本设备建立GRE隧道所使用的隧道源IP地址信息,路由器A获得路由器B的隧道源IP地址信息后,路由器B与路由器A之间建立GRE隧道。
同理可知,如需要在路由器A和路由器C之间建立GRE隧道,则路由器A获取到Tunnell的源IP地址后(假设为20.1丄1),以特定的组播地址向网络发送发现报文,发现报文中传递的GRE隧道信息包括(0002, 1.1.2.1, 20.1.1.1),则路由器C收到该发现报文后所进行的处理与上述步骤s401 ~ s403中路由器B所执行的流程相似,最终将在路由器C与路由器A之间建立GRE隧道,对此流程在此不进行重复描述。
基于相似的流程,路由器B和路由器C也通过特定的组播地址向网络发送发现(Discovery)报文,传递自身的GRE隧道信息。路由器A获取到路由器B和路由器C的GRE隧道信息后,会通过单播方式分别向路由器B和路由器C回应本设备建立GRE隧道所使用的隧道源IP地址,从而在路由器B与路由器A之间、路由器C与路由器A之间分别建立GRE隧道。该过程与上述步骤s401 ~ s403中所描述的流程相似,对此流程在此不进行重复描述。另外,如果路由器A在一定时间内没有收到任何响应,则认为网络出现了异常情况导致发现报文被丟弃或GRE隧道目的端配置失败,则重新发送发现报文。连续发送多个周期没有收到响应,则认为GRE隧道建立失败,路由器A进入休眠阶段,直至路由器A上的配置发生变化或接收到对端设备发送的发现报文;休眠期间内路由器A不发送报文。
以路由器A建立隧道TunnelO所使用的IP地址发生变化为例,GRE隧道的更新阶段如图5所示,包括以下流程:
步骤s501、路由器A通过单播方式向作为GRE隧道目的端的路由器B发送更新(Update) 4艮文,更新报文中传递的GRE隧道信息包括隧道关键字Key、隧道接口 IP地址以及所获取的GRE隧道源IP地址。假设路由器A建立隧道TunnelO所使用的GRE隧道源IP地址变为10.1.1.2,则更新4艮文中传递的GRE隧道信息包括(OOOl, 1.1.1.1, 10.1.1.2)
步骤s502、路由器B收到此更新报文,则更新对应GRE隧道的目的IP地址信息,并回应确认消息给路由器A。
基于相似的流程,路由器B在建立隧道所使用的源IP地址发生变化时,同样可以通过单播方式向路由器A发送更新报文,使得路由器A根据该更新报文更新GRE隧道的IP地址,,人而实现GRE隧道的更新。该流程与上述图5所示的流程相似,在此不进行重复描述。
另夕卜, 一种特殊情况是GRE隧道两端IP同时变化,则由于GRE隧道目的端路由器B的IP地址变化,路由器A发出的更新报文不能到达路由器B。或者由于网络原因导致路由器B没有收到更新报文,路由器A在一定时间内没有收到确认消息时,重新发送更新报文。如连续发送三到四个周期后仍然没有收到回应报文,则路由器A判断GRE隧道的更新失败,进入发现阶段。
建立GRE隧道的设备在休眠阶段中对各种异常情况进行处理。建立GRE隧道的设备处于休眠阶段时,标识GRE隧道处于故障状态,此时GRE隧道两端不转发GRE报文,以免造成网络带宽的浪费。此时,如出现GRE隧道配置更改,或收到GRE隧道另一端发送的发现报文,GRE隧道两端的设备自动进入发现阶段发现并建立GRE隧道。否则,GRE隧道两端的设备定期发送发现报文监测GRE隧道状态。
上述实施例的描述中均主要以路由器A为例说明GRE隧道建立和维护的发现阶段、更新阶段和休眠阶段,可以理解的是该应用于路由器A上的流程同样可以应用于路由器B、路由器C以及网络中的其他路由器上,例如将路由器B和路由器A的角色对调,通过向网络通过组播方式发送发现报文、向已建立GRE隧道的对端设备发送更新报文、接收对端设备对发现报文的响应报文以及对端设备在建立GRE隧道的地址发生变化时的更新I艮文的方式,实现基于组播方式的GRE隧道的动态建立和维护。
(二 )采用GRE Server方式实现GRE隧道的动态建立和维护
传递建立和更新隧道所需的信息,同时,也可以将信息集中传递给第三方设备如GRE Server的方式实现GRE隧道的动态建立,在这种情况下,隧道两端均将携带建立隧道所需信息的报文传递给GRE Server,同时,在GRE隧道两端配置指定GRE Server的IP地址,以及能唯一标识一条GRE隧道的关4建字Key,同一隧道两端配置相同的关键字Key。
GRE Server用于GRE隧道的管理,为网络中GRE隧道两端均可达的设备,可以由网络中已有的路由器充当GRE Server,也可由接入网络的其他设备如PC充当。GRE隧道源端和目的端均需要在GRE Server设备上进行注册,注册成功后由GRE Server监控GRE隧道两端动态IP变化情况,从而维持GRE隧道。GREServer与GRE隧道两端处于一种弱管理关系,二者之间的交互简单,从而不会对网络负载造成较大负担。
GRE Server中通过建立和维护更新GRE表项,实现对GRE隧道两端的管理。本发明中,GREServeri殳备维护的GRE隧道表项中包括GRE隧道信息,其结构可以如下表l所示:
表l GRE隧道表项结构
table see original document page 22
以下以图6所示的应用场景为例,描述本发明中GRE隧道的动态建立方 法。图3中所述的路由器A、路由器B和路由器C位于同一网段。以需要在路由 器A和路由器B之间建立GRE隧道TunnelO、路由器A和路由器C之间建立GRE 隧道Tunnell为例,则预先在路由器A、路由器B和路由器C上分别配置GRE隧 道的关键字Key,假设路由器A上配置的关键字Key为{0001,0002},路由器B 上配置的关键字Key为(0001),路由器C上配置的关键字Key为{0002}。另夕卜, 网络中还存在GRE Server,路由器A、路由器B和路由器C上均配置有GRE Server的地址。GRE Server也可以位于路由器A、路由器B或路由器C上。
该应用场景中,以GREServer对路由器A发送的报文的处理为例,则GRE 隧道的动态建立方法如图7所示,包括:
步骤s701、网络中需要建立GRE隧道的路由器A以单播方式向GRE Server 发送注册报文,在GRE Server上进行注册。注册报文中携带的GRE隧道信息包 括路由器A的隧道关键字Key、隧道接口 IP地址和所获取的GRE隧道源IP地址。
步骤s702、 GREServer收到路由器A发送的注册报文后,根据注册报文中 携带的关键字Key,查询本地是否存在包括此关键字Key的GRE隧道表项,不 存在时则进行步骤s703,存在时则进行步骤s704。
步骤s703、 GREServer新建GRE隧道表项,记录注册报文中携带的关键字
GREServer向路由器A返回响应报文。此时响应报文中携带的GRE隧道目的IP i也址可以为0.0.0.0。
步骤s704、 GREServerl斤建GRE隧道表项,记录注册报文中携带的关键字 Key、路由器A上隧道接口的IP地址和路由器A获取的GRE隧道源IP地址。之后 GRE Server向路由器A返回响应报文。此时响应报文中携带的GRE隧道信息, 为GRE Server上已经保存的与路由器A要建立的GRE隧道相符的GRE隧道信 息。例如,GREServer曾经收到路由器B发送的注册报文,则GREServer的本 地表项中已存在路由器B的隧道关键字Key、隧道接口 I的P地址和路由器B获取 的GRE隧道源IP地址。此时GREServer收到路由器A发送的注册报文后,同样 新建GRE表项,记录注册报文中携带的关键字Key、路由器A上隧道接口的IP
23地址和路由器A获取的GRE隧道源IP地址。之后由于关于路由器B的表项和关 于路由器A的表项具有相同的Key,则GRE Server根据本地已经建立的关于路 由器B的表项,向路由器A端发送回应报文,回应报文中携带路由器B的GRE 隧道信息,即表项中已存在的I路由器B的关键字Key、隧道接口IP地址和隧道 源IP地址。同时GREServer会向路由器B发送GRE通告报文,将路由器A的GRE 隧道信息通告路由器B,路由器B收到发现报文后,判断发现报文中的关键字 Key与本设备上配置的关键字Key相同,且根据发现报文中携带的隧道接口IP 地址判断与路由器A位于同一网段,则将该报文中携带的隧道源IP地址作为待 建立GRE隧道的目的IP地址。这样隧道两端均知道GRE隧道的源端IP和目的端 IP, GRE隧道建立。以GRE Server向路由器B发送携带路由器A的GRE隧道信 息的GRE通告报文为例,该才艮文在传输过程中可能经过待建立GRE隧道的路 由器C,则路由器C在转发该GRE通告报文时,发现其中携带的GRE隧道信息 中的关键字Key与自身配置的Key不同,则不会处理该4艮文,只会将该GRE通 告报文向目的地址即路由器B进行转发。
基于相似的流程,路由器A和路由器C之间也可以通过与GRE Server的交 互获取到对方的隧道接口IP地址和源IP地址,从而在路由器A和路由器C之间 建立GRE隧道,该过程与上述路由器A与路由器B之间建立GRE隧道的过程相 似,在此不进行重复描述。
使用上述流程建立GRE隧道后,当GRE隧道任一端的隧道源IP地址发生改 变时,IP地址发生变化的设备向GRE Server主动发送隧道源IP地址变化的通告 (Update)报文。GREServer收到此通告报文后根据报文携带的Tunnel接口IP 地址检索到相应表项后更新设备表项中该设备的GRE隧道信息,并向同一网 段的其他设备通告这一变化,触发其他设备根据更新后的隧道源IP地址进行 GRE隧道的更新。例如,对于路由器A与路由器B之间建立的GRE隧道,当路 由器A建立隧道使用的隧道源IP地址发生变化时,主动向GRE Server发送通告 报文,报文中携带路由器A的GRE隧道信息,GRE Server根据该通告报文更新 本地存储的关于路由器A的GRE隧道信息的表项,并将更新后的路由器A的 GRE隧道信息发送给路由器B ,触发路由器B根据路由器A中变化后的隧道源IP地址更新已建立的GRE隧道。
GRE隧道任一端如配置取消隧道,主动以单播方式向GRE Server发送隧道 撤消报文。GRE Server收到报文后即清空此GRE表项,并向GRE隧道另 一端发 送隧道撤销报文。
另外,上述GRE隧道的建立和更新流程均由GRE隧道两端主动发起。为 避免由于网络问题导致GRE隧道两端GRE配置失效或GRE Server端GRE表项 过时,GRE Server还可以定期向GRE隧道两端发送IP通告报文。GRE隧道Client 端收到此报文后与自身配置进行比较,如发现不同则更新GRE隧道目的IP地 址,并发送确认消息给GREServer。 GRE Server如连续三个或多个周期均没有 收到相应的确认消息,则在设备上清空此GRE表项。
另夕卜,如果网络规模较小且GRE隧道配置相对稳定时,GREServer也可采
GRE隧道源端或目的端根据表项中的关键字和Tunnel接口检索更新GRE隧道 的目的IP地址,而且不需发送确认消息给GRE Server。
上述实施例的描述中均主要以路由器A为例说明GRE隧道建立和维护的 发现阶段、更新阶段和休眠阶段,可以理解的是该应用于路由器A上的流程同 样可以应用于路由器B以及网络中的其他路由器上,例如将路由器B和路由器 A的角色对调,通过以单播方式向GREServer发送注册才艮文、在建立隧道的IP 地址发生变化时向GRE Server主动发送通告纟艮文、接收GRE Server根据注册才艮 文返回的响应报文以及接收GREServer在对端建立隧道的IP地址发生变化时 发送的通告纟艮文的方式,实现基于GRE Server方式的GRE隧道的动态建立和维 护。
通过使用本发明提供的方法,在GRE隧道两端IP地址动态变化的情况下, 在GRE两端的i殳备之间动态建立和维护GRE隧道,使得GRE隧道的建立和更 新更加灵活,可以实时检测调整GRE隧道状态,提高GRE隧道数据传输有效 性和网络带宽的有效利用率。另夕卜,实现了通过组播方式和在网络中部署GRE 服务器的方法,在网络中建立GRE隧道的设备间传递GRE隧道信息。
本发明中还提供一种网络设备,用于GRE隧道的动态建立,如图8所示,
25包括:
隧道信息发送单元10,用于将自身用于建立GRE隧道的GRE隧道信息 传递出去,GRE隧道信息包括隧道关键字Key、隧道接口 IP地址和隧道源IP 地址;
隧道建立单元20,用于根据收到的其他端设备发送的报文中GRE隧道信 息所包括的关键字Key,判断GRE隧道信息是否属于自己需要建立的隧道, 如果是,则根据GRE隧道信息包括的对端设备隧道接口 IP地址和隧道源IP 地址,并结合自身的隧道信息与对端设备建立GRE隧道。
本发明提供的上述网络设备中,可以通过组播方式实现GRE隧道信息的 传递。使用该方式时,网络设备的结构如图9所示:
具体的,隧道信息发送单元IO可以包括:第一隧道信息发送子单元11, 用于向预先设置的组播组地址发送发现报文,发现报文中携带自身用于建立 GRE隧道的GRE隧道信息,GRE隧道信息包括隧道关键字Key、隧道接口 IP地址和隧道源IP地址,使得加入到组播组的其他设备接收到发现报文。
隧道建立单元20可以进一步包括:
第一隧道信息获取子单元21,用于接收对端设备通过组播方式发送的发 现报文时,获取发现报文中携带的对端设备的GRE隧道信息所包括的关键字 Key;
第一隧道建立子单元22,用于当第一隧道信息获取子单元21获取的对端 设备的隧道关键字Key与端设备上预先配置的隧道关键字Key相同、且对端 设备的隧道接口 IP地址与端设备的隧道接口 IP地址处于同一网段时,将对端 设备的隧道源IP地址作为对端设备建立GRE隧道所使用的IP地址,与对端 设备建立GRE隧道;
隧道信息通知子单元23,用于向对端设备发送端i殳备的隧道源IP地址。
另外,该网络设备还可以包括:
第一隧道更新单元30,用于接收对端设备发送的更新报文时,获取更新 报文中GRE隧道信息所包括的对端设备的隧道关键字Key、隧道接口 IP地址
26和变化后的隧道源IP地址;根据第一隧道更新信息获取子单元获取的对端设 备的变化后的隧道源IP地址,更新与对端设备建立的GRE隧道,并向对端设 备发送响应。
第一隧道更新信息发送单元40,用于在建立GRE隧道所使用的隧道源IP 地址发生变化时,向GRE隧道的对端设备发送更新报文,更新报文中的GRE 隧道信息包括端设备的隧道关4建字Key 、隧道接口 IP地址和变化后的隧道源 IP地址,触发对端设备更新已建立的GRE隧道。
休眠控制单元50,用于隧道信息发送单元10向预先设置的组播组地址发 送发现报文后,在预先设置的时间内未接收到响应时,重新发送发现报文; 重新发送发现报文的次数超过预设的门限时,控制自身设备进入休眠,直至 配置发生变化或接收到对端设备发送的发现报文;休眠期间内自身设备不发 送报文;和/或第一隧道更新信息发送单元40向GRE隧道的对端设备发送更 新报文后,在预先设置的时间内未接收到响应时,重新发送更新报文;重新 发送更新报文的次数超过预设的门限时,控制自身设备进入休眠,直至配置 发生变化或接收到对端设备发送的发现报文;休眠期间内自身设备不发送报 文。
本发明提供的上述网络设备中,还可以通过在网络中部署GRE服务器的 方式实现GRE隧道信息的传递。使用该方式时,网络设备的结构如图10所 示二
具体的,隧道信息发送单元IO可以包括:第二隧道信息发送子单元12, 用于向网络中的GRE服务器发送注册报文,注册报文的GRE隧道信息中包 括隧道关4建字Key、隧道接口 IP地址和隧道源IP地址。
隧道建立单元20可以进一步包括:
第二隧道信息获取子单元25,用于接收到网络中GRE服务器发送的通告 报文时,获取通告报文中携带的对端设备的GRE隧道信息所包括的关键字 Key;
第二隧道建立子单元26,用于当第二隧道信息获取子单元21获取的对端 设备的隧道关键字Key与端设备上预先配置的隧道关键字Key相同、且对端设备的隧道接口 IP地址与端设备的隧道接口 IP地址处于同一网段时,端设备
将对端设备的隧道源IP地址作为对端设备建立GRE隧道所使用的IP地址, 与对端设备建立GRE隧道。
另外,该网络i殳备还可以包括:
第二隧道更新信息发送单元60,用于在自身设备的隧道源IP地址发生变 化时,向GRE服务器发送通告报文,通告报文的GRE隧道信息中携带隧道 关键字Key、隧道接口 IP地址以及变化后的隧道源IP地址。
第二隧道更新单元70,用于接收GRE服务器发送的通告报文,通告报文 的GRE隧道信息中携带对端设备的隧道关键字Key、隧道接口 IP地址和隧道 源IP地址;当4企测到对端设备建立GRE隧道的隧道源IP地址发生变化时, 更新与对端设备建立的GRE隧道。
本发明中还提供一种GRE服务器,用于在网络中通过部署GRE服务器 的方式实现GRE隧道信息的传递,如图ll所示,该GRE服务器包括:
通告报文生成单元91,用于生成通告报文,通告才艮文中携带GRE隧道目 的端设备的GRE隧道信息,GRE隧道信息包括隧道关键字Key、隧道接口 IP地址以及变化后的隧道源IP地址;
通告报文发送单元92,用于将通告报文生成单元91生成的通告报文向 GRE隧道的源端设备发送。
另外,该GRE服务器中还可以包括:
注册报文接收单元93,用于接收网络设备发送的注册报文,注册报文中 携带网络设备的GRE隧道信息,GRE隧道信息包括隧道关键字Key、隧道接 口 IP地址以及变化后的隧道源IP地址;
表项存储单元94,用于根据注册报文接收单元93接收的注册报文存储关 于网络设备的GRE隧道信息的表项。
表项更新单元95,用于在接收到关于GRE隧道一端的网络设备在建立 GRE隧道所使用的隧道源IP地址发生变化的通告报文时,根据通告报文更新 已存储的网络设备的GRE隧道信息的表项。
28具体的,通告^JL生成单元91可以包括:
表项查询子单元911,用于查询本地已存储的网络设备的GRE隧道信息 的表项中,是否存在与GRE隧道的源端设备具有相同隧道关键字Key的表项;
通告报文生成子单元912,用于根据表项查询子单元911查询到的表项, 将查找到的具有相同隧道关键字Key的表项中的GRE隧道信息添加在通告才艮 文中,并通过通告报文发送单元92向GRE隧道的源端设备发送;另外,还 可以用于,将源端设备的GRE隧道信息添加在通告报文中,并通过通告报文 发送单元92向与源端设备具有相同隧道关键字Key的表项所对应的设备发 送。
具体的,通告报文发送单元92可以包括:
第一通告报文发送子单元921,用于在4全测到GRE隧道一端的设备建立 GRE隧道所〗吏用的IP地址发生变化时,向GRE另隧道一端的设备发送的通 告报文;或
第二通告报文发送子单元922,用于向GRE隧道两端的设备发送的通告 报文;或
第三通告报文发送子单元923,用于通过组播方式向GRE隧道两端的设 备发送通告报文,通告报文中携带表项存储单元中已存储的所有表项。
通过使用本发明提供的设备,可以在GRE隧道两端IP地址动态变化的情 况下,在GRE两端的设备之间动态建立和维护GRE隧道,使得GRE隧道的 建立和更新更加灵活,可以实时检测调整GRE隧道状态,提高GRE隧道数 据传输有效性和网络带宽的有效利用率。另外,实现了通过组播方式和在网 络中部署GRE服务器的方法,在网络中建立GRE隧道的设备间传递GRE隧 道信息。
上述模块可以分布于一个装置,也可以分布于多个装置。上述模块可以 合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发 明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。 基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软
29件产品可以存储在一个非易失性存储介质(可以是CD-ROM, U盘,移动硬 盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服 务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的 模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述 进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一 个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆 分成多个子模块。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此, 任何本领域的技术人员能思之的变化都应落入本发明的保护范围。

当前第1页 第1页 第2页 第3页
相关技术
建立方法相关技术
方法设备相关技术
蒋益群发明人的其他相关专利技术