路由器工做原理
写在前面:这里是小王成长日志,一名在校大学生,想在学习之余将本身的学习笔记分享出来,记录本身的成长轨迹,帮助可能须要的人。欢迎关注与留言。html
这是系列博客 计算机网络-自顶向下 中的其中一篇,更多博文请访问专栏 计算机网络 ,若有错误还请各位大佬指正。
web
0. 路由器概述
首先咱们先大体了解一下路由器的大体结构以及工做方式。算法
路由器体系结构
- 路由器体系结构以下图:
其中四个重要组成部分依次以下:
-
接入端口后端
- 将一条输入的物理链路与路由器相链接的物理层功能
- 须要与位于人链路远端的数据链路层交互的数据链路层功能
- 在输入端口还要完成查找功能
-
交换结构缓存
- 交换结构将路由器的输入端口与输出端口相链接
- 这种交换结构彻底包含在路由器中,即它是一个网络路由器中的网络!
-
输出端口服务器
- 输出端口存储从交换结构接收的分组
- 执行必要的链路层和物理层功能在输入链路上传输这些分组
- 当一条链路是双向的(即承载两个方向的流量)时,输出端口一般是与该链路的输入端口在同 一线路卡(一个包含一个或多个输入端口的印刷电路,它与交换结构相连)上成对出现的 。
-
路由选择处理器网络
- 执行路由选择协议
- 维护路由选择表以及链接的链路状态信息
- 为路由器计算转发表
- 执行网络管理功能
什么是路由器转发平面
- 一台路由器的输人端口、输出端口和交换结构共同实现了这种转发功能,而且老是用硬件实现,将这种转发功能总称为路由器转发平面。
- 若是 N 个端口结合在一块线路卡上(由于实践中经常这样作) .数据报处理流水线必须以 N 倍速率运行,这远快过软件实现的速率 。
- 实现方式:转发平面硬件既可以使用厂商向己的硬件设计来实现,也可以使用购买的商用硅芯片(例如英特尔和 Broadcom 公司所出售的)来实现 。
- 当转发平面以纳秒时间尺度运行时,路由器的控制功能(即执行路由选择协议、对上线或下线的链接链路进行响应) 在毫秒或秒时间尺度上运行 。
- 这些路由器控制平面( router conLrol plane) 一般用软件实现并在路由选择处理器上执行(一般是一种传统的 CPU) 。
1. 输入端口
输入端口的详细视图
输入端口的功能
- 输入端口的线路端接功能与链路层处理实现了用于各个输入链路的物理层和链路层
- 在这个地方,路由器使用转发表来查找输出端口.使获得达的分组将能通过交换结构转发到该输出端口 。
转发表的更新与使用
- 转发表是由路由选择处理器计算和更新的,但转发表的一份影子副本一般会被存放在每一个输入端口。
- 转发表从路由选择处理器通过独立总线(例如一个 PCI总线)复制到线路卡
影子副本
- 有了影子副本,转发决策能在每一个输入端口本地作出,无须调用中央路由选择处理器,所以避免了集中式处理的瓶颈 。
快速查找算法
-
在概念上查找表是简单的,可是在实际应用中须要在很是短(例如几纳秒)的时间内完成查询,所以除了硬件设计外还须要一些对大型转发表使用的超出简单线性搜索的技术(快速查找算法的综述可以在[ Gupta 2001 , Ru卧 Sanchez 2011 ]中找到)dom
-
同时也须要对内存访问时间尤其关注分布式
- 嵌人式片上 DRAM
- 更快的 SRAM (用做一种 DR灿4 缓存)内存
-
三态内容可寻址存储器 (Tenary Contenl Aclclress Memory 1 TCAM) 也常常被用于查找svg
输出端口阻塞
- 一旦分组通过查询肯定了输出端口就可以发送进入交换结构
- 在一些设计中,若是来自其余输入端口的分组正在使用该交换结构,则该分组被阻塞,须要在输入端口处排队,等待调度
输入端口的动做
"匹配加动做"的抽象
2. 交换结构
交换结构概述
三种交换技术
-
图例
-
经内存交换
- 最简单、最先的路由器是传统的计算机,其间交换工做由CPU完成
- 输入与输出端口的功能就像在传统操做系统中的1/0 设备同样 。
- 内存从输入端口接收分组并提取首部值,将其缓存到对应的输出端口
- 一次仅能执行一个内存读写因此一次只能转发一个分组
- 现代经由内存交换的路由器
- 与早期路由器的一个主要差异是,目的地址的查找和将分组存储(交换)进适当的内存存储位置是由输入线路卡来处理的 。
- 在某些方面,经内存交换的路由器看起来很像共享内存的多处理机,用一个线路卡上的处理将分组交换(写)进适当的输出端口的内存
-
经总线交换
-
输入端口经一根共享总线将分组直接传送到输出端口,不须要路由选择处理器的干预 。
-
交换方式
- 让输入端口为分组预先计划一个交换机内部标签(首部) ,指示本地输出端口,使分组在总线上传送和传输到输出端口 。
- 该分组能由全部输出端口收到,但只有与该标签匹配的端口才能保存该分组 。
- 而后标签在输出端口被去除,由于其仅用于交换机内部来跨越总线
-
在总线交换下,路由器中只能同时进行一个分组的转发,由于每一个分组都会彻底占用整个总线
-
但对于运行在小型局域网和企业网巾的路由器来讲,经过总线交换一般是足够的 。
-
经互联网络交换
- 经互联网络交换是为了克服单一,共享式总线带宽限制
- 纵横式交换机就是一种由 2N 条总线组成的互联网络,它链接 N 个输入端口与 N 个输出端口
- 每条垂直的总线在交叉点与每条水平的总线交叉,交叉点经过交换结构控制器(其逻辑是交换结构自身的一部分)可以在任什么时候候开启和闭合 。
- 当某分组到达端口 A ,须要转发到端口 Y ,交换机控制器闭合总线 A 和 Y 交叉部位的交叉点,而后端口 A 在其总线上发送该分组,该分组仅由总线 Y 安排接收 。
- 输出端口不一样的分组能够同时转发,但输出端口相同的分组仍是须要等待
3 输出端口
- 输出端口处理取出存放在输出端口内存巾的分组并将其发送到输出链路上
4 何处出现排队
什么是排队
- 在输入端口和输出端口只要进入速度大于处理速度均可能出现排队的状况
- 排队的位置和程度(或者在输人端口排队,或者在输出端口排队)将取决于流量负载、交换结构的相对速率和线路速率 。
什么是丢包
- 当输出端口出现排队情况是,排队的分组就会进入路由器的缓存空间,当缓存空间耗尽就会发生丢包
路由器缓存?
-
该设置多少缓存空间?
- 缓存数量 ( B ) 应当等于平均往返时延 (RTI ,好比说 250ms) 乘以链路的容量( C) 。
- 所以,一条具备 250ms RTT 的 10Gbps 链路将须要的缓存量等于 B =RTT * C =2. 5Gb 。
-
缓存满了怎么办?
5. 路由选择控制平面
- 前面咱们已经隐含地假设路由选择控制平面所有驻留并运行在路由器中的路由选择处理器上 。
- 网络范围的路由选择控制平面所以是分布式的,即不一样部分(例如路由选择算法)执行在不一样的路由器上而且经过彼此发送控制报文进行交互 。
- 新型路由器控制平面体系结构其中数据平面连同部分控制平面(例如,链路状态的本地测量/报告,转发表的安装和维护)在路由器中实现,部分控制平面可以在路由器外部实现(例如,在可以执行路由计算的集中式服务器中实现) 。
- 一个定义良好的 API 规定了这两个部分彼此交互和通讯的方式 。
- 这些研究人员争辩说将软件控制平面与硬件数据平面(具备最少的路由器驻留控制平面)分离,可以以集中式路由选择计算代替分布式路由选择计算,从而简化路由选择,经过容许不一样的用户定制的控制平面在快速的硬件数据平面上运行,可以进行网络创新.
都看到这里了,各位哥哥姐姐叔叔阿姨给小王点个赞 关个注 留个言吧,和小王一块儿成长吧,大家的关注是对我最大的支持。
有事没事进来看看吧 : 小王的博客目录索引
更多计算机网络优质博客看这 : 计算机网络专栏博客索引
若是以上内容有任何不许确或遗漏之处,或者你有更好的意见,就在下面留个言让我知道吧-我会尽我所能来回答。