目录
1、路由器概述
路由器是⽹络传输的交通枢纽,我经常把它⽐作是盘踞在数条不同物理线路尽头的章⻥怪,这个章⻥怪热衷于把线路中的数据包从⼀条线路抓出来丢到另外⼀条线路中(根据某种喜好)。全球最⼤的互联⽹Internet就是通过成千上万台路由器把世界各地的⽹络连接起来,使⼈们可以⽅便地开展各种业务、获取信息、相互交流和共享资源。
我们来看看路由器的定义;路由器时一种实现网络互连的设备,工作在OSI模型的第三层——网络层,提供路由与转发两种重要的机制,可以决定数据包从来源端到目的端所经过的路由路径(主机到主机之间的最佳传输路径)这个过程称之为路由;将路由器输入端的数据包移至合适的输出端(路由器内部完成),这个过程称为转发。简单来说就是一个提供一个路由与转发的网络互联设备。
路由器是⼀种具有多个输⼊端⼝和多个输出端⼝的专⽤计算机,其任务是转发分组。也就是说,将路由器某个输⼊端⼝收到的分组,按照分组要去的⽬的地(即⽬的⽹络),把该分组从路由器的某个合适的输出端⼝转发给下⼀跳的路由器。下⼀跳的路由器也按照这种⽅法处理分组,直到该分组到达终点为⽌。
2、基本作用
路由器的基本作用就是实现网络互连,为分组数据提供转发。
- 路由 :使⽤路由表来实现,包括路由表的建⽴、更新、维护、查找。使⽤静态路由和动态路由协议来获知远端⽹络构建路由表
- ⼦⽹间速率适配
- 隔离⼦⽹,防⽌⼴播蔓延,指定访问规则
- 不同类型⽹络互联:路由器经常会收到以某种类型的数据链路帧封装的数据包,当转发这种数据包时,路由器可能需要将其封装为另⼀种类型的数据链路帧。数据链路封装取决于路由器接⼝的类型及其连接的介质类型。
3、路由器的结构
在了解路由器的结构前我们需要知道什么是控制层面和数据层面。
控制层面就是各种协议工作的层面。它的作用是通过控制和管理各种网络协议的运行,使得路由器/交换机能够对整个网络的设备、链路和运行的协议有一个准确的了解,并在网络发生变化时也能及时感知并调整。控制层面为数据层面转发数据提供了各种必要的信息。控制层面占用的主要是软件资源,它消耗CPU。
控制层面:控制信息流。例如:RIP的报文、OSPF的LSA传递交互
数据层面是针对数据发送来说的。控制层面构建了路由表等数据发送的必要信息,数据层面根据这些信息来发送数据。网络设备中,对数据的各种具体的处理、转发过程都属于数据层面的范畴。数据层面主要占用的是硬件资源。
数据层面:数据流。例如:ICMP的ping包,用户的数据报文
由上图可以看出,整个路由器的结构可划分为2个部分:
- 路由选择部分:路由选择部分也叫做控制平⾯(软件),其核⼼构建是路由选择处理机。
- 分组转发部分:分组转发部分也叫数据平⾯(硬件),核⼼是硬件处理芯⽚和交换结构。
我们可以看出路由器的工作分为两个层面,一个是控制层面,一个是数据层面,首先由控制层面运行各种路由协议,完成对整个网络的路由表构建,这是由路由引擎实现的,数据的转发并不依赖路由表,如果直接使用路由表转发效率太低了;这时控制层面生成的路由表信息会同步给转发引擎,转发引擎生成一个转发表,这里会直接将转发表的内容导入芯片中,这是数据层面要完成的内容,当有用户的数据包进入时,会直接通过硬件来匹配目的IP地址,进而进行转发。
3.1 分组转发部分
查表规则:当表项中出现多个匹配项时,路由器使用最长匹配规则。还有一个规则是递归查找,由于现在的技术发展,转发表都是递归过后的结果,所以基本不太提及了。
TCAM转发表从概念上讲是简单的,只是搜索转发表查找最⻓匹配,但是要实现纳秒级执⾏就不仅要硬件执⾏查找,⽽且需要对⼤型转发表使⽤超出简单线性搜索的技术(快速查找算法),同时必须对内存访问时间也有苛刻的要求,我们会使⽤DRAM和SRAM,实际中经常⽤三元内容可寻址存储器(Tenary Content Address Memory)来查找,⽆论表⼤⼩如何,都会在⼀个时钟周期内检索出地址。
CAM和TCAM⽤于⼤型表的快速查询。
CAM执⾏⼆元运算(交换机)
- 基于0或1匹配;所有⽐特都必须匹配
- “命中”将返回结果(出接⼝)
- ⽤于MAC地址查询
TCAM执⾏三元运算(路由器)
- 基于0、1或X(不关⼼)匹配
- 最⻓匹配返回“命中”
- 适⽤于并⾮所有值都需要精确匹配的查询(ACL或IP路由表)。
(三)输出端⼝对线路上收到分组的处理:将交换结构传送过来的分组先进⾏缓存。在⽹络层的处理模块中设有⼀个缓冲区,实际上它就是⼀个队列。当交换结构传送过来的分组的速率超过输出链路的发送速率时,来不及发送的分组就必须暂时存放在这个队列中。数据链路层处理模块将分组加上链路层的⾸部和尾部,交给物理层后发送到外部线路。
分组丢弃:若路由器处理分组的速率赶不上分组进⼊队列的速率,则队列的存储空间最终必定减少到零,这就使后⾯再进⼊队列的分组由于没有存储空间⽽只能被丢弃。 路由器中的输⼊或输出队列产⽣溢出是造成分组丢失的重要原因。
3.2 交换结构
交换结构是⼀台路由器的核⼼组件,它的作⽤就是根据转发表 (forwarding table)对分组进⾏处理,将某个输⼊端⼝进⼊的分组从⼀ 个合适的输出端⼝转发出去。交换结构本身就是⼀种⽹络,但这种⽹络完全包含在路由器中,因此交换结构⼜可看成是”在路由器中的⽹络”。
常见的三种交换方法:(将输出端⼝I1收到的分组转发到输出端⼝O2)
1、通过存储器进⾏分组交换。 最早的路由器就是采⽤这种结构,交换⽅式和传统计算⼀样,输⼊端⼝与输出端⼝之间数据交换是由CPU(路由选择处理器)控制下完成的,数据到达输⼊端⼝路由操作系统通过中断⽅式向路由CPU发出信号,然后将数据复制到CPU内存中提取⽬标地址,查看转发表找出输出端⼝并将该数据复制到输出端⼝。
2、通过总线进⾏分组交换。 采⽤这种⽅式时,数据报从输⼊端⼝通过共享的总线直接传送到合适的输出端⼝,⽽不需要路由选择处理机的⼲预。但是由于总线是共享的,因此在同⼀时间只能有⼀个分组在总线上传送。当分组到达输⼊端⼝时若发现总线忙,则被阻塞⽽不能通过交换结构,并在输⼊端⼝排队等待。因为每⼀个要转发的分组都要通过每⼀条总线,因此路由器的转发带宽就受总线效率的限制。
3、通过内部互连⽹络进⾏分组交换。这种交换结构常称为互连⽹络。 它有2N条总线, 可以使N个输⼊端⼝和N个输出端⼝相连接,这取决于相应的交叉节点是使⽔平总线和垂直总线接通还是断开。 当输⼊端⼝收到⼀个分组时,就将它发送到与该输⼊端⼝相连的⽔平总线上。 若通向所要转发的输出端⼝的垂直总线是空闲的,则在这个结点将垂直总线与⽔平总线接通,然后将该分组转发到这个输出端⼝。但若该垂直总线已被占⽤,则后到达的分组就被阻塞,必须在输⼊端⼝排队。
4、报文路径处理
- 控制路径: 处理⽬的地址是本路由器的⾼层协议报⽂,特别是各种路由协议报⽂。虽然控制路径不是路由器的关键路径,但是它负责完成路由信息的交互,从⽽保证了数据路径上的报⽂沿着最优的路径转发。
- 数据路径: 处理⽬的地址不是本路由器⽽需要转发的报⽂,因此数据路径是整个路由器的关键路径,它直接影响路由器的整体性能。
5、工作过程
路由器的工作原理,为3层设备;当数据包进入路由器时,路由器先查看数据包中的目标MAC地址;
- 广播:解封装到3层
- 组播:每一个组播地址均存在自己的MAC地址;基于目标MAC就可以判断本地是否需要解封装;若本地加入了该组将解包,否则直接丢弃
- 单播:目标MAC为路由器接收到该流量的接口mac地址---解封装
- 目标MAC不是本地路由器的mac地址---丢弃
二层解封装完成后,查看3层报头;默认路由器仅查看目标IP地址;目标IP地址又分为:
- 广播 :解封装(这里通过解封装才能知道广播包,是不是找自己的)
- 组播:若路由器加入了该组,解封;若没有加入,丢弃
- 单播:目标ip地址为路由器,继续解封
- 目标ip地址为其他设备,路由器将查询本地的路由表—TCAM,进行后续的转发。
注:路由器查表规则:最长匹配原则>管理距离>度量值