计算机网络--网络层3

痴心易碎 提交于 2020-04-13 21:53:23

【今日推荐】:为什么一到面试就懵逼!>>>

路由算法





路由算法分类

  • 静态路由:

    • 手工配置
    • 路由更新慢
    • 优先级高
  • 动态路由:

    • 路由更新快
    • 定期更新
    • 及时响应链路费用或网络拓扑变化
  • 全局信息:

    • 所有路由器掌握完整的网络拓扑和链路费用信息
    • E.g. 链路状态(LS) 路由算法
  • 分散(decentralized)信息:

    • 路由器只掌握物理相连的邻居以及链路费用
    • 邻居间信息交换、运算的迭代过程
    • E.g. 距离向量(DV) 路由算法

链路状态路由算法

Dijkstra 算法

  • 所有结点(路由器)掌握网络拓扑和链路费用
    • 通过“链路状态广播”
    • 所有结点拥有相同信息
  • 计算从一个结点(“源”)到达所有其他结点的最短路径
    • 获得该结点的转发表
  • 迭代: k次迭代后,得到到达k个目的结点的最短路径

符号:

  • c(x,y): 结点x到结点y链路费用;如果x和y不直接相连,则=∞
  • D(v): 从源到目的v的当前路径费用值
  • p(v): 沿从源到v的当前路径,v的前序结点
  • N’: 已经找到最小费用路径的结点集合





Dijkstra 算法:讨论

  • 算法复杂性: n个结点
    • 每次迭代: 需要检测所有不在集合N’中的结点w
    • n(n+1)/2次比较: O(n 2 )
    • 更高效的实现: O(nlogn)
  • 存在震荡(oscillations)可能:
    • e.g., 假设链路费用是该链路承载的通信量:

距离向量路由算法



重点 :结点获得最短路径的 下跳 一跳, 该信息用于转发表中



  • 异步迭代:
    • 引发每次局部迭代的因素
    • 局部链路费用改变
    • 来自邻居的DV更新
  • 分布式:
    • 每个结点只当DV变化时才通告给邻居
    • 邻居在必要时(其DV更新后发生改变)再通告它们的邻居





链路费用变化:

  • 结点检测本地链路费用变化
  • 更新路由信息,重新计算距离向量
  • 如果DV 改变,通告所有邻居
    • t 0 : y 检测到链路费用改变 ,更新DV ,通告其邻居.
    • t 1 : z 收到y的 的DV 更新,更新其距离向量表,计算到达x 的最新其 最小费用,更新其DV ,并发送给其所有邻居.
    • t 2 : y 收到z的 的DV 更新, 更新其距离向量 表,重新计算y的 的DV, ,未发生改变,不再向z 发送DV.

好消息传播快!

毒性逆转(poisoned reverse)

  • 如果一个结点(e.g. Z)到达某目的(e.g.X)的最小费用路径是通过某个邻居(e.g.Y),则:
  • 通告给该邻居结点到达该目的的距离为无穷大

无穷计数问题

层次路由

将任意规模网络抽象为一个图计算路由- 过于理想化

  • 标识所有路由器
  • “扁平”网络
  • 在实际网络(尤其是大规模网络)中, 不可行!
    网络规模:考虑6亿目的结点的网络
  • 路由表几乎无法存储!
  • 路由计算过程的信息(e.g. 链路状态分组、DV)交换量巨大,会淹没链路!
  • 管理自治:
    • 每个网络的管理可能都期望自主控制其网内的路由
    • 互联网(internet) = 网络之网络(network of networks)

聚合路由器为一个区域:自治系统AS(autonomous systems),同一AS内的路由器运行相同的路由协议(算法),自治系统内部路由协议(“intra-AS” routingprotocol)
不同自治系统内的路由器可以运行不同的AS内部路由协议

网关路由器(gatewayrouter): 位于AS“边缘”, 通过链路连接其他AS的网关路由器

互连的AS

自治系统间(Inter-AS)





RIP协议简介

AS 内部路由







RIP: 链路失效、恢复

如果180秒没有收到通告→邻居/链路失效

  • 经过该邻居的路由不可用
  • 重新计算路由
  • 向邻居发送新的通告
  • 邻居再依次向外发送通告(如果转发表改变)
  • 链路失效信息能否快速传播到全网?
  • 可能发生无穷计数问题
  • 毒性逆转技术用于预防乒乓(ping-pong)环路(另外:无穷大距离 = 16 hops)

RIP 路由表的处理

  • RIP路由表是利用一个称作route-d (daemon)的应用层进程进行管理
    • 应用进程实现
    • 通告报文周期性地通过UDP数据报发送

OSPF协议简介

  • ”开放”: 公众可用
  • 采用链路状态路由算法
  • LS分组扩散(通告)
  • 每个路由器构造完整的网络(AS)拓扑图
  • 利用Dijkstra算法计算路由
  • OSPF通告中每个入口对应一个邻居
  • OSPF通告在整个AS范围泛洪
  • OSPF报文直接封装到IP数据报中
  • 与OSPF极其相似的一个路由协议:IS-IS 路由协议

OSPF 优点(RIP 不具备)

  • 安全(security): 所有OSPF报文可以被认证(预防恶意入侵)
  • 允许使用多条相同费用的路径 (RIP只能选一条)
  • 对于每条链路,可以针对不同的TOS设置多个不同的费用度量 (e.g., 卫星链路可以针对“尽力”(best effort) ToS设置“低”费用;针对实时ToS设置“高”费用)
  • 集成单播路由与多播路由
  • 多播OSPF协议(MOSPF) 与OSPF利用相同的网络拓扑数据
  • OSPF支持对大规模AS分层(hierarchical)

分层的OSPF



BGP 协议简介

Internet AS 间路由协议

  • 边界网关协议BGP (Border GatewayProtocol): 事实上的标准域间路由协议

    • 将Internet “粘合”为一个整体的关键
  • BGP为每个AS提供了一种手段:

    • eBGP: 从邻居AS获取子网可达性信息.
    • iBGP: 向所有AS内部路由器传播子网可达性信息.
    • 基于可达性信息与策略,确定到达其他网络的 “好”路径
  • 容许子网向Internet其余部分通告它的存在:“ 我在这儿!”

  • BGP会话(session):

    • 两个BGP路由器 (“Peers”)
  • 交换BGP报文:

    • 通告去往不同目的前缀(prefix)的路径 (“路径向量(path vector)”协议)
    • 报文交换基于半永久的TCP连接
  • BGP报文:

    • OPEN: 与peer建立TCP连接,并认证发送方
    • UPDATE: 通告新路径 (或撤销原路径)
    • KEEPALIVE: 在无UPDATE时,保活连接;也用于对OPEN请求的确认
    • NOTIFICATION: 报告先前报文的差错;也被用于关闭连接





BGP路由选择

  • 网关路由器收到路由通告后,利用其输入策略(import policy)决策接受/拒绝该路由
    • e.g., 从不将流量路由到AS x
    • 基于策略(policy-based) 路由
  • 路由器可能获知到达某目的AS的多条路由,基于以下准则选择:
  1. 本地偏好(preference)值属性: 策略决策(policy
    decision)
  2. 最短AS-PATH
  3. 最近NEXT-HOP路由器: 热土豆路由(hot potato
    routing)
  4. 附加准则

为什么采用不同的AS 内与AS 间路由协议

  • 策略(policy):
    • inter-AS: 期望能够管理控制流量如何被路由,谁路由经过其网络等.
    • intra-AS: 单一管理,无需策略决策
  • 规模(scale):
    • 层次路由节省路由表大小,减少路由更新流量
    • 适应大规模互联网
  • 性能(performance):
    • intra-AS: 侧重性能
    • inter-AS: 策略主导
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!