一、动态路由
1. 自治系统
- AS
- 由单一的机构或者组织管理的一系列IP网络设备所构成的集合
- 为了进行网络的分块化,便于管理
- AS的范围
- 范围是没有限制的,但是存在边界
- AS的通信
- AS的内部运行相同的路由协议,路由的边界就是AS的边界 – 内部网关协议(IGP)
- AS之间的通讯,使用专用的路由协议(BGP – 边界网关协议、EGP – 外部网关协议)
2. 动态路由协议分类
- 按照范围区分
- IGP — 内部网关协议
- RIP、OSPF、ISIS、EIGRP(思科)
- EGP — 外部网关协议
- BGP
- IGP协议
按照协议特点分类 :
- 距离矢量型(DV型----共享路由表)
- RIP – 路由信息协议
- EIGRP – 加强型内部网关路由协议
- 链路状态型(LS-----共享拓扑)
- OSPF – 开放式最短路径优先协议
- ISIS – 中间系统到中间系统
按照是否携带真实掩码分类 :
- 有类别路由协议:不传递真实掩码
- 无类别路由协议:传递真实掩码
二、RIP – 路由信息协议
1. 基本概念
- 版本
- RIPv1 – IPv4网络
- RIPv2 – IPv4网络
- RIPng – IPv6网络
- 分类
- 距离矢量型
- RIPv1 – 有类别路由协议
- RIPv2 – 无类别路由协议
- RIP是应用层协议
- 基于UDP传输,端口号为 520
2. RIP的数据包
- 请求报文
- 在启动RIP进程后,设备会发送的报文,希望尽快获取邻居的路由信息
- 应答报文
- 携带了具体的路由信息,用于回答RIP的请求报文
3. RIP的工作原理
- 初始化
- 启动RIP进程后,在每个参与工作的接口上发送请求数据包。该请求数据包会向所有的RIP路由器请求一份完整的路由表信息;
- 以组播的形式发送
- 接收请求
- 对端接收到请求报文后,会立即回复应答报文,应答报文中包含了本地路由表全部信息。
- 接收到响应报文
- 路由器会对比收到的报文中的路由表信息,对本地的路由表进行增加、删除、修改等操作。
RIP算法 – 贝尔曼福特算法
···> 当接收到的数据包含有本地路由表中没有的路由项时,则直接加载到本地路由表(属于第一次收到 RIP 的应答报文) ;
···> 当接收到的数据包中含有本地路由表已经具备的路由项,且下一跳地址相同,则将数据包中的 路由项更新至本地路由表中;
···> 当接收到的数据包中含有本地路由表已经具备的路由项,但下一跳地址不相同,则比较 COST 值,若本地路由表中的 COST 值较大,则将数据包中的路由项更新至本地路由表;
···> 当接收到的数据包中含有本地路由表已经具备的路由项,但下一跳地址不相同,则比较 COST 值,若本地路由表中的 COST 值较小,则不进行更新;
- 常规路由更新和定时
- 当收敛结束后,路由器会以30s为周期,发送应答报文;
- 邻居路由器收到应答报文后,会设置一个180s的超时时间,如果180s内都没有收到邻居发来的应答报文,则路由器会认为邻居出现问题,并将从该邻居收到的路由项的COST值改为16,并会向周围邻居发送该COST值为16的路由信息。再经过120s后会将该路由项删除。
4. RIP 算法
贝尔曼福特算法
- 当接收到的数据包含有本地路由表中没有的路由项时,则直接加载到本地路由表(属于第一次收到RIP的应答报文) ;
- 当接收到的数据包中含有本地路由表已经具备的路由项,且下一跳地址相同,则将数据包中的 路由项更新至本地路由表中;
- 当接收到的数据包中含有本地路由表已经具备的路由项,但下一跳地址不相同,则比较COST 值,若本地路由表中的COST值较大,则将数据包中的路由项更新至本地路由表;
- 当接收到的数据包中含有本地路由表已经具备的路由项,但下一跳地址不相同,则比较COST 值,若本地路由表中的COST值较小,则不进行更新;
5. RIP计时器
- 更新计时器
- 每台启动了RIP的路由器都会有一个属于自己的更新计时器;
- 周期 – 30s;
- 是一个倒计时计时器,每当数值为0,则向周围邻居发送响应报文;
- 注意:当设备接收到请求报文后,则必须立刻发送应答报文。
- 无效计时器
- 每台路由器上的每一个路由项都会有一个无效计时器 ,不相互干扰;
- 无效计时器时间 – 一般是更新计时器的6倍 – 180s
- 每次路由条目被更新时,计时器在刷新为180s;
- 当计时器时间为0时,会认为该路由项已经无效,也可以说该路由项所指的目的地址不可达了,会将COST值设置为16,并向外界传递路由信息(触发更新);
- 垃圾收集计时器
- 当一个路由项的无效计时器为0时,即 cost 值被设置为16以后,会启动垃圾收集计时器 ;
- 时间 – 120s (2MSL)
- 当垃圾回收计时器为0时,则会删除该路由项;如果该计时器为0前,接收到对端路由器发送的应答报文,则该计时器直接删除,该路由项直接恢复使用;
6. RIPv1与RIPv2的区别
- 更新方式
- RIPv1使用广播形式发送
- RIPv2使用组播形式发送(224.0.0.9)
- 更新时是否携带真实掩码
- RIPv1不携带真实掩码(携带主类掩码)
- RIPv2携带真实掩码(IP所对应的掩码)
7. RIP环路
RIP防环机制
- 触发更新
- 当某一个路由器中的路由项发生改变时,不需要等待下一次更新周期的到来,就可以直接将发生变化的路由项(增加或减少)通过更新报文发送出去;
- 除了可以降低环路产生的概率,还可以加快路由的收敛速度;
- 注意:仅发送改变的路由项,不发送完整的路由表;
- 水平分割
- 如果有一个X/Y的路由项从路由器的G0/0/0口学习到,那么在发送应答报文时,该路由项不会 从G0/0/0口发出;
- 从此口进,不从此口出
- 毒性逆转
- 如果有一个X/Y的路由项从路由器的G0/0/0接口进入,那么在发送应答报文时,虽然还会从该 G0/0/0接口发出,但是此时的COST值为16;
- 俗称,带毒传输
- 最大跳数
在环路产生后,路由条目信息中的跳数不断增大的前提下,可以限制路由的传递;但该机制最大的意义在于限制协议的工作半径; — 跳
- 水平分割和毒性逆转,原理相同,但是做法不用,只能选择一个机制开启(华为:默认开启水平分割)
- 如果同时开启了水平分割和毒性逆转 ···> 以毒性逆转的机制执行
8. RIP基本配置
RIPV1
[r1]rip 1 //启动协议进程,配置进程号为1 ,仅具有本地意义
[r1-rip-1]version 1 //选择版本1
[r1-rip-1]network 192.168.1.0 //宣告,v1版本会宣告主类
[r1-rip-1]network 12.0.0.0
[r3]display ip routing-table protocol rip //查询RIP路由表
RIPV2
[r1]rip 1
[r1-rip-1]version 2
[r1-rip-1]undo summary ---关闭自动汇总,将携带接口准确的掩码;如果不关闭,宣告的属于同一主类的路由会自动汇总后发送
[r1-rip-1]network 12.0.0.0
- 宣告
- 要求
- 需要宣告所有直连网段
- 必须按照主类宣告
- 目的
- 激活接口:只有激活的接口才可以收发RIP的数据
- 发布路由:只有激活的接口对应的网段路由信息才可以发布
9. RIP扩展配置
- 手工汇总
- 去往多个可以汇总的目标网络范围,且具有相同的下一跳时,则可以不用具体的多个路由条目,仅写一条汇总目标的路由即可
[r1-GigabitEthernet0/0/1]rip summary-address 172.16.0.0 255.255.0.0
- 缺省路由
- 一般做在与运营商相连接的边界路由器上
[r1-rip-1]default-route originate
- 静默接口
- 配置了静默接口的接口无法主动发送数据包,只能被动接受,一般用于与用户相连的接口;
- 在RIP的静默接口中,是只收不发;
- 当这个接口收到RIP报文时,立刻从静默接口转为活跃接口;
[r1-rip-1]silent-interface GigabitEthernet 0/0/0
- 手工认证
- 用于路由器之间的身份核实,需要同时在双方路由器相连的接口上配置
- 只能用于RIPv2版本
- 注意:一定要双方路由器均配置
[r1-GigabitEthernet0/0/1]rip authentication-mode simple cipher 123
- 加快收敛
- 减少计时器时间
- 修改的时候,尽量不要更改三个时间之间的倍数关系。且修改的时候,尽量讲所有路由器均修改;
[r3-rip-1]timers rip 10 60 40
10. RIP版本不兼容的问题
- RIP版本收发信息
- RIPv1,仅收发广播RIP报文
- RIPv2,仅收发组播RIP报文
- 若无配置,则接收v1和v2的报文,只发送v1的报文
[r1-GigabitEthernet0/0/0]rip version 2 //更改接口RIP的版本
11. RIP不连续子网问题
【接口】undo rip split-horizon //关闭水平分割
三、OSPF – 开放式最短路径优先协议
RIP缺点 ···> OSPF解决问题:
- RIP是基于跳数选路的 – 跳数小的优,不会考虑带宽问题,可能会导致选路不佳
- RIP的占用资源过多 – 30S的周期更新,使得链路中充斥着大量的广播报文
- 仅支持小规模网络 – RIP支持最大跳数为15
1. 基本概念
- OSPF是一个标准的IGP协议(AS内部使用)
- OSPF的协议算法是==链路状态型协议== ···> 传递拓扑
- OSPF版本
- OSPFv1(淘汰)、OSPFv2(ipv4)、OSPFv3(ipv6)
- OSPF是携带真实掩码的(无类别的路由协议)
- 网络三要素
- 优先级 – 10(华为)
- 开销值:参考带宽/实际带宽(华为默认的参考带宽100Mbps)
- OSPF是跨层封装协议 – 协议号为89
- OSPF协议特点
- OSPF传递的不是路由,是LSA(链路状态通告)
- OSPF的更新方式
- 触发更新
- 30min 的周期链路状态刷新
- OSPF算法 – SPF算法
- OSPF是一种比较消耗路由器资源的协议,并且也会消耗链路资源
- 更新方式
- 使用组播
- 24.0.0.5(所有OSPF路由器)
- 224.0.0.6(一个MA网络中的DR/BDR接收的信息地址)
- 使用组播
2. OSPF区域化结构
- OSPF为了适应大中型网络环境,进行了结构化部署 – 区域划分
- 我们把只有一个区域的OSPF网络称为单区域OSPF网络
- 我们把只有多个区域的OSPF网络称为多区域OSPF网络
- 区域划分的特点
- 区域内部传递拓扑信息,区域间传递路由信息
- 区域划分的标准是基于路由器的接口的
- 区域的编号 – 帮助设备区分信息的不同来源、方便管理
- 32位二进制组成,也是点分十进制表现形式
- 区域编号为0的区域 ···> 他被称为骨干区域(有且只有一个),其他编号的区域被称为非骨干区域
- 在单区域网络中,这个区域一定是骨干区域。
- 在多区域网络中,所有的非骨干区域必须和骨干区域直接相连(OSPF防环)
- 区域边界路由器 – ABR
- 同时属于多个区域,并且一个接口对应一个区域,且至少有一个接口是属于区域0的
- 区域间可以存在多个ABR,一个ABR也可以对应多个区域
- 自治系统边界路由器 – ASBR
- 同时属于多个网络,例如某台路由器既属于OSPF网络,又属于RIP网络
- 为什么要区域划分
- 限制LSA的传播范围
- 减少LSA的数量
3. OSPF数据包类型
- hello包
- 用于周期保活、邻居发现、建立邻居关系
- 10s ···> hello-time(不携带数据)
- 发送组播
- 死亡时间 hold-time ···> 4倍的hello包时间
- 如果在死亡时间内没有接收到对端邻居发送的hello报文,则认为邻居不存在
- Router-ID
- 全网唯一(OSPF网),标识路由器的身份
- 32位二进制组成,由点分十进制形式表示
- DBD包
- 数据库表述报文
- 内部包含了所有的拓扑的目录信息
- LSR包
- 链路状态请求报文
- 请求获取未知的链路信息
- LSU包
- 链路状态更新报文
- 携带真正的LSA信息的数据包
- LSAck包
- 链路状态确认报文
4. OSPF七种状态机
仅指在某邻居那视为的状态,一个设备可以同时存在多种状态;
- down:关闭状态 — 一旦启动OSPF协议后,则发出Hello报文,进入init状态
- init:初始化状态 — 收到的Hello报文中包含本地的Rid时,进入下一状态
- 2-way:双向通信 — 邻居关系建立的标志
条件匹配:匹配成功进入下一状态,匹配失败,则停留在邻居关系
- exstart:预启动状态 — 使用未携带信息的DBD报文进行主从关系的选举,RID大为主
- exchange:准交换状态 — 使用携带了目录信息的DBD报文进行目录共享
- loading:加载状态 — 接收到LSR后进入该状态,在该状态中使用LSR/LSU/LSAck三种报文来获取完整的拓扑信息
- full:转发状态 — 拓扑交换完成后进入,该状态是邻接关系建立的标志
5. 条件匹配
- 三种接口角色
- 指定路由器 — DR
- 备份指定路由器 — BDR
- 其他路由器 — DROther
- OSPF成为邻接关系的条件 — 根据网络类型不同而不同 - MA网络(以太网)类型 — 需要条件匹配,减少重复更新量
- 点到点网络类型 — 不需要进行条件匹配
- 角色之间的关系
- DR与BDR — 邻接
- DR与Drother — 邻接
- BDR与Drother —邻接
- DRother与Drother — 邻居
- 选举规则
- 接口优先级(0-255),优先级越大,则越优。华为默认都为1
- 比较RID,越大越优先
- 如果不进行手工配置RID,最大环回IP地址>最大物理接口IP地址(模拟器第一次会把先配的ip地址作为全局RID,删除重启才会按照规则来)
- 选举的范围
- 一个广播域,进行一次DR/BDR的选举
- 一个路由器可能是多种接口角色
- 选举模式 — 非抢占性的
- 一旦选举成功,不会因为新加入的设备而重新选举
- 若需要重新选举,则需要重启OSPF进程
6. OSPF工作过程
5种数据包、7种状态机、2种关系、3种接口角色、4种路由器角色与3张表
- OSPF协议启动后,路由器A向本地所有启动了OSPF协议的直连接口,使用组播地址224.0.0.5发送 hello报文;hello报文中携带了本地的全网唯一的RID值;之后对端路由器B也将回复hello报文,该 hello报文中若携带了对端A的RID值,则A与B建立邻居关系,并生成邻居表。
- 邻居关系建立后,邻居间进行条件匹配,匹配失败就停留在邻居关系,仅使用hello报文保活;若条 件匹配成功,则可以开始建立邻接关系。
- 邻接间共享DBD报文,将本地与邻接的DBD包进行对比,查找本地没有的LSA信息,之后使用LSR 报文来询问,对端使用LSU报文来回复具体的LSA信息,之后本地使用LSAck报文进行显性确认,该过程完成后,生成数据库表(LSDB表)。
- 在之后,本地基于数据库表,启用SPF算法,计算到达所有未知网段的最短路径,然后将其加载到本地的路由表中。此时收敛完成。
- 最后,邻接间使用hello报文进行保活,并进行30min的周更刷新。
7. 结构突变
- 新增网络
- 直接使用更新包(LSU)告知邻居路由器
- 断开网段
- 直接使用更新包告知邻居路由器
- 无法沟通
- hello包10s发送一次,若40s时间未接收到对端发来的hello报文,即超出死亡时间
- 断开邻接关系,删除路由(不删除LSA,LSA在数据库表中,只能由LSA来源来删)
8. 基本配置
[r1]ospf 1 router-id 1.1.1.1 //启动OSPF进程1,并配置RID为1.1.1.1
[r1-ospf-1]area 0 //进入骨干区域
[r1-ospf-1-area-0.0.0.0]network 12.1.1.0 0.0.0.255 //宣告,使用反掩码的形式宣告;
[r1-ospf-1-area-0.0.0.0]network 12.1.1.1 0.0.0.0
[r1-ospf-1-area-0.0.0.0]network 0.0.0.0 255.255.255.255
- 反掩码:32位二进制,使用点分十进制表示,由连续的0和连续的1组成,0表示IP的对 应位不变,1表示IP对应位可变
- 查表
[r1]display ospf peer //查看邻居表
[r1]display ospf peer brief //查看邻居简表
[r2]display ospf lsdb //查看数据库简表
[r1]display ip routing-table protocol ospf //查看路由表
9. OSPF扩展配置
- 修改参考带宽
- 一台设备修改参考带宽后,所有设备均需要修改
[r1-ospf-1]bandwidth-reference 1000
- 修改接口优先级
- 当修改接口优先级为0时,则认为不参与选举
[r3-GigabitEthernet0/0/0]ospf dr-priority 0
- 缺省路由(默认路由)— 一般在ABR上配置
- 非强制性下发
[r3-ospf-1]default-route-advertise //路由器中必须有缺省路由存在
- 强制性下发
[r3-ospf-1]default-route-advertise always
- 静默接口
- 不接不发,一般在连接用户的接口配置
[r3-ospf-1]silent-interface GigabitEthernet 0/0/1
- 手工认证
- 支持在邻居间的接口上配置认证秘钥
- 认证类型
- 不认证 — 0 (null)
- 明文认证 — 1 (simple)
- 密文认证 — 2 (md5)
[r1-GigabitEthernet0/0/0]ospf authentication-mode md5 1 cipher 123456
- 双方都要配置,并且key ID保持一致