互联网计算系列整理主要内容来自软院 2020 级学长 EagleBear2002 的博客,为博主本人阅读后提炼整理的内容。
内容不算全面,仅推荐大家复习时参考。
# RIP
**RIP(Routing Information Protocol)** 是一种基于距离向量(Distance Vector)的动态路由协议。
# RIPv1
距离向量协议。使用跳数作为度量标准,最大跳数为 15,达到 16 跳的报文自动抛弃。
RIPv1 具有以下限制:
它不会在其更新中发送子网掩码信息:意味着必须用同样的子网掩码,不支持 VLSM 或无类域间路由(CIDR)。
以 255.255.255.255 的广播形式发送更新:只能发给邻居,不能通过路由器转发。
不支持身份验证
# RIP 配置
router rip # 选择 RIP 路由协议
network 1.0.0.0
network 2.0.0.0
凡是属于上面的网段的端口都运行 RIP 协议
这些网段必须做到直连该路由器
# RIPv2
新增了以下的功能:
这是一种使用跳数指标的距离矢量协议。
它使用抑制计时器来防止路由循环,默认值为 180 秒,6 倍于交换时间
它使用水平分割(Split Horizon)来防止路由循环(Routing Loops)
它使用 16 跳作为无限距离的度量。(15 跳及以内可达)
支持子网掩码的信息传播,允许使用 VLSM 和 CIDR(无类域间路由)。
路由更新通过多播地址(
224.0.0.9
)发送,仅发送给支持 RIP 的设备支持路由更新消息的认证
version 2
:表示启动 RIPv2,直接使用 router rip
默认为 v1,一定要输入这个命令才能启动 RIPv2
# RIPv1 和 RIPv2 的对比
特性 | RIPv1 | RIPv2 |
---|---|---|
子网掩码支持 | 不支持 | 支持 |
更新方式 | 广播(255.255.255.255) | 多播(224.0.0.9) |
认证功能 | 不支持 | 支持 |
路由环路避免 | 基本机制(分割视域等) | 增强机制(触发更新等) |
最大跳数 | 15 | 15 |
适用场景 | 小型简单网络 | 小型或中型网络 |
# 验证与故障排除
故障排除 RIPv2:
Router#debug ip rip #显示更新路由表的时候的更新
Router#undebug all #(或 no debug all):停止 debug
debug ip rip
命令显示 RIP 路由更新的发送和接收。
# OSPF
** 开放最短路径优先(OSPF,Open Shortest Path First)** 是基于开放标准(即该标准可以再扩充)的链路状态路由协议。
与 RIPv1 和 RIPv2 相比,OSPF 正在成为首选的 IGP 协议(内部网关协议),因为它具有可伸缩性。
# OSPF 的核心特点
链路状态路由协议
OSPF 路由器通过生成 LSA(Link State Advertisement,链路状态通告)来共享自身的链路状态信息,最终构建出整个网络的拓扑图。Dijkstra 算法
OSPF 使用 SPF(Shortest Path First)算法计算最短路径,基于拓扑数据库选择最优路由。分层架构
支持多区域设计(Area),以减少路由表规模和 SPF 计算量。
区域 0 是主干区域(Backbone Area),其他区域必须通过主干区域互联。
快速收敛
网络拓扑发生变化时,OSPF 能够快速更新路由,减少收敛时间。支持 VLSM 和 CIDR
OSPF 可以传播子网掩码信息,支持灵活的 IP 地址分配。认证机制
支持明文和加密(MD5 或 SHA)认证,提供更高的安全性。多播传输
OSPF 使用多播地址224.0.0.5
(所有 OSPF 路由器)和224.0.0.6
(所有 DR/BDR 路由器)发送路由更新,减少广播风暴。
# OSPF 与 RIP 差别
OSPF:用于大型网络,基于带宽,可以分层(将网络划分成 2 层),收敛更快,支持多路负载均衡
例如这张图,OSPF 走上(带宽大,计算出速度更快),RIP 走下(跳数更少)
# OSPF 术语
# Link 连接
# Link-State 链路状态
邻居(Neighbors):相邻的路由器
物理链路的信息,包括路由器连接关系、通过什么接口、链路带宽、网络类型(点对点、多路复用)等,不同网络类型处理代价不同
两种网络类型:点对点,多路复用
- 点对点与多路复用的区别
特性 | 点对点网络 | 多路复用网络 |
---|---|---|
通信范围 | 两个节点之间 | 多个节点共享同一链路 |
拓扑复杂性 | 简单 | 较复杂 |
通信效率 | 高(独占带宽) | 可能因冲突或广播风暴受影响 |
适用场景 | 点对点连接、链路少的场景 | 局域网、大型网络 |
路由设计 | 不需要复杂路由算法 | 通常需要 DR 和 BDR 协调 |
# Cost 代价 / 费用
一般是固定值除以带宽,与带宽成反比
# Area 区域
具有相同区域 ID 的网络 / 路由器集合 。区域内的每个路由器都有相同的链路状态信息。
Area 是对端口的划分,即一个路由器的不同端口可以属于不同 area。
应该就是一个 Area 内互相传递 LSA?
# Autonomous System,AS 自治系统
多个 Area 形成一个自治系统
Neighbours 必须在一个 Area 中,Neighbour 之间交换拓扑数据库(Topology Databases)当中存的是 link-state
一个 Area 中获得全部 Link-State 后计算 Tree,生成表
指定路由器(Designated Router,DR):只有在多路复用的链路下使用,被选举出来
备用指定路由器(Backup Designated Router,BDR):如果 DR 坏了,再次选举会出现问题,如果 DR 损坏,BDR 立即成为 DR,目的是提高交换效率
# OSPF 域
在多区域 OSPF 网络中,要求所有区域都连接到区域 0(主干)。
ABR(Area Border Router):区域边界路由器,有一定的约束(一个路由器最多连接 3 个路由器)。
一个 Area 中不能有超过 50 台路由器,否则会导致 SPF 算法产生的计算量和内存过大。
# OSPF 行为
OSPF 操作包括五个步骤:
建立邻接关系
选择 DR 和 BDR(如果需要):多路复用的时候才需要
发现路线
选择适当的路线
维护路线信息
OSPF 具有七个状态,它们是:
初始化(Init)
双向操作(2Way)
预先启动(Ex Start)
交换(Exchange)
加载(Loading)
完成(Full)
# DR 与 BDR
OSPF 网络类型
广播多路复用网络,例如以太网
点对点网络
非广播多路复用网络(NBMA,Non-broadcast multi-access)
多路复用时要选举 DR/BDR,减少连接量与交流量
每个路由器都会与 DR(指定路由器)和 BDR(备份指定路由器)建立邻接关系。
DR 使用 224.0.0.5 的多播地址(适用于所有 OSPF 路由器)向同一网络段中的所有其他路由器发送链路状态信息。
为了确保 DR 和 BDR 能够接收到网络段上所有路由器发送的链路状态信息,使用 224.0.0.6 的多播地址(适用于所有 DR 和 BDR)。
224.0.0.5:OSPF 所有路由器的多播地址,于让网络段上的所有 OSPF 路由器接收消息。
224.0.0.6:专用于 DR 和 BDR 的多播地址,用于路由器发送消息给 DR 和 BDR。
# OSPF 报文
只有 5 个类型的报文
Fuction | Name |
---|---|
Hello | Hello |
Database Description | DBD |
Link-State Request | LSR |
Link-State Update | LSU |
Link-State Acknowledgement | LSAck |
# Hello
保持心跳,确定还活着。Hello 几乎是空报文,给所有跑 OSPF 的路由器发送。
每 10 秒发送一次,数据包的地址为 224.0.0.5(多播)
Hello 报文的 Type 字段设置为 1
TTL(Time To Live,被路由器丢弃之前允许通过的最大网段数量) 是 1,所以不会跨路由器传播,收到即丢弃
# DR 选举
优先级为第一关键字,Router ID 为第二关键字,最大的是 DR,第二大的是 BDR。
优先级为零表示 “从不 DR”
# OSPF 操作
建立邻接关系
选择 DR 和 BDR(如果需要):多路复用的时候才需要
发现路线
选择适当的路线
维护路线信息
# 1. 建立路由器邻接
路由器每隔一段时间发送一次 hello 数据包,Hello 报文的 TTL 是 1,表明不会跨路由传播
如果邻居被发现了:将邻居添加到邻居数据库
发现网络类型
如果是多路复用网络,进入 DR/BDR 选举过程,然后进入步骤 2
如果是点对点或点对多点网络,则不会举行 DR/BDR 选举过程,并跳过步骤 2
如果 hello 数据包标头中的 DR/BDR 字段已被占用(即 DR/BDR 对已经存在),则不会进行 DR/BDR 选举,并跳过步骤 2
如果对方的 DP/BDP 优于我的 DP/BDP,则接受对方的。
# 2. 选举 DR 和 BDR
按照选举规则进行选举。当 DR 无效时,BDR 成为新的 DR
注:
如果新的 OSPF 路由器以更高的优先级或 Router ID 加入网络,则当前的 DR 和 BDR 不会更改
仅当当前 DR 失败时,它才成为新的 BDR
# 3. 发现路线
交换 LSA,直到同步链路状态数据库
# 4. 选择适当路线
同步后,所有路由器进行 SPF 算法计算最短路径。
OSPF 然后在路由表中安装成本最低的路径
# 5. 维护路由信息
Hello 交换还用来判断邻居有没有死掉。
问候间隔一般是 10s,即每 10s 发送一次 Hello。
广播多路访问和点对点链接,速度为 T1(1.544 Mbps) 或更高的链接:每 10 秒
非广播多路访问链接,小于 T1 的链接:每 30 秒
死亡间隔是问候间隔的四倍。以 10s 为例,如果 40s 后还没有回应,那么邻居死了(不可达)。
# 链路状态变化出现
Router A tells all OSPF DRs on 224.0.0.6(组播地址),使用 LSU(linkState update)
DR tells others on 224.0.0.5,通过 LSU 告知所有的路由器
# 基本的 OSPF 配置
在路由器上启动 OSPF
Router(config)## router ospf process-id
进程号:process-id
取值: 1 ~ 65535
在一台路由器上识别多个 OSPF 进程
通常在整个 AS(自治系统)中保持相同的进程 ID
在路由器上识别 IP 网络
Router(config-router) ## network address wildcardmask area area-id
wildcardmask 和 subnet mask 相反(如子网 255.255.255.0,那么 wild 就是 0.0.0.255)网络地址可以是整个网络,子网或接口的地址。
若只有一个 Area,则为 area0
写 IP 和写网段最后都是一样的。(IP 地址是单个设备具体地址,网段地址是主机号全为 0,表示一个范围的地址)
# 配置回路(Loop)地址
Router(config)#interface loopback number
Router(config-if)#ip address address subnet-mask
必须在 OSPF 进程开始之前配置回环接口:会涉及到主从关系确定和 DR 的选举
配置环回地址时,请使用 /32 掩码以避免潜在的路由问题
I 建议您在基于 OSPF 的网络中的所有关键路由器上使用环回地址(专用或公用地址)。
一旦配置立刻生效,不需要 no shutdown 的命令即可。
# 修改 OSPF 接口优先级
Router(config-if) ## ip ospf priority number
优先级:越大越高
值:0-255, 默认为 1
优先级 0 表示接口不能被选为 DR 或 BDR
查看 OSPF 的端口的优先级: Router ## show ip ospf [interface type number]
# 修改接口成本
直接修改成本: ip ospf cost number(1-65535)
配置带宽: bandwidth number(单位Kbps)
改变接口带宽(但是实际物理带宽不会改变)
不是改变参考带宽!即改变除数。
# 设置计时器
Router(config-if)## ip ospf hello-interval seconds
Router(config-if)## ip ospf dead-interval seconds
改变问候间隔与死亡间隔
若只改变问候间隔,则死亡间隔自动变为四倍。