DPDK(二):准备知识7---linux虚拟网络设备

一、tunl/tap
tun/tap设备的用处是将协议栈中的部分数据包转发给用户空间的应用程序,给用户空间的程序一个处理数据包的机会。于是比较常用的数据压缩,加密等功能就可以在应用程序B里面做进去,tun/tap设备最常用的场景是VPN,包括tunnel以及应用层的IPSec等
tun和tap的区别:
用户层程序通过tun设备只能读写IP数据包,而通过tap设备能读写链路层数据包。

二、veth
eth设备的特点
veth和其它的网络设备都一样,一端连接的是内核协议栈。
veth设备是成对出现的,另一端两个设备彼此相连
一个设备收到协议栈的数据发送请求后,会将数据发送到另一个设备上去。
下面这张关系图很清楚的说明了veth设备的特点:

三、bridge
原文:https://segmentfault.com/a/1190000009491002?utm_source=tag-newest
bridge是一个虚拟网络设备,所以具有网络设备的特征,可以配置IP、MAC地址等;其次,bridge是一个虚拟交换机,和物理交换机有类似的功能。
创建一个bridge
dev@debian:~$ sudo ip link add name br0 type bridge
dev@debian:~$ sudo ip link set br0 up
1、作用:
同步bridge,我们可以做到:
(1)连接同宿主机内所有容器的虚拟网络
(2)打通容器内网与外网,通过bridge将数据转发到真实的往里网卡eth0中。
虚拟机场景:

 

docker应用场景:容器中配置网关为.9.1,发出去的数据包先到达br0,然后交给host机器的协议栈,由于目的IP是外网IP,且host机器开启了IP forward功能,于是数据包会通过eth0发送出去,由于.9.1是内网IP,所以一般发出去之前会先做NAT转换(NAT转换和IP forward功能都需要自己配置)。由于要经过host机器的协议栈,并且还要做NAT转换,所以性能没有上面虚拟机那种方案好,优点是容器处于内网中,安全性相对要高点。(由于数据包统一由IP层从eth0转发出去,所以不存在mac地址的问题,在无线网络环境下也工作良好)

总结:几种linux虚拟网络设备的对比图:

 

posted @ 2019-03-16 16:56  小蚂蚁_CYJ  阅读(2542)  评论(0编辑  收藏  举报