网络层控制平面(一)

简介: 网络层控制平面

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


路由(route)的概念

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


较好路径: 按照某种指标较小的路径

指标:站数, 延迟,费用,队列长度等, 或者是一些单纯指标的加权平均

采用什么样的指标,表示网络使用者希望网络在什么方面表现突出,什 么指标网络使用者比较重视

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


网络为单位进行路由,路由信息传输、计算和匹配的代价低

前提条件是:一个网络所有节点地址前缀相同,且物理上聚集

路由就是:计算网络 到其他网络如何走的问题

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


网络的图抽象

bb66b9b706d052994475ef2689920df4_1692103611251-5a7f2bf5-a7bb-45a1-816c-4b54a138b7af.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)


**此节点到所有其它节点的最优路径形成的树 **

路由选择算法就是为所有路由器找到并使用汇集树

4da791ca6c0c4c24b8b1a076e1f2131a_1692103861795-44d1f467-8137-4d46-8cf6-6eb0bf224c88.png


路由原则

**正确性(correctness):**算法必须是正确的和完整的,使分 组一站一站接力,正确发向目标站;完整:目标所有的 站地址,在路由表中都能找到相应的表项;没有处理不 了的目标站地址;

简单性(simplicity):算法在计算机上应简单:最优但复杂 的算法,时间上延迟很大,不实用,不应为了获取路由 信息增加很多的通信量;

**健壮性(robustness):**算法应能适应通信量和网络拓扑的 变化:通信量变化,网络拓扑的变化算法能很快适应; 不向很拥挤的链路发数据,不向断了的链路发送数据;

**稳定性(stability)**:产生的路由不应该摇摆

公平性(fairness):对每一个站点都公平

**最优性(optimality)**:某一个指标的最优,时间上,费用 上,等指标,或综合指标;实际上,获取最优的结果代 价较高,可以是次优的

路由算法的分类

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

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


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

路由器只知道与它有物理连接 关系的邻居路由器,和到相应 邻居路由器的代价值

叠代地与邻居交换路由信息、 计算路由信息


传统的路由选择算法

**“link state” 算法 **

LS路由的工作过程

配置LS路由选择算法的路由工作过程

各点通过各种渠道获得整个网络拓扑, 网络中所有链路 代价等信息(这部分和算法没关系,属于协议和实现)

使用LS路由算法,计算本站点到其它站点的最优路径(汇 集树),得到路由表

按照此**路由表转发分组(datagram方式) **

严格意义上说不是路由的一个步骤

分发到输入端口的网络层

073677953c8d636bf7053cec97a0c9c3_1692104452427-ed25e686-ac3e-47d5-acd9-f0128668e10f.png


LS路由的基本工作过程

发现相邻节点,获知对方网络地址

一个路由器上电之后,向所有线路发送HELLO分组

其它路由器收到HELLO分组,回送应答,在应答分组中,告 知自己的名字(全局唯一)

在LAN中,通过广播HELLO分组,获得其它路由器的信息, 可以认为引入一个人工节点




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

实测法


发送一个分组要求对方立即响应

回送一个ECHO分组

通过测量时间可以估算出延迟情况


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

发送者名称 序号,年龄

列表: 给出它相邻节点,和它到相邻节点的延迟


58c2072391850b4d3ff5abf5950ea99a_1692104875360-e63b6471-e73e-479c-acf6-c730010881a0.png


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

顺序号:用于控制无穷的扩散,每个路由器都记录( 源路由器,顺序号),发现重复的或老的就不扩散

** 将分组通过扩散的方法发到所有其它路由器 **


通过Dijkstra算法找出最短路径(这才是路由算法)

每个节点独立算出来到其他节点(路由器=网络)的最短路径

迭代算法:第k步能够知道本节点到k个其他节点的最短路径

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


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

**符号标记: **


c(i,j): 从节点i 到j链路代价(初始状态下非相邻节点之间的 链路代价为∞)

D(v): 从源节点到节点V的当前路径代价(节点的代价)

p(v): 从源到节点V的路径前序节点

N’: 当前已经知道最优路径的的节点集合(永久节点的集合)

ba025a5dc341ba16f110bea437757f6e_1692105084879-6ce27b1a-8eee-4311-80b7-16922810c6f9.png


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

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


D(v)从源节点由已知最优路径到达本节点的距离

P(v)前序节点来标注

** 2类节点 **


临时节点(tentative node) :还没有找到从源 节点到此节点的最优路径的节点

永久节点(permanent node) N’:已经找到了从 源节点到此节点的最优路径的节点

**初始化 **


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

节点代价除了与源节点代价相邻的节点外,都为∞

从所有临时节点中找到一个


节点代价最小的临时节点,将 之变成永久节点(当前节点)W

对此节点的所有在临时节点集合中的邻节点(V)

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

否则,不重新标注


开始一个新的循环


0b79f5674824c6db2326389182034181_1692105724430-c84910d4-df1c-46d8-96ea-ba9e4ce449db.png

97e81ade66f23bf327a21daf335b93c1_1692106583674-876e9abe-c9e1-4215-99cf-1a3afe7e1361.png


**“distance vector” 算法 **

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


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

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


各路由器维护一张路由表,结构如图(其它代价)

各路由器与相邻路由器交换路由表

根据获得的路由信息,更新路由表

13e5aabdd9dc2b9e0dad70de1186ec0a_1692106615359-dbd9e0f9-7c65-4306-9807-bdb6fe8cbb89.png


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


跳数(hops), 延迟(delay),队列长度

相邻节点间代价的获得:通过实测

** 路由信息的更新 **


根据实测 得到本节点A到相邻站点的代价(如:延迟)

根据各相邻站点声称它们到目标站点B的代价

计算出本站点A经过各相邻站点到目标站点B的代价

找到一个最小的代价,和相应的下一个节点Z,到达节点 B经过此节点Z,并且代价为A-Z-B的代价

其它所有的目标节点一个计算法

1054946985f1d352ee9dfe45f4dd688e_1692106965574-d6cda94e-7fa9-48dc-a785-889fbf9d0d3f.png


举例:

4792152a8aa676f5a73349f781d68cd5_1692107070032-869de722-0ce3-457d-8871-6e549f1369ca.png


**距离矢量算法: **

** Bellman-Ford 方程(动态规划) **

e56fff69f6f19ca57613d480e2ed8ed9_1692107227144-e9fded2c-ff3c-44f9-993b-0775e65b7866.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的更新消息 ]

7fd7c9207be771737aaca99d271d20df_1692107840671-84b607fc-05dc-4de1-b9ec-f51708363b48.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



目录
相关文章
|
6天前
|
负载均衡 网络协议 算法
【计算机网络】网络层(控制平面)
【计算机网络】网络层(控制平面)
70 0
【计算机网络】网络层(控制平面)
|
6天前
|
存储 网络协议 安全
【计算机网络】网络层(数据平面)
【计算机网络】网络层(数据平面)
97 0
|
6天前
|
缓存 网络协议 SDN
计算机网络:网络层上(数据平面)
计算机网络:网络层上(数据平面)
|
6天前
|
网络协议 网络性能优化 SDN
【网络层】流量控制VS拥塞控制、路由器功能、SDN控制平面
【网络层】流量控制VS拥塞控制、路由器功能、SDN控制平面
53 0
|
8月前
|
网络协议 算法 API
网络层控制平面(二)
网络层控制平面
55 0
|
传感器 XML 人工智能
网络知识平面简介(下)
网络知识平面简介(下)
166 1
|
人工智能 运维 算法
网络知识平面简介(上)
网络知识平面简介(上)
192 1
|
运维 Kubernetes 监控
与容器服务 ACK 发行版的深度对话第二弹:如何借助 hybridnet 构建混合云统一网络平面
本次采访我将继续为大家详细讲解我的好伙伴:阿里巴巴的开源 Kubernetes 容器网络解决方案 hybridnet,以及我是如何借助它来构建混合云统一网络平面。
与容器服务 ACK 发行版的深度对话第二弹:如何借助 hybridnet 构建混合云统一网络平面

热门文章

最新文章