文章插图
图:A simple IPIP network workflow
Kubernetes中 IPIP 与 VxLAN 类似,也是通过网络隧道技术实现的 。与 VxLAN 差别就是,VxLAN 本质上是一个 UDP包,而 IPIP 则是将包封装在本身的报文包上 。
文章插图
图:IPIP in kubernetes
文章插图
图:IPIP packet with wireshark unpack
Notes:公有云可能不允许IPIP流量,例如Azure
VxLAN
kubernetes中不管是 flannel 还是 calico VxLAN的实现都是使用Linux内核功能进行的封装,Linux 对 vxlan 协议的支持时间并不久,2012 年 Stephen Hemminger 才把相关的工作合并到 kernel 中,并最终出现在 kernel 3.7.0 版本 。为了稳定性和很多的功能,你可以会看到某些软件推荐在 3.9.0 或者 3.10.0 以后版本的 kernel 上使用 VxLAN 。
文章插图
图:A simple VxLAN network topology
在kubernetes中vxlan网络,例如 flannel,守护进程会根据kubernetes的Node而维护 VxLAN,名称为 flannel.1 这是 VNID,并维护这个网络的路由,当发生跨节点的流量时,本地会维护对端 VxLAN 设备的MAC地址,通过这个地址可以知道发送的目的端,这样就可以封包发送到对端,收到包的对端 VxLAN设备 flannel.1 解包后得到真实的目的地址 。
查看 Forwarding database 列表
$ bridge fdb 26:5e:87:90:91:fc dev flannel.1 dst 10.0.0.3 self permanent文章插图
图:VxLAN in kubernetes
文章插图
图:VxLAN packet with wireshark unpack
Notes:VxLAN使用的4789端口,wireshark应该是根据端口进行分析协议的,而flannel在linux中默认端口是8472,此时抓包仅能看到是一个UDP包 。
通过上述的架构可以看出,隧道实际上是一个抽象的概念,并不是建立的真实的两端的隧道,而是通过将数据包封装成另一个数据包,通过物理设备传输后,经由相同的设备(网络隧道)进行解包实现网络的叠加 。
weave vxlan
weave也是使用了 VxLAN 技术完成的包的封装,这个技术在 weave 中称之为 fastdp (fast data path),与 calico 和 flannel 中用到的技术不同的,这里使用的是 Linux 内核中的 openvswitch datapath module,并且weave对网络流量进行了加密 。
文章插图
图:weave fastdp network topology
推荐阅读
- 张择端清明上河图超清 张择端仇英《清明上河图》释惑解读
- 盛明兰|知否:盛明兰为何能当家做主?看看盛老太太的硬核姐妹都教了什么
- 红色特工|电影《红色特工》正式开机 硬核开启谍战世界
- 人力资源|“职场遇到骚扰怎么办?”妹子教你如何硬核回怼!哈哈哈
- 真三国无双5硬核实用攻略 三国无双攻略
- 硬核科普 男人阴茎标准
- 豆瓣|俄罗斯最硬核的战争电影,演员全部都是雇佣兵,豆瓣评分8.2分
- 时代峰峻|海外粉丝称时代少年团抄袭,团名和前辈团相似,时代峰峻硬核回复
- 肖战|肖战温柔的外表,硬核的灵魂,一套造型近两个月,是无声的态度
- 王鹤棣|网友偶遇王鹤棣回自家炸串店,性格接地气没架子,怼脸生图超抗打
