也谈OpenvSwitch配置GRE隧道
来源:互联网 发布:淘宝系统架构图 编辑:程序博客网 时间:2024/05/16 05:20
1 OpenvSwitch in Kernel
从3.3的内核开始,OpenvSwitch(简称OVS)集成到Linux内核中去了,也就是说以后源码安装OVS的时候就不需要编译内核模块了,但是目前内核中的OVS还不支持配置GRE隧道。于是王聪的文章说了在这种情况下如何给OVS配置GRE。
王聪:在 openvswitch 上配置 GRE tunnel
以下是相关的一些笔记:
创建一个普通的 GRE tunnel,然后把它添加到 openvswitch bridge 中去就可以了。如下图:
目标是让 HOST1 上面的两个 VM 和 HOST2 上面的两个 VM 通过 GRE tunnel 实现通信,在这个环境中,一个很可能的错误是把 HOST2 上的 uplink,即 eth0 也加入到 openvswitch 的 bridge 中,这是不对的,需要加入仅仅的是 GRE tunnel 设备,即 gre1 (你当然也可以把它命名为其它名字)。
注意,此时的gre设备不是在OVS中创建的,是在系统中创建的。
至于为什么会这样,可以参考我之前的学习笔记,大概的原理就是让VM的数据包的路由通过GRE设备,这样就可以进行GRE封装,封装后的数据源目地址就成了10.16.43.xx,这样再走eth0实际网卡出去,就能到达对端。
剩下的一个最重要的问题是,GRE tunnel 是无法回应 ARP 的,因为它是一个 point to point 的设备(ip addr add 192.168.2.1/24 peer 192.168.1.1/24 dev gre1),所以很明显设置了 NOARP。这个问题是这里的关键。因为这个的缘故,即使你在 VM1 上也无法 ping HOST2 上的 gre1。所以这里需要一个技巧,就是要给 bridge 本身配置一个 IP 地址,然后让 bridge 做一个 ARP proxy!
首先要明白这个环境中为什么需要ARP。首先,OVS与VM连接,VM的VNIC是有一个MAC地址的
。其次,这个GRE隧道是OVS和OVS之间的,所以,VM间的通信是二层MAC针的形式,在到达交互的时候MAC帧应该是[dmac][smac][dip][sip][data]
这种形式,所以H1的VM ping H2的VM的时候,一定需要先由ARP请求得到VM的MAC地址(实际上是OVS的port的MAC地址)。那么按此推断,此时GRE封装的应该是二层数据。看看最后H2主机(不是VM)的设置:
[root@host2 ~]# ip tunnel showgre0: gre/ip remote any local any ttl inherit nopmtudiscgre1: gre/ip remote 10.16.43.214 local 10.16.43.215 ttl inherit #首先H2是有一个gre设备[root@host2 ~]# ip r s192.168.2.0/24 dev ovsbr0 proto kernel scope link src 192.168.2.4192.168.1.0/24 dev gre1 scope link##上面一条路由相当重要,后面有解释192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.110.16.40.0/21 dev eth0 proto kernel scope link src 10.16.43.215169.254.0.0/16 dev eth0 scope link metric 1005default via 10.16.47.254 dev eth0
首先,VM通信的时候经过OVS,那么到达内核的数据就是二层的了。这个时候路由表示目的地址为192.168.1.0需要做GRE封装,于是这个二层帧被GRE封装,又根据设备gre1的性质,这个数据再三成上被封装为:
[remote_ip:10.16.43.214][local_ip:10.16.43.215][原始L2 DATA]
这个数据包从路由来看,又是该走eth0出去,于是再包裹一个二层:
[dmac(H1 eth0 MAC)][smac(H2 eth0 MAC)][remote_ip:10.16.43.214][local_ip:10.16.43.215][原始L2 DATA]
于是数据到达H1了。H1经过解封到达OVS,再到达VM。
HOST2 上面的 VM1 只需添加一个路由即可,配置如下:
[root@localhost ~]# ip r s192.168.2.0/24 dev eth1 proto kernel scope link src 192.168.2.2192.168.1.0/24 dev eth1 scope link src 192.168.2.2[root@localhost ~]# ping 192.168.1.2PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data.64 bytes from 192.168.1.2: icmp_seq=1 ttl=62 time=561 ms64 bytes from 192.168.1.2: icmp_seq=2 ttl=62 time=0.731 ms
VM上还需要配置路由,这个我不是很懂,再琢磨一下先。
原创文章,转载请注明: 转载自Wang Chang's Blog
本文链接地址: http://blog.wachang.net/2013/03/openvswitch-configure-gre-note-1/
- 也谈OpenvSwitch配置GRE隧道
- openvswitch创建vxlan隧道和gre隧道的mtu问题
- GRE隧道的配置
- GRE隧道配置
- 运维必看-GRE隧道配置实践!
- 关于GPRS APN-GRE隧道配置摘要
- Cisco路由器配置GRE隧道举例
- 为Cisco路由器 配置GRE隧道
- GRE隧道
- GRE 简述(为cisco路由器配置GRE隧道举例)
- GRE 简述(为cisco路由器配置GRE隧道举例)
- GRE 简述(为cisco路由器配置GRE隧道举例)
- GRE 简述(为cisco路由器配置GRE隧道举例)
- GRE 简述(为cisco路由器配置GRE隧道举例)
- openvswitch配置vxlan隧道ping不通的解决办法
- 转:MSR系列路由器GRE隧道基础配置
- tunnel(GRE隧道)+VPN配置过程分析
- 基于LTE系统的GRE隧道配置方法
- Android多屏幕适配
- Hi3515自带串口驱动加载说明
- tomcat做成windows服务
- Android Toast 用法总结
- 获取下拉框的值
- 也谈OpenvSwitch配置GRE隧道
- MyEclipse优化
- 嵌入式学习笔记(19)——AVR单片机之C51向ICCAVR的移植
- Google C++ Style Guide 读后感
- PLSQL Developer V9/V8注册码
- 【示例代码】CSS3实现多种颜色的底部阴影按钮特效
- Android Development Tutorial
- 2011年十个值得收藏的Flash博客
- 汇编常用句式