我们先看看路由器的结构:
由上图可以看到路由器的体系结构分为两部分:路由选择部分、分组转发部分
路由选择部分是控制层面(软件)、核心是路由选择处理机
分组转发部分是数据层面(硬件)、核心是交换结构
我们本篇只讨论其数据层面作用。
每台路由器的数据平面的主要作用是实现转发功能,这是其数据平面中实现的唯一功能(尽管是最为常见且重要的功能),具体定义是指将分组从一个输出链路接口转移到适当的输出链路接口的路由器本地动作,发生时间尺度很小(几纳秒),通常由硬件实现。分组转发部分由三部分组成:输入端口、输出端口和交换结构。
输入端口(input port):
输入端口的线路端接功能与数据链路层处理实现了用于个输入链路的物理层和链路层。在3处,路由器使用转发表来查找输出端口,使得到达的分组能经过交换结构转发到改输出端口。转发表由路由选择处理器计算与更新或接受自远程SDN控制器(控制层面再讲)的内容。通过使用每个输入端口的转发表副本,转发决策能直接在每个输入端口处做出,而不用去调用路由选择处理器进行集中式处理。
交换结构:
交换结构实现交换功能,交换可以通过多种方式完成,下面仅举几例。
内存交换:传统:当分组到达输入端口,端口以中断方式向路由选择处理器发送信号以获得其目的地址,与此同时分组会从输入端口被复制到处理器内存中,在转发表中找到正确输出端口后,再将分组复制到输出端口的缓存中。注意到,所有接收到的分组在交换结构都共享一个系统,依次只能执行一个内存读/写。现代:路由选择处理器获得目的地址的功能交给了输入线路卡。
总线交换:输入端口经一根共享总线将分组直接传送到输出端口,不需要路由选择处理器的干预。这是通过将分组加上标签首部,交给所有输出端口,但只有匹配的输出端口才能保存该分组,标签将在输出端口处去除。
互联网网络交换: 参考书上说是2N条主线连接N个输入端口和N个输出端口,但我觉得是N^2,所以这里不详述了。结果是A向Y传输时,B可以向X传输,但不同的输入端口不能同时向同一个输出端口传输分组。
输出端口:
输出端口处理存放在端口内存中的分组并将其交给输出链路,这包括选择和去除排队的分组进行传输,执行所需的链路层和物理层传输功能。
排队问题
直接总结几个要点:
1、在输入端口的3和输出端口的1处都可能出现排队(排队的位置)
2、凡输入量大于输出量(处理量),就会造成排队(造成排队的原因)
3、排队存在调度,可能是先进先出(FIFO),可能存在队列优先权,可能是通过循环和加权来制造相对公平的排队。(如何排队)