前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >网络层控制平面

网络层控制平面

作者头像
用户11097514
发布2024-05-31 12:27:52
1520
发布2024-05-31 12:27:52
举报
文章被收录于专栏:技术分享

主要学习网络层控制平面的工作原理

路由(route)的概念

**路由: 按照某种指标(传输延迟,所经过的站点数目等)找到一条 从源节点到目标节点的较好路径 **

  • 较好路径: 按照某种指标较小的路径
  • 指标:站数, 延迟,费用,队列长度等, 或者是一些单纯指标的加权平均
  • 采用什么样的指标,表示网络使用者希望网络在什么方面表现突出,什 么指标网络使用者比较重视

** 以网络为单位进行路由(路由信息通告+路由计算) **

  • 网络为单位进行路由,路由信息传输、计算和匹配的代价低
  • 前提条件是:一个网络所有节点地址前缀相同,且物理上聚集
  • 路由就是:计算网络 到其他网络如何走的问题

** 路由选择算法(routing algorithm):网络层软件的一部分,完成 路由功能 **

网络的图抽象

image.png
image.png

N = 路由器集合 = { u, v, w, x, y, z } E = 链路集合 ={ (u,v), (u,x), (v,x), (v,w), (x,w), (x,y), (w,y), (w,z), (y,z) }边有代价 **边的代价: **

  • c(x,x’) = 链路的代价 (x,x’) - e.g., c(w,z) = 5
  • 代价可能总为1
  • 或是 链路带宽的倒数
  • 或是 拥塞情况的倒数

**路由的输入:拓扑、边的代价、源节点 ** **输出的输出:源节点的汇集树(到其他节点的路径) **

汇集树下面解释

路由最优化原则 (optimality principle)

最优化原则 汇集树(sink tree)

  • **此节点到所有其它节点的最优路径形成的树 **
  • 路由选择算法就是为所有路由器找到并使用汇集树
image.png
image.png

路由原则

  • **正确性(correctness):**算法必须是正确的和完整的,使分 组一站一站接力,正确发向目标站;完整:目标所有的 站地址,在路由表中都能找到相应的表项;没有处理不 了的目标站地址;
  • 简单性(simplicity):算法在计算机上应简单:最优但复杂 的算法,时间上延迟很大,不实用,不应为了获取路由 信息增加很多的通信量;
  • **健壮性(robustness):**算法应能适应通信量和网络拓扑的 变化:通信量变化,网络拓扑的变化算法能很快适应; 不向很拥挤的链路发数据,不向断了的链路发送数据;
  • **稳定性(stability)**:产生的路由不应该摇摆
  • 公平性(fairness):对每一个站点都公平
  • **最优性(optimality)**:某一个指标的最优,时间上,费用 上,等指标,或综合指标;实际上,获取最优的结果代 价较高,可以是次优的

路由算法的分类

  1. ** 全局算法 —> “link state” 算法 **

** 所有的路由器拥有完整的拓扑 和边的代价的信息 **

  1. **分布式算法 —-> “distance vector” 算法 **

路由器只知道与它有物理连接 关系的邻居路由器,和到相应 邻居路由器的代价值 叠代地与邻居交换路由信息、 计算路由信息

传统的路由选择算法

**“link state” 算法 **

LS路由的工作过程

配置LS路由选择算法的路由工作过程
  1. 各点通过各种渠道获得整个网络拓扑, 网络中所有链路 代价等信息(这部分和算法没关系,属于协议和实现)
  2. 使用LS路由算法,计算本站点到其它站点的最优路径(汇 集树),得到路由表
  3. 按照此**路由表转发分组(datagram方式) **
  • 严格意义上说不是路由的一个步骤
  • 分发到输入端口的网络层
image.png
image.png
LS路由的基本工作过程
  1. 发现相邻节点,获知对方网络地址

一个路由器上电之后,向所有线路发送HELLO分组 其它路由器收到HELLO分组,回送应答,在应答分组中,告 知自己的名字(全局唯一) 在LAN中,通过广播HELLO分组,获得其它路由器的信息, 可以认为引入一个人工节点

  1. 测量到相邻节点的代价(延迟,开销)

实测法

发送一个分组要求对方立即响应 回送一个ECHO分组 通过测量时间可以估算出延迟情况

  1. 组装一个LS分组**,描述它到相邻节点的代价情况**

发送者名称 序号,年龄 列表: 给出它相邻节点,和它到相邻节点的延迟

image.png
image.png
  1. 将分组通过扩散的方法发到所有其它路由器以上4步让每个路由器获得拓扑和边代价

顺序号:用于控制无穷的扩散,每个路由器都记录( 源路由器,顺序号),发现重复的或老的就不扩散 ** 将分组通过扩散的方法发到所有其它路由器 **

  1. 通过Dijkstra算法找出最短路径(这才是路由算法)
    1. 每个节点独立算出来到其他节点(路由器=网络)的最短路径
    2. 迭代算法:第k步能够知道本节点到k个其他节点的最短路径

** 通过Dijkstra算法找出最短路径 (路由算法)前面的只是铺垫,通过协议发现邻居,通过网络的泛洪来散播路由信息**

链路状态路由选择(link state routing)

**符号标记: **

  • c(i,j): 从节点i 到j链路代价(初始状态下非相邻节点之间的 链路代价为∞)
  • D(v): 从源节点到节点V的当前路径代价(节点的代价)
  • p(v): 从源到节点V的路径前序节点
  • N’: 当前已经知道最优路径的的节点集合(永久节点的集合)
image.png
image.png

LS路由选择算法的工作原理

** 节点标记: 每一个节点使用(D(v),p(v)) 如: (3,B)标记 **

  • D(v)从源节点由已知最优路径到达本节点的距离
  • P(v)前序节点来标注

** 2类节点 **

  • 临时节点(tentative node) :还没有找到从源 节点到此节点的最优路径的节点
  • 永久节点(permanent node) N’:已经找到了从 源节点到此节点的最优路径的节点

**初始化 **

  1. 除了源节点外,所有节点都为临时节点

节点代价除了与源节点代价相邻的节点外,都为∞ 从所有临时节点中找到一个

  1. 节点代价最小的临时节点,将 之变成永久节点(当前节点)W
  2. 对此节点的所有在临时节点集合中的邻节点(V)

如 D(v)>D(w) + c(w,v), 则重新标注此点, (D(W)+C(W,V), W) 否则,不重新标注

  1. 开始一个新的循环
image.png
image.png
image.png
image.png

**“distance vector” 算法 **

**距离矢量路由选择(distance vector routing) **

  • ** 动态路由算法之一 **

** 距离矢量路由选择的基本思想 **

  • 各路由器维护一张路由表,结构如图(其它代价)
  • 各路由器与相邻路由器交换路由表
  • 根据获得的路由信息,更新路由表
image.png
image.png

**代价及相邻节点间代价的获得 **

  • 跳数(hops), 延迟(delay),队列长度
  • 相邻节点间代价的获得:通过实测

** 路由信息的更新 **

  1. 根据实测 得到本节点A到相邻站点的代价(如:延迟)
  2. 根据各相邻站点声称它们到目标站点B的代价
  3. 计算出本站点A经过各相邻站点到目标站点B的代价
  4. 找到一个最小的代价,和相应的下一个节点Z,到达节点 B经过此节点Z,并且代价为A-Z-B的代价
  5. 其它所有的目标节点一个计算法
image.png
image.png

举例:

image.png
image.png

**距离矢量算法: ** ** Bellman-Ford 方程(动态规划) **

image.png
image.png

递归找到最小值, 通过局部最小得到全局最小值。 ** Dx (y) = 节点x到y代价最小值的估计 **[ x 节点维护距离矢量Dx = [Dx (y): y є N ] ]

** 节点x: **

  • 知道到所有邻居v的代价: c(x,v)
  • 收到并维护一个它邻居的距离矢量集
  • 对于每个邻居, x 维护 Dv = [Dv (y): y є N ]

距离矢量算法核心思路

每个节点都将自己的距离矢量估计值传送给邻居,定时或者 DV有变化时,让对方去算 ** 当x从邻居收到DV时,自己运算,更新它自己的距离矢量 ** **采用B-F equation: ** { Dx (y) ← minv {c(x,v) + Dv (y)} 对于每个节点y ∊ N } { X往y的代价 x到邻居v代价 v声称到y的代价 } ** Dx (y)估计值最终收敛于实际的最小代价值dx (y) ** ** 距离矢量算法 是 异步式迭代, 每次本地迭代 被以下事件触发 ** [1. 本地链路代价变化了 2. 从邻居来了DV的更新消息 ]

image.png
image.png

两个算法的比较

** 消息复杂度 DV算法更好一些**

LS: 有 n 节点, E 条链路,发送 报文O(nE)个 局部的路由信息;全局传播

DV: 只和邻居交换信息 全局的路由信息,局部传播

** 收敛时间 LS更好**

LS: O(n2) 算法 有可能震荡 DV: 收敛较慢 可能存在路由环路

** 健壮性: 路由器故障会发生什么 (LS胜出) ** LS:

节点会通告不正确的链路代价 每个节点只计算自己的路由表 错误信息影响较小,局部,路由较 健壮

因特网中自治系统内部的路由选择

内部网关协议: 自治区内部的协议

外部网关协议: 自治区之间的协议

RIP( Routing Information Protocol )

基于Distance vector 算法实现:

  • 距离矢量:每条链路cost=1,# of hops (max = 15 hops) 跳数[ 15最大 ,如果是16 就是不可达 ]
  • DV每隔30秒和邻居交换DV,通告
  • 每个通告包括:最多25个目标子网

RIP 通告(advertisements)

DV: 在邻居之间每30秒交换通告报文

  • 定期,而且在改变路由的时候发送通告报文
  • 在对方的请求下可以发送通告报文

每一个通告: 至多AS内部的25个目标网络的 DV

  • 目标网络+跳数 【 一次公告最多25个 子网 最大跳数为16 】
img
img
img
img

如果180秒没有收到通告信息–>邻居或者链路失效

  • 发现经过这个邻居的路由已失效
  • 新的通告报文会传递给邻居
  • 邻居因此发出新的通告 (如果路由变化的话)
  • 链路失效快速(?)地在整网中传输
  • 使用毒性逆转(poison reverse)阻止ping-pong回路 (不可达的距离:跳数无限 = 16 段)

RIP 以应用进程的方式实现:route-d (daemon)

通告报文通过UDP报文传送,周期性重复

网络层的协议使用了传输层的服务,以应用层实体的 方式实现

OSPF(Open Shortest Path First)

是基于链路状态(LS)算法实现

  • LS 分组在网络中(一个AS内部)分发
  • 全局网络拓扑、代价在每一个节点中都保持
  • 路由计算采用Dijkstra算法

具体的链路算法怎么算的呢 ?

  1. 首先链路状态分组会在全网泛洪, 通过这个, 每个节点都会拿到全局拓扑以及代价和 每个节点所能到达目标的汇集树。 从而装载他的路由表
  2. 按照这个路由表, 对到来的分组进行转发。

IS-IS路由协议:几乎和OSPF一样

OSPF “高级” 特性(在RIP中的没有的)

  • 安全: 所有的OSPF报文都是经过认证的 (防止恶意的攻击)
  • 允许有多个代价相同的路径存在 (在RIP协议中只有一个)
  • 对于每一个链路,对于不同的TOS有多重代价矩阵
  • 例如:卫星链路代价对于尽力而为的服务代价设置比较低,对实 时服务代价设置的比较高
  • 支持按照不同的代价计算最优路径,如:按照时间和延迟分别计 算最优路径
  • 对单播和多播的集成支持:
  • Multicast OSPF (MOSPF) 使用相同的拓扑数据库, 就像在OSPF中一样
  • 在大型网络中支持层次性OSPF

层次化的OSPF路由

img
img

2个级别的层次性: 本地, 骨干

  • 路状态通告仅仅在本地区域Area范围内进行
  • 每一个节点拥有本地区域的拓扑信息;
    • 关于其他区域,知道去它的方向,通过区域边界路 由器(最短路径)

区域边界路由器: “汇总(聚集)”到自己区域 内网络的距离, 向其它区域边界路由器通告.

骨干路由器: 仅仅在骨干区域内,运行OSPF路由

边界路由器: 连接其它的AS’s.

ISP之间的路由选择: BGP (自治区域之间的路由选择)

自治区域之间的路由选择。 之前学的(距离矢量算法等等及其一些协议)自治区域内部的协议

层次路由

一个平面的路由
  • 一个网络中的所有路 由器的地位一样
  • 通过LS, DV,或者其 他路由算法,所有路 由器都要知道其他所 有路由器(子网)如 何走
  • 所有路由器在一个平面
平面路由的问题
  • 规模巨大的网络中,路由信 息的存储、传输和计算代价巨大
  • 管理问题

层次路由:

层次路由: 将互联网 分成一个个AS(路由器 区域)

  • 某个区域内的路由器集合,自治系统 “autonomous systems” (AS)
  • 一个AS用AS Number (ASN)唯一标示
  • 一个ISP可能包括1个 或者多个AS

路由变成了: 2个层次路由

  • AS内部路由:在同一个AS 内路由器运行相同的路由协议

intra-AS” routing protocol:内部网关协议

不同的AS可能运行着不同的 内部网关协议

能够解决规模和管理问题 如:路由选择RIP,OSPF,IGRP

网关路由器:AS边缘路由器 ,可以连接到其他AS

  • AS间运行AS间路由协议

“inter-AS” routing protocol:外部网关协议

解决AS之间的路由问题,完 成AS之间的互联互通

层次路由的优点

解决了规模问题

  1. 内部网关协议解决:AS内部 数量有限的路由器相互到达的 问题, AS内部规模可控
  • 如AS节点太多,可分割AS,使 得AS内部的节点数量有限
  1. AS之间的路由的规模问题
  • 增加一个AS,对于AS之间的路 由从总体上来说,只是增加了一 个节点=子网(每个AS可以用一 个点来表示)
  • 对于其他AS来说只是增加了一 个表项,就是这个新增的AS如 何走的问题
  • 扩展性强:规模增大,性能不会 减得太多
  1. 解决了管理问题
  • 各个AS可以运行不 同的内部网关协议
  • 可以使自己网络的细 节不向外透露

互联网AS(自治系统)间路由:BGP

BGP (Border Gateway Protocol): 自治区域间路由 协议“事实上的”标准

“将互联网各个AS粘在一起的胶水”

BGP 提供给每个AS以以下方法:

  • eBGP: 从相邻的ASes那里获得子网可达信息
  • iBGP: 将获得的子网可达信息传遍到AS内部的所有路由器
  • 根据子网可达信息和策略来决定到达子网的“好”路径
  • eBGP、iBGP的链接
img
img

允许子网向互联网其他网络通告“我在这里”

基于距离矢量算法(路径矢量)

  • 不仅仅是距离矢量,还包括到达各个目标网络的详细路径(AS 序号的列表)能够避免简单DV算法的路由环路问题

BGP基础:

BGP 会话 : 2个BGP路由器(“peers”)在一个半永久的TCP连接上 交换BGP报文:

  • 通告向不同目标子网前缀的“路径”(BGP是一个“路径 矢量”协议

当AS3网关路由器3a向AS2的网关路由器2c通告路径: AS3,X 【3a是2c关于X的下一跳(next hop)】

  • 3a参与AS内路由运算,知道本AS所有子网X信息
  • 语义上:AS3向AS2承诺,它可以向子网X转发数据报
img
img

路径的属性& BGP 路由

当通告一个子网前缀时,通告包括 BGP 属性 [ prefix + attributes = “route” ]

2个重要的属性:

  1. AS-PATH: 前缀的通告所经过的AS列表: AS 67 AS 17
  • 检测环路;多路径选择
  • 在向其它AS转发时,需要将自己的AS号加在路径上
  1. NEXT-HOP: 从当前AS到下一跳AS有多个链路,在NETX-HOP属性中,告诉对方通过那个 I 转发.
  2. 其它属性:路由偏好指标,如何被插入的属性

基于策略的路由:

  • 当一个网关路由器接收到了一个路由通告, 使用输入策略来接受或过滤( accept/decline. )
  • 策略也决定了是否向它别的邻居通告收到的这个路由信息

BGP 路径通告

img
img
  • 路由器AS2.2c从AS3.3a接收到的AS3,X路由通告 (通过 eBGP)
  • 基于AS2的输入策略,AS2.2c决定接收AS3,X的通告,而且通过 iBGP)向AS2的所有路由器进行通告
  • 基于AS2的策略,AS2路由器2a通过eBGP向AS1.1c路由器通告 AS2,AS3,X 路由信息
  • 路径上加上了 AS2自己作为AS序列的一跳

网关路由器可能获取有关一个子网X的多条路径,从多个eBGP 会话上:

  • AS1 网关路由器1c从2a学习到路径:AS2,AS3,X
  • AS1网关路由器1c从3a处学习到路径AS3,X
  • 基于策略,AS1路由器1c选择了路径:AS3,X,而且通过iBGP 告诉所有AS1内部的路由器

BGP报文

使用TCP协议交换BGP报文.

报文包括:

  • OPEN: 打开TCP连接,认证发送方
  • UPDATE: 通告新路径 (或者撤销原路径)
  • KEEPALIVE:在没有更新时保持连接,也用于对 OPEN 请求确认
  • NOTIFICATION: 报告以前消息的错误,也用来关闭 连接

BGP 路径选择

路由器可能获得一个网络前缀的多个路径,路由器必须进行路径的选择,路由选择可以基于:

  1. 本地偏好值属性: 偏好策略决定
  2. 最短AS-PATH :AS的跳数
  3. 最近的NEXT-HOP路由器:热土豆路由
  4. 附加的判据:使用BGP标示

一个前缀对应着多种路径,采用消除规则直到留下一条路径

BGP: 通过路径通告执行策略

为什么内部网关协议和外部网关协议如此不同?

策略:

Inter-AS: 管理员需要控制通信路径,谁在使用它的网络 进行数据传输;

Intra-AS: 一个管理者,所以无需策略;

AS内部的各子网的主机尽可能地利用资源进行快速路由

规模:

  • AS间路由必须考虑规模问题,以便支持全网的数据转发
  • AS内部路由规模不是一个大的问题
    • 如果AS 太大,可将此AS分成小的AS;规模可控
    • AS之间只不过多了一个点而已
    • 或者AS内部路由支持层次性,层次性路由节约了表空间, 降低了 更新的数据流量

性能:

Intra-AS: 关注性能

Inter-AS: 策略可能比性能更重要

Software defined networking (SDN) 控制器

互联网络网络层:历史上都是通过分布式、每个 路由器的实现

  • 单个路由器包含了:交换设备硬件、私有路由器OS( 如:思科IOS)和其上运行的互联网标准协议(IP, RIP, IS-IS, OSPF, BGP)的私有实现
  • 需要不同的中间盒来实现不同网络层功能:防火墙, 负载均衡设备和NAT

传统的方式: 每-路由器(Per-router)控制平面

在每一个路由器中的单独路由器算法元件,在控制平面进行交互 复杂且难以管理

img
img

SDN方式: 逻辑上集中的控制平面

一个不同的(通常是远程的)控制器与本地控制代理(CAs) 交互

img
img

SDN

SDN的优点:

  • 网络管理更加容易:避免路由器的错误配置,对 于通信流的弹性更好
  • 基于流表的转发(回顾一下OpenFlow API),允 许“可编程”的路由器
    • 集中式“编程”更加容易:集中计算流表然后分发
    • 传统方式分布式“编程”困难:在每个单独的路由器 上分别运行分布式的算法,得到转发表(部署和升级 代价低) 。而且要求各分布式计算出的转发表都得基本正确
  • 控制平面的开放实现(非私有)

SDN特点:

  1. 通用“ flowbased” 基于流的 匹配+行动(e.g., OpenFlow)
  2. 控制平面和数据平面的分离
  3. 控制平面功能在数据交换设备之外实现
  4. 可编程控制应用 … 在控制器之上以 网络应用形式实 现各种网络功能

SDN架构

数据平面交换机

  1. 快速,简单,商业化交换设备 采用硬件实现通用转发功能
  2. 流表被控制器计算和安装
  3. 基于南向API(例如OpenFlow ),SDN控制器访问基于流的 交换机
  4. 定义了哪些可以被控制哪些不能  也定义了和控制器的协议 (e.g., OpenFlow

SDN控制器(网络OS):

  • 维护网络状态信息
  • 通过上面的北向API和网络 控制应用交互
  • 通过下面的南向API和网络 交换机交互
  • 逻辑上集中,但是在实现上 通常由于性能、可扩展性、 容错性以及鲁棒性采用分布 式方法实现

网络控制应用

  • 控制的大脑: 采用下层提供 的服务(SDN控制器提供的 API),实现网络功能

• 路由器 交换机

• 接入控制 防火墙

• 负载均衡

• 其他功能

  • 非绑定:可以被第三方提供 ,与控制器厂商以通常上不 同,与分组交换机厂商也可 以不同

SDN控制器里的元件

img
img
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-08-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 路由(route)的概念
    • 网络的图抽象
      • 路由最优化原则 (optimality principle)
        • 路由原则
      • 路由算法的分类
      • 传统的路由选择算法
        • **“link state” 算法 **
          • LS路由的工作过程
          • 链路状态路由选择(link state routing)
          • LS路由选择算法的工作原理
        • **“distance vector” 算法 **
          • 距离矢量算法核心思路
        • 两个算法的比较
        • 因特网中自治系统内部的路由选择
          • RIP( Routing Information Protocol )
            • RIP 通告(advertisements)
          • OSPF(Open Shortest Path First)
            • OSPF “高级” 特性(在RIP中的没有的)
            • 层次化的OSPF路由
        • ISP之间的路由选择: BGP (自治区域之间的路由选择)
          • 层次路由
            • 层次路由:
            • 层次路由的优点
          • 互联网AS(自治系统)间路由:BGP
            • BGP基础:
            • 路径的属性& BGP 路由
            • BGP 路径通告
            • BGP报文
            • BGP 路径选择
            • 为什么内部网关协议和外部网关协议如此不同?
            • 传统的方式: 每-路由器(Per-router)控制平面
            • SDN方式: 逻辑上集中的控制平面
        • Software defined networking (SDN) 控制器
          • SDN
            • SDN的优点:
            • SDN特点:
          • SDN架构
            • 数据平面交换机
            • SDN控制器(网络OS):
            • 网络控制应用
          • SDN控制器里的元件
          相关产品与服务
          负载均衡
          负载均衡(Cloud Load Balancer,CLB)提供安全快捷的四七层流量分发服务,访问流量经由 CLB 可以自动分配到多台后端服务器上,扩展系统的服务能力并消除单点故障。轻松应对大流量访问场景。 网关负载均衡(Gateway Load Balancer,GWLB)是运行在网络层的负载均衡。通过 GWLB 可以帮助客户部署、扩展和管理第三方虚拟设备,操作简单,安全性强。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档