【路由器】本身就是一台计算机,如果连着键盘、鼠标、显示器,操作系统里再安装个Office,就可以当做办公电脑使用了。
但是,如果真把【路由器】当电脑用,那真是太屈才了,好比开着坦克去菜场买菜! 【路由器】的“高效的IP报文的硬件转发能力”就被严重浪费了。
【路由器】到底是干什么的?
如图所示,A网络信封数据,是如何沿着箭头的方向,先到达B网络,再到达C网络,然后到达D网络,最后到达目的地主机的?
逻辑很简单,【路由器】在信封数据产生之前,已经和自己的邻居【路由器】,通过路由协议数据报文,同步了整个网络(互联网)的IP路由表。
当IP报文到达时,【路由器】知道如何将接收到的IP报文,转发给自己的邻居。邻居也知道如何将接收到的IP报文,转发给更靠近目的地的【路由器】。通过连续接力的方式,最终IP报文到达了目的地。
A网络与B网络、B网络与C网络、C网络与D网络相交处,都有一个椭圆形的图标。这些椭圆形的图标就是【路由器】!
【路由器】为了连接多个网络,通常有多个网络接口。接口的类型取决于连接的是什么网络。
读者可能会说,这有什么稀奇的?在普通电脑的扩展插槽中,插入这些接口卡,电脑不是一样可以实现【路由器】功能?这也许是题主真正想表达的意思,对吗!
完全可以,只要两个网卡就可以在普通电脑上实现【路由器】的功能。
很少有人会用这样的【路由器】,为什么呢?
转发效率太低了!
问大家一个问题,TCP/IP协议栈是软件还是硬件? 当然是软件了。
当电脑充当【路由器】时,从一个接口收到的IP报文,是否要交由IP协议来处理? 没错!
既然IP协议是软件实现,那么转发IP报文的工作,全部由软件来实现。
软件完全依靠电脑的CPU作为计算的引擎,所以CPU直接决定着IP报文的转发效率。
CPU很忙的,是整个电脑的计算中枢。要处理各种计算工作,还要兼顾着来自硬件外设的中断信号,CPU高速运转的间隙,还要处理来自网卡的中断信号。
CPU计算能力大小、同时竞争CPU资源的事务的多寡,将直接决定着CPU转发IP报文的效率。
一般的电脑IP报文的转发效率,无法达到每秒几百万次的转发效率。商业的【路由器】是可以达到的!
接下来的问题是,【路由器】是如何做到的?
硬件加速 一个IP报文在【路由器】内部的行走轨迹,不过是从入口流入,从出口流出的过程,对吗?
屁大点事,为何要劳烦日理万机的CPU大驾?
于是,【路由器】将这些简单判断逻辑的工作,统统外包给了硬件转发芯片。
硬件转发芯片,拥有自己的硬件转发表,也有出口下一跳对应的MAC地址,压根不需要ARP的参与,这些内容CPU已经统统提前告诉了硬件芯片。
CPU语重心长地对着硬件转发芯片说:孩子,我已经给了你所有的转发信息,你可以独立处理转发事务了。
但要记住一点,有两种情况你必须要通知我来处理:
通过以上外包的方式,【路由器】的CPU从繁杂的IP报文转发事务中解脱了出来。把更多的CPU资源用于处理“路由协议”的路由表的同步工作,以及物理链路失效,如何快速检测失效并快速将失效消息通告给所有的邻居,让所有的邻居都意识到某一条链路已经失效,从而在路由算法中将该条链路剔除出去。
最终,整个网络的【路由器】的路由表又一次同步(达成一致),这个过程就叫网络收敛!
【路由器】成就了互联网,互联网又推动了【路由器】向更快、更强、更安全的方向发展! |
Powered by Discuz! X3.4
© 2001-2023 Discuz! Team.