网络虚拟化技术

网络虚拟化技术

数据包从虚拟机到物理机过程:

虚拟机 -> QEMU虚拟网卡 -> 虚拟化层 -> 内核网桥 -> 物理网卡

半虚拟化技术使数据包跳过QEMU虚拟网卡,从虚拟机直接到虚拟化层,
虚拟网卡性能排序:

半虚拟化网卡(virtio) > 全虚拟化网卡(e1000,rtl8139)

MacVTap 和vhost-net技术

  • MacVTap跳过内核网桥
  • vhost-net跳过虚拟化层
    使用vhost_net,必须使用Virtio半虚拟化网卡

MacVTap技术

简化虚拟化环境中的交换网络,代替传统的Linux TAP设备加Bridge设备组合
MacVTap设备有3中不同的工作模式:

  • VEPA
    同一物理网卡下的MacVTap设备之间的流量要发送到外部交换机,再由外部交换机转发回来,前提是交换机支持hairpin模式
  • Bridge
    类似传统的Linux Bridge,同一物理网卡下的MacVTap设备可以一直接通信
  • Private
    同一物理网卡下的MacVTap设备互相无法联通

创建MacVTap端口过程

ip link add link eth0 name MacVTap0 type MacVTap
ip link set MacVTap0 address 1a:in:in:ij:fa:sd up
ip link show MacVTap0

KVM虚拟机使用MacVTap网络
在xml文件配置如下

<interface type='direct'>
  <mac address='la:46:0b:ca:bc:7b'/>
  <source dev='eth0' mode='bridge' />
  <model type='e1000' />
  <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface >

虚拟机开启后,宿主系统会自动创建一台MacVTap设备给虚拟机使用,这台MacVTap设备附属于母设备eth0,工作模式为Bridge

vhost_net技术

运行一台虚拟机是由用户空间的 QEMU 和内核的 KVM 共同完成的, QEMU 负责模拟各种设备提供给虚拟机, KVM 负责完成 CPU 和内存的虚拟化。 Virtio 的后端处理程序一般是由用户空间的 QEMU 提供的。 为了进一步减少延迟、提高性能, 比较新的内核中增加了一个 vhost_net 的驱动模块, 在内核中实现了 Virtio 的后端处理程序。

xml文件配置

<interface type='bridge'> 
    <mac address=''/> 
    <source bridge='br0' /> 
    <model type='Virtio'/>
    <driver name="vhost"/>
    <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface >

网卡中断与多队列

1.物理网卡的中断与多队列

RSS 是网卡的硬件特性, 实现多队列, 将不同的流分发到不同的CPU上, 同一数据流始终在同一CPU 上, 避免 TCP的顺序性和 CPU 的并行性发生冲突。基于流的负载均衡, 解决了顺序协议和CPU并行的冲突及Cache热度问题。

查看网卡是否支持RSS:
ls /sys/class/net/eth0/queues/

2.绑定中断

CentOS系统中依靠 irqbalance服务优化中断分配,irqbalance服务用于优化中断分配,它会自动收集系统数据以分析使用模式,并依据系统负载状况将工作状态置于Performance mode 或 Power-save mode。

  • 处于Performance mode 时,irqb alance 会将中断尽可能均匀地分发给各个 CPU core,以充分利用CPU 多核, 提升性能。
  • 处于Power-save mode 时,irqbalance会将中断集中分配给第一个CPU, 以保证其他空闲 CPU 的睡眠时间,降低能耗。

irqbalance服务在大压力情况下,尤其是万兆网卡上,有中断漂移及分配不平均的现象。如果压力比较大,可以手工调整系统的网卡中断。

3.多队列Virtio网卡
查看是否支持:
grep IFF_MULTL_QUEUE /usr/include/Linux/if_tun.h
多队列Virtio网卡配置:

<interface type='bridge'>
  <mac address='52:54:00:43:6e:3f'/>
  <source bridge='clients' />
  <model type='Virtio' />
  <driver name='vhost' queues= 'N' />
  <address  type='pci' domain='0x0000' bus='0x0000' solt='0x0000' function='0x0' />
</interface>

N 1-8最多支持8个队列,在虚拟机上执行以下命令开启多队列网卡:
ethtool -L eth0 combined M
M 1-N,M小于等于N

网卡 PCI Passthrough 技术

如果虚拟机对网络的要求非常高, 通过 PCI Passthrough 技术将物理网卡直接给虚拟机使用, 虚拟机将单独使用网卡, 可以达到几乎和物理网卡一样的性能。
PCI Passthrough跳过QEMU虚拟网卡,虚拟化层,内核网桥,直接让虚拟机与物理网卡连接

PCI Passthrough配置
1.查看网卡设备信息:
lspci或者virsh nodedev-list --tree

  +- pci_0000_00_11_0
  |   |
  |   +- pci_0000_02_00_0
  |   |   |
  |   |   +- net_ens32_00_0c_29_c2_6d_e4
  |   |     
  |   +- pci_0000_02_01_0
  |       |
  |       +- net_ens33_00_0c_29_c2_6d_ee

2.得到pci_0000_02_00_0的配置信息
virsh nodedev-dumpxml pci_0000_02_00_0

<device>
  <name>pci_0000_02_00_0</name>
  <path>/sys/devices/pci0000:00/0000:00:11.0/0000:02:00.0</path>
  <parent>pci_0000_00_11_0</parent>
  <driver>
    <name>e1000</name>
  </driver>
  <capability type='pci'>
    <domain>0</domain>
    <bus>2</bus>
    <slot>0</slot>
    <function>0</function>
    <product id='0x100f'>82545EM Gigabit Ethernet Controller (Copper)</product>
    <vendor id='0x8086'>Intel Corporation</vendor>
  </capability>
</device>

3.编辑虚拟机xml文件,加入PCI设备信息

<hostdev mode='subsystem' type='pci' managed='yes'>
  <source>
    <address domain='0x0000' bus='0x04' slot='0x00' function='0x0'/>
  </source>
</hostdev>

SR-IOV虚拟化技术

SR-IOV (Single Root I/O Virtualization)是一个 PCI 快捷标准,把单一物理 PCI 功能扩展到同分散的虚拟化功能(VF)一样共享 PCI 资源。通过 PCI 设备分配,每个功能可以被不同虚拟机使用。

SR-IOV 上有两个功能类型。

  • Physical Functions (PFs): 拥有全功能PCI-E 功能,用于配置管理SR-IOV。
  • Virtual Functions (VFs) : 只有轻量级的 PCI-E 功能,只包含数据传输必要的资源, 但是资源可以 非常细致地配置, 每个 PF 最多可有 64 000 个与其关联的虚拟功能(Virtual Function, VF) 。

SR- IOV 标准允许高效共享PCI-E 设备, 有以下优点:

  • 良好的性能, 虚拟机绕过虚拟化层和系统, 直接访问硬件, 没有虚拟化层软件模拟的开销。
  • 降低成本, 减少了设备数量, 例如网卡的SR-IOV减少了网卡数量、交换机端口、网线。

2.网卡S R-IO V 的配置
SR-IOV 的配置需要先配置宿主机 PF , 然后将子网卡通过网卡独占的方式供虚拟机使用。
(1) 加载SR-IOV 内核模块
通过modprobe 命令加载igb 模块。
modprobe igb
实际加载的时候,需要激活虚拟功能(VF)。
modprobe igb max_vfs=7

千兆网卡最多 支持 8 个 VF ( 0 - 7 )。千兆网卡目前支待比较好的是Intel I350, Intel82576 虽然也支持SR-IOV, 但是只支持虚拟机是Linux 系统, Windows 系统不支持。
万兆网卡最多支持64 个 VF (0 - 63), Intel 的新一代万兆网卡 X520 ( 82599 )、X540都支持SR-IOV技术。
如果是主板集成的网卡 ,一 般在 BIOS 中 SR-IOV功能是关闭的。如果要使用 , 需要在 BIOS 中打开 SR-IOV选项。

如果需要重新设置VF, 可以删除模块再重新加载。
modprobe -r igb
将配置永久写入配置文件。
echo "options igb max_vfs=7" >> /etc/modprobe.d/igb.c onf
通过 lspci 命令可以看多主网卡和子网卡。

(2) 子网卡的使用
虚拟机可以通过网卡独占的方式使用子网卡。
virsh nodedev-list |grep 0b
虚拟机网卡xml 配置文件如下:

<interface type='hostdev' managed='yes'>
  <source>
    <address type='pci' domain='0' bus='11' slot='16' function='0'/>
  </source>
</interface>

虚拟机需要安装网卡驱动才能 使用子网卡,高版本的Linux系统可以自动识别子网卡,
Windows系统只能是2008 Sevrer 以上版本,并且要安装最新的 Intel网卡驱动。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容