目录

文章目录

  • 目录
  • 虚拟网线(Veth-pair)

虚拟网线(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 包。

Linux 虚拟化网络技术 — 虚拟网线(Veth-pair)相关推荐

  1. Linux 虚拟化网络技术 — 虚拟网络协议栈

    目录 文章目录 目录 前言 Neutron L3 agent 概述 L3 agent的配置 虚拟路由器实现原理 总结 前言 本文通过 OpenStack Neutron L3 Agent 实现的 Li ...

  2. Linux 虚拟化网络技术 — 虚拟二层网卡(Tap)与虚拟三层隧道网卡(Tun)

    目录 文章目录 目录 虚拟二层网卡(Tap)与虚拟三层隧道网卡(Tun) tap/tun 作为用户空间与内核空间的数据传输通道 tap/tun 与内核网络协议栈的数据传输 虚拟二层网卡(Tap)与虚拟 ...

  3. Linux 虚拟化网络技术 — KVM + Linux Bridge 的网络虚拟化解决方案

    目录 文章目录 目录 KVM 虚拟机应用 Linux Bridge + VLAN 实现网络隔离 TSG: Failed to restart network KVM 虚拟机应用 Linux Bridg ...

  4. Linux 虚拟化网络技术 — 物理网卡的虚拟化(MACVLAN 和 MACVTAP)

    目录 文章目录 目录 物理网卡的虚拟化(MACVLAN 和 MACVTAP) MACVLAN MACVLAN 与 VLAN 子接口.Bridge 之间的区别 Private 模式 VEPA 模式 Br ...

  5. 图解几个与Linux网络虚拟化相关的虚拟网卡-VETH/MACVLAN/MACVTAP/IPVLAN

    Linux的网卡驱动中内含了很多"虚拟网卡".早先的文章曾经详细分析过tun,ifb等虚拟网卡,类似的思路,在虚拟化大行其道的趋势下,Linux源码树中不断增加对"网络虚 ...

  6. (OK) 图解几个与Linux网络虚拟化相关的虚拟网卡-VETH/MACVLAN/MACVTAP/IPVLAN

    http://blog.csdn.net/dog250/article/details/45788279 Linux的网卡驱动中内含了很多"虚拟网卡".早先的文章曾经详细分析过tu ...

  7. 图解几个与Linux网络虚拟化相关的虚拟网卡-VETH/MACVLAN/MACVTAP/IPVLAN(转)

    Linux的网卡驱动中内含了很多"虚拟网卡".早先的文章曾经详细分析过tun,ifb等虚拟网卡,类似的思路,在虚拟化大行其道的趋势下,Linux源码树中不断增加对"网络虚 ...

  8. 零入门kubernetes网络实战-14->基于veth pair、namespace以及路由技术,实现跨主机命名空间之间的通信测试案例

    <零入门kubernetes网络实战>视频专栏地址 https://www.ixigua.com/7193641905282875942 本篇文章视频地址(稍后上传) 本篇文章继续提供测试 ...

  9. Linux物理网络和虚拟网络对比

    一 传统二层网络 在一个传统的物理网络里.可能有一组物理的Server,上面分布运行有各种各样的应用,比如Web服务.数据库服务等.为了彼此相互通信,每个物理Server都拥有一个或多个物理网卡(NI ...

最新文章

  1. mahout相关笔记
  2. 专家提醒:计算机专业毕业生求职三要点!
  3. (转)光照图的理论和实践
  4. java await signal_【Java并发008】原理层面:ReentrantLock中 await()、signal()/signalAll()全解析...
  5. 【TensorFlow】实现、训练并评估简单的回归模型和分类模型
  6. 华为可以看游戏时长吗_怎么测试华为手机玩游戏的帧率情况
  7. html 页面重复度高,html – CSS背景渐变重复问题
  8. 根据ip获取经纬度_PHP使用百度地图获取指定地址坐标:创建AK(图文+视频)
  9. WP7开发平台介绍及开发注意事项【WP7学习札记之二】
  10. 【手势识别】基于matlab GUI SIFT+SVM算法手势识别【含Matlab源码 1789期】
  11. 无法访问srv解析_访问本地项目,php不被解析,出现文件下载
  12. WinDbg蓝屏分析入门
  13. 4.1日预测及操作建议
  14. 关于软件测试未来发展趋势分析与总结
  15. “数据分析师”招聘信息的数据分析
  16. linux终端下如何分屏,ubuntu terminal 终端分屏
  17. 基于PHP+MySQL托管中心管理系统的设计与实现
  18. ping oracle 地址,使用 ping 命令探测远程主机 - Oracle Solaris 管理:IP 服务
  19. 解决误删Android系统的tmp目录
  20. 配置Hive在mysql上的元数据库时Underlying cause: java.lang.ClassNotFoundException : com.mysql.jdbc.Driver

热门文章

  1. Swift版iOS游戏框架Sprite Kit基础教程下册
  2. Xamarin.Forms开发实战基础篇大学霸内部资料
  3. 北航计算机学院编译原理,1 北航本科编译原理课件课本 张莉.pdf
  4. python 条件语句漫画解析_【Python】解析Python中的条件语句和循环语句
  5. python控制苹果手机触摸屏失灵怎么办_iphone触摸屏失灵怎么办 iphone触摸屏失灵解决办法【详解】...
  6. 十天征服单片机百度云_单片机资料百度盘.
  7. Xcode 报错Could not find developer disk image,iOS10
  8. Vmware 下安装Arch Linux
  9. eeglab教程系列(15)-绘制独立成分ERP贡献
  10. 脑电信号预处理--去趋势化(Detrended fluctuation analysis)