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

一、路由器的硬件构成 

        路由器主要由以下几个部分组成:输入/输出接口部分包转发或交换结构部分(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进程,各种协议进程:IPTCPUDPRIPOSPFBGPARPICMPIGMP,其它有加解密进程、报文过滤进程、NAT进程等。

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

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

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

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


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

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

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

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

 路由选择协议(routing protocol):通过提供共享路由选择信息机制来支持被动路由协议。路由选择协议消息在路由器之间传送。路由选择协议允许路由器与其他路由器通信来修改和维护路由选择表。路由选择协议有:RIPOSPFIGRP等。如图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/sT1链路优于64kb/s的专线;

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

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/401899.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

路由器开发(二)—— 路由器工作原理

当信息需要在两个网络之间传输时,常用路由器这种互连设备来负责数据的传输。路由器的主要工作是:路径的决定和数据包的转发(从路由器一个接口输入,然后选择合适接口输出);维护路由表。 路由器工作的方式非常…

Android颜色渐变的分隔线(ListView)

2019独角兽企业重金招聘Python工程师标准>>> shape.xml xx <?xml version"1.0" encoding"utf-8"?><shape xmlns:android"http://schemas.android.com/apk/res/android" > <gradient android:startColor&qu…

项目实践中Linux集群的总结和思考

2019独角兽企业重金招聘Python工程师标准>>> 前言&#xff1a;作为一名Linux/unix系统工程师、项目实施工程师&#xff0c;这几年一直在涉及到对外项目&#xff0c;经手过许多小中型网站的架构&#xff0c;F5、LVS及Nginx接触的都比较多&#xff0c;我想一种比较通俗…

路由器基础知识详解

第一章 网络互联 网络的根本目的非常简单&#xff1a;方便人们交换所获得的信息。但是网络的应用需求非常复杂&#xff1a;有的用户希望高带宽&#xff0c;但并不要求很长的传输距离&#xff1b;有的用户要求很长的距离&#xff0c;但对带宽要求很低&#xff1b;有的对网络的…

事务与锁机制

2019独角兽企业重金招聘Python工程师标准>>> 事务定义&#xff1a; 访问并可能更新数据库&#xff1a;一句或一组SQL&#xff0c;或者是一段程序&#xff0c;反正update了就是事务 ACID的4原则&#xff1a; 原子性&#xff1a; 一致性&#xff1a; 隔离性&#xff1…

路由器 VS OSI七层模型

OSI Open Source Initiative&#xff08;简称OSI&#xff0c;有译作开放源代码促进会、开放原始码组织&#xff09;是一个旨在推动开源软件发展的非盈利组织。OSI参考模型&#xff08;OSI/RM&#xff09;的全称是开放系统互连参考模型&#xff08;Open System Interconnection …

Linux Wireless架构总结

1、无线网络驱动(ath9k_htc) ath9k_htc是一个基于USB接口的SoftMAC无线网络适配器。为了其驱动能正常工作&#xff0c;首先必须调用usb_register来注册驱动定义的usb_driver&#xff0c;以借助USB Core的力量来处理与USB协议相关的事件。其代码如下&#xff1a;[cpp] view plai…

MySQL 日志文件 说明

MySQL 5.5 官方文档上有关日志的分类&#xff1a;By default, nologs are enabled. The following log-specific sections provide information about the server options that enable logging.--默认情况下&#xff0c;没有启动任何log&#xff0c;可以通过如下log 选项来启动…

Linux 下wifi 驱动开发(四)—— USB接口WiFi驱动浅析

前面学习了SDIO接口的WiFi驱动&#xff0c;现在我们来学习一下USB接口的WiFi驱动&#xff0c;二者的区别在于接口不同。而USB接口的设备驱动&#xff0c;我们前面也有学习&#xff0c;比如USB摄像头驱动、USB鼠标驱动&#xff0c;同样都符合LinuxUSB驱动结构&#xff1a; USB设…

Linux 下wifi 驱动开发(三)—— SDIO接口WiFi驱动浅析

SDIO-Wifi模块是基于SDIO接口的符合wifi无线网络标准的嵌入式模块&#xff0c;内置无线网络协议IEEE802.11协议栈以及TCP/IP协议栈&#xff0c;能够实现用户主平台数据通过SDIO口到无线网络之间的转换。SDIO具有传输数据快&#xff0c;兼容SD、MMC接口等特点。 对于SDIO接口的w…

Erlang并发机制 –进程调度

2019独角兽企业重金招聘Python工程师标准>>> Erlang调度器主要完成对Erlang进程的调度&#xff0c;它是Erlang实现软件实时和进程之间公平使用CPU的关键。Erlang运行时&#xff0c;有4种任务需要被调度&#xff1a;进程&#xff0c;Port&#xff0c;Linked-in drive…

Linux 下wifi 驱动开发(二)—— WiFi模块浅析

一、什么是wifi 模块 百度百科上这样定义&#xff1a; Wi-Fi模块又名串口Wi-Fi模块&#xff0c;属于物联网传输层&#xff0c;功能是将串口或TTL电平转为符合Wi-Fi无线网络通信标准的嵌入式模块&#xff0c;内置无线网络协议IEEE802.11b.g.n协议栈以及TCP/IP协议栈。传统的硬件…

Linux 下wifi 驱动开发(一)—— WiFi基础知识解析

一、WiFi相关基础概念 1、什么是wifi 我们看一下百度百科是如何定义的&#xff1a; Wi-Fi是一种可以将个人电脑、手持设备&#xff08;如pad、手机&#xff09;等终端以无线方式互相连接的技术&#xff0c;事实上它是一个高频无线电信号。[1] 无线保真是一个无线网络通信技术…

Linux 网络设备驱动开发(一) —— linux内核网络分层结构

Linux内核对网络驱动程序使用统一的接口&#xff0c;并且对于网络设备采用面向对象的思想设计。 Linux内核采用分层结构处理网络数据包。分层结构与网络协议的结构匹配&#xff0c;既能简化数据包处理流程&#xff0c;又便于扩展和维护。 一、内核网络结构 在Linux内核中&#…

Linux 网络设备驱动开发(二) —— Linux 网络栈剖析

一、协议简介 虽然对于网络的正式介绍一般都参考了 OSI&#xff08;Open Systems Interconnection&#xff09;模型&#xff0c;但是本文对 Linux 中基本网络栈的介绍分为四层的 Internet 模型&#xff08;如图 1 所示&#xff09;。 图 1. 网络栈的 Internet 模型 这个栈的最底…

Linux 网络设备驱动开发(三) —— 网络设备驱动基本原理和框架

一、协议栈层次对比 二、Linux网络子系统 Linux网络子系统的顶部是系统调用接口层。它为用户空间提供的应用程序提供了一种访问内核网络子系统的方法&#xff08;socket&#xff09;。位于其下面是一个协议无关层&#xff0c;它提供一种通用的方法来使用传输层协议。然后是具…

国产杀毒软件也开始支持虚拟化

今天不小心看到一个较老的“新”闻&#xff0c;国产安全软件厂商瑞星已经推出支持VMware vshield Endpoint技术的防病毒产品&#xff0c;也就是说如果客户今天使用的是VMware的虚拟化软件&#xff0c;上面运行的所有虚拟机就不需要安装传统的防病毒软件程序&#xff0c;而可以直…

VRP平台基本操作

一、显示系统信息 <Huawei>display version 图上所示可以知道VRP平台信息&#xff0c;运行的版本&#xff0c;运行的时间 二、修改和查看设备系统时间参数 1.查看时间 <Huawei>display clock 2.修改系统日期和时间 三、进入系统视图界面 <Huawei>system-view…

Android中获取应用程序(包)的信息-----PackageManager的使用(一)

本节内容是如何获取Android系统中应用程序的信息&#xff0c;主要包括packagename、label、icon、占用大小等。具体分为两个 部分&#xff0c;计划如下&#xff1a; 第一部分&#xff1a; 获取应用程序的packagename、label、icon等 &#xff1b; 第二部分&#xff1a; 获取应用…

VRP平台总体介绍及基础配置

前言 1、VRP软件系统基础 VRP系统在启动时需要加载“系统软件”和“配置文件”两部分&#xff0c;这与其它品牌网络交换机的操作系统是一样的。如果指定了下次启动的补丁文件&#xff0c;还需加载补丁文件。修改VRP系统启动的场景一般有以下几种&#xff1a; a-- 对交换机进行升…