网络虚拟化技术(二): TUN/TAP MACVLAN MACVTAP
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相关推荐
- linux虚拟网络设备-- TUN/TAP MACVLAN MACVTAP(八)
TUN 设备 TUN 设备是一种虚拟网络设备,通过此设备,程序可以方便得模拟网络行为.先来看看物理设备是如何工作的: 所有物理网卡收到的包会交给内核的 Network Stack 处理,然后通过 So ...
- 网络虚拟化技术为双11提供灵动网络
摘要: 12月13-14日,由云栖社区与阿里巴巴技术协会共同主办的<2017阿里巴巴双11技术十二讲>顺利结束,集中为大家分享了2017双11背后的黑科技.本文是<网络虚拟化技术为双 ...
- 网络虚拟化技术与NFV
一.虚拟化技术概述 1.虚拟化技术简介 虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机.在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独 ...
- 网络虚拟化技术IRF、VSS、CSS对比及VRF技术
网络虚拟化技术IRF.VSS.CSS对比及VRF技术 IRF技术 概况 IRF是Interlligent Resilient Framework的简称,是H3C自研的网络虚拟化技术,用在安全设备上就叫 ...
- neutron中网络虚拟化技术的应用
声明: 本博客欢迎转载,但请保留原作者信息! 作者:柯晓东 团队:华为杭州OpenStack团队 Neutron依赖的组件多,看起来太麻烦.买了某本珠玑的书,该书字间距太大,唠嗑比较多,知识普及 ...
- VxLAN网络虚拟化技术详解(HCIE)
学习目标: 1.了解VxLAN解决的问题 2.了解VxLAN的专业术语NVO3.NVE.VTEP.VNI 3.通过实验来深入了解VxLAN 4.了解VxLAN的报文封装 VxLAN的由来 VPN种类大 ...
- 天翼云从业认证(1.6)虚拟化技术基础、服务器虚拟化、存储虚拟化和网络虚拟化技术;
虚拟化技术基础.服务器虚拟化 常见虚拟化技术:vmware.xen.kvm. 虚拟化技术特征:分区.隔离.封装.相对于硬件独立. 全虚拟化:抽象VM具有完全的物理机特征,操作系统在其上运行,不需要任何 ...
- 网络虚拟化技术(一): linux网络虚拟化,网络虚拟化技术(一): Linux网络虚拟化...
网络虚拟化技术(一): Linux网络虚拟化 2018-12-11 01 March 2013 笔者现在在做云计算的网络设计,涉及到上百台服务器与交换机,在实测前必须进行原型测试,但是我只有一个工作用 ...
- 网络虚拟化技术要点及实践
摘 要:云计算网络作为云计算基础架构和服务提供的重要组成部分,需要满足更高的要求.本文首先给出网络的重要性,之后从数据中心网络.跨数据中心网络分析了主要技术要点,同时说明广东联通在实践过程中遇到的问题 ...
最新文章
- C#WinForm的线程及Invoke应用(转)
- 调用jsapi缺少参数appid_【Python学习笔记】18、函数的参数关键字参数
- node.js 出现cannot find module ‘xxx‘ 解决办法
- java for index_Java增强for循环中获取index
- Graves of the Internet - 互联网坟墓
- 第二次作业#include stdio.h int main() { int a,b,c,d,e; printf(请输入一个不多于五位的整数:\n); scanf(%...
- 零基础学Python(第十四章 字典)
- 一篇男人必看的创业文章。(人活着不能没有钱,但是活着却不能只为了钱)...
- 2019牛客暑期多校训练营(第五场)C generator 2 (BSGS)
- python初学函数_Python初学者速收藏!面向Python初学者的知识-函数
- 信息安全系统设计基础第四次实验报告 201352012013530620135307
- python3集合_Python3 集合
- JavaScript 数据类型检测终极解决方案
- matlab 误码曲线,用matlab画误码率曲线
- matlab高通滤波器除噪声,基于MATLAB的FIR滤波器的设计及应用(信号去噪).doc
- iOS开发-Tom猫
- 【想法】滴滴更新迭代功能
- 1056: 兔子繁殖问题
- MODIS标准数据产品类型
- Oracle 11G启动自动内存管理AMM
热门文章
- Java常见面试题:BIO,NIO,AIO 有什么区别?
- redux源码分析之二:combineReducers.js
- 6.4-全栈Java笔记:异常处理办法(下)
- Swift面向对象基础(中)——Swift中的方法
- 12.1 动态内存与智能指针(2)
- 学习 SCCM 2012 的思路
- 【DP + 卖股票】LeetCode 309. Best Time to Buy and Sell Stock with Cooldown
- Leetcode 946.验证栈序列
- PC自增与转移地址计算问题总结
- TestNG 框架的运用