网络层:控制平面总结


之前说到了网络数据平面的部分,但是网络层并不只有数据平面部分还有控制平面的部分。那么其实数据平面部分是什么意思呢?概括来说就是分组交换机网络设备的转发部分。而控制平面则包括了SDN控制器还有应用层上面的服务器来操作SDN控制器的信息来控制网络设备。而现在要讲解的是网络层的控制平面,控制平面中最重要的功能是路由选择,路由选择需要算法的支撑完成当前的功能。

1. 路由选择算法的介绍
首先要讲解的是路由选择算法的一个分类,有集中式路由算法(经典的代表是ls链路状态路由选择算法)和分散式的路由算法(dv距离向量路由选择算法),那么他们有什么不同呢?集中式的路由选择算法需要把所有的路由信息集中,也就是说每台路由器都需要具备全局的信息并计算出网络拓扑图最后计算出转发表。而分散式路由算法只需要邻居路由的信息,并通过这些信息计算出最低开销的路径。

除此之外路由算法还分了静态和动态的,静态其实就是人工配置,动态是能够计算拓扑图并且自动算出转发表。还有一种是负载敏感型的分类,这里不再仔细介绍。

接下来就进入详细的路由算法分析。

第一种链路状态路由算法简单总结这种算法其实就是依靠Dijkstra算法来算出最低的开销路径。并且可以通过链路状态广播来发送报文来让每个节点都可以掌握整个路由信息并且可以计算出网络拓扑图,利用算法来计算出路径并安装好转发表。(详细的过程可以参考自顶向下,这里主要是算法的步骤分析与网络拓扑图的结合计算。)

第二种算法是路径向量路由选择算法这种与上一种不同,它是一个依靠邻居路由信息来计算出最低开销的路由选择路径。它的步骤其实非常简单,首先是初始化,知道本节点与邻居节点的距离,第二步交换信息并且进行计算,这里的计算只是计算当前节点与其他节点的距离,第三步再次交换信息。其实总结来说就是交换邻居路由信息,并且做好计算再进行交换。但是路径向量选择算法很容易出现路由选择环路,这是什么意思呢?(先给个图)

可以看看这个图,现在我们可以知道y到x的最小开销路径是y->x,并且是1的开销。但是如果开销变大了呢?y->x变成了60会发生什么事情?首先就是y知道改变了所以会通知z它到x的距离发生了变化,但是同时它也知道z->x的最短开销距离是3。也就是说z其实还是原来的样子,并没有更新,而这个时候y->x的距离并不是直接变成60而是通过之前的信息得知z->x为3,那么y就很自然的把y->x的最短开销距离变成y->z>x。但是y并不知道之前的z->y->x才能够有这样的最小开销,也就是说z的信息没有更新,它是错误的新开销。而且z也会认为y->x的距离更新为3+1,所以z的距离也会更新为z->y->x,也就是y刚刚更新的好的3+1变成3+1+1。上面的操作其实就是,y以为这样最短y->z>x,而z以为z->y->x最短。最后的结果就是y->z->y->z->…直到大于50。其实就是z与y之间不断地循环直到这个数值大于50的时候z才会更新成功。这个就是路由选择环路。

那么怎么解决这个问题呢?如果只是3个以下(不包括三个)节点产生了这样的路由循环其实可以通过毒性逆转来解决。其实就是z向y撒谎到x的距离是正无穷,这样y就无法通过z来到达x。就会解除这个问题。但是3个以上的节点情况就会非常复杂难以解决。

2. 自治系统区域内的路由选择:OSPF
为什么需要这个OSPF链路状态协议呢?因为因特网上面的路由器非常多,想想如果我们采用的是链路状态路由选择协议会出现什么样的问题。我们每个路由器都需要知道所有的路由信息,那么广播所需要发送的报文是非常庞大的,这种负担非常大。而OSPF协议可以通过分多个AS自治系统,分别在这些系统设置路由选择算法进行路由选择的管理。OSPF与之前的不一样,它不仅仅是发生变化的时候会发送广播更新,并且会周期性广播增加了链路状态算法健壮性。并且OSPF协议的报文由IP直接承载,实现了报文的可靠性传输和链路状态广播等功能。

3. ISP之间的路由选择BGP
其实BGP就是自治区之间的路由选择协议。那么为什么AS内与AS间需要各自的协议呢?原因是他们所需要实现的功能侧重点不同。AS内更注重的是性能,也就是计算出表的速度,信息传输的速度等性能。而AS间就更注重策略和规模。规模其实就是随着AS的增多,所需要的数据结构与算法都需要优化。而策略其实就是类似于,哪些客户给了钱可以通过主干ISP,哪些没有付费是不能经过的,这些都需要通过策略进制定。那么为什么AS内不注重规模呢?原因就是可以分多几个AS啊。

那么BGP的作用其实就是管理AS之间的一个路由选择。这里先介绍一些术语,前缀:子网或者子网集合。属性:其实就是BGP中的一些描述,比如AS-PATH,NEXT-HOP等。路由:前缀+属性。

BGP可以通过AS间的邻居来获取前缀可达性信息(某个AS的边界路由器的前缀),并且可以通过路由选择算法来确定最好的前缀路由。那么首先是第一个问题,BGP是怎么来通告这些路由信息的(用于路由选择的算法计算的信息),BGP通过AS边界路由器之间的半永久TCP连接来发送BGP报文,这种连接也叫BGP连接。对于每个AS路由器不是网关路由器就是内部路由器。如果这个时候需要链路信息改变,那么这个路由器就会通过内部传输iBGP把报文送到网关路由器,并由网关路由器通过eBGP外部连接送到所有的AS通告路由信息。

BGP的路由选择算法
这里先介绍了一下属性,AS-PATH其实就是记录通告过的路由器的前缀,这个属性可以防止循环问题的发生。,NEXT-HOP在AS-PATH中的初始路由器的IP地址其实就是距离路径最近的接口。
①热土豆路由选择算法,为什么要叫热土豆呢?因为这种算法需要快速把报文送出,并且在本AS中开销最少,而不会管端到端的路径是不是最优的。它的步骤是通过AS间路由选择协议来学习所有的路由前缀可达性。然后就是选择这里AS内最小开销的路径,选择最小开销路径的网关,并且把这个前缀与对应的接口记录到转发表上面。总结来说就是选择AS内最小开销的路径,再来通过AS间路由选择下一个路径。

②BGP的路由选择算法规则。热土豆路由选择算法其实就是包含在这里。这里必须要介绍一个属性本地偏好,其实就是通过人工设置这个值,主要用于路由策略。回到规则。首先第一个规则就是根据本地偏好来进行选择,如果还有多余的路由那么就要通过就要通过最短的AS-PATH来选择,第三个规则是通过热土豆路由算法,最后还剩下路由的话就使用BGP路由器的标识来进行选择。

BGP还可以用于IP任播,IP任播其实就是有多个服务器拥有同一IP地址,可以通过路由选择选择指定的服务器。这种服务通常可以用在DNS和CDN中。但是现在不用于CDN中,因为这种路由转发可能会把相同的TCP连接中不同分组发送到不同的服务器进行处理,这样很明显是不行的。

最后谈谈路由策略。在我的理解路由策略其实就是客户与提供商的一个关系,并且需要根据这个关系来进行人工调整这个路由选择算法和一些路径的选择。比如没有付费的用户是不能通过某主干ISP,那么就需要一定的路由策略来避免这种流量的经过。

4. SDN控制平面
SDN的体系结构包括流的转发、数据平面与控制平面的分离,网络控制功能(SDN控制器),可编程网络(应用程序)。他们之间的关系是什么呢?可编程网络可以使用网络控制功能层的信息和提供的方法来控制网络设备。

而网络控制功能也分了三个层,第一层是通信层,其实就是SDN控制器与网络设备之间的通信接口,需要协议来实现这里报文传输。第二层是网络范围状态管理其实就是保存链路状态信息,主机信息和流表等。第三层就是类似于应用接口的层,SDN控制为应用提供方法与接口。能够让SDN控制器与应用层进行通信。

接下来就谈谈通信层上面的其中一个协议openFlow协议,它有多个重要报文,比如配置(配置参数信息的报文),读状态(读网络设备的状态),修改状态(修改网络设备的状态),发送分组(把网络设备中的分组指定端口发送)这些都是控制器发送到网络设备的,还有一些流删除(网络设备通知控制器删除流表项),端口状态,分组入等都是由网络设备通知SDN控制器的报文。

5. ICMP因特网控制报文协议
这个协议其实就是路由器与主机之间的交互沟通。它运行在IP之上。ICMP最重要的一个功能就是差错报告,如果HTTP会话找不到对应的主机,那么就会返回一条ICMP报文去通告主机。并且可以完成ping程序,ICMP回显请求与回显应答。还可以完成TraceRoute中的报文丢弃的告警和告诉Traceroute的主机何时停止发送的不可达ICMP报文。ICMP还有其他功能和作用,这里不再介绍。

6. 最后要介绍的是网络管理与SNMP协议
现在讲讲网络管理的体系结构。①网络管理服务器(计算与控制信息)②被管理设备③MIB被管理对象数据库④代理⑤协议(SNMP用于服务器与代理之间的通信的应用层协议)。

最后介绍的是SNMP协议
它是一个应用层的协议,并且是客户-服务器结构的一个协议。它的报文有getRequestPDU(获取网络设备信息请求),setRequest(设置网络设备信息请求),response PDU(返回数据)还有SNMPv2 PDU(陷阱报文,告知有异常)等。再联合我们上面学习到的知识,这个应用层服务器管理控制SDN控制器来控制网络设备信息来完成网络管理的功能,其实这些应用协议与整个SDN控制平面息息相关。

网络层:控制平面总结相关推荐

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

    小白笔记 网络层控制平面 目标:理解网络层控制平面的工作原理 ·传统路由选择算法 ·SDN 控制器 ·ICMP协议:Internet Control Message Protocol ·网络管理(略) ...

  2. 【网络层】流量控制VS拥塞控制、路由器功能、SDN控制平面

    文章目录 前言 网络层功能 流量控制VS拥塞控制 拥塞控制 路由器功能 转发---硬件解决------数据平面---------处理数据各种转发 路由选择---软件解决---控制平面----控制网络协 ...

  3. Day8:网络层——导论(数据平面、控制平面)、路由器组成

    偷博!Secretly fighting~ 哈哈 (有道翻译) 又是美好学习的一天!邂逅了一首安静美好的小诗--<门前> 我多么希望,有一个门口 早晨,阳光照在草上 我们站着 扶着自己的门 ...

  4. 计算机网络 | 网络层(控制平面)

    文章目录 网络层:控制平面 一.路由选择算法 1.路由 1.1 路由(route)的概念 1.2 网络的图抽象 1.3 最优化原则(optimality principle) 1.4 路由选择算法的原 ...

  5. 计算机网络(自顶向下学习笔记)---网络层之控制平面

    控制平面 一.概述 二.路由选择 1.路由选择算法的分类 2.路由选择算法 3.因特网自治系统内部路由选择 4.因特网自治系统间的路由选择 5.OSPF和BGP 三.ICMP:因特网控制报文协议 一. ...

  6. 五、网络层(控制平面)

    1.路由协议BGP使用的是距离矢量算法.距离矢量算法只与邻居节点交换路由信息,有无穷计算问题. 2.OSPF协议是链路状态路由协议,采用了Dijkstra算法. 3.BGP属于EGP路由协议,确保自主 ...

  7. 【计算机网络:自顶向下方法】Chapter5 网络层:控制平面

    本系列文章为笔者在学习b站中科大郑烇老师的计算机网络课程时(郑老师讲得很清晰!!),结合课程PPT与<计算机网络:自顶向下方法>(第七版)所作的学习笔记,部分图片源自课程PPT或书中,如有 ...

  8. sdn体系的三个平面_软件定义网络基础---SDN控制平面

    一:SDN控制平面 一个或多个SDN控制器组成,是网络的大脑.  对底层网络交换设备进行集中管理,状态监测.转发决策以及处理和调 度数据平面的流量:  通过北向接口向上层应用开放多个层次的可编程能 ...

  9. JAVA的sdn控制器,软件定义网络基础---SDN控制平面

    一:SDN控制平面 一个或多个SDN控制器组成,是网络的大脑.  对底层网络交换设备进行集中管理,状态监测.转发决策以及处理和调 度数据平面的流量:  通过北向接口向上层应用开放多个层次的可编程能 ...

最新文章

  1. 2018-2019-2 网络对抗技术 20165324 Exp4:恶意代码分析
  2. Linux C编程--进程介绍6--进程的各种标识
  3. 使用gitlab创建项目和添加成员,并提交本地代码至gitlab远程仓库
  4. Questasim10.6c下载与安装教程
  5. React-引领未来的用户界面开发框架-读书笔记(三)
  6. 在线教育、直播教育、课程直播、订单系统、老师介绍、收入提现、在线学习、业绩统计、课程统计、选老师、选课程、作业管理、课程管理、报名统计、在线教育管理系统、axure原型、rp源文件
  7. 详述怎么使用Linux救援模式
  8. openstack: No valid host was found. There are not enough hosts available
  9. 选择Eclipse 的列编辑模式
  10. 二分查找算法详解(折半查询)
  11. UNIX环境C语言进程控制
  12. 《Python自然语言处理-雅兰·萨纳卡(Jalaj Thanaki)》学习笔记:05 特征工程和NLP算法
  13. 虚拟现实VR Occulus手柄按键操作
  14. 计算机器设备重置成本时不应计入的费用是,自考《资产评估00158》章节试题:第3章...
  15. 【QT 基础教程 九】QVector类详解
  16. nbu还原oracle,NBU异机恢复ORACLE成功版本
  17. 关于vue+elementui设置div背景图片填充不生效问题
  18. 小米5android p,久违的刷机 小米MIX Android P DP5 上手体验
  19. Containers feature is disabled. Enable it using the PowerShell script (in an administrative PowerShe
  20. flex布局(flex容器,flex属性)

热门文章

  1. 苹果笔记本有uefi启动吗_如何更换Windows 10的启动logo
  2. python测试自动化封装_python接口自动化学习笔记(封装获取测试数据方法)
  3. python手机编程调试_在Linux下调试Python代码的各种方法
  4. matlab命令行窗口显示长度设置_设置命令行窗口输出显示格式 | MATLAB format| MathWork...
  5. Vistor(访问者模式)行为型
  6. KSP RSS bonk 希望各大大佬幫助一下
  7. 怎么抵抗DDOS攻击?
  8. SAP ABAP FOR ALL ENTRIES 的用法
  9. Matplotlib 绘图 (二)
  10. 机器学习、数据挖掘、统计建模的技术担当,20款免费预测分析软件