Kubernetes网络系列之(十二)GRE



上一课我们介绍了vlan报文,知道它是实现网络“分组”的元老,也就是实现云网络(虚拟的假象)的基石。今天我来看看网络中的另一位元老,走私鼻祖GRE

背景

上一课我们介绍了vlan报文,知道它是实现网络“分组”的元老,也就是实现云网络(虚拟的假象)的基石。今天我来看看网络中的另一位元老,走私鼻祖GRE。

什么是走私

普通的走私,我们不扣细节的看,走私就是过海关的时候,表面看挺正常,实际里面藏着其你想要携带的东西。

例子很多,比如:

image

那网络走私又是什么呢? 简单的说,就是在一个公开的协议上,传输一些“私有的数据”,从而完成夹带私货。

还是看图展示一下大致流程:

image

当报文的发货方和收货方商量好“规则”之后,中间所有人都不知道他们在传输什么内容了~因为中间检查都是正常的。

上图我们举个具体的例子:

image

IP报文看到自己在传输TCP,正常,放过。

TCP看到自己在传输HTTP,正常,放过。

HTTP检查正常,放过。

谁能知道,我只是通过HTTP走私点“干货”?

这里代表着:只要在网络上,有一种协议是通的,你就无法阻止通过这个公开的协议传输特定的内容。

这就是网络走私了。

GRE是怎么走私的

先看看GRE报文的格式,然后看看上一章节走私的介绍,就会明白。

image

我把我要传输的内容(绿色部分),放在一个公开的IP报文里面(黄色部分)。

这里就好像,黄色部分走正常通道,如黄色地址先从美国发货到中国,正常通过。

在成功到达中国之后,那就是本端内部搞定了。拿出绿色部分,还有一层地址呢,然后国内真正发往想要的客户。至此GRE走私过程完成。

为什么叫GRE隧道

走私的方式有很多,长期走私的话,隧道是一种比较好的理解是方式。

看我找的图你就明白了:

image

image

image

当你把货物源源不断的从走私通道传输的时候,它就像一个隧道一样,不停的流动起来。这个就是GRE隧道协议了。

GRE隧道和云网络

image

这种走私方式,用在云网络里面,其实就是张三的货,通过正常通道先从美国发往中国,当到达中国之后,再内部分发,从而完成“走私隧道”。

这样张三走张三的走私隧道,李四走李四的走私通道,在感知上,两个人是互相不相干的,从而形成虚拟网络通信。(在同一个线路上,你走你的,我走我的,互相不感知,可以参见上一节的vlan门派介绍,云网络基石章节)。

VPN隧道,其实用的就是上图这样的模式,把一端的局域网,和远处另一端的局域网,隐含的“桥接”起来。

image
左边的人,认为和右边的人在同一个局域网里面。中间的网络只是走私的通道的“载体”而已,看不到,也不用关心。(ps,因为有承载隧道的这种载体能力,也就是可以在一种协议上,跑另一个网络协议。所以这种隧道网络,有时候也可以叫 OverLay 网络)。

这样隧道就有能把多个不同地方的局域网“连接”在一起能力,从而形成了云网络的模型。

把两头的局域网“透明”的接在一起,这个就是隧道的魅力了。可以看到kubernetes里面的flannel网络,用的就是这种隧道原理。

image

你看它可以把每个节点上面的局域网,全部接在一起,让不同节点里面的容器以为自己在一个大的相同的局域网里面

总结

你看,从vlan、gre的出现,一开始只是为了解决报文分门别类、互不干扰,到他们逐渐在云网络里面大展身手成为云网络的基石。这里面其实核心的思路就是:所有的云网络,其实都是障眼法。也就是你想让它(虚拟机/容器)看到它以为的样子。即它自己是不能发现自己在真实网络里面还是虚拟网络里面的。这个跟一个app程序,自己是不知道自己跑在虚拟机里面,还是跑在物理机里面是一样的。

这种对于真实世界的模拟,使得目标看到的假象跟真的一样,不仅仅是云网络,更是云的本质。