路由器概述
首先我们先大致了解一下路由器的大致结构以及工作方式。
路由器体系结构
路由器体系结构如下图:
其中四个重要组成部分依次如下:
1.接入端口
2.交换结构
3.输出端口
4.路由选择处理器
执行路由选择协议
维护路由选择表以及连接的链路状态信息
为路由器计算转发表
执行网络管理功能
什么是路由器转发平面?
一台路由器的输人端口、输出端口和交换结构共同实现了这种转发功能,并且总是用硬件实现,将这种转发功能总称为路由器转发平面
如果N个端口结合在一块线路卡上(因为实践中常常这样做).数据报处理流水线必须以N倍速率运行,这远快过软件实现的速率
实现方式:转发平面硬件既能够使用厂商向己的硬件设计来实现,也能够使用购买的商用硅芯片(例如英特尔和Broadcom公司所出售的)来实现。
当转发平面以纳秒时间尺度运行时,路由器的控制功能(即执行路由选择协议、对上线或下线的连接链路进行响应)在毫秒或秒时间尺度上运行。
这些路由器控制平面(routerconLrolplane)通常用软件实现并在路由选择处理器上执行(通常是一种传统的CPU)。
输入端口
输入端口的详细视图:
输入端口的功能:
转发表的更新与使用
影子副本
快速查找算法
在概念上查找表是简单的,但是在实际应用中需要在非常短(例如几纳秒)的时间内完成查询,因此除了硬件设计外还需要一些对大型转发表使用的超出简单线性搜索的技术(快速查找算法的综述能够在[Gupta2001,Ru卧Sanchez2011]中找到)
同时也需要对内存访问时间尤为关注
嵌人式片上DRAM
更快的SRAM(用作一种DR灿4缓存)内存
三态内容可寻址存储器(TenaryContenlAclclressMemory1TCAM)也经常被用于查找
输出端口阻塞
一旦分组经过查询确定了输出端口就能够发送进入交换结构
在一些设计中,如果来自其他输入端口的分组正在使用该交换结构,则该分组被阻塞,需要在输入端口处排队,等待调度
输入端口的动作
"匹配加动作"的抽象
交换结构
交换结构概述
三种交换技术
图例
经内存交换
最简单、最早的路由器是传统的计算机,其间交换工作由CPU完成
输入与输出端口的功能就像在传统操作系统中的1/0设备一样。
内存从输入端口接收分组并提取首部值,将其缓存到对应的输出端口
一次仅能执行一个内存读写所以一次只能转发一个分组
现代经由内存交换的路由器
经总线交换
输入端口经一根共享总线将分组直接传送到输出端口,不需要路由选择处理器的干预。
交换方式
让输入端口为分组预先计划一个交换机内部标签(首部),指示本地输出端口,使分组在总线上传送和传输到输出端口。
该分组能由所有输出端口收到,但只有与该标签匹配的端口才能保存该分组。
然后标签在输出端口被去除,因为其仅用于交换机内部来跨越总线
在总线交换下,路由器中只能同时进行一个分组的转发,因为每个分组都会完全占用整个总线。
但对于运行在小型局域网和企业网巾的路由器来说,通过总线交换通常是足够的。
经互联网络交换
经互联网络交换是为了克服单一,共享式总线带宽限制
纵横式交换机就是一种由2N条总线组成的互联网络,它连接N个输入端口与N个输出端口
每条垂直的总线在交叉点与每条水平的总线交叉,交叉点通过交换结构控制器(其逻辑是交换结构自身的一部分)能够在任何时候开启和闭合。
当某分组到达端口A,需要转发到端口Y,交换机控制器闭合总线A和Y交叉部位的交叉点,然后端口A在其总线上发送该分组,该分组仅由总线Y安排接收。
输出端口不同的分组可以同时转发,但输出端口相同的分组还是需要等待
输出端口
输出端口处理取出存放在输出端口内存巾的分组并将其发送到输出链路上。
何处出现排队
什么是排队?
什么是丢包?
当输出端口出现排队状况是,排队的分组就会进入路由器的缓存空间,当缓存空间耗尽就会发生丢包
路由器缓存?
路由选择控制平面
前面我们已经隐含地假设路由选择控制平面全部驻留并运行在路由器中的路由选择处理器上。
网络范围的路由选择控制平面因此是分布式的,即不同部分(例如路由选择算法)执行在不同的路由器上并且通过彼此发送控制报文进行交互。
新型路由器控制平面体系结构其中数据平面连同部分控制平面(例如,链路状态的本地测量/报告,转发表的安装和维护)在路由器中实现,部分控制平面能够在路由器外部实现(例如,在能够执行路由计算的集中式服务器中实现)。
一个定义良好的API规定了这两个部分彼此交互和通信的方式。
这些研究人员争辩说将软件控制平面与硬件数据平面(具有最少的路由器驻留控制平面)分离,能够以集中式路由选择计算代替分布式路由选择计算,从而简化路由选择,通过允许不同的用户定制的控制平面在快速的硬件数据平面上运行,能够进行网络创新.