TUN 设备

TUN 设备是一种虚拟网络设备,通过此设备,程序可以方便得模拟网络行为。先来看看物理设备是如何工作的:

所有物理网卡收到的包会交给内核的 Network Stack 处理,然后通过 Socket API 通知给用户程序。下面看看 TUN 的工作方式:

普通的网卡通过网线收发数据包,但是 TUN 设备通过一个文件收发数据包。所有对这个文件的写操作会通过 TUN 设备转换成一个数据包送给内核;当内核发送一个包给 TUN 设备时,通过读这个文件可以拿到包的内容。

如果我们使用 TUN 设备搭建一个基于 UDP VPN,那么整个处理过程就是这样:

数据包会通过内核网络栈两次。但是经过 App 的处理后,数据包可能已经加密,并且原有的 ip 头被封装在 udp 内部,所以第二次通过网络栈内核看到的是截然不同的网络包。

TAP 设备

TAP 设备与 TUN 设备工作方式完全相同,区别在于:

  • TUN 设备的 /dev/tunX 文件收发的是 IP 层数据包,只能工作在 IP 层,无法与物理网卡做 bridge,但是可以通过三层交换(如 ip_forward)与物理网卡连通。

  • TAP 设备的 /dev/tapX 文件收发的是 MAC 层数据包,拥有 MAC 层功能,可以与物理网卡做 bridge,支持 MAC 层广播

MACVLAN

有时我们可能需要一块物理网卡绑定多个 IP 以及多个 MAC 地址,虽然绑定多个 IP 很容易,但是这些 IP 会共享物理网卡的 MAC 地址,可能无法满足我们的设计需求,所以有了 MACVLAN 设备,其工作方式如下:

MACVLAN 会根据收到包的目的 MAC 地址判断这个包需要交给哪个虚拟网卡。单独使用 MACVLAN 好像毫无意义,但是配合之前介绍的 network namespace 使用,我们可以构建这样的网络:

由于 macvlan 与 eth0 处于不同的 namespace,拥有不同的 network stack,这样使用可以不需要建立 bridge 在 virtual namespace 里面使用网络。

MACVTAP

MACVTAP 是对 MACVLAN的改进,把 MACVLAN 与 TAP 设备的特点综合一下,使用 MACVLAN 的方式收发数据包,但是收到的包不交给 network stack 处理,而是生成一个 /dev/tapX 文件,交给这个文件:

由于 MACVLAN 是工作在 MAC 层的,所以 MACVTAP 也只能工作在 MAC 层,不会有 MACVTUN 这样的设备。

网络虚拟化技术(二): TUN/TAP MACVLAN MACVTAP相关推荐

  1. linux虚拟网络设备-- TUN/TAP MACVLAN MACVTAP(八)

    TUN 设备 TUN 设备是一种虚拟网络设备,通过此设备,程序可以方便得模拟网络行为.先来看看物理设备是如何工作的: 所有物理网卡收到的包会交给内核的 Network Stack 处理,然后通过 So ...

  2. 网络虚拟化技术为双11提供灵动网络

    摘要: 12月13-14日,由云栖社区与阿里巴巴技术协会共同主办的<2017阿里巴巴双11技术十二讲>顺利结束,集中为大家分享了2017双11背后的黑科技.本文是<网络虚拟化技术为双 ...

  3. 网络虚拟化技术与NFV

    一.虚拟化技术概述 1.虚拟化技术简介 虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机.在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独 ...

  4. 网络虚拟化技术IRF、VSS、CSS对比及VRF技术

    网络虚拟化技术IRF.VSS.CSS对比及VRF技术 IRF技术 概况 IRF是Interlligent Resilient Framework的简称,是H3C自研的网络虚拟化技术,用在安全设备上就叫 ...

  5. neutron中网络虚拟化技术的应用

    声明:  本博客欢迎转载,但请保留原作者信息!  作者:柯晓东  团队:华为杭州OpenStack团队 Neutron依赖的组件多,看起来太麻烦.买了某本珠玑的书,该书字间距太大,唠嗑比较多,知识普及 ...

  6. VxLAN网络虚拟化技术详解(HCIE)

    学习目标: 1.了解VxLAN解决的问题 2.了解VxLAN的专业术语NVO3.NVE.VTEP.VNI 3.通过实验来深入了解VxLAN 4.了解VxLAN的报文封装 VxLAN的由来 VPN种类大 ...

  7. 天翼云从业认证(1.6)虚拟化技术基础、服务器虚拟化、存储虚拟化和网络虚拟化技术;

    虚拟化技术基础.服务器虚拟化 常见虚拟化技术:vmware.xen.kvm. 虚拟化技术特征:分区.隔离.封装.相对于硬件独立. 全虚拟化:抽象VM具有完全的物理机特征,操作系统在其上运行,不需要任何 ...

  8. 网络虚拟化技术(一): linux网络虚拟化,网络虚拟化技术(一): Linux网络虚拟化...

    网络虚拟化技术(一): Linux网络虚拟化 2018-12-11 01 March 2013 笔者现在在做云计算的网络设计,涉及到上百台服务器与交换机,在实测前必须进行原型测试,但是我只有一个工作用 ...

  9. 网络虚拟化技术要点及实践

    摘 要:云计算网络作为云计算基础架构和服务提供的重要组成部分,需要满足更高的要求.本文首先给出网络的重要性,之后从数据中心网络.跨数据中心网络分析了主要技术要点,同时说明广东联通在实践过程中遇到的问题 ...

最新文章

  1. C#WinForm的线程及Invoke应用(转)
  2. 调用jsapi缺少参数appid_【Python学习笔记】18、函数的参数关键字参数
  3. node.js 出现cannot find module ‘xxx‘ 解决办法
  4. java for index_Java增强for循环中获取index
  5. Graves of the Internet - 互联网坟墓
  6. 第二次作业#include stdio.h int main() { int a,b,c,d,e; printf(请输入一个不多于五位的整数:\n); scanf(%...
  7. 零基础学Python(第十四章 字典)
  8. 一篇男人必看的创业文章。(人活着不能没有钱,但是活着却不能只为了钱)...
  9. 2019牛客暑期多校训练营(第五场)C generator 2 (BSGS)
  10. python初学函数_Python初学者速收藏!面向Python初学者的知识-函数
  11. 信息安全系统设计基础第四次实验报告 201352012013530620135307
  12. python3集合_Python3 集合
  13. JavaScript 数据类型检测终极解决方案
  14. matlab 误码曲线,用matlab画误码率曲线
  15. matlab高通滤波器除噪声,基于MATLAB的FIR滤波器的设计及应用(信号去噪).doc
  16. iOS开发-Tom猫
  17. 【想法】滴滴更新迭代功能
  18. 1056: 兔子繁殖问题
  19. MODIS标准数据产品类型
  20. Oracle 11G启动自动内存管理AMM

热门文章

  1. Java常见面试题:BIO,NIO,AIO 有什么区别?
  2. redux源码分析之二:combineReducers.js
  3. 6.4-全栈Java笔记:异常处理办法(下)
  4. Swift面向对象基础(中)——Swift中的方法
  5. 12.1 动态内存与智能指针(2)
  6. 学习 SCCM 2012 的思路
  7. 【DP + 卖股票】LeetCode 309. Best Time to Buy and Sell Stock with Cooldown
  8. Leetcode 946.验证栈序列
  9. PC自增与转移地址计算问题总结
  10. TestNG 框架的运用