53 | Linux网络虚拟化(下):Docker所提供的容器通讯方案有哪些?
周志明
你好,我是周志明。今天我们接着上节课介绍的 Linux 网络知识,继续来学习它们在虚拟化网络方面的应用,从而为后续学习容器编排系统、理解各个容器是如何通过虚拟化网络来协同工作打好基础。
虚拟化网络设备
首先我们要知道,虚拟化网络并不需要完全遵照物理网络的样子来设计。不过,由于现在大量现成的代码,原来就是面向于物理存在的网络设备来编码实现的,另外也有出于方便理解和知识继承方面的考虑,因此虚拟化网络与物理网络中的设备还是具有相当高的相似性。
所以接下来,我就会从网络中那些与网卡、交换机、路由器等对应的虚拟设施,以及如何使用这些虚拟设施来组成网络入手,给你介绍容器间网络的通信基础设施。
好了,我们开始吧。
网卡:tun/tap、veth
首先是虚拟网卡设备。
目前主流的虚拟网卡方案有tun/tap和veth两种,其中 tun/tap 出现得时间更早,它是一组通用的虚拟驱动程序包,里面包含了两个设备,分别是用于网络数据包处理的虚拟网卡驱动,以及用于内核空间与用户空间交互的字符设备(Character Devices,这里具体指/dev/net/tun)驱动。
大概在 2000 年左右,Solaris 系统为了实现隧道协议(Tunneling Protocol)开发了这套驱动,从 Linux Kernel 2.1 版开始,tun/tap 移植到了 Linux 内核中,当时它是作为源码中的可选模块,而在 2.4 版之后发布的内核,都会默认编译 tun/tap 的驱动。tun 和 tap 是两个相对独立的虚拟网络设备,其中 tap 模拟了以太网设备,操作二层数据包(以太帧),tun 则是模拟了网络层设备,操作三层数据包(IP 报文)。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文深入介绍了Linux Bridge作为虚拟交换机的工作原理和应用场景,以及与其他虚拟交换机方案的比较。通过二层转发机制,Linux Bridge实现了容器间的网络通信,并支持将数据包接入到主机的三层协议栈中,实现三层路由。此外,文章还详细解释了VXLAN作为一种Overlay网络的原理和应用,以及其对网络基础设施的要求和带来的灵活性、扩展性和可管理性。VXLAN的报文结构和对传输效率、性能的影响也得到了详细解释。另外,文章还介绍了MACVLAN作为一种网络设备虚拟化的方式,以及其在虚拟交换机中的应用和优势。通过深入讲解Linux Bridge和VXLAN的工作原理,本文为读者提供了深入了解容器通讯方案和Overlay网络的基础知识。文章内容涵盖了虚拟交换机、Overlay网络和网络设备虚拟化等技术,为读者提供了全面的网络虚拟化知识。
该试读文章来自《周志明的软件架构课》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(15)
- 最新
- 精选
- 而立斋周老,这篇近一万字,这是咋积累起来的呀。
作者回复: 字数什么的不是重点……我只是想说,我并没有那么老,囧。
2021-03-30817 - Demon.Lee终于知道为啥有个专业叫 网络工程 了,我已零乱……😭2021-04-239
- Dlx-153“应用程序调用 Socket API 发送数据,此时生成的原始数据包为:a. 源 MAC:veth0 的 MACb. 目标 MAC:网关的 MAC(即网桥的 MAC)c. 源 IP:veth0 的 IP,即 192.168.31.1d. 目标 IP:外网的 IP,即 122.246.6.183” 有个问题:为啥这里的源IP(veth0的IP)= 192.168.31.1 ?namspace中的veth0的IP地址应该是192.168.1.10、192.168.1.11、192.168.1.12中的一个,如果按照此处的步骤描述“三个容器中的 veth0 网卡分配 IP 地址:192.168.1.10、192.168.1.11、192.168.1.12;”2021-08-1033
- coder这一篇看了近两周2022-04-192
- knife大佬 ,虽然Docker Swarm被淘汰了,但是Kubernetes flannel 有tun的有vxlan的还有路由的2022-02-152
- 偶系外星人惊叹于周老师的由远及近,深入浅出的表述能力,请问这个方面如何培养? 另外,做了snat后回来的包不需要做dnat,查询snat会话就可以完成回程报文dip的转换2021-12-172
- 贝氏倭狐猴文中“Linux Bridge构建单IP容器网络”里面多次提到“veth0 的 IP,即 192.168.31.1”,是否应为“veth0 的 IP,即 192.168.1.10”?2021-08-222
- zhanydTAP 设备与 TUN 设备工作方式完全相同,区别在于: tap 和 tun 虽然都是虚拟网络设备,但它们的工作层次还不太一样 TUN是一个点对点的三层设备(或网络层设备) TUN 设备的 /dev/tunX 文件收发的是 IP 层数据包,只能工作在 IP 层,无法与物理网卡做 bridge,但是可以通过三层交换(如 ip_forward)与物理网卡连通。 TAP设备是一个二层设备(或者以太网设备) TAP 设备的 /dev/tapX 文件收发的是 MAC 层数据包,拥有 MAC 层功能,可以与物理网卡做 bridge,支持 MAC 层广播2021-03-271
- 三三太顶了,待有空了细看2022-06-19
- Stephen真的是巨佬,太牛逼了2022-06-17
收起评论