目录
📚概述
📚路由选择算法⭐️
🐇链路状态路由选择算法
⭐️Dijkstra算法
🐇距离向量路由选择算法
⭐️DV算法
🐇LS与DV路由选择算法的比较
📚因特网中自洽系统内部的路由:OSPF
📚ISP之间的路由选择:BGP
🐇BCP的作用
⭐️通告BGP路由信息
⭐️确定最好的路由
📚SDN控制平面
📚概述
在本章中,我们将学习这些转发表和流表是如何计算、维护和安装的。在上一章我们了解到完成这些工作有两种可能的方法:
- 每路由器控制:每台路由器中都包含转发和路由选择功能。每台路由器有一个路由选择组件,用于与其他路由器中的路由选择组件通信,以计算其转发表的值。
- 逻辑集中式控制:通过“匹配加动作”抽象允许执行传统的IP转发以及其他功能的丰富集合,而这些功能先前是在独立的中间盒中实现的。
📚路由选择算法⭐️
- 路由选择算法:其目的是从发送方到接收方的过程中确定一条通过路由器网络的好的路径。通常,一条好路径指具有最低开销的路径。
- 主机通常直接与一台路由器相连,该路由器即为该主机的默认路由器或第一跳路由器,源主机默认路由器称为源路由器,目的主机默认路由器称为目的路由器。
- 一个分组从源主机到目的主机,从源路由器到目的路由器。
第一种分类方法:(根据算法是集中式还是分散式来划分)
- 集中式路由选择算法:用完整、全局性的网络信息计算出最短路径(最低费用路径)。也就是说,该算法以所有节点之间的连通性及所有链路的开销为输入。具有全局状态信息的算法通常被称为链路状态算法(LS)。
- 分散式路由选择算法:迭代、分布式的方式计算最短路径。 没有结点拥有关于网络链路的完整信息,每个结点仅有与其直接相连链路的信息即可工作 。通过迭代计算并与相邻结点交换信息,逐渐计算出最低费用路径,如距离向量算法(DV) 。
第二种分类方法:(根据算法是静态的还是动态的来划分)
- 静态路由选择算法: 变化缓慢,通常人工干预。
- 动态路由选择算法: 网络流量负载或拓扑发生变化时改变路由选择路径 ,周期性运行或直接响应变化 ,也容易受路由选择循环、路由震荡等问题的影响。
第三种分类方法:(根据算法是负载敏感还是负载迟钝的来划分)
- 负载敏感算法:链路费用动态变化来反映链路拥塞水平 。
- 负载迟钝算法:链路费用与拥塞无关,当今因特网路由选择算法基本都是迟钝的。
🐇链路状态路由选择算法
由上可知,在链路状态算法中,网络拓扑和所有的链路开销都是已知的,也就是说可以用作LS算法的输入。
⭐️Dijkstra算法
Dijkstra算法计算从某节点(源节点,称为u)到网络中所有其他节点的最低开销路径。它是迭代算法,其性质是经算法的第k次迭代后,可知道到k个目的节点的最低开销路径。
- D(v):到本算法的本次迭代,从源节点到目的节点v的最低开销路径的开销。
- p(v):从源到v沿着当前最低开销路径的前一节点(v的邻居)。
- N':节点子集;如果从源到v的最低开销路径已确知,v在N'中。
针对Dijkstra算法本身,捞数据结构笔记(主要看图解):第十七章:贪婪算法 | 拓扑排序 | Dijkstra算法 | Kruskal算法 | Prim算法
如何防止链路状态算法中出现的振荡?
- 确保并非所有的路由器都同时进行LS算法。我们希望即使路由器以相同周期运行LS算法,在每个节点上算法执行的时机也是不同的。
- 研究人员注意到因特网上的路由器能够在它们之间进行自同步,也就是即使它们初始时以同一周期但在不同时刻执行算法,算法执行时机最终会在路由器上变成同步并保持。
- 避免这种自同步的一种方法是,让每台路由器发送链路通告的时间随机化。
🐇距离向量路由选择算法
距离向量算法是一种迭代的、异步的、分布式算法,而LS算法是一种使用全局信息的算法。
- 分布式:每个节点要从一个或多个直接相连邻居接收某些信息,计算,将计算结果发给邻居。
- 迭代:过程持续到邻居之间无更多信息交换。
- 异步:不要求所有节点相互步伐一致操作。
⭐️DV算法
Bellman-Ford方程
关键就是那个公式,核心就是找最小。如下图:
路由选择环路,无穷计数问题:增加毒性逆转。欺骗费用无穷大。如果z通过y路由选择到目的地x,则z通告y,它(z)到x的距离是无限大。 解决两个直接相连无穷计数问题。
🐇LS与DV路由选择算法的比较
- 报文复杂性:显然LS复杂得多,每条链路费用改变都要通知所有结点
- 收敛速度:DV算法收敛较慢,且会遇到路由选择环路和无穷计数问题
- 健壮性:路由器发生故障,LS结点仅计算自己的转发表,提供了一定健壮性;DV算法一个不正确的结点会扩散到整个网络
📚因特网中自洽系统内部的路由:OSPF
自洽系统(AS):
- 每个AS由一组通常处在相同管理控制下的路由器组成。
- 通常在一个ISP中的路由器以及互联它们的链路构成一个AS。
- 在相同AS中的路由器都运行相同的路由选择算法并且有彼此的信息。在一个自洽系统内运行的路由选择算法叫作自洽系统内部路由选择协议。
- AS内部路由选择协议,又称内部网关协议
- 路由选择信息协议RIP,通常设置在下层ISP中
- 开放最短优先OSPF,通常设置在上层ISP中
- OSPF核心:使用洪泛链路状态信息的LS协议 + Dijkstra最低费用路径算法。各条链路费用(权值)是管理员配置的。OSPF是基于链路状态的。
- 使用OSPF,一台路由器构建了整个AS的拓扑图,然后在本地运行Dijkstra算法。
- 使用OSPF,路由器向AS内所有其他路由器广播路由选择信息。即使链路未发生变化,也要周期性广播链路状态(at least 30 minutes at a time)
- OSPF报文由IP直接承载,优点:
- 安全:能够鉴别OSPF路由器之间的交换,仅有受信任的路由器能参与AS内的OSPF协议。包括使用MD5加密。
- 多条相同费用路径:无需仅选择单一路径承载所有流量。
- 对单播与多播路由选择的综合支持:支持单播多播路由选择。
- 支持在单个路由选择域内的层次结构:
- 具有按层次结构构造一个自治系统的能力。
- 一个OSPF自洽系统可以配置成多个区域,每个区域运行自己的OSPF链路状态路由选择算法,一个区域内每台路由器可以向该区域其他路由器广播链路状态。
- 一个区域内,一台或多台区域边界路由器负责为流向该区域以外的分组提供路由选择。
- AS内只有一个OSPF区域配置成主干区域,为其他区域之间的流量提供路由选择。
- 该主干包含AS内所有区域边界路由器,也可能包含一些非边界路由器。
- 在AS中的区域间的路由选择要去分组先路由到一个区域边界路由器,然后通过主干路到位于目的区域的区域边界路由器,从而再路由到最终目的地。
📚ISP之间的路由选择:BGP
因为AS间路由选择协议涉及多个AS之间的协调,所以AS通信必须运行相同的AS间路由选择协议,在因特网中,所有AS运行相同的AS间路由选择协议,称为边界网关协议(BGP)。
🐇BCP的作用
作为一种AS间的路由选择协议,BGP为每台路由器提供了一种完成以下任务的手段:
- 从邻居AS获得前缀的可达性信息:特别是,BGP允许每个子网向因特网其余部分通告它的存在。一个子网高声宣布『我在这!』,而BGP确保因特网中所有AS知道该子网。如果没有BGP的话,每个子网都将是隔离的孤岛。
- 确定到该前缀的“最好的”路由:一台路由器可能知道两条或更多条到特定前缀的不同路由。为了确定最好的路由,该路由器将本地运行一个BGP路由选择过程。该最好路由将基于策略以及可达性信息来确定。
⭐️通告BGP路由信息
- 如上图,AS3包括一个具有前缀x的子网。
- 对于每个AS,每台路由器要么是一台网关路由器,要么是一台内部路由器:
- 网关路由器是位于AS边缘的路由器(1c),直接连接到其他AS中的一台或多态路由器。
- 内部路由器仅连接在它自己AS中的主机和路由器(1a)。
- 在BGP中 ,每对路由器通过使用179端口的半永久TCP连接交换路由选择信息。
- 每条直接连接以及所有通过该连接发送的BGP报文,称为BGP连接。此外,跨越两个AS的BGP连接称为外部BGP(eBGP)连接,而在相同AS中的两台路由器之间的BGP会话称为内部BGP(iBGP)连接。
⭐️确定最好的路由
相关BGP术语:
- 前缀及其属性称为路由。两个较为重要的属性是AS-PATH和NEXT-HOT。
- AS-PATH:该属性包含了前缀通告已经通过的AS,当一个前缀传送到一个AS时,AS将其ASN增加到AS-PATH中。路由器使用AS-PATH属性检测和防止循环通告。 路由器使用AS-PATH在多条路径中选择相同的前缀。
- NEXT-HOP:是AS-PATH起始的路由器接口的IP地址,路由器使用该属性正确地配置它们的转发表。使用NEXT-HOP值和AS内部路由选择算法,路由器能确定到每条对等链路的路径的费用,用热土豆路由选择决定适当的接口 。
BGP路由选择 :
- BGP使用eBGP和iBGP向在AS中的所有路由器发布路由,路由器可能知道到达任何一条前缀的多条路由。消除规则从上到下:
- 选择具有最高本地偏好值(管理员决定)的路由。
- 选择具有最短AS-PATH的路由:AS的跳数
- 最靠近NEXT-HOP路由器的路由,最靠近指最低费用路径最低,由AS内部算法决定(hot potato routing):热土豆路由。
- 使用BGP标识符选择路由。
📚SDN控制平面
- SDN是一种网络架构,它将网络控制平面(Control Plane)与数据转发平面(Data Plane)分离开来,使得网络管理员可以通过集中式的软件控制器来管理整个网络。
- 传统的网络架构中,网络设备(如交换机、路由器等)通常自己负责决策并执行数据包的转发。而在 SDN 中,网络设备只负责数据包的转发,而决策逻辑则由集中式的控制器来完成。
- 这样做的好处在于,网络管理员可以通过集中式的控制器来实现对整个网络的管理和控制,从而提高网络的可靠性、安全性和灵活性。
SDN 的主要作用包括:
- 简化网络管理:SDN 可以将网络管理集中到一个控制器中,从而简化网络管理流程,提高管理效率。
- 提高网络灵活性:SDN 可以根据需求动态地调整网络拓扑结构,从而满足不同的应用需求。
- 提高网络安全性:SDN 可以通过集中式的控制器来实现对网络流量的监控和管理,从而提高网络的安全性。
- 降低网络成本:SDN 可以通过集中式的控制器来优化网络资源的利用,从而降低网络成本。
参考教程:
- 中科大郑烇、杨坚全套《计算机网络(自顶向下方法 第7版)》
- 计算机网络简明教程及仿真实验