网络层:控制平面
记录一些学习计算机网络:自顶向下的学习笔记和心得
Github地址,欢迎star ⭐️⭐️⭐️⭐️⭐️
控制平面作为一种网络范围的逻辑,不仅控制沿着从源主机到目的主机的端到端路径间的路由器如何转发数据报,而且控制网络层组件和服务如何配置和管理
概述
- 转发表(基于目的地转发的场景)和流表(泛化转发的场景)
- 计算、维护和安装流表以及转发表
- 每路由器控制
- 每台路由器具有一个路由选择组件,用于和其他路由器路由选择组件通信
- 逻辑集中式控制
- 逻辑集中式控制器计算并分发转发表以供每台路由器使用
- 该控制器与每台路由器中的控制代理(CA)进行交互,CA一般只具有与控制器通信并按照控制器命令行事这一种功能
- 与每路由器控制中的CA不同,这些CA之间不能直接相互交互,也不能主动参与计算转发表
- 每路由器控制
路由选择算法介绍以及划分
-
路由选择算法目的是从发送方到接收方的过程中确定一条通过路由器网络的好路径(最低开销的路径)
-
根据集中式和非集中式来划分
- 集中式路由选择算法
- 用完整的、全局的网络知识计算出从源到目的地之间的最低开销路径
- 集中式算法具有关于连通性和链路开销方面的完整信息
- 具有全局状态信息的算法常被称作链路状态(LS)算法,该算法必须知道网络中每条链路的开销
- 分散式路由选择算法
- 路由器以迭代、分布式的方式计算最低开销路径,没有节点拥有关于所有网络链路开销的完整信息
- 每个节点仅有与其直接相连链路的开销知识,然后通过迭代计算过程以及相邻节点的信息交换来确定最低开销路径
- 距离向量(DV)算法,分散式路由选择算法,每个节点维护到网络中所有其他节点的开销(距离)的向量
- 集中式路由选择算法
-
根据静态和动态来划份
- 静态路由选择算法,路由随时间变化非常缓慢,通常是人工进行调整
- 动态路由选择算法,随着网络流量负载或拓扑发生变化 而改变路由选择路径
- 易受到诸如路由选择循环、路由振荡之类问题的影响
-
根据负载敏感和负责迟钝来划分
- 负载敏感算法,链路开销会动态地变化以反映出底层链路的当前拥塞水平
- 负载迟钝算法,某条链路的开销不明确反应当前或最近的拥塞水平(主流)
链路状态路由选择算法(LS)
- 通过链路状态广播算法 ,向每个节点向网路中所有其他节点广播链路状态分组,每个分组包含它所连接的链路的标识和开销
- 每个节点都具有网络的统一、完整视图,然后每个节点都能够运行LS算法并计算出相同的最低开销路径集合
- 链路状态路由选择算法(LS):Dijkstra算法
- Djkstra算法计算出某节点到所有其他节点的最低开销路径
- 当同一链路两个方向负载不同时,会出现振荡情况
- 该情况不仅出现在LS中,它出现在任何使用拥塞或基于时延的链路测度算法中
- 让所有路由器并非同时运行LS算法来解决这种问题
- 为了避免自同步,将通告时间随机化
距离向量算法DV
- 距离向量算法是一种迭代的、异步的和分布式算法
- 分布式:每个节点都要从相邻节点获取信息、计算然后向邻居分发
- 迭代:此算法一直持续到没有信息交换为止
- 异步:不要求所有节点相互之间步伐一致
- Bellman-Ford算法
- 节点唯一具有的信息是它到直接相连邻居的链路开销 和它从这些邻居接收到的信息 ,每个节点具有初始路由选择表
- 从邻居接受更新距离向量、重新计算路由选择表项和通知邻居到目的地的最低开销路径的开销,循环往复直到没有更新,该算法进入静止状态
- 为了避免路由选择环路
- 如果z通过y路由到达x,则z将通告y,z到x的距离是无穷大的即,Dz(x)为无穷
- 只要z经y路由选择到x,z就持续这样做
LS和DV路由选择算法比较
- 报文复杂度:LS每次链路状态发生改变就要向所有节点发送新的链路开销,DV算法仅当新的链路开销导致与该链路相连的最低开销路径发生变化时才传播新的开销
- 收敛速度:DV慢,且在收敛时会遇到路由选择环路以及无穷计数问题
- 健壮性:
- LS,路由计算在某种程度上是分离的,提供了一定的健壮性
- DV,一个不正确值会扩散到整个网络
因特网自治系统内部路由选择:OSPF
-
随着路由器数目变得巨大,成本和规模将会高的不可实现
-
因特网时ISP的网络,每个ISP都有自己的路由器网络
-
引入自治系统(AS)
- 每个AS由一组在相同管理控制下的路由器组成,通常在一个ISP和互联他们的链路构成一个AS
- 一个ISP可以拆分为多个AS
- 每个AS都有唯一的ASN号标识
- 一个自治系统AS内部的路由选择算法叫做自治系统内部路由选择协议
-
开放最短路优先(OSPF)
- OSPF是一种链路状态协议,洪泛链路状态信息和Dijkstra最低开销路径算法,使用OSPF,一台路由器构建了一幅关于整个自治系统的完整拓扑图
- OSPF提供了一种机制来让网络管理员为给定的链路权值集合确定最低开销的路由选择
- 管理员设置不同的权重来实现不同的功能,最少跳等
- OSPF路由器向AS内所有路由器 广播路由选择信息,即使状态未发生改变,它也周期性的广播链路状态(增加了健壮性)
- OSPF通告包含在IP报文中,对OSPF其上层协议的值为89,因此OSPF必须自己实现诸如可靠报文传输、链路状态广播等功能
- OSPF的优点:
- 安全:能够鉴别OSPF路由器之间的交换
- 多条相同开销的路径:存在多条相等开销路径时,无需选择单一路径承载所有流量
- 单播和多播路由选择的综合支持
- 支持在单个AS中的层次结构:一个OSPF自治系统能够层次化配置多个区域
- 每个区域,一台或多台区域边界路由器负责为该区域以外的分组提供路由选择
- 每个AS中,只有一个OSPF区域被配置为主干区域 ,主干区域为该AS中其余区域之间的流量提供路由选择
- 该主干包含所有的区域边界路由器和部分非边界路由器
- AS中的路由选择要求,分组先到达区域边界路由器,然后通过主干区域到达目的区域的区域边界路由器,进而到最终目的地
ISP之间的路由选择:BGP
-
当分组跨越多个AS进行路由时,需要一个自治系统间路由选择协议
-
在因特网中所有的AS运行相同的AS间路由选择协议,称为边界网关协议
-
BGP将因特网中数以千计的ISP粘合起来(因特网中协议唯一可能竞争者是IP协议)
-
BGP是一种分布式和异步的协议
BGP作用
-
每个路由器具有一台转发表,对于位于相同AS的目的地而言,转发表表项由AS内部路由协议决定,对于AS外部的目的地由AS间协议决定
-
BGP中分组路由到一个CIDR化的前缀,其中每个前缀代表一个子网或一个子网的集合
- (x,i)形式
- x代表前缀(138.16.68/22),i代表路由器的接口之一的接口号
-
BGP需要完成
- 从邻居AS获得前缀的可达性信息,BGP允许每个子网向因特网其余所有部分通告它的存在,BGP确保因特网中过的所有AS知道该子网
- 确定到该前缀的最好的路由,一台路由器可能直到多条通往同一前缀的不同路由,路由器本地运行一个BGP路由选择过程(使用从相邻路由器获得的的前缀可达信息),该最好的路由基于策略以及可达性信息来确定
-
通告BGP路由信息
- 每个AS内部每台路由器要么是一台网关路由器 ,要么是一台内部路由器
- 网关路由器位于AS边缘,它链接到其他AS的一台或多台路由器
- 内部路由器仅连接在他自己AS中的主机和路由器
- 在BGP中每台路由器使用179端口的半永久TCP链接交换路由选择信息
- 每条直接连接以及所有通过该链接发送的BGP报文称为BGP链接
- 跨越两个AS的BGP链接称为外部BGP链接(eBGP)
- 相同AS内部的BGP链接称为内部BGP链接(iBGP),iBGP不总是与物理链路相对应
- 每个AS内部每台路由器要么是一台网关路由器 ,要么是一台内部路由器
-
确定最好的路由
- 路由器通过BGP链接通告前缀时,前缀包括一些BGP属性,前缀及其属性称为路由
- 两个重要的属性是
AS-PATH
和NEXT-HOP
- AS-PATH包含通告已经通过的AS的列表
- BGP路由器还通过该属性检测和防止通告环路(在通告中发现了它自己,拒绝该通告)
- NEXT-HOP是AS-PATH起始的路由器接口的IP地址
- AS-PATH包含通告已经通过的AS的列表
- 热土豆路由选择
- 从所有可能的路由中选择到开始该路由的NEXT-HOP路由器具有最小开销的路由
- 相同AS内部的两台路由器到达一个目的地可能具有不同AS路径
- 转发表增加AS向外前缀时,AS间路由选择协议和AS内部路由选择协议都要用到
- 路由器选择算法
- 实际的BGP路由选择算法更为复杂
- 进入BGP路由选择算法的输入是到某前缀的所有路由的集合,该前缀是已被路由器学习和接受的,仅有一条时选择该路由,否则顺序调用以下规则
- 路由被指派一个本地偏好值作为其属性之一,它取决于该AS的网络管理员,最高本地偏好值路由被选择
- 最短AS-PATH路由,如果该规则是唯一规则,BGP将使用距离向量算法决定路径,其中距离测度使用的是AS跳的跳数,而不是路由器跳数
- 使用热土豆路由选择,最靠近NEXT-HOP路由器的路由
- 使用BGP标识符选择路由
- 进入BGP路由选择算法的输入是到某前缀的所有路由的集合,该前缀是已被路由器学习和接受的,仅有一条时选择该路由,否则顺序调用以下规则
- 实际的BGP路由选择算法更为复杂
-
IP任播
- BGP还常被用作实现IP任播服务,DNS常使用该服务
- CDN为他的多台服务器指派相同的IP地址,并使用BGP来通告这些服务器的IP地址,而处于不同的客户访问该IP会被引导至不同的不同的服务器(最近)
- DNS中,根服务器具有13个IP地址,但是每一个IP地址具有多台服务器,这些服务器分布在各地,用户访问这些根服务器时将通过IP任播路由到最近的根服务器
- BGP还常被用作实现IP任播服务,DNS常使用该服务
SDN控制平面
- 控制分组在网络的SDN使能设备中转发网络范围逻辑
- SDN四个关键特征
- 基于流的转发:能够基于运输层、网络层或链路层中任意数量的首部字段值进行;SDN控制平面的工作是计算、管理和安装所有网络交换机中的流表项
- 数据平面和控制平面分离
- 数据平面由网络交换机组成,执行"匹配+操作"的规则
- 控制平面由服务器以及决定和管理交换机流表的软件组成
- 网络控制功能:位于数据平面交换机外部,控制平面本身有两个组成
- 一个SDN控制器(网络操作系统)
- 控制器维护准确的网络状态信息,为网络控制应用程序提供这些信息
- 提供方法来让应用程序能够监视、编程和控制下面的网络设备
- 控制器是逻辑上集中,通常由几台服务器实现
- 若干网络控制应用程序:
- 一个SDN控制器(网络操作系统)
- 可编程的网络:
- 运行在控制平面上的网路控制应用程序,使用了SDN控制器提供的API来定义和控制网络设备的数据平面
- SDN促进了网络的分类,让计算硬件、系统软件和应用程序的分类,为计算机网络领域的创新提供了丰富、开放的生态系统
SDN控制器
- 通信层:SDN控制器和受控网络设备之间的通信,需要一个协议来传送控制器与这些设备之间的信息(OpenFlow)
- 网络状态管理层:由SDN控制平面所作出的最终控制决定,具有各类最新状态信息
- 对于网络控制应用程序的接口:控制器通过他的"北向"接口和应用程序交互,该API允许应用程序在状态管理层之间读/写网络状态和流表,当状态改变事件出现时,应用程序能够注册进行通告
OpenFlow协议
- OpenFlow协议运行在SDN控制器和SDN控制的交换机或其他实现OpenFlow API的设备之间
- 运行在TCP之上,使用6653默认端口
- 控制器流向受控交换机重要报文:
- 配置:该报文允许控制器查询并设置交换机的配置参数
- 修改状态:该报文由控制器使用,以增加/删除或修改交换机流表中的表项,并设置交换机端口特性
- 读状态:从交换机的流表和端口收集统计数据和计算器的值
- 发送分组:在受控交换机从特定的端口发送一个特定的报文
- 受控交换机流向控制器重要报文:
- 流删除:通知控制器已删除一个流表项
- 端口状态:通知端口状态变化
- 分组入:一个分组不与所有流表项匹配,这个分组被发给控制器进行额外处理
ICMP:因特网控制报文协议
- ICMP被主机和路由器用来彼此沟通网络层的信息
- ICMP的最典型用途是差错报告
- ICMP作为有效载荷承载在IP报文段中
- 指明上层协议为ICMP的IP数据报,分解出该数据报内容给ICMP
- ICMP报文由一个类型字段和一个编码字段,并且包含引起该ICMP报文首次生成的IP数据报的首部和前8个字节(以便发送方能确定引起该差错的数据报)
- ICMPv6还增加了新兴IPv6功能所需的新类型和编码
- 分组太大
- 未被认可的IPv6选项
- 。。。