互联网计算系列整理主要内容来自软院 2020 级学长 EagleBear2002 的博客,为博主本人阅读后提炼整理的内容。
内容不算全面,仅推荐大家复习时参考。

# RIP

**RIP(Routing Information Protocol)** 是一种基于距离向量(Distance Vector)的动态路由协议。

# RIPv1

距离向量协议。使用跳数作为度量标准,最大跳数为 15,达到 16 跳的报文自动抛弃。

RIPv1 具有以下限制:

  1. 它不会在其更新中发送子网掩码信息:意味着必须用同样的子网掩码,不支持 VLSM 或无类域间路由(CIDR)。

  2. 以 255.255.255.255 的广播形式发送更新:只能发给邻居,不能通过路由器转发。

  3. 不支持身份验证

# RIP 配置

router rip # 选择 RIP 路由协议
network 1.0.0.0
network 2.0.0.0
凡是属于上面的网段的端口都运行 RIP 协议
这些网段必须做到直连该路由器

# RIPv2

新增了以下的功能:

  1. 这是一种使用跳数指标的距离矢量协议。

  2. 它使用抑制计时器来防止路由循环,默认值为 180 秒,6 倍于交换时间

  3. 它使用水平分割(Split Horizon)来防止路由循环(Routing Loops)

  4. 它使用 16 跳作为无限距离的度量。(15 跳及以内可达)

  5. 支持子网掩码的信息传播,允许使用 VLSM 和 CIDR(无类域间路由)。

  6. 路由更新通过多播地址( 224.0.0.9 )发送,仅发送给支持 RIP 的设备

  7. 支持路由更新消息的认证

version 2 :表示启动 RIPv2,直接使用 router rip 默认为 v1,一定要输入这个命令才能启动 RIPv2

# RIPv1 和 RIPv2 的对比

特性RIPv1RIPv2
子网掩码支持不支持支持
更新方式广播(255.255.255.255)多播(224.0.0.9)
认证功能不支持支持
路由环路避免基本机制(分割视域等)增强机制(触发更新等)
最大跳数1515
适用场景小型简单网络小型或中型网络

# 验证与故障排除

故障排除 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 的核心特点

  1. 链路状态路由协议
    OSPF 路由器通过生成 LSA(Link State Advertisement,链路状态通告)来共享自身的链路状态信息,最终构建出整个网络的拓扑图。

  2. Dijkstra 算法
    OSPF 使用 SPF(Shortest Path First)算法计算最短路径,基于拓扑数据库选择最优路由。

  3. 分层架构

    • 支持多区域设计(Area),以减少路由表规模和 SPF 计算量。

    • 区域 0 是主干区域(Backbone Area),其他区域必须通过主干区域互联。

  4. 快速收敛
    网络拓扑发生变化时,OSPF 能够快速更新路由,减少收敛时间。

  5. 支持 VLSM 和 CIDR
    OSPF 可以传播子网掩码信息,支持灵活的 IP 地址分配。

  6. 认证机制
    支持明文和加密(MD5 或 SHA)认证,提供更高的安全性。

  7. 多播传输
    OSPF 使用多播地址 224.0.0.5 (所有 OSPF 路由器)和 224.0.0.6 (所有 DR/BDR 路由器)发送路由更新,减少广播风暴。

# OSPF 与 RIP 差别

OSPF:用于大型网络,基于带宽,可以分层(将网络划分成 2 层),收敛更快,支持多路负载均衡

image.png

例如这张图,OSPF 走上(带宽大,计算出速度更快),RIP 走下(跳数更少)

# OSPF 术语

邻居(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,生成表

https://eaglebear2002.github.io/28848/image-20230716093615650.png

  • 指定路由器(Designated Router,DR):只有在多路复用的链路下使用,被选举出来

  • 备用指定路由器(Backup Designated Router,BDR):如果 DR 坏了,再次选举会出现问题,如果 DR 损坏,BDR 立即成为 DR,目的是提高交换效率

# OSPF 域

在多区域 OSPF 网络中,要求所有区域都连接到区域 0(主干)。

image.png

ABR(Area Border Router):区域边界路由器,有一定的约束(一个路由器最多连接 3 个路由器)。

一个 Area 中不能有超过 50 台路由器,否则会导致 SPF 算法产生的计算量和内存过大。

# OSPF 行为

OSPF 操作包括五个步骤:

  1. 建立邻接关系

  2. 选择 DR 和 BDR(如果需要):多路复用的时候才需要

  3. 发现路线

  4. 选择适当的路线

  5. 维护路线信息

OSPF 具有七个状态,它们是:

  1. 初始化(Init)

  2. 双向操作(2Way)

  3. 预先启动(Ex Start)

  4. 交换(Exchange)

  5. 加载(Loading)

  6. 完成(Full)

image.png

# DR 与 BDR

image.png

OSPF 网络类型

  1. 广播多路复用网络,例如以太网

  2. 点对点网络

  3. 非广播多路复用网络(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 个类型的报文

FuctionName
HelloHello
Database DescriptionDBD
Link-State RequestLSR
Link-State UpdateLSU
Link-State AcknowledgementLSAck

# Hello

保持心跳,确定还活着。Hello 几乎是空报文,给所有跑 OSPF 的路由器发送。

每 10 秒发送一次,数据包的地址为 224.0.0.5(多播)

Hello 报文的 Type 字段设置为 1

TTL(Time To Live,被路由器丢弃之前允许通过的最大网段数量) 是 1,所以不会跨路由器传播,收到即丢弃

# DR 选举

优先级为第一关键字,Router ID 为第二关键字,最大的是 DR,第二大的是 BDR。

优先级为零表示 “从不 DR”

# OSPF 操作

  1. 建立邻接关系

  2. 选择 DR 和 BDR(如果需要):多路复用的时候才需要

  3. 发现路线

  4. 选择适当的路线

  5. 维护路线信息

# 1. 建立路由器邻接

  1. 路由器每隔一段时间发送一次 hello 数据包,Hello 报文的 TTL 是 1,表明不会跨路由传播

  2. 如果邻居被发现了:将邻居添加到邻居数据库

  3. 发现网络类型

    1. 如果是多路复用网络,进入 DR/BDR 选举过程,然后进入步骤 2

    2. 如果是点对点或点对多点网络,则不会举行 DR/BDR 选举过程,并跳过步骤 2

    3. 如果 hello 数据包标头中的 DR/BDR 字段已被占用(即 DR/BDR 对已经存在),则不会进行 DR/BDR 选举,并跳过步骤 2

如果对方的 DP/BDP 优于我的 DP/BDP,则接受对方的。

# 2. 选举 DR 和 BDR

按照选举规则进行选举。当 DR 无效时,BDR 成为新的 DR

注:

  1. 如果新的 OSPF 路由器以更高的优先级或 Router ID 加入网络,则当前的 DR 和 BDR 不会更改

  2. 仅当当前 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 配置

  1. 在路由器上启动 OSPF

    1. Router(config)## router ospf process-id

    2. 进程号:process-id

      1. 取值: 1 ~ 65535

      2. 在一台路由器上识别多个 OSPF 进程

      3. 通常在整个 AS(自治系统)中保持相同的进程 ID

  2. 在路由器上识别 IP 网络

    1. Router(config-router) ## network address wildcardmask area area-id wildcardmask 和 subnet mask 相反(如子网 255.255.255.0,那么 wild 就是 0.0.0.255)

    2. 网络地址可以是整个网络,子网或接口的地址。

    3. 若只有一个 Area,则为 area0

    4. 写 IP 和写网段最后都是一样的。(IP 地址是单个设备具体地址,网段地址是主机号全为 0,表示一个范围的地址)

image.png

# 配置回路(Loop)地址

Router(config)#interface loopback number
Router(config-if)#ip address address subnet-mask
  1. 必须在 OSPF 进程开始之配置回环接口:会涉及到主从关系确定和 DR 的选举

  2. 配置环回地址时,请使用 /32 掩码以避免潜在的路由问题

  3. I 建议您在基于 OSPF 的网络中的所有关键路由器上使用环回地址(专用或公用地址)。

  4. 一旦配置立刻生效,不需要 no shutdown 的命令即可。

# 修改 OSPF 接口优先级

Router(config-if) ## ip ospf priority number

优先级:越大越高

  1. 值:0-255, 默认为 1

  2. 优先级 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

改变问候间隔与死亡间隔

若只改变问候间隔,则死亡间隔自动变为四倍。

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

北沐清 微信支付

微信支付

北沐清 支付宝

支付宝