文档介绍:OpenStack与Docker集成
张华 zhhuabj
http://blog./quqi99
2014年12月19日
Agenda
一些有利于理解的原理
高密度容器下网络设计的主要挑战
Neutron L2pop特性
Open questions
网络虚拟化技术演进基本思想
数据包从虚拟机到物理机的路径是:虚拟机进程(用户空间) -- 虚拟TAP网卡(用户空间)-- Hypervisor层-- 网桥(内核空间) -- 物理网卡
总的原则:减少层数,让虚拟网卡趋近物理网卡的性能
virtio,vhost,vhost-user|snabb,openonload
virtio, 拷贝多次,且切换两次
+---------+------+--------+--------+
| +------+ +---------+ |
| user | | | | |
| space | | | guest | |
| | | | | |
| +----+ qemu | | +-+------+ |
| | | | | | virtio | |
| | | | | | pci | |
| | +------+ +-+---++---+ |
| | | |
| | |
+-+-----+------- ------+--+-------+-
| |tap | +--------+ | |
| +-----+ +--+-------+ |
| kernel |
+------------------------------ ------+
vhost, 首先guest 通过vhost共享内存;模块直接读取tap又少了一次切换
+--------+------+-----+------+--+
| +------+ +---------+ |
| user | | | | |
| space | | | guest | |
| | | | | |
| | qemu | | +-+------+ |
| | | | | virtio | |
| | | | | pci | |
| +------+ +-+---++---+ |
| | |
| |
+-+-----+--+-+----+----+----+--+
| |tap | |.ko| | |
| +---^-+ +----+---- +----+---+
| |-------| kernel |----------| |
+-------------------------------------
vhost-user, 同在用户态的snabb与guest mem通过vhost共享内存;其次snabb直接写驱动操作网卡
+--------------+------+--+-----+--+
| +------+ +----------+ |
| user | | | | |
| space | | | guest | |
| | | | | |
| + ----+ | qemu | | +-+----+ |
| | vhost | | | | | virtio | |
| | backend | | | | | driver | |
| +---- + +------+ +-+---++--| snabb |
| | |
+------------------------------ +--+
| phy nic
+-------------+---------------+
kernel |
+----------------------------------+
物理网卡的发展
VMDQ将原来VMM中L2 virtual switch实现的队列功能通过硬件实现, 软件交换机无需排序和路由操作
SR-IOV更彻底,将二层交换的功能也通过硬件实现,并且创建不同的虚拟功能(VF)的方式,呈现给虚机的就是具有独立的中断号的物理网卡,因为虚机直接和物理网卡通信,不需要经过软件交换机, 虚机与VF之间通过DMA传输
内核态协议栈& 用户态协议栈
协议栈的主要处理开销:中断处理、内存拷贝、系统调用、协议处理
千兆万兆网络出现后,更加频繁的硬件中断、软中断及上下文切换都会占据大量的CPU周期。
传统协议栈针对通用性设计,区分内核空间和用户空间,应用无法直接访问协议栈的地址空间,因此协议栈的安全性较高。有数据表明,在Linux协议栈中,%。
系统调用是内核态向用户态提供的一组API集,一般通过软中断实现,会产生较大的上下文开销。
协议处理,耗时主要包括:校