目录
路由与转发
网络抽象:图
路由算法分类
链路状态路由算法
- 每个节点掌握的信息,会互相告诉其他节点,从而每个节点都掌握了整个网络拓扑结构
这个算法不难:
- 以u为原点,先找u出所有u的邻居,邻居中D(v)最小的,则这个邻居v就放入N',假设这个最近的邻居是p。不是邻居的认为D(v)是无穷
- 找出p的所有邻居,p的邻居D(v)=min(D(v),D(p)+c(p,v))
- 把p的邻居的D(v)全算出来,其中最小的D(v) 节点,且它不在N'中,假设此节点是O,就把O放入N'
- 继续找I的邻居,从循环第二步,知道所有节点都在N'中,就算是找到了原u到所有节点的最短路径
按照上面的算法计算
距离向量(Distance Vector)路由算法
x到y的最短距离,是x的所有邻居中,x到邻居+邻居到y之和,最小的那个和。(动态规划,后者依赖前者)
Dx(y)是x到y的估计。Dv意思是v到其他节点的距离集合。每个节点会把自己的Dv传递给邻居,邻居根据接收到的数据、用BF算法计算自己到每个节点的最小距离。
Dx(y)会逐渐趋近实际的最小费用dx(y)
举例
链路费用发生变化后的过程
距离向量DV:无穷计数问题
- x到y距离,由4变为60,y就重新计算Dx,根据BF计算方法,y到x的最小距离是 min(邻居到x的最小距离 +y到邻居,c(y,x)),y知道z到x的最小距离是5,所以5+c(y,z)=6。y会认为Dx是6
- y计算完Dv后,通知邻居z
- z收到消息,重新计算Dv,他以为Dy(x)是6,算是c(z,y),得到了Dx是7
- 持续循环,都以为对方的数据是正确的,其实是错误的,而且如果y到x的最小距离经过z,那z计算到x最短距离就应该不经过y,不能重复算路径,这很关键
毒性逆转(poisoned reverse):
- 原来z到x最小距离需要经过y,所以y到x肯定不需要经过z,这没毛病
- 所以毒性逆转让y认为,z到x距离无穷大,计算Dv直接不考虑它,这是把我上面提的问题直接暴力排除了,但实际当距离变化时应该考虑z到x
这种方法不能完全消除无穷计数问题。
定义最大度量(maximum metric):
层次路由
把整个网络抽象为一张图,实际不可行。层次路由才是实际网络采用的算法
层次路由:
- 把网络中,某一块、某一个组织中的所有路由器,抽象为一个区域,即把一个区域内的路由器聚合为一个自治系统,AS
- 同一个自治系统内的路由算法,就可以采用前面学过的路由算法,自治系统内部路由协议
- 如何跨自治系统去路由?
- 网关路由器:自治系统边缘,将当前AS与其他AS通信,(物联网设备中的网关)
互连的AS
转发表由AS内部路由算法 与AS间路由算法共同配置。
- AS内部路由算法设置 AS内部目的网络路由 入口(entries)
- AS内部路由算法与AS 间路由算法共同设置 AS外部目的网络路由 入口
自治系统间(Inter-AS)路由任务
自治系统间路由,让AS1学习到哪些目的网络可 以通过AS2到达,哪些 可以通过AS3到达
怎么设置路由器1d的转发表?
在多AS间选择
目标网络有可通过多个其他自治网络到达,选个最近的网关路由器
AS内部路由协议
前面讲的是算法,后面讲具体协议,有的协议会用到前面的算法
RIP协议
把距离向量路由算法,细节具体化。不管DV变化与否,都要30s交换一次。
因为最大15跳步,适合小规模自治网络
A通告D的例子
RIP: 链路失效、恢复
RIP路由表的处理
RIP通告应用层应用实现,通过应用层进程实现网络层功能。即RIP的报文利用了UDP 传输层
OSPF协议
- 泛洪:告诉邻居,邻居再告诉邻居
- 封装到IP,没用传输层协议,不像RIP
OSPF优点(RIP不具备)
- 如果报文不认证,路由器可能获得假的路由拓扑
- 允许使用多条,当出现大量数据传输,可以用多条路径传输,相当于负载均衡
- 这个TOS像是QOS的意思,消息质量,尽量发送、一定发送到要求回复、实时发送
分层的OSPF
相当于把AS又继续划分为主干、局部,OSPF本身是AS内路由协议
AS间路由协议: BGP
BGP已经是AS间路由协议的标准。因为它,在全球大规模Internet网络间分发数据。
BGP基础
- 前缀,习惯性用前缀代表一些网络。一些网络可以用同一个前缀表示,减少路由表的数据。
- 通告,就是告诉其他网络可以通过我这个网络到达其他网络
- 报文有四种,Open、、、
- AS3通告一个前缀给AS1,即能通过AS3到达这个前缀符合的网络,AS1后面会通过AS3发送数据到前缀网络
- 尽可能的把相同前缀的网络聚合,减少数据量。跟nginx的通配符差不多
BGP基础: 分发路径信息
分发路径信息的过程:
路径属性与BGP路由(route)
分发的信息包含什么?
- 前缀代表通过本AS可到达的网络,可能是一些网络
- 前缀,加属性构成了 完整的路由信息
- 属性有很多,最重要的有两个属性,AS-PATH,意思是通过本AS到达目标AS,需要经过的AS路径;
- AS-PATH是AS路径,只说经过的自治网络,而不是具体的IP,NEXT-HOP,指下一条的具体IP,如下图,AS3通告AS1 经过AS3可到达的AS,PATH是经过哪些AS网络,NEXT-HOP是下一条具体IP。
BGP路由选择
- 当AS网关收到通告后,不一定就遵守这个通告的内容,比如通告说要通过AS1,但当前AS因政策等原因从来不经过AS1,所以会拒绝这个通告的内容。这就是路由策略,由管理员输入策略
- 如果达到目的有多个路由方式,会进行选择,以下是优先的准则,还可能有其他准则
BGP路由选择策略
- 自治系统AS可以分为桩网络和双宿网络
- 提供商网络只通知自己与客户直接的网络,如A通告BC 的AW,B应该只通告BX