一. 背景
大家都知道 vlan 报文是实现网络“分组”的元老,也就是实现云网络(虚拟的假象)的基石。今天介绍网络中的另一位元老,走私鼻祖 GRE。
二. 什么是走私
普通的走私,我们不扣细节的看,走私就是过海关的时候,表面看挺正常,实际里面藏着其你想要携带的东西。
那网络走私又是什么呢? 简单的说,就是在一个公开的协议上,传输一些“私有的 数据”,从而完成夹带私货。
还是看图展示一下大致流程:
当报文的发货方和收货方商量好“规则”之后,中间所有人都不知道他们在传输什么内容了~因为中间检查都是正常的。
上图我们举个具体的例子:
IP 报文看到自己在传输 TCP,正常,放过。
TCP 看到自己在传输 HTTP,正常,放过。
HTTP 检查正常,放过。
谁能知道,我只是通过 HTTP 走私点“干货”?
这里代表着:只要在网络上,有一种协议是通的,你就无法阻止通过这个公开的协议传输特定的内容。
这就是网络走私了。
三. GRE 是怎么走私的
先看看 GRE 报文的格式,然后看看上一章节走私的介绍,就会明白。
我把我要传输的内容(绿色部分),放在一个公开的 IP 报文里面(黄色部分)。
这里就好像,黄色部分走正常通道,如黄色地址先从美国发货到中国,正常通过。
在成功到达中国之后,那就是本端内部搞定了。拿出绿色部分,还有一层地址呢,然后国内真正发往想要的客户。至此 GRE 走私过程完成。
四. 为什么叫 GRE 隧道
走私的方式有很多,长期走私的话,隧道是一种比较好的理解是方式。
当你把货物源源不断的从走私通道传输的时候,它就像一个隧道一样,不停的流动起来。这个就是 GRE 隧道协议了。
五. GRE 隧道和云网络
这种走私方式,用在云网络里面,其实就是张三的货,通过正常通道先从美国发往中国,当到达中国之后,再内部分发,从而完成“走私隧道”。
这样张三走张三的走私隧道,李四走李四的走私通道,在感知上,两个人是互相不相干的,从而形成虚拟网络通信。(在同一个线路上,你走你的,我走我的,互相不感知,可以参见上一节的 vlan 门派介绍,云网络基石章节)。
VPN 隧道,其实用的就是上图这样的模式,把一端的局域网,和远处另一端的局域网,隐含的“桥接”起来。
左边的人,认为和右边的人在同一个局域网里面。中间的网络只是走私的通道的“载体”而已,看不到,也不用关心。(ps,因为有承载隧道的这种载体能力,也就是可以在一种协议上,跑另一个网络协议。所以这种隧道网络,有时候也可以叫 OverLay 网络)。
这样隧道就有能把多个不同地方的局域网“连接”在一起能力,从而形成了云网络的模型。
把两头的局域网“透明”的接在一起,这个就是隧道的魅力了。可以看到 kubernetes 里面的 flannel 网络,用的就是这种隧道原理。
你看它可以把每个节点上面的局域网,全部接在一起,让不同节点里面的容器以为自己在一个大的相同的局域网里面。
六. 总结
从 vlan、gre 的出现,一开始只是为了解决报文分门别类、互不干扰,到他们逐渐在云网络里面大展身手成为云网络的基石。这里面其实核心的思路就是:所有的云网络,其实都是障眼法。也就是你想让它(虚拟机/容器)看到它以为的样子。即它自己是不能发现自己在真实网络里面还是虚拟网络里面的。这个跟一个 app 程序,自己是不知道自己跑在虚拟机里面,还是跑在物理机里面是一样的。
这种对于真实世界的模拟,使得目标看到的假象跟真的一样,不仅仅是云网络,更是云的本质。
本文转载自华为云产品与解决方案公众号。
原文链接:https://mp.weixin.qq.com/s/G-dhD1_pOqMp8OYYTTFOHg
评论