elixiat 发表于 2015-4-11 14:12:49

学习OpenStack之(6):Neutron 深入学习之 OVS + GRE 之 Compute node 篇

0.环境
  硬件环境见上一篇博客:学习OpenStack之(5):在Mac上部署Juno版本OpenStack 四节点环境
  OpenStack网络配置:一个tenant, 2个虚机


[*]Type driver: GRE, Mechanism driver: OVS
[*]一个public network: ext-net 和相应的subnet ext-subnet
[*]一个VM network:demo-net 和相应的subnet:demo-subnet
[*]一个router连接ext-subnet和demo-subnet

  

1、Compute 节点上networking组件
  下面会用到OVS的两个重要命令:


[*]ovs-vsctl: 查询和更新ovs-vswitchd的配置
[*]ovs-ofctl: 查询和控制OpenFlow交换机和控制器
  首先查询Compute节点上ovs-vswitchd的配置的配置:







root@compute1:/var/lib/nova# ovs-vsctl show
205a13a2-1ad6-4ae0-8c84-abed97444aa9
Bridge br-int //OVS integration 桥 br-int
fail_mode: secure
Port "qvo37b25c08-e8" //端口,用来连接一个虚机网卡的TAP设备所连接的linux bridge
tag: 1
Interface "qvo37b25c08-e8"
Port patch-tun //端口,用来连接桥br-tun
Interface patch-tun
type: patch
options: {peer=patch-int} //和桥 br-tun上的patch-int是对等端口
Port br-int
Interface br-int
type: internal
Port "qvo155845ae-5e" //端口,用来连接另一个虚机网卡的TAP设备所连接的linux bridge
tag: 1
Interface "qvo155845ae-5e"
Bridge br-tun //OVS Tunnel 桥br-tun
Port br-tun
Interface br-tun
type: internal
Port patch-int //端口patch-int,用来连接桥br-int
Interface patch-int
type: patch
options: {peer=patch-tun}
Port "gre-0a000115" //端口,连接GRE Tunnel
Interface "gre-0a000115"
type: gre
options: {df_default="true", in_key=flow, local_ip="10.0.1.31", out_key=flow, remote_ip="10.0.1.21"}
ovs_version: "2.0.2" //GRE Tunnel是点到点之间建立的,这头的IP为10.0.1.31,那头的IP地址为 10.0.1.21
  继续看桥 br-tun:



root@compute1:/var/lib/nova# ovs-ofctl show br-tun
OFPT_FEATURES_REPLY (xid=0x2): dpid:0000f6b428614747
n_tables:254, n_buffers:256
capabilities: FLOW_STATS TABLE_STATS PORT_STATS QUEUE_STATS ARP_MATCH_IP
actions: OUTPUT SET_VLAN_VID SET_VLAN_PCP STRIP_VLAN SET_DL_SRC SET_DL_DST SET_NW_SRC SET_NW_DST SET_NW_TOS SET_TP_SRC SET_TP_DST ENQUEUE
1(patch-int): addr:3e:7b:d5:fa:26:8d //端口 patch-int的ID 是 1
config:   0
state:      0
speed: 0 Mbps now, 0 Mbps max
2(gre-0a000115): addr:2a:26:b2:99:f3:5a //端口 gre-0a000115的ID 是 2
config:   0
state:      0
speed: 0 Mbps now, 0 Mbps max
LOCAL(br-tun): addr:f6:b4:28:61:47:47
config:   0
state:      0
speed: 0 Mbps now, 0 Mbps max
OFPT_GET_CONFIG_REPLY (xid=0x4): frags=normal miss_send_len=0
  每个虚机有个虚机网卡 eth0,eth0和host上的一个TAP设备连接,该TAP设备直接挂载在一个Linux Bridge上,该Linux Bridge和OVS integration bridge br-int相连。其实理想情况下,TAP设备能和OVS Integration Bridge 直接相连就好了,但是,因为OpenStack实现Security Group的需要,这里要多加一层Linux bridge。OpenStack使用Linux TAP设备上的iptables来实现Security Group规则,而OVS不支持直接和br-int桥相连的TAP设备上的iptables。通过查看虚机的libvirt XML定义文件 /var/lib/nova/instances//libvirt.xml可以看出来虚机所连接的TAP设备:




//
//虚机TAP设备所挂接的linux bridge
页: [1]
查看完整版本: 学习OpenStack之(6):Neutron 深入学习之 OVS + GRE 之 Compute node 篇