用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创建)。
物理机执行的命令
物理机的网桥
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作为自己的网卡。命令行如下。
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上查看
CentOS 7无法ping通br1.20,也不能ping通vlan 20 cirros。
说明计算节点的网络与vlan 20租户网络不在一个VLAN,不能直接连通。
在CentOS7上执行ping,在物理机上 tcpdump -nni br1 得到 untagged 报文
3) flat cirros虚拟机和vlan20 cirros虚拟机之间不能互通。
在物理机上查看网桥br1的接口情况。
centos 7 宿主机 与 物理机 br1 处于一个 LAN,无需配置路由也能互通。
vlan 20 cirros 虚拟机 192.168.20.52/24 运行arp命令输出
物理机设置
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:drop2)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.20flat 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
相关文章推荐
- 什么是OpenStack 开源的云计算管理平台项目
- openstack(juno版)使用rsyslog转发日志
- OpenStack Murano Dashboard(Kilo)安装
- Openstack Murano(Kilo) 网络排错
- Openstack Murano(kilo)二次开发之添加Volume
- Openstack Horizon(kilo)二次开发之匿名访问View
- Ubuntu源码安装Openstack(一)
- Ubuntu源码安装Openstack(二)
- openstack开发之--zabbix被坑的地方
- 仿OpenStack开发云计算管理软件”--第1周:熟悉开发环境
- 【原创】OpenStack Swift源码分析(二)ring文件的生成
- 【原创】Swift服务启动架构分析
- 【原创】OpenStack Swift源码分析(三)proxy服务启动
- 【原创】OpenStack Swift源码分析(四)proxy服务响应
- 【原创】OpenStack Swift源码分析(五)keystone鉴权
- Swift中的一致性哈希算法分析
- 【原创】OpenStack Swift源码分析(六)object服务
- 【原创】OpenStack Swift源码分析(七)Replication服务
- 【原创】OpenStack Swift源码分析(八)Updater && Auditor服务
- Swift中映射与冗余