网络
VF
TAP/TUN
虚拟网络设备,TAP工作在二层,TUN工作在三层
Linux Bridge(网桥)
是工作在二层的虚拟网络设备,功能类似于物理的交换机。
普通的网络设备来说,只有两端,网桥可以有多端口。
MACVTAP
新的网络设备模型,简化虚拟化环境下的桥接网络,代替传统的TAP+Bridge组合,同时支持新的虚拟化网络技术。
Open vSwitch
虚拟交换机
veth pair
不同命名空间的网络之间的通信机制,类似管道。
bridge-utils包
网桥有关的操作,brctl命名+ip address命令。
iptables(netfilter)/NAT
NAT也可以被称作IP伪装(IP Masquerading),可以分为目的地址转换(DNAT)和源地址转换(SNAT)两类。NAT功能有iptables实现,iptables是基于Linux内核的功能强大的防火墙。
netfilter提供了一整套对hook函数管理的机制,可以在数据包流经的5处关键地方(Hook点),分别是PREROUTING(路由前)、INPUT(数据包入口)、OUTPUT(数据包出口)、FORWARD(数据包转发)、POSTROUTING(路由后),写入一定的规则对经过的数据包进行处理,规则一般的定义为“如果数据包头符合这样的条件,就这样处理数据包”。
iptables主要包含了FILTER、NAT和MANGLE三张常用表,分别负责数据包的过滤、
网络地址转换及数据包内容的修改。iptables -t 命令
VLAN/VxLAN
二层隔离,划分多个LAN。
VxLAN:基于隧道(Tunnel)的一种网络虚拟化技术,二层报文用三层协议进行封装。
NFV
NFVi数据平面加速
Virtio是QEMU/KVM下的半虚拟化设备框架
SR-IOV是一种PCIe总线多路复用技术
IOMMU支持DMA重映射和中断重映射。
OVS-DPDK
基于dpdk的ovs
OVS PMD 线程 轮询模式驱动程序(Poll Mode Driver,PMD)线程负责处理DPDK数据路径上的大部分工作,并执行诸如输入端口的连续轮询等任务。
FD.IO
FD.IO是许多项目和库的一个集合,基于DPDK并逐渐演化,支持在通用硬件平台上部署灵活可变的业务。
子项目:
VPP(Vector Packet Processing,矢量报文处理):是一个模块化和可扩展的软件框架,用于创建网络数据平面应用程序
SR-IOV
使网络流量旁路管理程序,直接转到虚拟机。
NFVi
网络设备按照不同的虚拟化实现方式,可以粗略地分为全模拟(Fully Emulated)、半虚拟化(Para-Virtualized)和硬直通(Pass-thru)。对于主流的VMM及其网络设备,DPDK支持相对都比较完善。全模拟和半虚拟化类型的虚拟主机接口主要与 NFVi 的 Relay 策略一起工作,而硬直通 NFVi 一般采用Bypass 策略。如图3-21所示,E1000就是由 VMM 全模拟的设备接口,Virtio是QEMU/KVM下的半虚拟化设备,VF则是基于SR-IOV的功能,可用于硬直通。
Virtio
Virtio是QEMU/KVM下的半虚拟化设备框架,支持多种设备类型
硬直通
VFD(VF Daemon),硬直通性能好,但是不好支持热迁移
vDPA(vHost Data PathAcceleration)
下一代虚拟主机接口
linux内核
namespace
命名空间隔离,cpu,内存,网络硬件还是共享的,需要配合cgroup限制资源。
cgroup
限制、控制与分离一个进程组的资源(如CPU、内存、磁盘IO,网络IO,其他设备等)。
内核旁路技术
应用程序不通过内核直接操作硬件,DPDK、Netmap、OpenOnload及XDP等。
Netmap 把网卡的缓冲区从内核映射到用户空间,并且实现了自己的发送和接收报文的
netmap_ring来对应网卡的 NIC ring。现代网卡一般都支持多队列,每个队列对应着一个netmap_ring。(可使用mmap映射)
OpenOnload的底层I/O主要通过EF_VI绕过内核协议栈把网卡中部分网络流量直接发送到用户空间的协议栈中。
xdp:使用ebpf技术。
DDIO
Data Direct I/O,网卡数据直接存到LLC cache(三级cache)
内存大页
numa
dpdk
RSS
RSS(Receive-Side Scaling,接收方扩展),它是和硬件相关联的,必须要有网卡的硬件进行支持,RSS把数据包分配到不同的队列中,其中哈希值的计算公式在硬件中完
成的,也可以定制修改。
RSC
RSC(Receive Side Coalescing,接收方聚合)是TCP组包功能的硬件卸载。硬件组包功能实际上是硬件拆包功能的逆向功能。
GSO
TSO:TCP 包交由网卡进行切片
GSO(Generic Segmentation Offload)