问题导读
1.如何查看namespace?
2.如何判断VEH Pair?
3.Open vSwitch中计算节点和网络节点、网桥之间是如何连接的?
下面是SDN中一些概念
- TAP:虚拟网络设备,可以是网卡
- VEH Pair:虚拟网络对,可以理解为虚拟网线
- Linux Bridge:Linux网桥
- Open vSwitch:虚拟交换机
namespace
namespace的作用主要是命名更加的规范
查看命名空间
[mw_shl_code=bash,true] ip netns[/mw_shl_code]
每产生一个openstack实例,就会产生四个虚拟网络设备
TAP
什么是tap设备?TAP是操作系统内核中的虚拟网络设备
TAP设备在Neutron中出现了两个地方:
一个是实例TAP
一个是路由TAP
这两个TAP分别是什么?
如何在实例中查找tap设备
首先进入/etc/libvirt/qemu
[mw_shl_code=bash,true] cat instance-0000001a.xml[/mw_shl_code]
显示内容:[mw_shl_code=xml,true]<!--
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
virsh edit instance-0000001a
or other application using the libvirt API.
-->
<domain type='qemu'>
<name>instance-0000001a</name>
<uuid>d866d77c-5157-47ab-af3c-3a80933ce8c6</uuid>
<metadata>
<nova:instance xmlns:nova="http://openstack.org/xmlns/libvirt/nova/1.0">
<nova:package version="2014.2.2"/>
<nova:name>demo-instance1</nova:name>
<nova:creationTime>2015-06-04 08:43:03</nova:creationTime>
<nova:flavor name="m1.tiny">
<nova:memory>512</nova:memory>
<nova:disk>1</nova:disk>
<nova:swap>0</nova:swap>
<nova:ephemeral>0</nova:ephemeral>
<nova:vcpus>1</nova:vcpus>
</nova:flavor>
<nova:owner>
<nova:user uuid="73339fb8f0644cfe904afc7d70793fe1">demo</nova:user>
<nova:project uuid="255f0f273f1048668c4e91550dd3c16e">demo</nova:project>
</nova:owner>
<nova:root type="image" uuid="daa57d75-319a-4542-9435-95df8729b114"/>
</nova:instance>
</metadata>
<memory unit='KiB'>524288</memory>
<currentMemory unit='KiB'>524288</currentMemory>
<vcpu placement='static' cpuset='0'>1</vcpu>
<sysinfo type='smbios'>
<system>
<entry name='manufacturer'>OpenStack Foundation</entry>
<entry name='product'>OpenStack Nova</entry>
<entry name='version'>2014.2.2</entry>
<entry name='serial'>564ddce5-22e5-e31f-3d17-38f8e2a80daa</entry>
<entry name='uuid'>d866d77c-5157-47ab-af3c-3a80933ce8c6</entry>
</system>
</sysinfo>
<os>
<type arch='x86_64' machine='pc-i440fx-trusty'>hvm</type>
<boot dev='hd'/>
<smbios mode='sysinfo'/>
</os>
<features>
<acpi/>
<apic/>
</features>
<cpu mode='host-model'>
<model fallback='allow'/>
<topology sockets='1' cores='1' threads='1'/>
</cpu>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
<emulator>/usr/bin/qemu-system-x86_64</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2' cache='none'/>
<source file='/var/lib/nova/instances/d866d77c-5157-47ab-af3c-3a80933ce8c6/disk'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</disk>
<controller type='usb' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
</controller>
<controller type='pci' index='0' model='pci-root'/>
<interface type='bridge'>
<mac address='fa:16:3e:e1:8f:cf'/>
<source bridge='qbr16b55972-68'/>
<target dev='tap16b55972-68'/>
<model type='virtio'/>
<driver name='qemu'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<serial type='file'>
<source path='/var/lib/nova/instances/d866d77c-5157-47ab-af3c-3a80933ce8c6/console.log'/>
<target port='0'/>
</serial>
<serial type='pty'>
<target port='1'/>
</serial>
<console type='file'>
<source path='/var/lib/nova/instances/d866d77c-5157-47ab-af3c-3a80933ce8c6/console.log'/>
<target type='serial' port='0'/>
</console>
<input type='tablet' bus='usb'/>
<input type='mouse' bus='ps2'/>
<input type='keyboard' bus='ps2'/>
<graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0' keymap='en-us'>
<listen type='address' address='0.0.0.0'/>
</graphics>
<video>
<model type='cirrus' vram='9216' heads='1'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</video>
<memballoon model='virtio'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
<stats period='10'/>
</memballoon>
</devices>
</domain>[/mw_shl_code]
其中我们比较关心的内容:
[mw_shl_code=xml,true]<interface type='bridge'>
<mac address='fa:16:3e:e1:8f:cf'/>
<source bridge='qbr16b55972-68'/>
<target dev='tap16b55972-68'/>
<model type='virtio'/>
<driver name='qemu'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>[/mw_shl_code]
qbr16b55972-68
tap16b55972-68
我们看到上面mac地址为:
[mw_shl_code=bash,true]fa:16:3e:e1:8f:cf[/mw_shl_code]
然后进入虚拟机:
ip a 查看mac地址:
我们看到mac地址是一致的,那么如何找到tap设备。我们进入计算节点
[mw_shl_code=bash,true]ip a[/mw_shl_code]
这样我们就找到了实例的tap设备
——————————————————————————————
在dhcp中也有tap设备
这时候,我们通过 ip netns
然后:
[mw_shl_code=bash,true]ip netns exec qdhcp-c5820bc3-9612-407b-8f67-eaf167192c7f ip a[/mw_shl_code]
这个其实DHCP server
VEH Pair
将两个网卡连接起来,可以理解为虚拟网线(连接虚拟网桥、交换机)
我们来看看:
在实例的tap连接qbr
[mw_shl_code=bash,true]qvb16b55972-68[/mw_shl_code]
通过
[mw_shl_code=bash,true] brctl show[/mw_shl_code]
bridge name | bridge id | STP enabled | interfaces | qbr16b55972-68 | 8000.be620ce0a3f9 | no | qvb16b55972-68
tap16b55972-68 |
通过[mw_shl_code=bash,true] ovs-vsctl show[/mw_shl_code]
我们看到上面红字部分
[mw_shl_code=bash,true]qvo16b55972-68[/mw_shl_code]
如何判断是否是虚拟网络对,通过ethtool来查看
[mw_shl_code=bash,true]ethtool -S qvo16b55972-68[/mw_shl_code]
[mw_shl_code=bash,true]NIC statistics:
peer_ifindex: 11[/mw_shl_code]
[mw_shl_code=bash,true]ethtool -S qvb16b55972-68[/mw_shl_code]
[mw_shl_code=bash,true]NIC statistics:
peer_ifindex: 10[/mw_shl_code]
这样我们看到他们的序号是连续的
Linux Bridge
为什么
上图
qbr16b55972-68
bridge name | bridge id | STP enabled | interfaces | qbr16b55972-68 | 8000.be620ce0a3f9 | no | qvb16b55972-68
tap16b55972-68
|
Open Vswitch
计算节点
[mw_shl_code=bash,true]9c0f2e03-f10c-4928-ac6f-8fbeaa171d81
Bridge br-int
fail_mode: secure
Port patch-tun
Interface patch-tun
type: patch
options: {peer=patch-int}
Port "qvo16b55972-68"
tag: 1
Interface "qvo16b55972-68"
Port br-int
Interface br-int
type: internal
Port "tapfaf7f822-04"
Interface "tapfaf7f822-04"
type: internal
Bridge br-tun
Port patch-int
Interface patch-int
type: patch
options: {peer=patch-tun}
Port br-tun
Interface br-tun
type: internal
Port "gre-0a000115"
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"[/mw_shl_code]
网络节点
[mw_shl_code=bash,true]689c0ac3-e282-4638-822c-9444333396e5
Bridge br-int
fail_mode: secure
Port int-br-ex
Interface int-br-ex
type: patch
options: {peer=phy-br-ex}
Port br-int
Interface br-int
type: internal
Port patch-tun
Interface patch-tun
type: patch
options: {peer=patch-int}
Port "qr-bd91f930-92"
tag: 1
Interface "qr-bd91f930-92"
type: internal
Port "tap19c5765e-d9"
tag: 1
Interface "tap19c5765e-d9"
type: internal
Bridge br-ex
Port br-ex
Interface br-ex
type: internal
Port "qg-a5a35520-41"
Interface "qg-a5a35520-41"
type: internal
Port "eth2"
Interface "eth2"
Port phy-br-ex
Interface phy-br-ex
type: patch
options: {peer=int-br-ex}
Bridge br-tun
Port br-tun
Interface br-tun
type: internal
Port "gre-0a00011f"
Interface "gre-0a00011f"
type: gre
options: {df_default="true", in_key=flow, local_ip="10.0.1.21", out_key=flow, remote_ip="10.0.1.31"}
Port patch-int
Interface patch-int
type: patch
options: {peer=patch-tun}
ovs_version: "2.0.2"[/mw_shl_code]
相关内容:
openstack【juno】入门高级篇:为何你的实例ping不通外网【详述】
openstack【juno】入门高级篇3:openstack的Neutron中虚拟网络设备介绍
|