1、路由分类
路由产生方式:
- 直接路由:路由器会自动生成本路由器激活端口所在网段的路由条目
- 静态路由:网络管理员手工配置,静态路由信息在缺省的情况下私有的,不会传递给其他的路由器
- 简单、高效、可靠、安全保密性高
- 静态路由描述转发路径的方式有两种:指向本地接口、指向下一跳路由器直连接口的IP地址
3.动态路由:运行同一种路由协议的相邻路由器之间可以互相学习路由
4.默认路由:是一种特殊的静态路由,当所有已知路由信息都查不到数据包如何转发时,按缺省路由的信息进行转发(最长前缀匹配)
2、RIP协议
RIP(Routing Information Protocols)路由信息协议,是应用较早、使用较普遍的内部网关协议,适用于小型的同类网络,是典型的距离矢量协议。
- RIP协议简单,易用,开销小,管理方便
- RIP是基于UDP,端口520的应用层协议
- RIP协议使用跳数进行路由度量,支持的最大跳数限度为15(超过15个则认为是不可达的)
- RIP通过周期性更新将其整个路由表向所有与其直连的邻居发送,维护相邻路由器的关系,同时根据收到的邻居的路由表来计算自己的路由表。
- RIP协议采用水平分割、毒性反转、抑制定时器和触发更新等方法阻止路由环路问题
- RIP默认支持4条等开销(即度量值相同)的链路做负载均衡,最大可以支持6条。通过路由自动汇总实现路由负载均衡,不支持不等开销的链路做负载均衡
1)RIP的工作原理
- RIP启动时的初始RIP Database仅包含本路由器声明的路由
- RIP启动后向各个接口广播或组播一个REQUEST报文
- 邻居路由器的RIP协议从某接口收到REQUEST报文后,根据自己的RIP Database,形成Update(Response)报文向该接口对应的网络广播
- RIP接收邻居路由器回复的包含邻居路由器RIP Database的Update报文,形成自己的RIP Database
- RIP的Metric以Hop为计算标准,最大的有效跳数为15,16跳为无穷大代表无效
2)RIP路由表的更新过程)RIP路由表的更新过程
- RIP以30秒为周期用Response报文广播自己的路由表
- 收到邻居发来的Response报文后,RIP计算报文中路由项的度量值,比较其与本地路由表中路由项的差别,然后更新自己的路由表
- 90s没有收到邻居路由器的更新,认为路由不可达
- 路由表中的每一路由项都对应一老化定时器,当路由项在180s内没有任何更新时,定时器超时,该路由项的度量值变为不可达
- 某路由项的度量值变为不可达后,以该度量值在Response报文中发布,240秒没有更新后将其从路由表中清除
3)RIP路由表的更新原则
- 对本路由表中已有的路由项,当发送报文的网关相同时,不论度量值是增大还是减少都更新该路由项
- 对本路由表中已有的路由项,当发送报文的网关不同时,只在度量值减少时更新该路由项
- 对本路由表中不存在的路由项,在度量值小于16时在路由表中增加该路由项
4)RIP的特性
- 定时发送路由更新
- 跳数限制(限制了网络规模)
- 固定度量(使用跳数作为度量,基本静态,不适合高度动态网络)
- 收敛速度慢(单个路由器30s更新一次,180s路由失效等,降低网络性能)
5)RIP协议的版本
1.RIP-1
- 有类路由协议,不支持可变长子网掩码VLSM
- 以广播的形式发送更新报文
- 不支持认证
2.RIP-2
- 无类路由协议,支持VLSM,可以学习到不同子网掩码长度的子网的路由
- 以组播的形式发送更新报文,组播地址为224.0.0.9
- 支持明文和MD5的认证,增强网络的安全性
RIPv1在执行路由表查询时,首先检查的是目的网络的主网络号,网络从大到小。如有数据包发往10.1.0.0/16,路由器会首先检查表中有无符合10.0.0.0这个A类网络的条目,如果没有则丢弃并返回ICMP包,如果有路由器会继续向下查询有无子网匹配。
RIPv2则相反,从小到大查询网路。它会忽略目的地址的网络类型,不考虑A、B、C类等,在表中执行精确地按位匹配查询。它首先检查的是掩码位数最长的,如果有32位掩码的路由条目,则这条路径会被优先检查,其次是24位、16位等等;不匹配,则返回ICMP包。默认路由的检查,将会被放在最后。
RIPng(RIP next generation)
随着IPv6的出现,很多相关协议需要做出相应改变以适应其128位长的地址,RIPng就是由此应运而生的
RIPng与RIP-2极为相似 ,因此可以让RIP-2更加简单和方便地过渡到RIPng。
4、IGRP协议
IGRP(Interior Gateway Routing Protocol)是从RIP基础上发展而来的,是Cisco专有协议。
- IGRP比RIP复杂,能够使用多种度量来确定到达目的地址的最佳路由
- 负载均衡同样默认4条等开销的链路,最大支持6跳,并且支持不等开销的链路做负载均衡。
- IGRP协议适用于更大的网络:分组的最大跳数为255跳(默认100)
- IGRP不支持VLSM(以IGRP为基础开发的EIGRP支持VLSM)
1)IGRP路由表的更新
- 默认情况下90s通过广播发送一次路由更新
- 270s无路由更新则认为邻居路由器不可达,相关路由进入保持状态,保持时间270s后删除
2)IGRP的度量标准
- IGRP默认使用带宽和时延度量
- IGRP协议可以使用多个变量来确定一个符合度量标准,使路由选择更准确,适应不同的服务类型
- 带宽
- 时延
- 信道可信度
- 信道占用率
- 最大传输单元
- 跳数
5、OSPF协议
OSPF(Open Shortest Path First)是由IETF开发的一个基于链路状态的域内路由协议,使用最短路径优先算法(SPF)计算路由。
在IP网络上,它通过收集和传递自治系统的链路状态来动态的发现并传播路由
目前有三个版本
- OSPFv1:测试版本,仅在实验平台使用
- OSPFv2:目前普遍使用的版本
- OSPFv3:提供对IPv6路由支持
1)OSPF的原理
- 所有的路由器都维护一个链路状态数据库,该数据库其实就是整个网络的拓扑结构图
- 一个路由器的链路状态指的是该路由器都和哪些网络或路由器相邻,以及将数据发往这些网络或路由器所需的成本等
- 由于网路中链路状态可能经常变化,OSPF让每一个链路状态都带上一个32位的序号,序号越大状态就越新
- OSPF规定:链路状态序号增长的速率不能超过每五秒钟一次
- 全部序号空间在600年内不会产生重复号
- 只要网络拓扑发生任何变化,通过泛洪链路状态通告数据包LSA,链路状态数据库就能很快地进行更新
- OSPF的更新过程收敛得快是其重要优点之一
- OSPF依靠路由器之间的频繁交换信息来建立链路状态数据库,并维持数据库在全网范围内的一致性,即实现链路状态数据的同步更新
- OSPF直接使用IP分组传送,IP分组首部的协议字段的值为89
- OSPF发送的IP分组很小,减少路由信息的通信量
- 分组小的另一个优点就是传输时不会分片,降低了传输出错的概率
- 当网络经历改变稳定后,即OSPF路由协议收敛完成时,所有路由器会根据其各自的链路状态信息计算出各自的路由表
当网络稳定时,网络中比较安静
2)OSPF的基本算法
SPF算法(最短路径优先算法)是OSPF路由协议的基础,如Dijkstra算法
SPF算法将每一个路由器自身作为根来计算其到其他路由器的距离,每个路由器根据统一的数据库计算出自治系统的拓扑结构图,被称为最短路径树
3)OSPF成本
OSPF使用成本/开销作为唯一的度量标准,范围为1-65535,成本越低代表路径越优
OSPF使用SPF算法来获得链路的成本
路由器通过累加出口接口上的成本来计算某条路径(抵达目标前必须经过的一系列链路)的总成本
实际中OSPF一般基于接口上的带宽值来得出成本(与链路带宽成反比)。Cisco的计算公式是:100000000/接口带宽,如一个10Mb/s以太网接口的成本为10,10*8*的成本参考值可以修改。
每台OSPF路由器都在每个接口上运行成本计算公式,其他路由器在使用SPF算法以寻找最短路径时将会使用所得出的值
4)链路状态通告
OSPF协议使用链路状态通告LSA来为邻居提供路由选择信息,LSA封装在链路状态更新LSU包中,一个LSU包可以封装多个LSA。LSU又封装在IP分组中,并发给源路由器的邻居。
LSA是根据链路状态的任何变化生成,如链路故障和新链路的出现以及改变链路成本等的接口变化
OSPF是一种自安全的协议,把重复减小到最少:
- 定期交换Hello数据包以维持邻居消息,默认30分钟才对所有LSA进行一次刷新
- 更新只在网络发生变化时才发生
5)指定路由器和备份路由器
路由器ID
路由器ID是一个32bit的无符号整数,是一台路由器的唯一标识,在整个自治系统内唯一
- 如果路由器配置了环回地址则使用环回地址作为ID
- 存在多个环回地址时则选用最高的作为ID
- 一般使用路由器的最高IP地址作为ID
用作路由器ID的接口不一定要运行OSPF协议
环回地址
Loopback接口是虚拟接口,大多数平台都支持使用这种接口来模拟真正的接口
系统管理员在完成网络规划后会为每一台路由器创建一个loopback接口,并在该接口上指定一个IP作为管理地址(使用该地址实现远程登录)
虚拟接口不会像物理接口那样因为各种因素的影响而导致接口被关闭,该接口状态永远是UP的,不能封装任何链路层协议
在广播多路访问网络(如Ethernet)中,存在一个指定路由器DR在OSPF协议中完成以下的工作:
- 指定路由器产生用于负责维护网段的拓扑表,该表内包含在该网段上所有的路由器和链路状态信息
- 指定路由器与所有和它处于同一个网段上的OSPF路由器建立相邻关系,逻辑上处于一个网段的中心
在广播多路访问网络中使用指定路由器的原因:
网段内可能同时连接多个路由器,邻接关系复杂
如果网段内所有的路由器两两建立连接关系,维护这种关系会发送大量的Hello数据包,占用网络带宽,而且需要占用较多的路由器CPU资源
OSPF支持的网络是否需要指定路由器:
通过Hello完成,在一个网段上选择路由器ID最大的作为指定路由器,ID第二大的作为备份指定路由器
在广播多路访问网络中使用指定路由器的原因:
- 网段内可能同时连接多个路由器,邻接关系复杂
- 如果网段内所有的路由器两两建立连接关系,维护这种关系会发送大量的Hello数据包,占用网络带宽,而且需要占用较多的路由器CPU资源
OSPF支持的网络是否需要指定路由器:
- 广播多路访问:各种局域网,如Ethernet,需要选举DR
- 点对点:两台路由器相连,如串行链线路,无需DR和BDR
- 点对多点:无需DR和BDR
- 非广播多路访问:如帧中继、X.25,需要选举DR
6)OSPF报文和包交互
OSPF报文类型
OSPF有五种报文类型,每个OSPF包都具有OSPF数据包报头,IP包头中,协议字段为89,代表OSPF,组播地址=224.0.0.5或224.0.0.6
- Hello包:建立邻居关系,决定指定路由器和备份指定路由器
- 数据库描述DD:描述自己的数据库中已有的LSA
- 链路状态请求LSR:向对方请求LSA
- 链路状态更新LSU:向邻居发送邻居请求的LSA或是泛洪自己最新更新的LSA
- 链路状态确认LSAck:告知邻居哪些LSA已经收到,以让邻居将确认收到的LSA从重传列表中删除
OSPF协议包交互
- A、B分别向网络以组播的方式发送Hello
- A、B在接收到对方的Hello包后,都把对方加入到自己的邻居列表中
- 假定A收到B的Hello,发现自己在B的邻居列表中,此时A给B发送DD包
- B在收到A的DD包后查看自己的数据库,将A发来的DD包中有而自己的数据库中没有的LSA放到B给A的邻居列表中
- A收到B的LSR包后,给B发送LSU以让B更新自己的数据库
- B收到A的LSU包后,进行一系列的检查,决定是否更新自己的数据库并发送LSAck包
- 同样,在A给B更新数据库的同时,B也给A更新A的数据库
- 当A、B数据库完成同步之后,A、B互相成为对方FULL状态的邻居
OSPF路由表更新
路由器发现网络变化后,产生链路状态变更新通告,向所有邻居扩散,来使这个信息传播到整个网络,以便所有的路由器尽快完成收敛
所谓的链路状态变更包括:
- 检测到邻居的物理链路中断
- 最大等待时间内没有收到对方的Hello
- 收到邻居的链路状态更新通告,通知网络变化
7)多区域OSPF
单区域OSPF中随着网络规模的增大,网络故障概率增加且链路状态数据库容量增加
多区域OSPF中包含一个主干区域Area0(一般位于区域中心),其他区域与主干区域通过物理链路或虚拟链路直接相连
多区域OSPF的优点
- 多区域OSPF的每一个区域都有该区域独立的链路状态数据库
- 对于每一个区域,其网络拓扑在区域外是不可见的,同样在每一个区域中的路由器对于域外的其余网络结构也不了解
- 主干区域负责在各区域之间传递路由信息
- 通过使用多区域OSPF一个大的网络可以被划分为多个小的网络,非常有利于网络的扩展
路由器类型:
- 内部路由器IR:维护一个区域内的链路状态数据库
- 区域边界路由器ABR:维护与其相连的所有区域内网络的链路状态数据库
- 主干路由器BR:至少有一个物理接口在区域0
- 自治系统边界路由器ASBR:与其他自治系统AS相连的路由器,一般选择主干区域的中心路由器
多区域OSPF的路由汇总/汇聚有两种情况:
- 区域间汇总:在区域边界路由器上运行,将区域内的网络进行汇总发送给其他区域
- 外部汇总:在自治系统区域边界路由器上运行,将自治系统内的网络进行汇总发送给其他自治系统
路由表中的由OSPF协议生成的表项中,目标网络有三种:
- 和路由器在同一个区域内的网络:O
- 本自治系统内其他区域的网络:O IA
- 位于本自治系统外的网络:O E1或O E2
多区域OSPF的设计要点
- 主干区域要能承受较大的网络负荷:所有的区域流量都经主干区域,应当配置冗余路由器和链路,提高可靠性
- 普通区域可以采用不同的配置策略
- 尽量采用汇总来减少路由表的条目:合理的进行IP规划
- 路由器的数量限制:Cisco的通用规则:每个区域不超过50台路由器;路由器的邻居不超过60个,相邻区域不超过3个;每个路由器最多为1个局域网的指定路由器或备份路由器
OSPF虚链路
多区域OSPF设计规定所有区域必须与主干区域直接相连。在实际的网络组建中会出现普通区域没有直接的链路和主干区域连接。
采用配置虚链路的方法解决:虚链路也可用于区域0内的路由器无法直接相连而是通过公共区域相连接的情况
虚链路不是永久OSPF设计的一部份,它仅仅是一个权宜之计,一个用来解决连接问题的暂时方案
8)OSPF的应用特性
- 适应范围:OSPF支持各种规模的网络,最多可支持几百台路由器,具有巨大的网络直径
- 快速收敛:如果网络拓扑结构发生变化,OSPF立即发送更新报文,使得这一变化在自治系统中同步
- 无自环:由于OSPF通过收集到的链路状态用最小生成树算法计算路由,故从算法本身保证了不会生成自环路由
- 子网掩码:对VLSM提供很好的支持
- 区域划分:允许自治系统的网络被划分为区域来管理,区域间传送的路由信息被进一步抽象,从而减少了占用网络带宽
- 等值路由:OSPF支持到同一目的地最多三条等值路由
- 路由分级:使用4类不同的路由,按优先顺序分别是区域内路由,区域间路由,第一类外部路由,第二类外部路由
- 支持验证:它支持给予接口的报文验证以保证计算的安全性:明文或者MD5
- 组播发送:OSPF在有组播发送能力的链路层上以组播地址发送协议报文,既达到了广播的作用,又最大程度的减少了其他网络设备的干扰
6、IS-IS协议
中间系统到中间系统IS-IS是一种内部网关协议,是电信运营商普遍采用的内部网关协议之一,是一种基于链路状态算法的路由协议
IS-IS和OSPF
- 共同之处:都是链路状态协议,使用SPF算法、VLSM快速汇聚等
- 从协议实现:OSPF基于TCP/IP,运行在IP层上,IS-IS最早为无连接网络服务设计,后来增加对IP路由的支持
- OSPF适合企业级网络,IS-IS更适合运营商级别的网络
7、边界网关协议BGP/BGP4
外部网关协议的典型代表是边界网关协议BGP,它旨在取代早期的一个外部网关协议EGP
- BGP是一种用于AS间传递网络可达性信息的路径矢量协议,通过在对等体间交换网络可达性信息来构建AS可达信息拓扑图。
- 对于BGP而言,整个因特网就是一个大的AS图,到因特网上任一目的的路由可以通过一个AS路径来表示
- BGP运行于TCP上,端口号为179
BGP不使用传统的内部网关协议的指标,而使用基于路径、网络策略或规则集来决定路由
- AS之间交换或更新网络可达信息
- AS路径:由AS号的列表构成的序列
8、三层交换
三层交换在传统局域网交换机的基础上添加专用的路由模块实现局域网内快速路由
具有三层交换功能的交换机称为第三层交换机或路由交换机,使用专用集成电路来完成路由计算,速度比较快,通常能达到线速(即数据输出速率等于输入速率)
三层交换即通常放置在LAN或WAN的核心层,为本地客户提供高速的数据交换和直连路由,分割广播域提高性能
MLS
Cisco交换机使用MLS(MultiLayer Switching)技术实现三层交换,用硬件处理包交换和重写帧头,提高IP路由性能
MLS的组成部分:
- 多层交换的交换引擎(MLS-SE):负责处理转发和重写数据包功能的交换实体
- 多层路由处理器(MLS-RP):相当于路由器,负责处理每个数据流的第一个数据包,协助MLS-SE
- MLS-RP可以是外部的路由器,也可以由三层交换机的路由交换模块来实现
- 多层交换协议(MLSP):一个轻型协议,用来通过MLS-RP对MLS-SE进行初始化
MLS步骤
- 交换机检查目标MAC地址,如果目标MAC地址是交换机(MLS-SE)所配置的路由器(MLS-RP),就开始第三层交换的处理,否则这些报文在第二层被交换
- 如果这些报文要进行第三层交换,交换机将会在MLS缓存中查找目标IP地址的转发表项
- 如果找到一个MLS表项,那么报文将使用这个表项中的信息重写报文,修改目标MAC地址,TTL减1,并重新计算校验值
- 如果没有发现MLS表项,那么此帧将被转发到MLS-RP;路由器路由这个报文,并将此发挥MLS-SE,供它在缓存中写入一个新的转发表项
- 按新的MAC地址转发此帧
三层交换方案通常在核心层使用三层交换机,汇聚层使用二层交换机,来自不同VLAN的信息流在二层交换机上汇聚,通过三层交换机相连的Trunk链路,在三层交换机实现路由,并转发给目的主机