Linux 虚拟化网络技术 — 虚拟网线(Veth-pair)

Veth-pair是虚拟网络设备中的一种连接方式,它形成一对设备,模拟实际网线功能,用于连接两个虚拟网络设备或Namespace。数据包通过veth设备时,会在MAC层进行转发,实现网络通信。这一过程涉及ARP请求、ICMP通信和路由表的使用,是理解虚拟网络和Namespace通信的关键。

虚拟网线(Veth-pair)
Veth-pair 不是一个设备,而是一对设备,作为虚拟网线用于连接两个虚拟网络设备。veth pair 是根据数据链路层的 MAC 地址对网络数据包进行转发的过程来实现的,本质是反转通讯数据的方向,需要发送的数据会被转换成需要收到的数据重新送入内核网络层进行处理,从而间接的完成数据的注入。

veth pair 在虚拟网络设备中是作为 “网线” 的存在,将 tap 之间,tap 与 Bridge 之间连接起来。veth pair 通常还与 Network namespace 一起配合,实现不同 Network namespace 中的网络设备传输。

 

如上图:

  1. 首先 ping 程序构造 ICMP echo request,通过 Socket API 发给内核网络协议栈。
  2. 由于 ping 指定了走 veth0 口,如果是第一次,则需要发 ARP 请求,否则协议栈直接将数据包交给 veth0。
  3. 由于 veth0 连着 veth1,所以 ICMP request 直接发给 veth1。
  4. veth1 收到请求后,交给另一端的协议栈。
  5. 协议栈看本地有 10.1.1.3 这个 IP,于是构造 ICMP reply 包,查看路由表,发现回给 10.1.1.0 网段的数据包应该走 lo 口,于是将 reply 包交给 lo 口(会优先查看路由表的 0 号表,ip route show table 0 查看)。
  6. lo 收到协议栈的 reply 包后,啥都没干,转手又回给协议栈。
  7. 协议栈收到 reply 包之后,发现有 Socket 在等待包,于是将包给 socket。
  8. 等待在用户态的 ping 程序发现 Socket 返回,于是就收到 ICMP 的 reply 包。
### 虚拟网卡的配置与网络虚拟化的实现 #### 一、虚拟网卡的基础概念 虚拟网卡是一种通过软件模拟真实物理网卡功能的技术,广泛应用于虚拟化环境和容器技术中。其主要目的是为多个虚拟机或容器提供独立的网络接口,从而实现高效的资源分配和管理。 在 VMware 的虚拟化环境中,存在三种常见的虚拟网络模式:NAT 模式下的 `VMnet8`、Host-Only 模式的 `VMnet1` 和桥接模式下的 `VMnet0`[^1]。这些虚拟网络由 VMware 自动配置生成,无需用户手动干预。其中,`VMnet8` 和 `VMnet1` 提供 DHCP 服务以动态分配 IP 地址,而 `VMnet0` 则不提供此类服务。 --- #### 二、Linux 中的 veth 技术Linux 容器技术中,veth(Virtual Ethernet Pair)是另一种重要的虚拟网卡方案。自 Linux Kernel 2.6 版本起引入了网络命名空间的概念,用于隔离不同的网络环境。为了使隔离的网络命名空间能够相互通信,Linux 提供了 veth 对作为解决方案[^2]。 veth 并不是单一的虚拟网卡,而是成对存在的虚拟以太网设备。每一对 veth 设备类似于一根交叉网线连接两块物理网卡,使得数据可以在两个网络命名空间之间传递。这种设计不仅实现了高效的数据交换,还保持了良好的隔离性和灵活性。 以下是创建并配置 veth 接口的一个简单示例: ```bash # 创建一对 veth 接口 eth0 和 eth1 ip link add name eth0 type veth peer name eth1 # 将 eth0 移入指定的网络命名空间 ns1 ip netns add ns1 ip link set eth0 netns ns1 # 设置接口状态为 up ip netns exec ns1 ip addr add 192.168.1.1/24 dev eth0 ip netns exec ns1 ip link set eth0 up ip addr add 192.168.1.2/24 dev eth1 ip link set eth1 up ``` 上述脚本展示了如何利用 veth 实现跨命名空间的通信。 --- #### 三、虚拟化网卡的关键特性 虚拟化网卡的核心在于满足两种需求:对外部网络的流量管理和对内部虚拟机的支持。具体而言: 1. **虚拟接入** VN-TAG 或 VEPA 协议被用来标记来自不同虚拟机的流量,以便在网络层面实施针对性的安全策略和 QoS 控制。这有助于在整个数据中心范围内维持清晰的流量划分和性能保障[^3]。 2. **虚拟通道** 在服务器内部,虚拟化网卡需为每个虚拟机提供一个独立且透明的网络通道。该通道应尽可能模仿真实的物理网络行为,确保虚拟机不会感知到任何额外的抽象层影响。 --- #### 四、总结 无论是 VMware 的虚拟网络还是基于 Linuxveth 技术,都体现了现代计算架构下对灵活网络支持的需求。前者适用于传统的虚拟化场景,后者则是容器技术和微服务架构的重要组成部分。两者共同推动了云计算和分布式系统的快速发展。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值