zoukankan      html  css  js  c++  java
  • 路由器的功能和工作原理

    路由器的功能及工作原理

    路由器:

    广播隔离,网络互联(IP寻址)、数据处理、数据处理

    通过路由协议和路由表来实现网络互联

    路由协议:

    内部网关路由协议(rip\eigrp\ospf)、外部网关路由协议(bgp)

    静态路由(默认路由)

    默认路由:手动配置;通过动态路由协议传递默认路由

    动态路由:rip,ospf

    RIP路由协议

    工作原理:

    每隔30秒向邻居路由发送完整的路由表,并通过对比路由条目的metric值将最优路由添加到路由表中,最大跳为16跳,会形成环路。

    优缺点:

    优点:对于小型网络,RIP就所占带宽而言开销小,易于配置、管理和实现,并且RIP还在大量使用中。

    缺点:RIP也有明显的不足,即当有多个网络时会出现环路问题。为了解决环路问题,IETF提出了分割范围方法,即路由器不可以通过它得知路由的接口去宣告路由。分割范围解决了两个路由器之间的路由环路问题,但不能防止3个或多个路由器形成路由环路。触发更新是解决环路问题的另一方法,它要求路由器在链路发生变化时立即传输它的路由表。这加速了网络的聚合,但容易产生广播泛滥。总之,环路问题的解决需要消耗一定的时间和带宽。若采用RIP协议,其网络内部所经过的链路数不能超过15,这使得RIP协议不适于大型网络。

    解决环路的机制有哪些?

    定义最大跳数、水平分割、路由毒化、毒性逆转、抑制计时器、触发更新

    RIP版本的对比:

    区别一:RIP1是一个有类路由协议,即所有的更新包中不含子网掩码,不支持VLSM, 所以就要求网络中所有设备必须使用相同的子网掩码,否则就会出错,而RIP2是一个无类的路由协议,它使用子网掩码 区别二:第二个不同的地方是RIP1是发送更新包的时候使用的是广播包,而RIP2默认使用的是组播224.0.0.9,也支持广播发送,这样相对于RIP1来说就节省了一部分网络带宽。 区别三:第三个就是RIP2支持明文或者是 MD5验证,要求两台路由器在同步路由表的时候必须进行验证,通过才可以进行路由同步,这样可以加强安全性。

    如何配置rip?

    RIP v1的配置过程如下:(三层交换机记得ip routing打开路由转发功能)

    Router(config)#router rip #配置RIP协议。

    Router(config-router)#network 192.168.10.0 #宣告所有与本身路由器直连的网段

    Router(config-router)#network 192.168.20.0 #宣告所有与本身路由器直连的网段

    RIP v2 的配置过程如下

    Router(config)#router rip #配置RIP协议

    Router(config-router)#version 2 #使用RIP v2

    Router(config-router)#no auto-summary #RIP v2默认情况在主网络边界路由器上进行路由汇总,因此需要关闭路由汇总功能

    Router(config-router)#network 192.168.10.0 #宣告所有与本身路由器直连的网段

    Router(config-router)#network 192.168.20.0 #宣告所有与本身路由器直连的网段

    优先级(管理距离)?

    默认管理距离120l'y

    OSPF路由协议

    开放式最短路径优先(Open Shortest Path First,OSPF)是广泛使用的一种动态路由协议,它属于链路状态路由协议,具有路由变化收敛速度快、无路由环路、支持变长子网掩码(VLSM)和汇总、层次区域划分等优点。在网络中使用OSPF协议后,大部分路由将由OSPF协议自行计算和生成,无须网络管理员人工配置,当网络拓扑发生变化时,协议可以自动计算、更正路由,极大地方便了网络管理。但如果使用时不结合具体网络应用环境,不做好细致的规划,OSPF协议的使用效果会大打折扣,甚至引发故障。

    OSPF协议是一种链路状态协议。每个路由器负责发现、维护与邻居的关系,并将已知的邻居列表和链路费用LSU(Link State Update)报文描述,通过可靠的泛洪与自治系统AS(Autonomous System)内的其他路由器周期性交互,学习到整个自治系统的网络拓扑结构;并通过自治系统边界的路由器注入其他AS的路由信息,从而得到整个Internet的路由信息。每隔一个特定时间或当链路状态发生变化时,重新生成LSA,路由器通过泛洪机制将新LSA通告出去,以便实现路由的实时更新。

    实现过程:

    1、初始化形成端口初始信息:在路由器初始化或网络结构发生变化(如链路发生变化,路由器新增或损坏)时,相关路由器会产生链路状态广播数据包LSA,该数据包里包含路由器上所有相连链路,也即为所有端口的状态信息。

    2、路由器间通过泛洪(Floodingl机制交换链路状态信息:各路由器一方面将其LSA数据包传送给所有与其相邻的OSPF路由器,另一方面接收其相邻的OSPF路由器传来的LSA数据包,根据其更新自己的数据库。

    3、形成稳定的区域拓扑结构数据库:OSPF路由协议通过泛洪法逐渐收敛,形成该区域拓扑结构的数据库,这时所有的路由器均保留了该数据库的一个副本。

    4、形成路由表:所有的路由器根据其区域拓扑结构数据库副本采用最短路径法计算形成各自的路由表。

    ospf的组播地址:

    1.点到点网络:

    是连接单独的一对路由器的网络,点到点网络上的有效邻居总是可以形成邻接关系的,在这种网络上,OSPF包的目标地址使用的是224.0.0.5 2.广播型网络,

    比如以太网,Token RingFDDI,这样的网络上会选举一个DR和BDR,DR/BDR的发送的OSPF包的目标地址为224.0.0.5;而除了DR/BDR以外的OSPF包的目标地址为224.0.0.6

    在广播型网络中,所有路由器都以224.0.0.5的地址发送hello包,用来维持邻居关系,

    非DR/BDR路由都以224.0.0.6的地址发送lsa更新,而只有DR/BDR路由监听这个地址,

    反过来,DR路由使用224.0.0.5来发送更新到非DR路由

    AllDRouters(224.0.0.6)

    AllSPFRouters (224.0.0.5)

    维护的三张表:邻居表、拓朴表、路由表

    ospf中的LSA、LSU、LSR等5个包

    Hello 用来发现并维持邻居

    DD 用来描述本地的LSDB信息,即和邻居互通有无,只携带LSA的Header。

    LSR 用于请求邻居的LSA

    LSU 用于发送LSA具体信息给邻居,或者用于洪泛LSA,或者用于隐式回应LSU报文。

    LSAck用于回应LSU报文。

    OSPF的DR和BDR:

    在DR和BDR出现之前,每一台路由器和他的邻居之间成为完全网状的OSPF邻接关系,这样5台路由器之间将需要形成10个邻接关系,同时将产生 25条LSA.而且在多址网络中,还存在自己发出的LSA 从邻居的邻居发回来,导致网络上产生很多LSA的拷贝,所以基于这种考虑,产生了DR和BDR.

    DR将完成如下工作:

    1. 描述这个多址网络和该网络上剩下的其他相关路由器.

    2. 管理这个多址网络上的flooding过程.

    3. 同时为了冗余性,还会选取一个BDR,作为双备份之用.

    DR BDR选取规则: DR BDR选取是以接口状态机的方式触发的.

    1. 路由器的每个多路访问(multi-access)接口都有个路由器优先级(Router Priority),8位长的一个整数,范围是0到255,Cisco路由器默认的优先级是1优先级为0的话将不能选举为DR/BDR.优先级可以通过命 令ip ospf priority进行修改.

    2. Hello包里包含了优先级的字段,还包括了可能成为DR/BDR的相关接口的IP地址.

    3. 当接口在多路访问网络上初次启动的时候,它把DR/BDR地址设置为0.0.0.0,同时设置等待计时器(wait timer)的值等于路由器无效间隔(Router Dead Interval).

    DR BDR选取过程:

    1. 在和邻居建立双向(2-Way)通信之后,检查邻居的Hello包中Priority,DR和BDR字段,列出所有可以参与DR/BDR选举的邻居.所有 的路由器声明它们自己就是DR/BDR(Hello包中DR字段的值就是它们自己的接口地址;BDR字段的值就是它们自己的接口地址)

    2. 从这个有参与选举DR/BDR权的列表中,创建一组没有声明自己就是DR的路由器的子集(声明自己是DR的路由器将不会被选举为BDR)

    3. 如果在这个子集里,不管有没有宣称自己就是BDR,只要在Hello包中BDR字段就等于自己接口的地址,优先级***的就被选举为BDR;如果优先级都一样,RID***的选举为BDR

    4. 如果在Hello包中DR字段就等于自己接口的地址,优先级***的就被选举为DR;如果优先级都一样,RID***的选举为DR;如果选出的DR不能工作,那么新选举的BDR就成为DR,再重新选举一个BDR。

    5. 要注意的是,当网络中已经选举了DR/BDR后,又出现了1台新的优先级更高的路由器,DR/BDR是不会重新选举的

    6. DR/BDR选举完成后,DRother只和DR/BDR形成邻接关系.所有的路由器将组播Hello包到AllSPFRouters地址 224.0.0.5以便它们能跟踪其他邻居的信息,即DR将洪泛update packet到224.0.0.5;DRother只组播update packet到AllDRouter地址224.0.0.6,只有DR/BDR监听这个地址.

    OSPF的7种状态:

    建立邻居关系时的过程(七种状态):

    1 Down状态——在Down状态下,OSPF进程还没有与任何邻居交换信息。OSPF在等待进入Init状态。

    2 Init状态——OSPF路由器以固定的时间间隔(缺省10s)发送类型1(Hello)的分组,以便与邻居路由器建立特殊的关系。

    3 Two-Way(双向)状态——每台OSPF路由器都使用分组试图与同一个IP网络中的所有邻居路由器建立双向状态或双向通信。Hello分组中含有发送者已知的OSPF邻居列表。当路由器看到它自己出现在一个邻居路由器的Hello分组中时,它就进入了双向状态。

    4 ExStart(准启动)状态——当路由器与它的邻居进入到ExStart状态后,他们之间的会话就表征为一种毗邻关系,但这时路由器还没有变成全毗邻状态。ExStart状态是使用类型2的数据库描述(DBD,DataBase Description)分组建立的,两个路由器用Hello分组协商在它们之间的关系谁是“主”,谁是“从”。(具有最高OSPF路由器ID的路由器将胜出并变成“主”)

    5 Exchange(交换)状态——在交换状态下,邻居路由器使用类型2的DBD分组来互相发送它们的链路状态信息,也就是说路由器相互描述它们的链路状态数据库。路由器将它们所学到的信息与其现存的链路状态数据库进行比较,并且单独确认每个DBD分组,如果任何一台路由器接收到不在其数据库中的链路信息,该路由器就向其邻居请求有关该链路的完整更新信息。完整的路由信息在“Loading(加载)”状态下被交换。

    6 Loading(加载)状态——在相互描述过各自的链路状态数据库之后,路由器可以用类型3的链路状态请求(LSR)分组来请求更完整的信息。当路由器接收到一个LSR的时候,它会用一个类型4的链路状态更新(LSU)分组进行回应。这些类型4的LSU分组含有确切的LSA,而LSA是链路状态型路由选择协议的核心,类型4的LSU分组由类型5的分组所确认。

    7 Full Adjacency(全毗邻)状态——加载状态结束之后,路由器就进入全毗邻状态。每台路由器都保存着一张毗邻路由器列表,它就是称为毗邻数据库。

    OSPF泛洪

    Flooding采用2种报文

    LSU Type 4---链路状态更新报文

    LSA Type 5---链路状态确认报文

    在P-P网络,路由器是以组播方式将更新报文发送到组播地址224.0.0.5.

    在P-MP和虚链路网络,路由器以单播方式将更新报文发送至邻接邻居的接口地址.

    在广播型网络,DRother路由器只能和DR&BDR形成邻接关系,所以更新报文将发送到224.0.0.6,相应的DR以 224.0.0.5泛洪LSA并且BDR只接收LSA,不会确认和泛洪这些更新,除非DR失效 在NBMA型网络,LSA以单播方式发送到DR BDR,并且DR以单播方式发送这些更新.

    LSA通过序列号,校验和,和老化时间保证LSDB中的LSA是***的,

    Seq: 序列号(Seq)的范围是0x80000001到0x7fffffff.

    Checksum: 校验和(Checksum)计算除了Age字段以外的所有字段,每5分钟校验1次.

    Age: 范围是0到3600秒,16位长.当路由器发出1个LSA后,就把Age设置为0,当这个LSA经过1台路由器以后,Age就会增加1个LSA保存在LSDB中的时候,老化时间也会增加.

    当收到相同的LSA的多个实例的时候,将通过下面的方法来确定哪个LSA是***的:

    1. 比较LSA实例的序列号,越大的越新.

    2. 如果序列号相同,就比较校验和,越大越新.

    3. 如果校验和也相同,就比较老化时间,如果只有1个LSA拥有MaxAge(3600秒)的老化时间,它就是***的.

    4. 如果LSA老化时间相差15分钟以上,(叫做MaxAgeDiff),老化时间越小的越新.

    5. 如果上述都无法区分,则认为这2个LSA是相同的.

    路由器类型

    1. Internal Router:内部路由器

    2. ABR(Area Border Router):区域边界路由器

    3. Backbone Router(BR):骨干路由器

    4. ASBR(Autonomous System Boundary Router):自治系统边界路由器。

    虚链路(Virtual Link)

    以下2中情况需要使用到虚链路:

    1. 通过一个非骨干区域连接到一个骨干区域.

    2. 通过一个非骨干区域连接一个分段的骨干区域两边的部分区域.

    虚链接是一个逻辑的隧道(Tunnel),配置虚链接的一些规则:

    1. 虚链接必须配置在2个ABR之间.

    2. 虚链接所经过的区域叫Transit Area,它必须拥有完整的路由信息.

    3. Transit Area不能是Stub Area.

    4. 尽口的避免使用虚链接,它增加了网络的复杂程度和加大了排错的难度.

    OSPF区域—OSPF的精华

    Link-state 路由在设计时要求需要一个层次性的网络结构.

    OSPF网络分为以下2个级别的层次:

    骨干区域 (backbone or area 0)

    非骨干区域 (nonbackbone areas)

    在一个OSPF区域中只能有一个骨干区域,可以有多个非骨干区域,骨干区域的区域号为0。

    各非骨干区域间是不可以交换信息的,他们只有与骨干区域相连,通过骨干区域相互交换信息。

    非骨干区域和骨干区域之间相连的路由叫边界路由(ABRs-Area Border Routers),只有ABRs记载了各区域的所有路由表。各非骨干区域内的非ABRs只记载了本区域内的路由表,若要与外部区域中的路由相连,只能通过 本区域的ABRs,由ABRs连到骨干区域的BR,再由骨干区域的BR连到要到达的区域。

    骨干区域和非骨干区域的划分,大大降低了区域内工作路由的负担。

    LSA类型

    1.类型1:Router LSA:每个路由器都将产生Router LSA,这种LSA只在本区域内传播,描述了路由器所有的链路和接口,状态和开销.

    2.类型2:Network LSA:在每个多路访问网络中,DR都会产生这种Network LSA,它只在产生这条Network LSA的区域泛洪描述了所有和它相连的路由器(包括DR本身).

    3.类型3:Network Summary LSA :由ABR路由器始发,用于通告该区域外部的目的地址.当其他的路由器收到来自ABR的Network Summary LSA以后,它不会运行SPF算法,它只简单的加上到达那个ABR的开销和Network Summary LSA中包含的开销,通过ABR,到达目标地址的路由和开销一起被加进路由表里,这种依赖中间路由器来确定到达目标地址的完全路由(full route)实际上是距离矢量路由协议的行为

    4.类型4:ASBR Summary LSA:由ABR发出,ASBR汇总LSA除了所通告的目的地是一个ASBR而不是一个网络外,其他同NetworkSummary LSA.

    5.类型5:AS External LSA:发自ASBR路由器,用来通告到达OSPF自主系统外部的目的地,或者OSPF自主系统那个外部的缺省路由的LSA.这种LSA将在全AS内泛洪

    6.类型6:Group Membership LSA

    7.类型7:NSSA External LSA:来自非完全Stub区域(not-so-stubby area)内ASBR路由器始发的LSA通告它只在NSSA区域内泛洪,这是与LSA-Type5的区别.

    不透明LSA:

    8.类型8:External Attributes LSA

    9.类型9:Opaque LSA(link-local scope,)

    10.类型10:Opaque LSA(area-local scope)

    11.类型11:Opaque LSA(AS scope)

  • 相关阅读:
    如果你正在找工作,也许这七个方法会帮到你
    WebSocket 浅析
    关系数据库涉及中的范式与反范式
    MySQL字段类型与合理的选择字段类型
    ER图,数据建模与数据字典
    详解慢查询
    MySQL的最佳索引攻略
    后端技术演进
    MySQL主从复制(BinaryLog)
    MySQL读写分离
  • 原文地址:https://www.cnblogs.com/beiguo/p/13791672.html
Copyright © 2011-2022 走看看