【计算机网络】【网络层:控制平面-5】

小白笔记

网络层控制平面

目标:理解网络层控制平面的工作原理

·传统路由选择算法

·SDN 控制器

·ICMP协议:Internet Control Message Protocol

·网络管理(略)

以及它们在互联网上的实力和实现:

·OSPF,BGP,OpenFlow,ODL,和ONOS控制器,ICMP,SNMP

回顾:2个网络层功能:

·转发:将分组从路由器的一个输入端口移到合适的输出端口     ---数据平面

·路由:确定分组从源到目标的路径     ---控制平面

本节学习选择算法

路由协议

路由协议的目标:确定从发送主机到接收主机之间,通过路由器的网络“较好”的路径(等价于路由器的序列)

·路径:路由器的序列,分组将会沿着该序列从源主机到最后的目标主机

·“较好”:最小“代价”,“最快的”,“最不拥塞”

·路由:一个“top-10"网络挑战!

【计算机网络】【网络层:控制平面-5】_第1张图片

在互联网当中,路由信息的计算都是以子网为单位来计算,而且在路由信息的扩散过程当中路由信息还可以做进一步的聚集,聚集的目的是进一步减少路由表表项的数量减少路由计算传输的代价,所以说路由在网络层什么概念呢?找到合适的源主网到目标主网的路径,实际上是找到一个路由器到所有其他路由器的最好的路径,因为连接这个子网的路由器和子网实际上是一个概念,你到了这个子网的路由器就到了这个子网。所以说路径指的是路由器的序列,分组按照路由器的序列(即路径)最终从源主机到目标主机。所以说主机到主机之间的路由问题就相当于子网到子网的路由问题就相当于路由器到路由器的路由问题,我们找到了路由器到路由器的路径找到了这些节点到节点的路径就是找到了子网到子网的路径,也就找到了这个子网当中所有的主机到另外一个子网中所有主机的路径。而且子网到子网的路径规模要比主机到主机的规模要小。

网络的图抽象

边的代价指的是什么呢?从我这个路由器穿到另外一个路由器穿过这个网或者说穿过这个点到点的链路我需要花费的代价,如果我们关心的指标是跳数的话,穿过一个网从一个路由器跳到下一个路由器即一跳,如果指标是延迟的话,相当于链路代价是我穿过这个网络或者说两点之间穿过的延时。

最优化原则

·汇集树

   ·此节点到所有其他节点的最优路径形成的树

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

【计算机网络】【网络层:控制平面-5】_第2张图片

节点和节点之间就路由器和路由器之间也就是说路由器和路由器连接的子网和子网之间就是采用这种网络拓扑把它们连接在一起,那么最终的算法算出来什么?B这个源节点要算出到所有其他节点的最优路径,也就是算出B的汇集,也就是B的汇集树,什么叫汇集树呀?也就是B到M该怎么走?下一跳是什么?C啊,那么B到H这个最优路径是什么?下一跳是什么?A呀。那为什么不是一个图而是一个树呢?图的话可能出现环呀,有环的话代表可以这样走也可以那样走,那你取哪一个呢?所以是个树而不是一个图。

路由的原则

·路由选择算法的原则:

   ·正确性

   ·简单性,最优但复杂的算法,时间上延迟很大,没必要为了获取路由信息增加很多的通信量

   ·健壮性,算法应能够适应通信量和网络拓扑的变化,不向很拥挤的链路发数据,不向断了的链路发送数据

   ·稳定性:产生的路由不应该摇摆

   ·公平性:对每一个站点都公平

   ·最优性:实际上,获取最优的结果代价较高,可以是次优的

路由算法分类

全局或者局部路由信息?

全局:(我是上帝视角,我能看到这个网络的拓扑边的代价我是谁然后我来算路径,这叫全局路由选择算法)

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

·”link state"算法

分布式:(我只知道开了门,3个网卡连了我即只知道这4个邻居,然后邻居通过网卡把它们知道的告诉我关于其他子网可达的信息,那个邻居说我知道到北京的路径代价是10块钱,另一个邻居说我也知道到邻居的路径代价是8块钱,然后我知道这另一个邻居到北京代价最小,因此我把另一个邻居当作去北京的下一跳,所以每个节点都是分布式的去获得信息,然后通过叠代的方式,最后找到到最终目标的最终路径)

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

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

·“distance vector"算法

静态或者动态的?

静态:

·路由随时间变化缓慢

动态:

·路由变化很快

    ·周期性更新

    ·根据链路代价的变化而变化

路由算法

LS路由的工作过程

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

   ·各点通过各种渠道获得整个网络拓扑(即怎么把你变成上帝怎么才能有上帝视角呢),网络中所有链路代价等信息(这部分和算法没关系,属于协议和实现)

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

   ·按照此路由表转发分组(datagram方式)(这就是数据平面的了,这里就不多说了)

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

       ·分发到输入端口的网络层

获得网络拓扑和链路代价信息--->使用最短路由算法得到路由表--->使用此路由表

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

·LS路由的基本工作过程:

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

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

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

4)将分组通过扩散的分发发送到所有其他路由器

以上4步让每个路由器获得拓扑和边代价

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

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

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

分布式路由信息指的是什么?每个节点我通过边连有哪些邻居的局部信息,我们把这个信息封装成链路状态分组,所谓的链路状态分组就是任何一个节点它自己的链路状态分组是它到周边有哪些邻居以及到这些邻居的代价。即我可以知道我周边有哪些邻居也知道到这些邻居需要什么样的代价。然后这个链路状态分组在全网泛洪,即所有的分组都可以拿到我的链路状态分组,一个节点是这样,所有节点都是这样,那这样的话,反过来说,我就可以知道所有节点的链路状态分组,我就可以完成拼图从而拥有一个上帝视角,这样就可以算出我到其他节点的路径嘛。

【计算机网络】【网络层:控制平面-5】_第3张图片【计算机网络】【网络层:控制平面-5】_第4张图片

【计算机网络】【网络层:控制平面-5】_第5张图片

 【计算机网络】【网络层:控制平面-5】_第6张图片

【计算机网络】【网络层:控制平面-5】_第7张图片

【计算机网络】【网络层:控制平面-5】_第8张图片

 可是泛洪的话,可能有广播风暴呀,怎么解决呢?它会有一个TTL的字段,每过一个减1嘛,减为0就不会再泛洪啦。

·符号标记:

C(i,j):从节点i到jiedianj链路代价(初始状态下非相邻节点之间的链路代价为无穷大)

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

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

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

【计算机网络】【网络层:控制平面-5】_第9张图片

 【计算机网络】【网络层:控制平面-5】_第10张图片

距离矢量路由选择(distance vector routing) DV算法

·距离向量(DV)算法是一种迭代的、异步的和分布式的算法,而LS算法是一种使用全局信息的算法。说它是分布式的,是因为每一个节点都要从一个或多个直接邻居接收某些信息,执行计算,然后将其计算结果分发给邻居。说它是迭代的,是因为此过程一直要持续到邻居之间无更多信息要交换为止(此算法是自我终止,即没有计算应该通知的信号,它就停止了)。说它是异步的,是因为它并要求所有节点相互之间步伐一致地操作。

·动态路由选择算法之一

   ·距离矢量路由选择

   ·链路状态路由选择

·距离矢量算法路由选择的基本思想

    ·各路由器维护一张路由表,表中维护:要发给谁即最终节点、下一跳是谁、这下一跳到最终节点代价是多少

    ·各路由器与相邻路由器交换路由表(待续)

    ·根据获得的路由信息,更新路由表(待续)

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

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

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

·路由信息的更新

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

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

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

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

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

【计算机网络】【网络层:控制平面-5】_第11张图片

 ·DV的无穷计算问题

    DV的特点:好消息传的快,坏消息传的慢

  ·好消息的传播以每一个交换周期前进一个路由器的速度进行

      ·好消息:某个路由器接入或有更短的路径

·坏消息的传播速度非常慢,无穷计算

【计算机网络】【网络层:控制平面-5】_第12张图片

【计算机网络】【网络层:控制平面-5】_第13张图片

 能缓解坏消息传的慢,但是不能杜绝

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

【计算机网络】【网络层:控制平面-5】_第14张图片

 【计算机网络】【网络层:控制平面-5】_第15张图片

 【计算机网络】【网络层:控制平面-5】_第16张图片

 这样我就可以计算出我通过这些邻居到这些目标节点的最优值

【计算机网络】【网络层:控制平面-5】_第17张图片

 每个节点将自己的距离矢量定期的或者因为某个事件的触发传给我的邻居,然后让邻居去算。另外一方面我还要从邻居那里通过矢量交换,对方还要把它的距离矢量给我,当然我要知道到邻居的代价是多少,然后更新我的路由表,更新的方法就采用DV算法去算,是通过分布式、迭代的去算要经过很多次算,而不像链路状态算法如果我们拿到整个网络拓扑,拿到了边的代价,这些信息有了就可以一次性的算处理。

【计算机网络】【网络层:控制平面-5】_第18张图片

两个算法的比较:

【计算机网络】【网络层:控制平面-5】_第19张图片

LS算法:先每个节点在全网广播,当全部节点广播完,就能得到网络拓扑图得到所有链路开销,然后就开始Dijkstare算法,从而算出各节点要到目标节点的开销和到目标节点的当前下一跳的转发。

DV算法:节点a为邻居提供了它自己到网络所有其它节点的最低开销。而LS算法,节点a经广播,只是告诉全网节点,a自己与a自己的邻居的开销。

你可能感兴趣的:(平面,网络)