admin管理员组

文章数量:1567551

温馨提示:请您在阅读本文之前,点击文章上方的“关注”,以后您就可以免费收到智慧网络2333每天推送的网络、宽带等内容了。谢谢您的关注与转发!

路由器本身就是一台计算机,如果连着键盘、鼠标、显示器,操作系统里再安装个Office,就可以当做办公电脑使用了。

但是,如果真把路由器当电脑用,那真是太屈才了,好比开着坦克去菜场买菜!路由器的“高效的IP报文的硬件转发能力”就被严重浪费了。

路由器到底是干什么的?

如图所示,A网络信封数据,是如何沿着箭头的方向,先到达B网络,再到达C网络,然后到达D网络,最后到达目的地主机的?

逻辑很简单,路由器在信封数据产生之前,已经和自己的邻居路由器,通过路由协议数据报文,同步了整个网络(互联网)的IP路由表。

当IP报文到达时,路由器知道如何将接收到的IP报文,转发给自己的邻居。邻居也知道如何将接收到的IP报文,转发给更靠近目的地的路由器。通过连续接力的方式,最终IP报文到达了目的地。

A网络与B网络、B网络与C网络、C网络与D网络相交处,都有一个椭圆形的图标。这些椭圆形的图标就是路由器!

路由器为了连接多个网络,通常有多个网络接口。接口的类型取决于连接的是什么网络。

  • 连接的是以太网,使用以太网接口。
  • 连接的是ATM网,使用ATM接口。
  • 连接的是ISDN网,使用E1/T1接口。

读者可能会说,这有什么稀奇的?在普通电脑的扩展插槽中,插入这些接口卡,电脑不是一样可以实现路由器功能?这也许是题主真正想表达的意思,对吗!

完全可以,只要两个网卡就可以在普通电脑上实现路由器的功能。

很少有人会用这样的路由器,为什么呢?

转发效率太低了!

问大家一个问题,TCP/IP协议栈是软件还是硬件?

当然是软件了。

当电脑充当路由器时,从一个接口收到的IP报文,是否要交由IP协议来处理?

没错!

既然IP协议是软件实现,那么转发IP报文的工作,全部由软件来实现。

软件完全依靠电脑的CPU作为计算的引擎,所以CPU直接决定着IP报文的转发效率。

CPU很忙的,是整个电脑的计算中枢。要处理各种计算工作,还要兼顾着来自硬件外设的中断信号,CPU高速运转的间隙,还要处理来自网卡的中断信号。

CPU计算能力大小、同时竞争CPU资源的事务的多寡,将直接决定着CPU转发IP报文的效率。

一般的电脑IP报文的转发效率,无法达到每秒几百万次的转发效率。商业的路由器是可以达到的!

接下来的问题是,路由器是如何做到的?

硬件加速

一个IP报文在路由器内部的行走轨迹,不过是从入口流入,从出口流出的过程,对吗?

  • 查路由表,找出口
  • 根据出口的接口类型,决定接口的封装方式
  • 要么点对点,PPP/HDLC封装
  • 要么ATM,ATM信元封装
  • 要么以太网,EthernetII 封装

屁大点事,为何要劳烦日理万机的CPU大驾?

于是,路由器将这些简单判断逻辑的工作,统统外包给了硬件转发芯片。

硬件转发芯片,拥有自己的硬件转发表,也有出口下一跳对应的MAC地址,压根不需要ARP的参与,这些内容CPU已经统统提前告诉了硬件芯片。

CPU语重心长地对着硬件转发芯片说:孩子,我已经给了你所有的转发信息,你可以独立处理转发事务了。

但要记住一点,有两种情况你必须要通知我来处理:

  • IP报文的目的IP =路由器任何接口的IP
  • 硬件芯片无法处理的复杂逻辑,比如无法找到IP报文的对应的硬件转发表

通过以上外包的方式,路由器的CPU从繁杂的IP报文转发事务中解脱了出来。把更多的CPU资源用于处理“路由协议”的路由表的同步工作,以及物理链路失效,如何快速检测失效并快速将失效消息通告给所有的邻居,让所有的邻居都意识到某一条链路已经失效,从而在路由算法中将该条链路剔除出去。

最终,整个网络的路由器的路由表又一次同步(达成一致),这个过程就叫网络收敛!

路由器成就了互联网,互联网又推动了路由器向更快、更强、更安全的方向发展。

本文转载自知乎,如有侵权请联系删除。

本文标签: 路由器报文不把机里协议