
(以下内容全部出自上述课程)
目录
- 路由算法
-
- [1. 路由算法、路由协议之间的关系](#1. 路由算法、路由协议之间的关系)
- [2. 分类](#2. 分类)
-
- [2.1 距离-向量路由算法](#2.1 距离-向量路由算法)
- [2.2 链路状态路由算法](#2.2 链路状态路由算法)
- [3. 小结](#3. 小结)
- 分层次的路由协议
-
- [1. 自治系统](#1. 自治系统)
- [2. 分层次的路由协议](#2. 分层次的路由协议)
- [3. 小结](#3. 小结)
- RIP的基本概念
-
- [1. RIP在协议栈中的位置](#1. RIP在协议栈中的位置)
- [2. RIP的规定](#2. RIP的规定)
- [3. 必要交换信息](#3. 必要交换信息)
- RIP的工作示例
-
- [1. 从路由器启动到到收敛](#1. 从路由器启动到到收敛)
- [2. 动态适应网络拓扑变化](#2. 动态适应网络拓扑变化)
- RIP的优缺点
-
- [1. 缺点](#1. 缺点)
- [2. 优点](#2. 优点)
- OSPF
-
- [1. 基本概念](#1. 基本概念)
- [2. 特点](#2. 特点)
-
- [2.1 主要特点](#2.1 主要特点)
- [2.2 其他特点](#2.2 其他特点)
- [2.3 小结](#2.3 小结)
- [3. 基本工作原理](#3. 基本工作原理)
- [4. 区域划分](#4. 区域划分)
- [5. 分组类型](#5. 分组类型)
-
- [5.1 Hello分组](#5.1 Hello分组)
- [5.2 DD分组](#5.2 DD分组)
- [5.3 LSR分组](#5.3 LSR分组)
- [5.4 LSU分组](#5.4 LSU分组)
- [5.5 LSAck分组](#5.5 LSAck分组)
路由算法



1. 路由算法、路由协议之间的关系
- 路由器的功能:转发IP数据报
- 路由器运行需要路由协议
- 路由协议规定了某些内容来实现路由算法
- 路由算法可以计算出最佳转发路径 ,生成路由表
- 通过路由表来进行转发IP数据报 的功能

2. 分类
- 静态:就是设定好之后不可以再改了,手动设置,费时费力
- 动态:托管给路由器,让他自己根据自身的变化来进行适配
- 动态分为:距离-向量路由算法(用于RIP协议)、链路状态路由算法(用于OSPF协议)

2.1 距离-向量路由算法
假如:你想给苹果CEO塞小纸条,经过求助后你有如下几个选择:
- A:舍友1--2层关系
- B:舍友2--6层关系
- C:同学3--7层关系
- D:朋友k--5层关系
经过慎重的考虑,当然是麻烦的人越少越好啦,所以就选择了A,毕竟2层关系麻烦的人最少。
也就是!A选项的路径最短,我们不需要关注中间麻烦了什么人,只需要选择最简单快速的方式达成自己的目的就好。

上面例子中最短的距离是:你和舍友的距离+舍友和苹果CEO的距离
所以换作路由器来看,最短的距离就是:你的路由器到最近路由器的距离+最近路由器到目的网络的距离

我们知道了名称里距离 的具体含义,那么为什么名字里会出现向量呢?
因为一片区域中有很多个网络,路由器到某个具体的网络的距离可以统一放在一起就组成了向量 (如图黄色的位置)


2.2 链路状态路由算法
假如:你想给苹果CEO塞小纸条,经过求助后你有如下几个选择:
- A:舍友1-->Ta爸-->苹果CEO
- B:舍友2-->外国友人-->外国狠人-->苹果员工-->苹果CEO
- C:同学3-->外国狠人-->苹果员工-->苹果CEO
- D:朋友k--微软CEO
经过深思熟虑,你还是选择了A,但是不同的是,他们都告诉了你自己的人脉,要通过你自己判断隔了几个人才能找到苹果CEO。

上述例子的人脉,就相当于完整的网络拓扑结构,路由器要通过自己的思考(就是算法啦),来判断走哪条路最合适。

3. 小结

分层次的路由协议
如果这两个协议作用于全世界的路由器上,RIP的距离数字只会大得难以想象,OSPF的路由表就会记录全世界的路由器,显然加重了路由器的负担,所以我们该怎么优化呢?
很简单,范围太大那就手动缩小范围呗-->划分区域。

1. 自治系统
将全世界的网络划分为多个相互独立的自治系统。
- 自治系统:小组
- 内部路由协议:小组内的规则
- 自治系统边界路由器:小组长
- 外部路由协议:小组长之间的规定
- 域间路由选择:小组长选小组长
- 域内路由选择 :组员选组员

平级关系:每个小组都是相互平等的。

2. 分层次的路由协议
- 内部网关协议:RIP、OSPF等。
- 外部网关协议 :BGP等。

3. 小结

RIP的基本概念

1. RIP在协议栈中的位置
考点:RIP属于应用层 ,它使用UDP 传送数据,端口=520
了解:Request请求报文、Response响应报文

2. RIP的规定
上文提到过RIP只看最短距离,这里用跳数 来表示距离,距离最大为15 .

路由表示例如下:目的网络+距离+下一跳路由器

3. 必要交换信息
- who:像上文苹果CEO的例子,自己-->舍友,舍友就是和自己直接相邻的。
- what:自己有什么就交换什么(路由表是一直变化的)
- when :每30s一次,或者网络拓扑发生变化就立刻交换(类似于八卦别人,一有新信息就聊天)

RIP的工作示例


1. 从路由器启动到到收敛
刚开机,每个路由器都只知道和自己直接相连(距离为1)的网络
ps:R1是边界路由,可以和外界路由器相连

这几个路由器开始发送自己的信息,比如:
- R2-->R1,R1收到了需要修改来自R2的信息,把它的信息变成自己的(类似于你抄同桌作业不能全抄,需要改一改变成自己的)
- 需要改:距离+1,下一跳路由器改为发送方
- 理解 :R1下一跳R2,再下一跳Net2

这是修改好后的路由表:

30s一到,又开始互相发送自己已有的信息:
ps:R1和R3知道的最多了

这是修改好后的路由表:

又过了30s,也就是60s,又开始发送自己知道的信息:
ps:R2和R4两个离得最远的终于知道了彼此的存在

这是修改好后的路由表:
至此所有路由器都知道这个自洽系统中的路由器及相应的网络和最短路径了,所以收敛 (作业抄完了)

又过了30s,也就是90s,因为作业都抄完了,所以所有路由表都不变了

2. 动态适应网络拓扑变化
100时刻,假设R1、R4之间新增一条链路:

90s后的30s,也就是120s,又开始互相发信息:

这个时候,R1和R4就发现自己有新邻居了,立马更新自己的路由表

之前我们说到RIP只看最短距离,R1和R4中间的路通了,R4找R2自然也就有了更短的距离,所以马不停蹄把R3给优化掉了
这是更新之后的路由表:

30s后,也就是150s,邻居之间又开始唠嗑:

R2通过R1知道了R4找自己有更近的路了,马不停蹄就把距离改好了:

这是更新之后的路由表:

RIP的优缺点
- 好消息传播得快
- 坏消息传播得慢

1. 缺点

R2嘎嘣一下就死了
而R1需要经过180s(默认超时)知道自己到不了R2了。

180s后,也就是R1终于知道自己到不了R2了,于是它就把希望寄托在R3和R4身上了
因为之前路由表已经在R3和R4那儿存好了,他俩不是R2的邻居,所以根本不知道到不了的这回事儿
所以笨蛋二人组还一直把这个错误的消息传给R1,导致三个人转圈圈,根本没意识到哪里不对劲

笨蛋二人组即将把错误信息告诉R1:

R1真诚地以为R3R4可以到达R2,结果R3以为R4可以到R4以为R3可以到:

就这样又过了30s,也就是360s的时候,笨蛋三人组开始交换信息:

每个人都发现自己离Net2越来越远了,但是都以为别人离Net2近了,所以三个依旧没觉得哪里不对劲

总之一直到每个路由器到Net2的距离变为16,变为不可达的时候,这三个才幡然醒悟:

2. 优点

700s,R2霸气回归!
(突然发现上面R2坏掉了可以理解为被老师发现了所以被抓去写检讨了)

R2回来的第一件事就是给自己的好邻居发信息说自己回来了:
然后R2狂抄R1作业(bushi)

R1和R2知道这个好消息的速度非常快

720s,也就是R1、R3、R4的时间,R2是700s回来的,所以会在730s的时候发送信息,笨蛋三人组又开始发信息:

终于R3和R4也知道R2回来了

这是更新后的路由表:

OSPF
1. 基本概念
复习:RIP属于应用层 ,它使用UDP 传送数据,端口=520
OSPF:属于网络层、私用IP协议提供的服务

和RIP一样,刚开机,路由器就知道和哪些网络或者路由器直连(注意:这里的距离是协议规定的,不是相同的距离)

然后利用洪泛法 ,把每个路由器的位置都摸清:

2. 特点
2.1 主要特点

2.2 其他特点
R1-->R2和R2-->R1的距离可能是不相等的,说是距离,其实是链路代价 ,就是R1托R2办点儿事儿可能需要三根烤肠,R2托R1办事儿可能只需要两根烤肠,像图中直接表明他俩之间只有一个3,就代表他俩相互的链路代价是相同的。

R1-->直链网络可以有链路代价,但是直连网络-->R1是无代价的。


一句话概括,就是很安全。




2.3 小结

3. 基本工作原理
主要还是迪杰斯特拉算法 ,留个坑数据结构还没看完

直接探测信息-->LSDB-->迪杰斯特拉-->获得最短路径

普通版的迪杰斯特拉只能找出一条最短路径
进阶版的迪杰斯特拉可以找出多条最短路径

4. 区域划分
和RIP相同,因为范围大自己的负担也大,所以也需要划分区域,缩小自己管辖的范围,降低自己的负担
ps:这里是将自治系统 划分为区域 ,毕竟OSPF需要知道自己区域里的所有路由器


- 主干区域:相当于树的主干,其他区域都是树的枝杈
- 自治系统路由器:相当于树的根
- 区域边界路由器 :相当于树的枝杈的根




5. 分组类型


5.1 Hello分组
复习:RIP每30s发送一次信息,超过180s认为不可达
OSPF每10s发送一次问候,超过40s认为不可达

更新链路状态信息,也会将LSA序号+1(就是版本更新)

5.2 DD分组
DD分组:就是R1会做1、3、4、5、6这几道题,R2会做第二道题
发送DD分组:告诉R2自己会做1、3、4、5、6这几道题,R2告诉R1自己会做第二道题
DD分组和LSDB摘要的区别:
DD分组想象成"快递包裹",而LSDB摘要就是"包裹里的清单":
快递员(OSPF协议)不会把所有货物(完整LSA)都送过来;
而是先送一份货物清单(LSDB摘要);
收件人(邻居路由器)对照自己的库存,发现缺什么,再下单(发送LSR)要具体的货物。

5.3 LSR分组
R1的LSR分组:R1告诉R2自己差个第二题没写,想抄第二题
R2的LSR分组:R2告诉R1自己需要1、3、4、5、6题的答案

5.4 LSU分组
R1和R2开始和谐地互抄答案,对,LSU就是完整的LSA,也就是自己请求的LSR的完整的LSA
R1:狂抄完整的R2的LSA
R2:狂抄完整的1...的

抄完答案之后:

5.5 LSAck分组
确认收到,就是R1和R2相互说自己抄完了,合作愉快

R1有了R2的答案,就可以和别人分享了
