GRE(通用路由协议封装)是由Cisco和Net-smiths等公司于1994年提交给IETF的,标号为RFC1701和RFC1702。GRE规定了如何用一种网络协议去封装另一种网络协议的方法。GRE的隧道由两端的源IP地址和目的IP地址来定义,允许用户使用IP包封装IP、IPX、AppleTalk包,并支持全部的路由协议(如RIP2、OSPF等)。通过GRE,用户可以利用公共IP网络连接IPX网络、AppleTalk网络,还可以使用保留地址进行网络互连,或者对公网隐藏企业网的IP地址。
下面介绍如何SDN创新实验平台上用 Open vSwitch搭建GRE隧道。
一、实验目的
- 了解GRE协议及原理
- 理解 Open vSwitch如何配置GRE隧道
二、实验原理
Open vSwitch创建GRE原理很简单,就是把对GRE头和外部IP头的一些操作从原来的代码中抽象出来,做成内核“库函数”的形式,然后 Open vSwitch中就可以直接调用它们了。 Open vSwitch GRE tunnel没有注册网络设备,因此无法通过iplink看到它,它只是一个vport而已,所以能通过ovs-vsctl show可以看到。
三、实验任务
本实验通过SDN创新实验平台进行创建一个虚拟网络,在虚拟网络添加两台虚拟机,在虚拟机启动 Open vSwitch服务,最后配置 Open vSwitch,创建GRE隧道并进行验证。
实验中用到的网络拓扑如下:
四、实验步骤
4.1 搭建环境
步骤1:在实验平台首页单击“创建虚网”。(注:如虚网名称以“Slice1”为例,虚网名称只能包括数字,字母和下划线。)
任意选择设备拓扑:
进行下一步配置,并点击最后“创建”,虚网创建成功;
步骤2:创建控制器,选择Floodlight控制器。
步骤3:在“虚网详情”页面单击网关部分的“”按钮添加网关。
步骤4:添加2台虚拟机,选择Mininet镜像作为所需Mininet,或者是选择两个已安装 Open vSwitch镜像的虚拟机(建议选择共享的名称为mininet_wireshark_linux3.12+的镜像,内核为3.13,支持GRE)。如下图创建虚拟机所示:
虚网详情页显示如下:
4.2 配置VM1
(1)Open vSwitch服务验证
启动虚网并启动虚拟机,验证OvS服务是否被启动好:
1 |
# ps –ef|grep ovs |
OvS已启动。
(2)创建两个bridge
1 2 |
# ovs-vsctl add-br br0 # ovs-vsctl add-br br1 |
(3)配置br0上
1 2 3 4 |
# ifconfig eth0 0 up # ifconfig br0 20.0.2.12 netmask 255.255.255.248 # route add default gw 20.0.2.9 # ovs-vsctl add-port br0 eth0 |
(4)配置br1
给br1配置IP地址:
1 |
# ifconfig br1 172.171.6.6/24 up |
(5)查看OVS配置
1 |
# ovs-vsctl show |
(6)查看网络配置
4.3 配置VM2
(1)验证OVS服务并配置OVS,同虚拟机1
1 2 3 4 5 6 |
# ovs-vsctl add-br br0 # ovs-vsctl add-br br1 # ifconfig eth0 0 up # ifconfig br0 20.0.2.12 netmask 255.255.255.248 # route add default gw 20.0.2.9 # ovs-vsctl add-port br0 eth0 |
给br1设置IP:
1 |
# ifconfig br1 172.171.6.7/24 |
(2)查看OVS配置
(3)查看网络配置
4.4 创建gre之前
创建gre隧道之前,做如下操作。
虚拟机2的br0 ping虚拟机1的br0,可以通信,如下图:
虚拟机2的br1 ping虚拟机1的br1,无法通信,如下图
反过来用虚拟机1 ping虚拟机2得到同样的结果.
4.5 创建gre隧道
(1)在虚拟机1上配置GRE
1 |
# ovs-vsctl add-port br1 gre1 -- set interface gre1 type=gre option:remote_ip=20.0.2.11 |
(2)配置好的OVS如下
(3)在虚拟机2上配置GRE
1 |
# ovs-vsctl add-port br1 gre1 -- set interface gre1 type=gre option:remote_ip=20.0.2.12 |
(4)配置好的OVS如下
4.6 验证gre隧道
(1)虚拟机2的br0 ping虚拟机1的br0,可以通信
(2)虚拟机2的br1 ping虚拟机1的br1,可以通信
(3)反过来用虚拟机1 ping虚拟机2同样都可以通信
4.7 抓包分析
通过抓包证明数据包的使用协议的确是GRE,具体如下图
五、实验结论
Open vSwitch创建GRE隧道可以让两个无法通信的机器通信起来,实验中,GRE把两个不通信的网桥连接起来,可以推断出,假如网桥上接主机,那么主机之间也可以通信。这在连接两个不同域之间的SDN网络有很大的作用,我们的“SDN创新实验平台”中的不同节点就是用Open vSwitch创建GRE隧道连接的。值得说的是用运行在Linux环境中的 Open vSwitch创建GRE隧道,LinuxKernel的最低版本为3.11。
请输入评论内容