深圳团购网站建设,域名注册好了怎么打开网站,wordpress自定义字段上传图片功能,网络营销师报名入口文章目录 概述Tap/tun设备tun/tap的工作机制 Bridge网桥Bridge的工作机制Bridge IP 相关参考 概述
在传统的网络环境中#xff0c;一台物理主机包含一张或多张网卡#xff0c;要实现与其它物理主机之间的通信#xff0c;需要将自身的网卡通过路由器或者交换机连接到外部的物… 文章目录 概述Tap/tun设备tun/tap的工作机制 Bridge网桥Bridge的工作机制Bridge IP 相关参考 概述
在传统的网络环境中一台物理主机包含一张或多张网卡要实现与其它物理主机之间的通信需要将自身的网卡通过路由器或者交换机连接到外部的物理网络中。随着虚拟化技术的发展一台物理主机上会部署多个虚拟机或者容器应用每个虚拟机都需要与物理机以及主机或者跨主机上的其它虚拟机进行通信为了实现与传统物理网络等同的虚拟网络结构各类虚拟网络设备被加入其中最为核心的两种网络设备就是NIC网卡与交换机设备。
Tap/tun设备
Tap/tun是Linux内核实现的虚拟网络设备其中tap工作在二层只能处理二层报文tun工作在三层支持配置IP地址处理三层报文信息。tun/tap网络设备与物理网卡的使用方式相同支持通过套接字收发网络数据二者的主要区别在于物理网卡连接的是真正的物理链路而tun/tap网卡连接的是软件实现的虚拟链路。
tun/tap的工作机制
tun/tap驱动程序除了虚拟网卡的驱动外还包括一个字符设备驱动内核通过字符设备与用户空间应用传递网络数据这里字符设备可以理解成实现了一条虚拟链路操作字符设备的应用可以理解成另外一台计算机同时利用网卡驱动接收并发送来自TCP/IP协议栈的网络数据或者发过来将收到的网络数据传送给协议栈处理。
创建tun/tap网络设备时Linux内核会在设备文件目录下生成一个与之对应的字符设备应用通过读写这个字符设备可以实现在链路上传输数据。
数据发送当对字符设备执行写操作时相当于tun/tap网络设备接收到了数据后续数据提交到协议栈当成普通的网络报文进行处理这个过程类似于物理网卡接收到链路上的数据数据接收当对字符设备执行读操作时相当于向内核查询tun/tap设备上是否有数据需要被发送有的话则通过字符设备传输到用户空间从而完成tun/tap设备发送数据的功能。
Bridge网桥
当一台物理机上部署了多台虚拟机这些虚拟机也需要相互之间进行数据交换与主机需要接入到物理交换机才能与其它主机进行通信一样Linux提供了虚拟交换机Bridge实现各个虚拟机的通信连接。
Bridge的工作机制
Linux Bridge是工作在二层中的虚拟网络设备功能类似于物理的交换机。Bridge可以绑定其它Linux网络设备作为从设备并将这些设备虚拟化为端口进行使用。Bridge接收端口的数据报文查找转发表然后按照转发表规则将报文进行广播、转发或者直接丢弃整个转发的逻辑与物理交换机相似。
传统的Linux网络虚拟化技术采用的是TapBridge的方式将虚拟机连接到Tap虚拟网卡然后将Tap网卡绑定到Linux Bridge网络拓扑如下图 当一个网络设备绑定到Bridge上时该设备的IP地址会变得无效如同物理交换机上的一个端口Linux不会再使用这个设备在三层接收数据。通过这个网络设备接收的数据流量会被Bridge劫持并通过Bridge的转发规则转发到其它端口当Bridge需要通过某个端口发送数据时最终会经由端口绑定的从设备来完成实际的发送。
Bridge IP
因为Bridge工作在二层因此绑定到Bridge的从设备均不需要再配置IP地址但Bridge本身支持设置IP地址毕竟物理网卡的IP失效总需要有一个设备配置IP以与外界通信。当Bridge配置了自己的IP之后Bridge可以直接加入路由表并通过它来发送数据而实际的数据的发送过程则是由某个设备来完成的。
相关参考
《Linux开源网络全栈详解从DPDK到OpenFlow》Linux Tun/Tap 介绍云原生虚拟化一文读懂网络虚拟化之 tun/tap 网络设备