路由器开发(一)—— 路由器硬件结构及软件体系

一、路由器的硬件构成 

路由器主要由以下几个部分组成:输入/输出接口部分、包转发或交换结构部分(switching
fabric)、路由计算或处理部分。如图所示

图1    路由器的基本组成

输入端口是物理链路和输入包的进口处。端口通常由线卡提供,一块线卡一般支持4、8或16个端口,一个输入端口具有许多功能。第一个功能是进行数据链路层的封装和解封装。第二个功能是在转发表中查找输入包目的地址从而决定目的端口(称为路由查找),路由查找可以使用一般的硬件来实现,或者通过在每块线卡上嵌入一个微处理器来完成。第三,为了提供QoS(服务质量),端口要对收到的数据包进行业务分类,分成几个预定义的服务级别。第四,端口可能需要运行诸如SLIP(串行线网际协议)和PPP(点对点协议)这样的数据链路级协议或者诸如PPTP(点对点隧道协议)这样的网络级协议。一旦路由查找完成,必须用交换开关将包送到其输出端口。如果路由器是输入端加队列的,则有几个输入端共享同一个交换开关。这样输入端口的最后一项功能是参加对公共资源(如交换开关)的仲裁协议。普通路由器中该部分的功能完全由路由器的中央处理器来执行,制约了数据包的转发速率(每秒几千到几万个数据包)。高端路由器中普遍实现了分布式硬件处理,接口部分有强大的CPU处理器和大容量的高速缓存,使接口数据速率达到10Gbps,满足了高速骨干网络的传输要求。

 路由器的转发机制对路由器的性能影响很大,常见的转发方式有:进程转发、快速转发、优化转发、分布式快速转发。进程转发将数据包从接口缓存拷贝到处理器的缓存中进行处理,先查看路由表再查看ARP表,重新封装数据包后将数据包拷贝到接口缓存中准备传送出去,两次查表和拷贝数据极大的占用CPU的处理时间,所以这是最慢的交换方式,只在低档路由器中使用。快速交换将两次查表的结果作了缓存,无需拷贝数据,所以CPU处理数据包的时间缩短了。优化交换在快速交换的基础上略作改进,将缓存表的数据结构作了改变,用深度为4的256叉树代替了深度为32的2叉树或哈希表(hash),CPU的查找时间进一步缩短。这两种转发方式在中高档路由器中普遍加以应用。在骨干路由器中由于路由表条目的成倍增加,路由表或ARP表的任何变化都会引起大部分路由缓冲失效,以前的交换方式都不再适用,最新的交换方式是分布式快速交换,它在每个接口处理板上构建一个镜像(mirror)路由表和MAC地址表相结合的转发表,该表是深度为4的256叉树,但每个节点的数据部分是指向另一个称为邻接表的指针,邻接表中含有路由器成帧所需要的全部信息。这种结构使得转发表完全由路由表和ARP表来同步更新,本身不再需要额外的老化进程,克服了其它交换方式需要不断对缓存表进行老化的缺陷。

交换结构最常见的有总线型、共享内存型、Cross-bar空分结构型。总线型结构最简单,所有输入和输出接口挂在一个总线上,同一时间只有两个接口通过总线交换数据。其缺点是其交换容量受限于总线的容量以及为共享总线仲裁所带来的额外开销。在调度共享数据传输通道上必须花费一定的开销,而且总线带宽的扩展受到限制,制约了交换容量的扩张,一般在中档路由器中使用这种结构。共享内存型结构中,进来的包被存贮在共享存贮器中,所交换的仅是包的指针,这提高了交换容量,但它受限于内存的访问速度和存储器的管理效率,尽管存贮器容量每18个月能够翻一番,但存贮器的存取时间每年仅降低5%,这是共享存贮器交换开关的一个固有限制。共享内存型结构在早期的中低档路由器中普遍应用。Cross-bar空分结构相当于多条并行工作的总线,具有N×N个交叉点的交叉开关可以被认为具有2N条总线。如果一个交叉是闭合,输入总线上的数据在输出总线上可用,否则不可用。对流经它的数据不断进行开关切换,可见开关速度决定了交换容量,随着各种高速器件的不断涌现,这种结构的交换容量普遍达到几十Gbps以上,成为目前高端路由器和交换机的首选交换结构。

  路由计算或处理部分主要是运行动态路由协议。接收和发送路由信息,计算出路由表,为数据包的转发提供依据。各种档次的路由器的路由表条目的大小存在很大差异,从几千条到几百万条不等,因此高端路由器的路由表的构造对路由查找速度影响很大,其路由表的数据结构常采用二叉树的形式,查找与更新的速度都比较快。

  输出端口在包被发送到输出链路之前对包存贮,可以实现复杂的调度算法以支持优先等级要求。与输入端口一样,输出端口同样要能支持数据链路层的封装和解封装,以及许多较高级协议。

    一般而言,路由器对一个数据包的交换要经过一系列的复杂处理,主要有以下几个方面:

1)压缩和解压缩

2)加密和解密

3)用输入/输出访问列表进行报文过滤

4)输入速率限制

5)进行网络地址翻译(NAT)

6)处理影响本报文的任何策略路由

7)应用防火墙特性对包进行检查

8)处理Web页缓冲的重定向

9)物理广播处理,如帮助性地址(ip help address)

10)利用启用的QoS机制对数据包排队

11)TTL值的处理

12)处理IP头部中的任选项

13)检查数据包的完整性

二、路由器的软件体系

路由器是在软件控制下进行工作的,与普通操作系统相比,其软件系统是比较简洁、全部驻留在存储器当中且受限于原始平台的一种操作系统。在商用实时操作系统的内核基础上开发一个包含TCP/IP协议栈的接口平台,辅以各种功能模块,形成完整的软件系统。为最大限度地提高路由器快速交换报文的能力,该操作系统被设计为具有最小的操作性开销,同时允许CPU使用最大的带宽进行报文交换。其体系结构如图所示。

图2  路由器软件体系结构

路由器的软件系统主要有五个组成部分:

1、进程:由执行特定任务的独立线程和相关的数据组成,如系统配置维护的telnet守护进程、客户端进程,FTP进程、TFTP进程,SNMP进程,各种协议进程:IP、TCP、UDP、RIP、OSPF、BGP、ARP、ICMP、IGMP,其它有加解密进程、报文过滤进程、NAT进程等。

2、内核:为系统的其它部分提供基本的系统服务,如存储器管理、进程调度、定时器和时钟管理。它为进程提供了硬件(CPU和存储器)资源的管理。

3、报文缓冲:用来存放将要被交换的报文。

4、设备驱动程序:控制网络接口硬件设备及其它外围设备(如Flash)。设备驱动程序接口位于进程、内核、硬件之间,同时与交换控制软件有接口。

5、交换控制软件:根据转发方式控制报文的交换,在高端线速路由器中该部分功能由硬件实现。

三、网络层的几个基本概念

路由器工作在OSI参考模型第三层——网络层,是一种实现网络服务的设备,它以不同的速度为大量链路和子网提供接口。路由器是有源的且具有智能的网络节点,从而能够参与网络管理。

1、被动路由协议与路由选择协议

  被动路由协议(routed protocols:指任何在网络层地址中提供了足够信息的网络协议,该网络协议允许将数据包从一个主机转发到以寻址方案为基础的另一个主机。被动路由协议定义了数据包内各字段的格式和用途。数据包一般都从一个端系统传动到另一个端系统。IP协议就是一个被动路由协议。

 路由选择协议(routing protocol):通过提供共享路由选择信息机制来支持被动路由协议。路由选择协议消息在路由器之间传送。路由选择协议允许路由器与其他路由器通信来修改和维护路由选择表。路由选择协议有:RIP、OSPF、IGRP等。如图4-3说明了被动路由协议和路由选择协议的关系。

图3 被动路由协议用于引导信息,路由选择协议用在路由器之间维护路由表

2、网络层协议的工作

当一台主机上的应用需要向另一个网络上的目的主机发送数据包时,路由器的一个接口会收到一个数据链路帧。网络层进程通过检查数据包报头来确定目的网络,然后查询与网络出口的接口相联系的路由表,如图4。

数据包重新封装在选定接口的数据链路帧中,排队等待分发到路径的下一站路由器(hop)。

在数据包通过另一个路由器交换时都要发生这个过程,在与包含目的主机的网络相连接的路由器中,数据包再次封装成目的LAN数据链路帧的类型并被发送到目的主机。

图4  每个路由器都为其上层功能提供其各种服务

3、静态路由、动态路由、缺省路由

由系统管理员事先设置好固定的路由称之为静态(static)路由,一般是在系统安装时就根据网络的配置情况预先设定的,它不会随未来网络拓扑结构的改变而改变。此时网络的可达性不依赖于网络自身的存在和状态,不管目的网络存在或不存在,静态路由都会保存在路由转发表中,IP业务量仍然向着目的地发送。静态路由允许互联网管理员指定在有限的划分中哪些是可以公开的。当一个网络只能通过一个路径到达时,对这个网络用静态路由就足够了,这种划分称为存根(stub)网络。对一个存根网络配置

静态路由选择,避免了动态路由选择的开销。如图5显示了静态路由的用途

图5 静态路由

动态(Dynamic)路由是路由器根据网络系统的运行情况而自动调整的路由。路由器根据路由选择协议(Routing Protocol)提供的功能,自动学习和记忆网络运行情况,在需要时自动计算数据传输的最佳路径。此时网络可达性依赖于网络的存在和状态。如果一个目的地不存在,则路由会从路由转发表中消失,IP包业务量不会向该目的地发送。使用动态路由可以很好的适应拓扑结构的变化。它可以在网络的不同路径间改变流量方向。

 缺省路由是一个路由表入口,用来指明一些在下一跳没有明确地列于路由表中的帧。缺省路由可以说是管理员的静态配置的结果。如图6显示了缺省路由的用途

图6缺省路由

4、用度量表示距离

当一个路由选择算法改变路由表时,它的首要目标时确定要包含在表中的最佳信息。每个选路算法以自己的方式解释最佳路径。算法为通过网络的每条路径生成了一个数字,称为度量值(metric)。其典型意义是该度量值越小,这条路径就越好。(如图7示)

图7用于选择最佳路由路径的各种度量

度量的计算可以基于路径的一个特征,或是将几个特征结合起来计算出更复杂的度量。如图所示,用于度量计算的几个路径特征。路由器中最常用的度量如下:

1)跳数(hop count):数据包到达目的必须通过的路由器数。跳数越少,该路由越好。路径长被用于描述到达目的的跳数;

2)带宽(Bandwidth):链路的数据能力。如:一个10Mb/s的T1链路优于64kb/s的专线;

3)时延(delay):把数据包从源送到目的地所需的时间;

4)负荷(load):网络资源如路由器和链路上的活动数量;

5)可靠性(reliability):指每条网络链路上的差错率;

6)滴答数(Ticks):用IBM PC的时钟滴答(大约55ms)计数的数据链路延迟;

7)开销(cost):是一个变化的值,通常基于带宽、花费的钱数或其他由网络管理员指定的单位。

时间: 2024-08-20 23:45:12

路由器开发(一)—— 路由器硬件结构及软件体系的相关文章

全球最低功耗蓝牙单芯片DA14580的软件体系 -RW内核和消息处理机制

上一篇文章<蓝牙单芯片DA14580的硬件架构和低功耗>阐述了DA14580的硬件架构和低功耗的工作原理.本文文章阐述该平台的软件体系,并着重分析消息事件的处理机制. 一.DA14580SOC硬件组成和软件体系组成 DA14580芯片硬件架构包括三个部分: 1)使用ARM公司的cortex M0作为CPUprocessor处理器. 2)使用RivieraWaves公司的IP核作为BLEcore和基带.射频部分. 3)集成时钟管理CMU.电源管理PMU.memory控制存储和其他外围模块控制器,

硬盘内部硬件结构和工作原理详解[zz]

一般硬盘正面贴有产品标签,主要包括厂家信息和产品信息,如商标.型号.序列号.生产日期.容量.参数和主从设置方法等.这些信息是正确使用硬盘的基本依据,下面将逐步介绍它们的含义. 硬盘主要由盘体.控制电路板和接口部件等组成,如图1-1所示.盘体是一个密封的腔体.硬盘的内部结构通常是指盘体的内部结构:控制电路板上主要有硬盘BIOS.硬盘缓存(即CACHE)和主控制芯片等单元,如图1-2所示:硬盘接口包括电源插座.数据接口和主.从跳线,如图1-3所示. 图1-1 硬盘的外观 图1-2 控制电路板 图1-

CPU的硬件结构和汇编语言

(已更正) 这个问题包括CPU的硬件结构和汇编语言的范畴. 这里梳理一下. 首先, 题主"李建国"自问自答的部分说的是正确的, CPU的指令集是软件与CPU这两个层级之间的接口, 而CPU自己, 就是对于这一套CPU指令集的"实例化". 无论处于上层的软件多么的高级, 想要在CPU执行, 就必须被翻译成"机器码", 翻译这个工作由编译器来执行. 编译器在这个过程中, 要经过"编译", "汇编", "

论山寨手机与Android联姻 【9】SmartPhone的硬件结构

如何区别智能手机(SmartPhone)与功能手机(FeaturePhone)? 有一种观点认为,智能手机本质上是功能手机与便携式电脑(Laptop PC)的结合.功能手机的功能受限于制造厂商的预制,也就是说,用户基本上只能使用手机出厂时已经预制的功能,而不能自主下载并安装新的应用.而个人电脑出厂时,多半是裸机,用户根据自己的喜好,自主决定安装哪些软件.一言以蔽之,所谓智能手机,就是用户能够自主安装应用软件的手机. 按照这个定义,智能手机与上网本(Netbook)有什么本质区别呢? 智能手机与上

手把手教你使用FineUI开发一个b/s结构的取送货管理信息系统系列博文索引

近阶段接到一些b/s类型的软件项目,但是团队成员之前大部分没有这方面的开发经验,于是自己选择了一套目前网上比较容易上手的开发框架(FineUI),计划录制一套视频讲座,来讲解如何利用FineUI快速开发一个小型的b/s结构的管理系统,已达到帮助团队成员快速掌握b/s结构信息系统的开发方法. 源码位置:https://github.com/kamiba/FineUIDemo 源码下载办法:安装SVN客户端(本文最后提供下载地址),然后checkout以下的地址:https://github.com

如何开发一套完整的直播软件源码,前期需要准备什么?

如何开发一套完整的直播软件,首先需要采集主播的视频和音频功能,然后传入流媒体服务器.本篇主要讲解如何采集主播的视频和音频功能,当前可以切换前置后置摄像头和焦点光标,直播APP拥有独立的美颜SDK,可以看见不一样的你,后续还会有直播的其他功能文章陆续发布.首先:讲解一下在直播软件源码中系统捕获音视频步骤: 1.创建AVCaptureSession对象 2.获取AVCaptureDevicel录像设备(摄像头),录音设备(麦克风),注意不具备输入数据功能,只是用来调节硬件设备的配置. 3.根据音频/

目前网络上大部分的网站都是由ASP或PHP开发,并且java平台的软件购买成本不适合中小企业客户,一般适用于银行、国家安全等行业领域

目前网络上大部分的网站都是由ASP或PHP开发,并且java平台的软件购买成本不适合中小企业客户,一般适用于银行.国家安全等行业领域. 要求建设开发大型复杂的网站,但仅有一个idea,不能够提供网站详细要求的客户.大型网站的建设开发的过程,是一个严谨的有详细规范的逻辑流程,必须要形成文字(文档)形式的网站建设需求,炎帝科技才能够在网站设计/网站开发的过程中控制网站建设项目质量,顺利成功完成.此类最典型的客户口头禅就是“我要做一个类似facebook的网站”,“我要做淘宝那样的网站”,此类客户自己

【CUDA学习】GPU硬件结构

GPU的硬件结构,也不是具体的硬件结构,就是与CUDA相关的几个概念:thread,block,grid,warp,sp,sm. sp: 最基本的处理单元,streaming processor  最后具体的指令和任务都是在sp上处理的.GPU进行并行计算,也就是很多个sp同时做处理 sm:多个sp加上其他的一些资源组成一个sm,  streaming multiprocessor. 其他资源也就是存储资源,共享内存,寄储器等. warp:GPU执行程序时的调度单位,目前cuda的warp的大小

linux学习之路之磁盘阵列RAID及硬件RAID和软件RAID的区别

我们知道单个磁盘存储数据的容量是有限的,为了让磁盘的容量增大,我们可以将多个较小的磁盘组合在一起,形成一个较大的磁盘装置,这就是RAID(独立式磁盘阵列),RAID不仅可以提高数据的存储容量,也可以提高数据保护功能,不同级别的RAID,所提供的的功能各不一样. RAID常见的级别有RAID0,RAID1,RAID5,RAID10,RAID01,RAID5,RAID50 下面逐个介绍这些级别的工作原理. RAID0:首先将磁盘分成等量的数据块(CHUNK),然后在将存储的数据切分成符合CHUNK大