编者按:Open vSwitch搭建GRE隧道实现不同AS网络互连互通。GRE(通用路由协议封装)是由Cisco和Net-smiths等公司于1994年提交给IETF,标号为RFC1701和RFC1702。GRE 规定了如何用一种网络协议去封装另一种网络协议的方法。GRE的隧道由两端的源IP地址和目的IP地址来定义,允许用户使用IP包封装IP、IPX、AppleTalk包,并支持全部的路由协议(如RIP2、OSPF等)。通过GRE,用户可以利用公共IP网络连接IPX网络、AppleTalk网络,还可以使用保留地址进行网络互连,或者对公网隐藏企业网的IP地址。

在GRE隧道里面配置snat gre隧道建立不起来_操作系统

1 实验目的

GRE协议及原理;

Open vSwitch如何配置GRE隧道实现通信。

2 实验原理

Open vSwitch 创建GRE 原理很简单,就是把对 GRE 头和外部 IP 头的一些操作从原来的代码中抽象出来,做成内核“库函数”的形式, Open vSwitch就可以直接调用它们。Open vSwitch GRE tunnel 没有注册网络设备,因此无法通过命令#ip link看到它,它只是一个 vport,能通过 ovs-vsctl show 可以看到。

3 实验部署

本实验已准备两台虚拟机,在两台虚拟机中安装并启动Open vSwitch服务,可参阅文章《Open vSwitch2.3.0版本安装部署及基本操作》,配置Open vSwitch,创建GRE隧道并进行验证。

实验中使用的网络拓扑如下:

4 实验步骤

一台虚拟机安装交换机的IP地址为192.168.5.23,另一台虚拟机安装交换机的IP地址为192.168.5.238,两台交换机已安装OvS2.3.0版本,并已启动。

4.1 配置VM1

(1)创建bridge:

在GRE隧道里面配置snat gre隧道建立不起来_IP_02

(2)配置br0及br1

在GRE隧道里面配置snat gre隧道建立不起来_操作系统_03

(3)查看OVS配置

在GRE隧道里面配置snat gre隧道建立不起来_网络_04

(4)查看VM1网络配置

在GRE隧道里面配置snat gre隧道建立不起来_运维_05

4.2 配置VM2

(1)配置OVS,同配置虚拟机1

在GRE隧道里面配置snat gre隧道建立不起来_运维_06

配置br0及br1

在GRE隧道里面配置snat gre隧道建立不起来_在GRE隧道里面配置snat_07

(2)查看OVS配置

在GRE隧道里面配置snat gre隧道建立不起来_操作系统_08

(3)查看VM2网络配置

在GRE隧道里面配置snat gre隧道建立不起来_在GRE隧道里面配置snat_09

4.3 创建GRE前验证

创建GRE隧道之前,做如下操作。虚拟机1 ping 虚拟机2的br0,无法通信,如下图:

在GRE隧道里面配置snat gre隧道建立不起来_IP_10

反过来用虚拟机2对虚拟机1进行ping操作得到同样的结果。

4.4 创建GRE隧道

(1)在虚拟机1上配置GRE

在GRE隧道里面配置snat gre隧道建立不起来_IP_11

(2)配置好的OVS如下

在GRE隧道里面配置snat gre隧道建立不起来_运维_12

(3)在虚拟机2上配置GRE

在GRE隧道里面配置snat gre隧道建立不起来_网络_13

(4)配置好的OVS如下

在GRE隧道里面配置snat gre隧道建立不起来_网络_14

4.5 验证GRE隧道

虚拟机1 与虚拟机2通过GRE隧道连接后,对虚拟机2的br0进行ping操作,可以通信。反过来用虚拟机1ping虚拟机2同样都可以通信,如下图所示:

在GRE隧道里面配置snat gre隧道建立不起来_IP_15

4.6 抓包分析

通过抓包证明数据包的使用协议的确是GRE,具体如下图:

5 实验结论

Open vSwitch创建GRE隧道可以让两个无法通信的机器通信起来,实验中,GRE把两个不通信的网桥连接起来,可以推断出,假如网桥上接主机,那么主机之间也可以通信。这在连接两个不同域之间的SDN网络有很大的作用,且在南京无线谷和北京邮电大学节点间已使用GRE隧道连接。值得说的是用运行在Linux环境中的Open vSwitch创建GRE隧道,Linux Kernel的最低版本为3.11。