5.1 路由协议
1.自治系统(AS):单一技术管理下的一组路由器,这些路由器使用一种AS内部的路由选择协议和共同的度量来确定分组在该AS内的路由,同时选择确定AS之间的路由。一个自治系统内的所有路由器在本自治系统内部必须是连通的。如一家公司、一所大学、一个政府部门。
2.域内路由:自治系统内部的路由选择称为域内路由选择---》内部网关协议(IGP) 如RIP和OSPF
3.域间路由:自治系统之间的路由选择称为域间选择 ---》外部网关协议(EGP) 如BGP
如两个自治系统使用不同的IGP此时,就需要BGP来协商调整。
5.2路由信息协议(RIP)
RIP规定:
- 距离称为跳数
- RIP认为好的路由就是通过的路由器数据少,即有限选择跳数少的路径
- RIP允许一条路径最多15个路由器(最多允许15跳),距离大于15跳,表现为网络不可达。
RIP特点:
- 仅和相邻路由器交换信息
- 路由器交换的信息是当前路由器所知道的全部信息,即自己的路由表
- 规定时间间隔交换路由信息
距离向量算法:
这里以 RIP 算法(距离向量算法的一种)为例。
- 以地址为X的相邻路由器发来的 RIP(Routing Information Protocol) 报文
- 将该 RIP 报文中的下一跳地址修改为 X,且跳数全部增加 1
- 对每个项目执行如下步骤
a.若原路由表没有 RIP 中的目的网络 N,直接添加到原路由表中
b.若原路由表中有 RIP 中的目的网络 N,但下一跳地址不是 X ,选择跳数少的替换。如果两者跳数一样,则保留原路由表的项。
c.若原路由表中有 RIP 中的目的网络 N,且下一跳地址是 X,使用收到的项替换 - 若超过 180s (RIP 默认 180s)还没有收到相邻路由器的更新路由表,则相邻路由器置为不可达,跳数为 16
即:
前提:目的网络相同
相同下一跳,替换
不同下一跳,是否距离短,选择距离短的替换
例子:
如下,有 B,C 两个路由器的路由表。B,C 为相邻路由器,现在 C 向 B 发送 RIP 报文,求 B 更新后的路由表
B 的路由表
目的网络 | 距离 | 下一跳 |
---|---|---|
N1 | 7 | A |
N2 | 2 | C |
N6 | 8 | F |
N8 | 4 | E |
N9 | 4 | D |
C 的 RIP 报文中的路由表
目的网络 | 距离 |
---|---|
N2 | 15 |
N3 | 2 |
N4 | 8 |
N8 | 2 |
N7 | 4 |
解:
- 将 RIP 报文的下一跳地址改为 C 且跳数增加 1
目的网络 | 距离 | 下一跳 |
---|---|---|
N2 | 16 | C |
N3 | 3 | C |
N4 | 9 | C |
N8 | 3 | C |
N7 | 5 | C |
- 与原路由表(B 的路由表)比较并更新
a. 因为 C 路由表中并无关于 N1,N6 和 N9 的信息,所以原路由表保存不变
b.对于 N2,目的网络一样,下一跳地址一样(同为 C),所以更新跳数为 16
c.对于 N3,因为原路由表中无该项,所以直接添加。N4 和 N7 同理添加
d.对于 N8,目的网络一样,但下一跳不一样,选择距离短(跳数少的添加),所以更新为 C 路由表的信息
更新后的 B 路由表
目的网络 | 距离 | 下一跳 |
---|---|---|
N1 | 7 | A |
N2 | 16 | C |
N3 | 3 | C |
N4 | 9 | C |
N6 | 8 | F |
N7 | 5 | C |
N8 | 3 | C |
N9 | 4 | D |
5.3 OSPF,开放最短路径优先协议
1.使用分布式链路状态路由算法的典型代表,与RIP比较四点区别:
- OSPF向本自治系统中的所有路由器发送信息,泛洪法,而RIP只是临近的几个已知路由器
- 发送的信息是与本路由器相邻的所有路由器的链路状态。---(链路状态:本路由器和哪些路由器相邻及改链路的‘度量’,而RIP发送的信息是本路由器所知道的全部信息,即整个路由表)
- 只有当链路状态发生改变时,路由器才用洪泛法发送信息
- OSPF是网络层协议,不使用UDP\TCP,直接使用IP数据报进行传送,而RIP是应用层协议,它在传输层使用UDP
2.OSPF基本工作原理
是用Dijkstra算法计算出最短路径,以此构造自己的路由表
5.4边界网关协议(BGP)--常用于互联网的网关之间
BGP采用路径向量路由选择协议,它与距离向量协议和链路状态协议有很大区别,BGP是应用层协议,基于TCP
BGP工作原理:
- 每个自治系统选择一个路由器作为该自治系统“发言人”
- “发言人”需要与其他“发言人”交换信息,首先需要建立连接TCP
- 建立会话之后,利用会话交换路由信息,选择优质路由
BGP使用四种报文:
- 打开报文:用来建立关系
- 更新报文:发送某一路由信息
- 保活报文:用来确定打开报文并周期地正式邻站关系
- 通知报文:用来发送检测到的差错