您的位置:首页 > 运维架构 > Linux

用linux vconfig配置neutron VLAN试验

2016-01-13 21:17 856 查看
在单个物理机上创建两个kvm虚拟机,在虚拟机里安装openstack。主要测试neutron平面网络和vlan的连通性。

物理机设置

brctl创建一个网桥br1。打开网桥br1的混杂模式。

vconfig在网桥br1上创建VLAN 20。为br1.20配置IP地址。

brctl在网桥上增加接口tap5,tap6。(TAP设备事先通过tunctl -b创建)。

物理机执行的命令
# brctl addbr br1
# vconfig add br1 20
# ifconfig br1.20 192.168.20.1 up
# ifconfig br1 192.168.20.254/24 up
# brctl addif br1 tap5
# brctl addif br1 tap6
# ip link set br1 promisc on
查看VLAN的情况。
# cat /proc/net/vlan/config
VLAN Dev name	 | VLAN ID
Name-Type: VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD
br1.20         | 20  | br1

物理机的网桥

# brctl show
bridge name	bridge id		STP enabled	interfaces
br1		8000.721dc4aa0598	no		tap5
tap6
物理机的网络接口配置,ip地址,mac地址 ,接口名。

192.168.20.254   72:1D:C4:AA:05:98    br1

192.168.20.1        DA:0C:2F:0D:52:7E   br1.20

在物理机上创建两个kvm虚拟机,虚拟机分别利用tap5,tap6作为自己的网卡。命令行如下。
# qemu-system-x86_64 -cpu kvm64,+nx,+vmx -enable-kvm \
-smp 2 -m 2560 -name test3 \
-drive file=/vms/testiso3,if=virtio,format=raw,cache=none \
-cdrom centos7.iso -boot d \
-vga qxl \
-usb -usbdevice tablet \
-netdev tap,id=hostnet1,vhost=on,ifname=tap5,script=no -device virtio-net-pci,netdev=hostnet1,id=net1 \
-spice port=5902,addr=0.0.0.0,disable-ticketing,agent-mouse=on \
-device virtio-serial-pci \
-device virtserialport,nr=2,chardev=spicechannel0,name=com.redhat.spice.0 \
-chardev spicevmc,id=spicechannel0,name=vdagent


kvm虚拟机安装CentOS 7,部署openstack kilo。部署过程略。

以两个CentOS 7虚拟机作为计算节点。即CentOS 7虚拟机是cirros虚拟机的宿主机。

创建一个neutron FLAT外部网络,与物理机br1接口位于同一个网段 192.168.20.0/24 ,网关为 192.168.20.254 。

创建一个neutron VLAN外部网络,地址 192.168.20.0/24,网关为 192168.20.1。VLAN ID 等于20与物理机br1 vlan保持一致。

openstack项目的安全组设置,打开icmp和ssh端口,以方便测试。
创建若干个cirros虚拟机,网络分别使用flat和vlan 20。测试结果如下。

1)br1.20与vlan 20 cirros虚拟机的网络接口处于同一个网段VLAN 20。

例如,两个centos 7上的VLAN 20 cirros可以互相ping通。vlan 20 cirros虚拟机ping通br1.20。从物理机可以ssh到vlan 20 cirros虚拟机。

tcpdump表明,vlan 20 cirros虚拟机的ping数据包都是802.1Q tagged。

所以,一般来说,neutron VLAN情况下,需要在交换机端口设置为trunk口。

从cirros上ping物理机,在CentOS 7上查看
[root@vlanhost1 ~(keystone_admin)]# ovs-dpctl dump-flows|grep 192.168.20.1
recirc_id(0),skb_priority(0),in_port(2),eth(src=fa:16:3e:29:24:0f,dst=da:0c:2f:0d:52:7e),eth_type(0x8100),vlan(vid=20/0xfff,pcp=0/0x0,cfi=1/1),
encap(eth_type(0x0800),ipv4(src=192.168.20.57/0.0.0.0,dst=192.168.20.1/0.0.0.0,proto=1/0,tos=0/0,ttl=64/0,frag=no/0xff)),
packets:185, bytes:18130, used:0.780s, actions:drop
2)CentOS 7宿主机与flat cirros虚拟机,同处于flat网络。

CentOS 7无法ping通br1.20,也不能ping通vlan 20 cirros。

说明计算节点的网络与vlan 20租户网络不在一个VLAN,不能直接连通。

在CentOS7上执行ping,在物理机上 tcpdump -nni br1 得到 untagged 报文
ARP, Request who-has 192.168.20.1 tell 192.168.20.5, length 28
在vlan 20 cirros上执行ping,在物理机上 tcpdump -nni br1 -e vlan 得到 tagged 报文
fa:16:3e:29:24:0f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), \
length 46: vlan 20, p 0, ethertype ARP, Request who-has 192.168.20.1 tell 192.168.20.57, length 28
da:0c:2f:0d:52:7e > fa:16:3e:29:24:0f, ethertype 802.1Q (0x8100), \
length 46: vlan 20, p 0, ethertype ARP, Reply 192.168.20.1 is-at da:0c:2f:0d:52:7e, length 28
在实际环境中,计算节点对应的物理交换机端口需要设置为trunk口,并允许接收所需范围的VLAN id报文。

3) flat cirros虚拟机和vlan20 cirros虚拟机之间不能互通。
在物理机上查看网桥br1的接口情况。

# brctl showmacs br1
port no	mac addr		is local?    说明
3	62:5c:92:ad:a3:41	no	     centos 7 br-eth1 192.168.92.6
3	72:1d:c4:aa:05:98	yes	     tap6
2	9e:97:e4:a7:86:41	no           centos 7 br-eth1 192.168.92.5
2	b2:f5:45:72:9d:a9	yes          tap5
2	fa:16:3e:5a:ad:a3	no	     vlan20 cirros 192.168.20.52
2	fa:16:3e:ab:79:ee	no	     flat cirros 192.168.20.101

centos 7 宿主机 与 物理机 br1 处于一个 LAN,无需配置路由也能互通。

vlan 20 cirros 虚拟机 192.168.20.52/24 运行arp命令输出
192.168.20.1     DA:0C:2F:0D:52:7E
192.168.20.254   DA:0C:2F:0D:52:7E
192.168.20.5    (incomplete)
192.168.20.101  (incomplete)
centos 7 宿主机 192.168.20.5运行 arp命令输出
192.168.20.1     72:1D:C4:AA:05:98
192.168.20.254   72:1D:C4:AA:05:98
192.168.20.52    (incomplete)
192.168.20.101   FA:16:3E:AB:79:EE
需要物理机配路由
route add  -host 192.168.20.5  dev br1.20
或者
route add  -net 192.168.20.0 netmask 255.255.255.0 dev br1.20
flat cirros 虚拟机 192.168.20.101/24 运行arp命令输出
192.168.20.1     72:1D:C4:AA:05:98
192.168.20.254   72:1D:C4:AA:05:98
192.168.20.5     9E:97:E4:A7:86:41
192.168.20.52    (incomplete)
需要物理机配路由
route add  -host 192.168.20.101 dev br1
或者
route add  -net 192.168.20.0 netmask 255.255.255.0 dev br1
物理机运行 arp 输出
192.168.20.101  FA:16:3E:AB:79:EE
192.168.20.52   FA:16:3E:5A:AD:A3
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息