交换机主要功能是交换数据,其内部是硬件直接处理数据包的,也就是硬件转发。什么叫硬件转发呢?我们来举个简单的例子,比如逻辑电路里有一种零件叫选择器(mux)
也就是可以通过下面的A1A2来控制输出Y到底跟哪个输入连通。内部结构是这样的:
神马?看不懂?没事,这个不重要,或者你要是实在想知道要不你去看看这个?
重点在于,这样的交换没有运算/判断的过程。直接输入怼进去,输入就出来了。不管多大的流量,CPU(计算资源)不说是零占用,其实也差不了多少。所以人家速度爆快,容量巨大无比,最厉害的是人家可以轻轻送送跑到满线速(反正流量大也不占资源嘛),而且还是几十个口一起跑到线速。
气不气?
不服的同学可以拿自己高配的电脑试试,看看自己牛X的CPU能跑多少pps(packet per second),体验一下被50元交换机碾压的绝望。
现在几乎随便找个5口千兆交换机人家都能跑到1.48Mpps(千兆满血)还是每个口同时,而一般来说几百kpps的DOS攻击都足以让不设防的电脑,服务器以及一部分防火墙跪下唱征服。
回到正题,二层交换机是看MAC地址,三层交换机则是看IP地址进行高速转发。
那这有什么缺点呢?缺点就是它是一个铁憨憨,只会通过MAC/IP地址来转发数据,确实不占用CPU但也没什么灵活性。打个比方的话就是三层交换机大概相当于一个头脑简单四肢发达的筋肉男,脑子不太灵光但力大无穷。
路由器是做什么的呢?确实可以跨网段转发数据,但路由器真正的用途是计算路由。什么叫计算路由呢,这就要从互联网的结构说起了。
大家知道早期互联网其实是军事用途,其目的在于构筑一个几乎无法被摧毁的信息交换网络。
怎么做到无法摧毁呢?传统网络都有一个或者几个中枢,一旦被摧毁网络就瘫痪了。而互联网的理念就是像渔网那样把所有节点互相连接起来,像这样
这样不管摧毁哪个节点或者切断哪个线路,数据都可以绕路到达另一个节点,从而达到几乎坚不可摧的目的。
这样其实从一个节点到另一个节点有很多种选择,哪种才是最优的呢?专门有一个数学分支来研究这个问题,称之为图论。而选择路径也有很多种策略,落实到现实世界就是各种路由协议。
如果网络结构不变,最短径路算好放在那就行了。但一旦网络发生变化,比如增加节点或者线路出现故障,那就要路由器来重新计算。由于路由协议不同,一部分节点甚至全部节点都要重新计算到其他节点的路由,这个计算量其实蛮大的。
这个计算量有多大的呢?早期互联网并没打算接入那么多设备,网段划的简单粗暴,地址分个ABC类就完事了。后来设备和网络越来越多,大家就只好把大的网络切成小网段用,比如一个/16的网段切成四个/18的网段,一个/24的网段切成16个/20的网段,etc...
切来切去网段(节点)越来越多,到这些网段(节点)的全部路由信息称之为全路由(Full route),全路由在2020年初这个时间点上大概有70万条,一般的路由器要计算大概3到20分钟吧,而早期的路由器由于内存什么限制恐怕还算不了这么多路由。
计算路由这个问题太复杂了,无法像交换机那样简单粗暴的用硬件解决。所以只能用常规的通用计算机的方案,也就是用高性能的CPU来算。所以其实路由器跟普通的电脑没有本质差别。顺便说一下Cisco路由器的IOS其实可以拿到模拟器上跑,几乎可以完整的模拟出路由器的各种行为,但交换机就不能这么玩。
路由器是软件转发数据,你看传统的路由器一般也就2,3个口,不可能太多,能不能跑到线速看造化。而现在家用的宽带路由器其实是一个2口的宽带路由器插在一个5口的交换机上,所以你能看见4个LAN口和1个WAN口。
打个比方的话路由器就相当于一个瘦弱的学霸,脑子倒是灵光但你指望它转发数据那还是算了吧。
聪明的你一定发现问题了,我们给肌肉男装个不错的脑子,或者给学霸装一副强壮的身体,那不就两全其美了吗?
大家其实也都是这样做的,所以高端路由器和高端三层交换机其实是差不多一个东西。(还记得前面谈的思科的交换机和Juniper的路由器吗?)事实上,传统的路由器几乎已经不再用了,三层交换机逐渐取而代之成为互联网的中心。
说的大一点,这个就是网络扁平化(fabric化),用以取代传统的核心路由-汇聚成-接入层的三层结构。什么叫网络扁平化呢?大白话解释就是,最好能把所有的网络设备都直接怼到一个巨型的三层交换机上来交换数据,这样对大家都好。
后记:
网络扁平化听起来是个高大上的概念,但其实世间的道理大多是相通的,比如大家常见的家庭组网。
对于一般家庭甚至简单的商用网络,一层网络结构足矣。即所有设备接入同一个交换网络(交换机可以多台,但本质上都是同一层的),然后最多一层宽带路由(ip masquerade)接入互联网。我知道你们无线路由器都花了不少钱,但也别无脑把宽带路由器的WAN口往光猫上怼,除非绝对必要。因为再牛X的路由(模块)也干不过交换机。
家里只需要一个设备做ip masquerade。最糟糕的情况莫过于光猫已经拨号了,还把路由的WAN口往上怼。上网是能上的,但等于又套了一层子网,速度稳定性都会打折扣。在出了各种奇怪的问题以后,把光猫换成桥接模式,路由拨号,哎!问题都消失了。然后得出结论就是光猫性能不行。
嗯,你高兴就好。