网络虚拟化技术与应用场景

MacVTap和vhost-net技术原理

VM  <---->   虚拟网卡  <----> 虚拟化层  <---->  内核网桥  <----> 物理网卡

vhost-net技术使虚拟机的网络通信绕过用户空间的虚拟化层,必须使用Virtio半虚拟化的网卡
    MacVTap则是跳过内核的网桥

传统桥接方案

<interface  type=‘bridge‘>
        <mac address=‘00:16:42:34:45:6f‘/>
        <source bridge=‘br0‘/>
        <targetdev=‘tap0‘/>
        <model type=‘Virtio‘/>
        <alias name=‘net0‘/>
        <address type=‘pci‘ domain=‘0x0000‘ bus=‘0x00‘ slot=‘0x03‘ function=‘0x0‘/>
    </interface>

vhost-net是对于Vritio的优化,Virtio本来是设计用于进行客户系统的前端与VMM的后端通信,减少硬件虚拟化方式下根模式和非根模式的转换
vhost-net是后端优化方案.
不使用vhost-net,进入CPU的根模式后,需要进入用户态将数据发送到tap设备后,再次切入内核态,使用vhost-net方式后,进入内核态后不需要再进行内核态和用户态的切换,进一步减少特权级切换的开销.
    MacVTap方案

> ip link add link eth1 name MacVTap0 type MacVTap
        > ip link set MacVTap0 address 1a:34:34:34:45:42 up
        > ip link show MacVTap0

<interface type=‘direct‘>
            <mac address=‘1a:343434:45:42‘/>
            <source dev=‘eth1‘ mode=‘bridge‘/>
            <model type=‘e1000‘/>
            <address type=‘pci‘ domain=‘0x0000‘ bus=‘0x00‘ slot=‘0x03‘ function=‘0x0‘/>
        </interface>

网卡的中断与多队列

Linux内核调用中断处理程序的函数来处理中断,由于中断会频繁发生,必须要将一些繁重且不非常重要的任务从中断处理程序中剥离出来,这一部分在Linux称为下半部
    3中处理下半部的方法   
        软中断
        tasklet
        工作队列

高负载的网卡是软中断产生的大户,很容易形成瓶颈.并且在相当长的时间里是CPU0来处理

网卡多队列  网卡的数据请求通过多个CPU来处理

RSS是硬件特性,实现多队列,将 不同的流发到不同的CPU上, 同一数据流始终在同一个CPU上, 避免CPU的并行性和TCP的顺序性发生冲突.

ls /sys/class/net/eth0/queues/  
        会看到系统中看到网卡对应多个发送和接收队列

irqbalance 优化中断分配
        工作模式
            performance
            power-save
                    https://gist.github.com/syuu1228/4352382   网卡绑定中断的脚本

多队列Virtio网卡

网卡PCI PassThrough技术

> virsh nodedev -list -tree
        > virsh nodedev-dumpxml.pci_0000_04_00_0

SR-IOV技术
        the Single Root I/O Virtualization 是一个将PCI-E设备共享给虚拟机使用的标准.多用在网络设备上,理论上也可以支持其他的PCI设备

SR-IOV技术是一种硬件解决方案,提供了一种从硬件上绕过系统的虚拟化层,并且使没有虚拟机能有单独的内存地址,中断,DMA流

PFs physical functions 拥有全功能PCI-E

VFs Virtual Functions 只有轻量级的PCI-E 每个PF最多可以有64000个虚拟功能VF

网卡SR-IOV
         需要先配置宿主机的PF,然后将子网卡通过网卡独占的方式供虚拟机使用.

modprobe igb
         modprobe igb max_vfs=7
         千兆网卡最多支持8个VF(0-7)
         万兆网卡最多支持64个VF

BIOS打开SR-IOV
         modprobe -r  igb
         echo "option igb max_vfs=7" >> /etc/modprobe.d/igb.conf
         lspci |grep 82576
         虚拟机使用网卡独占的方式使用子网卡

virsh nodedev-list|grep 0b

Open vSwitch

>  ovs-vsctl add-br br0   #创建网桥
            >  ovs-vsctl add-port br0 eth1

编辑虚拟机文件
            <interface type=‘bridge‘>
                <mac address=‘xx:xx:xx:xx:xx:xx‘ />
                <source bridge=‘br0‘/>
                <virtualport type=‘KVM‘/>
                <vlan>
                    <tag id=‘2‘/>
                </vlan>
                <targetdev=‘tap1‘/>
                <model type=‘Virtio‘/>
            </interface>

ovs-vsctl show

>ovs-vsctl set port tap1 tag=3 通过改变虚拟机对应的tap网卡设置VLAN tag即可

ovs-vsctl add-br br0
            ovs-vsctl add-bond br0 bond0 eth2 eth3 lacp=active
            ovs-vsctl set port bond0 bond_mode=balance-slb
            ovs-appctl bond/show bond0

连接网格open vSwitch网桥
            1.利用VETH设备
            ovs-vsctl add-br br0
            ovs-vsctl add-br br1
            ip link add name veth0 type veth peer name veth1
            ovs-vsctl add-port br0 veth0
            ovs-vsctl add-port br1 veth1
            2.利用Open vSwitch的pacth类型的端口
                ovs-vsctl add-br br0
                ovs-vsctl add-br br1
                ovs-vsctl add-port br0 patch-to-br0
                ovs-vsctl set interface patch-to-br0 type=patch
                ovs-vsctl set interface patch-to-br0 options:peer=patch-to-br1
                ovs-vsctl add-port br1 patch-to-br1
                ovs-vsctl set interface patch-to-br1 type=patch
                ovs-vsctl set interface patch-to-br1 options:peer=patch-to-br0

宿主机多网卡绑定
             cat /etc/modprobe.d/nicbond.conf
             alias bond0 bonding
             options bond0 mode=1 miimon=100

配置聚合接口
             cd /etc/sysconfig/network-scripts
             cat ifcfg-bond0
             DEVICE=bond0
             ONBOOT=YES
             BRIDGE=br1

配置子网卡
             cat ifcfg-enp4s0f0
             HWADDR=
             TYPE=Ethernet
             BOOTPROTO=none
             NAME=enp4s0f0
             UUID=
             ONBOOT=yes
             MASTER=bond0
             SLAVE=yes
             配置虚拟网桥
             cat ifcfg-br1
             DEVICE=br1
             TYPE=Bridge
             IPADDR=192.168.20.200
             NETMASK=255.255.255.0
             ONBOOT=yes

内容从<深度实践KVM>一书总结

时间: 2024-08-15 02:05:56

网络虚拟化技术与应用场景的相关文章

53 kvm及libvirt、使用virsh管理kvm虚拟机、网络虚拟化技术基础、网络名称空间netns用法详解

01 kvm及libvirt [[email protected] ~]# yum install libvirt libvirt-client python-virtinst virt-manager virt-install -y [[email protected] ~]# yum -y install qemu-kvm [[email protected] ~]# systemctl start libvirtd.service #创建桥 [[email protected] ~]# v

网络虚拟化技术(一) Cisco VSS

VSS使用机箱间NSF/SSO作为两台机箱间的主要高可用性机制.一个虚拟交换机成员机箱将作为主用虚拟交换机成员,另一成员将处于控制面板的热等待状态.这两个机箱的数据面板均可用,因此总流量转发能力为1440Gbps.当一个虚拟交换机成员发生故障时,网络中无需进行协议重收敛.接入层或核心层交换机继续转发流量,因为它们只会检测出EtherChannel捆绑中有一个链路故障,所以不需要重收敛任何协议.通过VSS传输的流量不会发生任何中断.在传统模式中,一台交换机发生故障就会导致STP.HSRP和路由协议

虚拟化六、网络虚拟化技术2

一.交换机 1.VLAN VLAN(Virtual Local Area Network)的中文名为"虚拟局域网". 虚拟局域网(VLAN)是一组逻辑上的设备和用户,这些设备和用户并不受物理位置的限制,可以根据功能.部门及应用等因素将它们组织起来,相互之间的通信就好像它们在同一个网段中一样,由此得 名虚拟局域网. VLAN是一种比较新的技术,工作在OSI参考模型的第2层和第3层,一个VLAN就是一个广播域,VLAN之间的通信是通过第3层的路由器来完成的.与传统的局域网技术相比较,VLA

虚拟化五、网络虚拟化技术

一.交换机 1.VLAN VLAN(Virtual Local Area Network)的中文名为"虚拟局域网". 虚拟局域网(VLAN)是一组逻辑上的设备和用户,这些设备和用户并不受物理位置的限制,可以根据功能.部门及应用等因素将它们组织起来,相互之间的通信就好像它们在同一个网段中一样,由此得名虚拟局域网.VLAN是一种比较新的技术,工作在OSI参考模型的第2层和第3层,一个VLAN就是一个广播域,VLAN之间的通信是通过第3层的路由器来完成的.与传统的局域网技术相比较,VLAN技

网络虚拟化技术(一): Linux网络虚拟化

创建虚拟网络环境 使用命令 $ ip netns add net0 可以创建一个完全隔离的新网络环境,这个环境包括一个独立的网卡空间,路由表,ARP表,ip地址表,iptables,ebtables,等等.总之,与网络有关的组件都是独立的. ip命令需要root权限的,但是由于本文大量使用ip命令,于是笔者给ip命令添加了capability,使普通用户也能使用ip命令 使用命令 $ ip netns list net0 可以看到我们刚才创建的网络环境 进入虚拟网络环境 使用命令 $ ip ne

网络虚拟化技术(二): TUN/TAP MACVLAN MACVTAP

TUN 设备 TUN 设备是一种虚拟网络设备,通过此设备,程序可以方便得模拟网络行为.先来看看物理设备是如何工作的: 所有物理网卡收到的包会交给内核的 Network Stack 处理,然后通过 Socket API 通知给用户程序.下面看看 TUN 的工作方式: 普通的网卡通过网线收发数据包,但是 TUN 设备通过一个文件收发数据包.所有对这个文件的写操作会通过 TUN 设备转换成一个数据包送给内核:当内核发送一个包给 TUN 设备时,通过读这个文件可以拿到包的内容. 如果我们使用 TUN 设

网络虚拟化技术对比

标题索引 追朔原因 技术对比 总结配置 本文出自 "一步一印,有印为证" 博客,谢绝转载!

让网络更轻盈——网络功能虚拟化技术的现状和未来(中兴通讯)

让网络更轻盈--网络功能虚拟化技术的现状和未来 2014-08-19     作者:周宇翔(中兴通讯) 随着智能终端和移动互联网的发展,"通信"早已脱离传统的话音和短信,人与人广泛连接,甚至物物相连也成为可期的未来,各种OTT类新业务和商业模式不断在挑战运营商的传统优势地位.传统电信网络基于私有平台部署,采用专用设备,部署周期长.运维复杂,一些运营商意识到想要轻盈转身,必须向这些互联网运营商学习,从根本上改变电信网络的部署和运维方式.2012年10月,AT&T.英国电信.德国电

从SDN鼻祖Nicira到VMware NSX 网络虚拟化平台的简单探讨

以前的大二层技术,一般是在物理网络底层使用IS-IS路由技术,再在此基础之上,实现数据中心网络的二层扩展,如公有的Trill.SPB技术和Cisco私有的OTV.Fabricpath技术:前沿一些的网络虚拟化技术,使用了VXLAN.NVGRE等协议,突破VLAN和MAC的限制,将数据中心的大二层网络扩展的更大.而使用VMware NSX,则更进一步--我们可以对网络提供已对计算和存储实现的相同虚拟化功能.就像服务器虚拟化可以通过编程方式创建.删除和还原基于软件的虚拟机以及拍摄其快照一样,NSX网