计网-网络层-控制平面
几个概念
- 默认路由器:一台主机直接连接到的路由器
- 源路由器:源主机的默认路由器
- 目的路由器:目的主机的默认路由器
将网络抽象成图
1 | G = (N,E) |
目的是选择$\Sigma c$最小的算法
#TBS
选路算法的分类
分法1
- 全局选路算法
- 所有路由器知道某个网络拓补图的结构
- 链路状态算法(LS)
- 分散式选路算法
- 距离向量算法(DV)
- 全局选路算法
分法2
- 静态选路算法
- 动态选路算法
分法3
- 负载敏感算法
- 链路费用明显受链路状态影响
- 负载迟钝算法
- 负载敏感算法
链路状态选路算法
Dijkstra算法
(略)(略掉了算法复杂度分析和算法复杂度分析等玩意)
可能出现的问题
选路的结果对策略更改的影响过于明显(带宽的负载呈震荡变化)(体现了负载敏感的特性)
解决的方案
- 强制链路费用不依赖于承载的流量
- 避免所有路由器都同时使用该算法(路由器之间自同步),控制链路通告的时间
距离向量选路算法
Bellman-Ford算法
分步、迭代、自我终止、异步
$d_x(y) = min_v({c(x,v) + d_v(y)})$
距离向量
$D_X = [D_X(y):y\in N]$
具体工作方式
- 初始化的时候会设置自己的距离向量(不是邻居的设置成$\inf$),然后和和邻居交换距离向量
- 每个节点不定时向邻居发送自己距离向量的估计值
- 当x从邻居接收到新的$D_V$估计值时,它使用B-F方程更新自己的$D_v$
1、距离向量算法:链路开销改变与链路故障
在一个环路中:
好消息传得快
负载减小的时候,能够很快达到收敛状态
坏消息传得慢
负载增大的时候,要迭代很多次才能收敛
(获取的距离信息有误,走了不必要的路径更新,即路由器之间有往返路径)
解决:毒性逆转
如果z到x的最短路径经过y,那么y向z查询距离向量$D_z$的时候获得的$D_z(x)$是无穷(因为到了z也是要折返的,不可能选这条路径)
但是毒性逆转也只适用于某些特定场景
复杂度
LS与DV路由选择算法的比较
- 报文复杂性
- 收敛速度
- 健壮性
5.3 自治系统内部路由选择
自治系统AS(Autonomous System)
- AS内执行完全相同的选路算法
- 内部网关协议IGP
- RIP,OSPF,IGRP
- IGRP在2016年之前是Cisco专利
- RIP,OSPF,IGRP
- 内部网关协议IGP
转发表是由AS内部选路算法和AS间选录算法共同决定的
开放最短路优先OSPF
RIP
- 属于DV算法
- 相邻两节点之间的费用设置为1,不考虑链路费用,只考虑要经过多少链路(或者多少跳)
- 一条路径的最大费用限制为15
- 选路信息每30s在邻居之间用RIP通告的形式进行交换
- 180s后没有收到某个主机的RIP通告则认为其已经离线
- 具体做法
- 路由表构成
- 目的网络号、下一跳路由器、距离
- 路由表构成
OSPF
- 属于应用层
- 向本自治系统的所有路由器发送信息(洪泛法flooding)
- 实际上是dijkstra
- 发送的信息就是与本路由器相邻的所有路由器的链路状态
- 只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息
- 最终每个路由器都能获得一个完整的链路状态数据库(整个网络的拓扑图)
- 一些细节
层次OSPF
- 为了使 OSPF 能够用于规模很大的网络,OSPF 将一个自 治系统再划分为若干个更小的范围,叫作区域
- 每一个区域都有一个 32 bit 的区域标识符
- 区域也不能太大,在一个区域内的路由器最好不超过 200 个
- 区域边界路由器:分组向该区域之外的选路
- 主干路由器:运行选路算法
- 边界路由器:与AS外的网络通信
5.4 自治系统之间的路由选择BGP
边界网关协议BGP(Border Gateway Protocol)
#TBS BGP劫持?
场景:
- 源到目标只有一条路径
- 源到目标有多条路径
- 热土豆选路:将报文发送到距离最近的路由器
eBGP(external)
从相邻的AS获取子网可达信息
iBGP(internal)
向AS内部路由器传递子网可达信息
BGP会话
通过半永久TCP连接交换BGP信息
路由通告
前缀+属性 = 路由
属性有:
- AS-PATH
- NEXT-HOP
网关可以决定接受的路由是否保留(可以制定特殊的策略)
BGP子网聚合
将小子网聚合成大子网,相当于AS成为一个大子网
对于子网网段不在聚合子网网段中的情况,用最长前缀匹配就能解决
BGP消息
AS内路由器对远程前缀转发表项的设置
路由路径选择
- 本地偏好值:根据策略决定
- 最短AS-PATH:传递到能把报文送到最近相邻AS的路由
- 热土豆路由:选择AS内部开销最小的接口路径
- 如果仍余下多条路由,该路由器使用BGP标识以选择路由
IP组播
将数据发送到属于同一个组的多台计算机
#TBS 书本5.4.5之后的内容
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Chales Xu!
评论