怎么更好地解释网络的路由模式和桥接模式?
在数据转发过程中,存在路由模式和桥接模式,这2种模式的定义是什么,实现的原理差异性如何?其中路由模式在虚拟机网络中是否就是NAT模式?
桥接(Bridging)
计算机和人一样,有沟通的需求。计算机要和其他计算机通信,首先要彼此连接起来。最简单的连接方式,就是用一根网线将两台连接起来,这根网线就是最原始的桥接(1.0版本)。A发给B的电信号,在网线里没有做任何处理,电信号原封未动到达B,对吗?
对,也不对。
说对的同学,是因为网线是一个管道,是一个信息载体,没有对信号动手动脚,信号自然应该没有任何改变。
说不对的同学,是因为任何载体,包括网线、空气,都会衰减信号,既然B接到的信号是衰减之后的信号,怎么能说信号原封未动呢?
对与不对不是特别重要,重要的是只要A与B之间的距离不是遥远,B能正确接收信号。
问题来了,如果A与B之间的距离比较遥远,差不多有1KM,B还能正确接收信号吗?
大概率不能,信号到达B的时候,衰减的已经不成人样了,B无法将其还原。
怎么办?
硬件工程师粉墨登场,在AB的中点位置放置一个信号放大器,一端用网线连接A,另一端用网线连接B,将从A接收到的衰减信号,信号放大之后发给B,B接收到的信号是不是更强,成功解码概率更高?
是的,硬件工程师还说了,如果一个信号放大器不够,可以在AB之间每间隔100米放置一个信号放大器,确保B正确接收概率为99.9999% 。这个信号放大器,就是升级版的桥接(2.0版本)。
信号放大器,唯一的作用,就是将信号的功率增强,使其传输得更远一些,我们称所有可以信号传输更远的设备为中继(Relay)设备。但这种中继设备有一个扩展性问题,只能同时连接两台设备。如果有更多设备需要互联,怎么办?
硬件工程师将信号放大器的2个端口,扩展为8、12、24口,这样就可以连接更多设备。这是个升级版的信号放大器,大多数读者都听说过它,但不一定使用过它。它的名字叫集线器,英文为Hub。
集线器的工作原理,和2个端口放大器是一样的。即从一个口接收到的信号,要无条件从其他端口发出,但在发出之前,需要对信号做功率放大。集线器是真正意义上的桥接设备(3.0版本)。
集线器是一个桥接域,同时也是一个冲突(Collision)域,冲突域是什么意思呢?
从上文描述可以看出,任何时刻只能有一个口的信号进入集线器,然后从其他口流出。如果有两个或两个以上的口的信号同时流入集线器,那么这两个或两个以上信号就叠加在一起,造成真正的接收方无法叠加的信号,将自己的信号还原出来,这种现象就是信号冲突。
为了能够检测信号冲突,并在必要的时候,重传因为信号冲突而发送失败的数据帧,计算机Ethernet网卡上默认启用了CSMA/CD机制。
一个24口的集线器,连接24台计算机,任何时刻只能有一个计算机可以发送数据帧,其他23台计算机只能默默等待。读者觉得这种设计科学吗?当然不科学,为什么24台计算机不能同时发送数据帧?
硬件工程师想了好久,掉了一缕秀发。如果集线器能够将进入的电信号,解调成0、1二级制数据,并临时储存起来。内部总线空闲,直接交换到出口。内部总线忙,耐心等待总线空闲,再将缓存地01数据调制成电信号,通过总线交换到出口。这样是不是就可以避免上文的数据帧的冲突?
好主意。这里有许多问题需要考虑。如果每个端口速率是100M,24口数据同时涌入,那么总线的速率需要≥2400M,否则有部分数据会缓存在入口,而入口的缓存有限,那么后续的数据帧由于没有足够的缓存空间而丢弃。
此外,还需要考虑多个端口进入的数据帧,同时从某一个端口流出。这样也会由于出口带宽有限,超出的数据帧将会被溢出丢弃。为了缓解由于突发(Burst)流量造成的流量溢出,每一个端口还配备了出向(Outbound)的缓存空间,用于给排队的数据帧临时使用。
这个设备就是交换机,它就是当前互联网以及局域网普遍使用的现代桥接设备(4.0版本)。文中的内部总线,厂商会有一个更好听的名字,叫交换矩阵(Switch Metrix)。交换机的入向、出向缓存,称之为Input Queue,Output Queue。
为何要将电信号先解调成01二级制数据再交换?为什么不能将直接电信号交换到出口,至少可以节省解调制、调制时间?
交换机需要读取数据帧的二层帧信息,比如读取目的MAC地址,用于指示数据帧的出口。读取源MAC地址,用于将MAC地址与端口一一绑定起来。
此外,现代交换机还会在二层(链路层/以太网层)与三层(网络层/IP层)插入VLAN信息,用于承载VLAN信息字段,称之为802.1Q。
如果不将电信号解调成01二进制数据,以上的信息获取将变成一个不可能完成的任务,毕竟交换机也是计算机,只认识0、1二进制信号,不认识其他什么电信号。
本文最后一个知识点,无论交换机设计的多么先进、高级,都无法避免由于多个端口流量汇聚到一个端口溢出丢弃,即尾丢(Tail Drop)。而在现网中,由于Micro-Burst而造成的溢出丢弃时时刻刻在发生,这是网络工程师需要深刻意识到的事件。究竟这个Micro-Burst是怎么一回事? 取决于读者是否喜欢,读者喜欢才会考虑写下一篇。
推荐阅读这篇文章,学习无线必须经历的科普。
作者|车小胖谈网络|公众号