记得不多,好多都略.
网络层-控制平面
路由选择算法(LS,DV,RIP,OSPF,BGP)
SDN控制平面简介
ICMP简介
第5章:网络层控制平面
- 本章目标:理解网络层控制平面的工作原理
- 传统路由选择算法
- SDN 控制器
- ICMP:Internet Control Message Protocol
- 网络管理(略)
- 以及它们在互联网上的实例和实现:
- OSPF, BGP, OpenFlow, ODL 和ONOS控制器, ICMP, SNMP
导论
- 网络层功能
- 数据平面
- 转发: 将分组从路由器的一个输入端口移到合适的输出端口
- 控制平面
- 路由:确定分组从源到目标的路径
- 数据平面
- 2种构建网络控制平面功能的方法:
- 每个路由器控制功能实现(传统)
- 在每一个路由器中的单独路由器算法元件,在控制平面进行交互
- 逻辑上集中的控制功能实现(software defined networking)
- 一个不同的(通常是远程的)控制器与本地控制代理(CAs)交互
- 每个路由器控制功能实现(传统)
routing algorithm 路由选择算法
- 路由选择算法(routing algorithm):网络层软件的一部分,完成路由功能
路由 route
概念
路由概念
- 按照某种指标(传输延迟,所经过的站点数目等)找到一条从源节点到目标节点的较好路径
- 较好路径: 按照某种指标较小的路径
- 指标:站数, 延迟,费用,队列长度等, 或者是一些单纯指标的加权平均
- 采用什么样的指标,表示网络使用者希望网络在什么方面表现突出,什么指标网络使用者比较重视
- 按照某种指标(传输延迟,所经过的站点数目等)找到一条从源节点到目标节点的较好路径
以网络为单位进行路由(路由信息通告+路由计算)
- 也即路由信息以子网为单位进行计算
- 前提条件是:一个网络所有节点地址前缀相同,且物理上聚集
- 路由就是:找到一个子网到另一个子网最好的路径,也就是找到一个路由器到另一个路由器最好的路径,也就是找到了一个子网中的所有主机到另一个子网的所有主机的路径
网络到网络的路由= 路由器-路由器之间路由
- 网络对应的路由器到其他网络对应的路由器的路由
- 在一个网络中:路由器-主机之间的通信,由链路层负责解决
- 到了这个路由器就是到了这个网络
- 这里的网络应当就是一个子网。(子网里面没有其他路由器了,子网只有一个路由器和若干主机)
图
网络图
路由的输入:拓扑、边的代价、源节点
输出的输出:源节点的汇集树
sink tree 汇集树
- 此节点到所有其它节点的最优路径形成的树
- 路由选择算法就是为所有路由器找到并使用汇集树
路由原则
- 正确性(correctness):算法必须是正确的和完整的,使分组一站一站接力,正确发向目标站;完整:目标所有的站地址,在路由表中都能找到相应的表项;没有处理不了的目标站地址;
- 简单性(simplicity):算法在计算机上应简单:最优但复杂的算法,时间上延迟很大,不实用,不应为了获取路由信息增加很多的通信量;
- 健壮性(robustness):算法应能适应通信量和网络拓扑的变化:通信量变化,网络拓扑的变化算法能很快适应;不向很拥挤的链路发数据,不向断了的链路发送数据
- 稳定性(stability):产生的路由不应该摇摆
- 公平性(fairness):对每一个站点都公平
- 最优性(optimality):某一个指标的最优,时间上,费用上,等指标,或综合指标;实际上,获取最优的结果代价较高,可以是次优的
routing algorithm
- 按照集中式和分布式来区分
- centralized outing algorithm 集中式路由选择算法
- 该算法以所有结点的连通性以及所有链路开销作为输入
- 这种具有全局状态信息的算法被称为 链路状态 (Link State , LS)算法
- decentralized rouing algorithm 分散式路由选择算法
- 每个节点仅有预期直接相连链路的开销 即可开启工作
- 迭代地与邻居交换路由信息、计算路由信息
- 没有节点拥有关于所有网络链路开销的完整信息
- 例子 : 距离向量算法(Distance-Vector , DS)
- centralized outing algorithm 集中式路由选择算法
- 按照静态或者动态的区分
- 静态: 路由随时间变化缓慢
- 非自适应算法(non-adaptive algorithm):不能适应网络拓扑和通信量的变化,路由表是事先计算好的
- 动态: 路由变化很快
- 周期性更新
- 根据链路代价的变化而变化
- 自适应路由选择(adaptive algorithm):能适应网络拓扑和通信量的变化
- 静态: 路由随时间变化缓慢
LS
略
Dijkstra算法 – 链路状态算法
链路状态分组 :任何一个节点 其链路状态分组为 她到周边有哪些邻居,以及到这些邻居的代价。也就是邻接矩阵的出向边?
然后将链路状态分组泛红 我将我的链路状态告诉我的邻居 邻居们将我的链路状态告诉邻居的邻居
DV
略
对比
因特网中自治系统内部(AS)的路由选择
RIP , Routing Information Protoco
略
OSPF
略
ISP之间的路由选择 : BGP
略
SDN控制平面
SDN控制平面的工作室 计算、管理和安装所有网络交换机中的流表项
互联网络网络层:
- 传统方式:历史上都是通过分布式、每个路由器的实现
- 单个路由器包含了:交换设备硬件、私有路由器OS(如:思科IOS)和其上运行的互联网标准协议(IP, RIP, IS-IS, OSPF, BGP)的私有实现
- 需要不同的中间盒来实现不同网络层功能:防火墙,负载均衡设备和NAT…
- SDN : 一种集中式
- 传统方式:历史上都是通过分布式、每个路由器的实现
为什么需要一个逻辑上集中的控制平面?
- 网络管理更加容易
- 避免路由器的错误配置,对于通信流的弹性更好
- 基于流表的转发(回顾一下OpenFlow API),允许“可编程”的路由器
- 集中式“编程”更加容易:集中计算流表然后分发
- 传统方式分布式“编程”困难:在每个单独的路由器上分别运行分布式的算法,得到转发表(部署和升级代价低)
- 而且要求各分布式计算出的转发表都得基本正确
- 控制平面的开放实现(非私有)
- 新的竞争生态
- 网络管理更加容易
SDN特点
自顶向下P265
- 基于流的转发
- SDN控制的交换机的分组转发工作,能供基于运输层、网络层和链路层的任意数量首部字段进行.(路由器传统转发仅仅依据网络层的目的IP地址进行)
- 数据平面和控制平面分离
- 数据平面由分组交换机组成,根据流表执行匹配加动作的规则
- 控制平面由SDN控制器和SDN网络控制应用程序
- 网络控制功能:位于数据平面交换机外部
- 可编程的网络
SDN架构
P266
数据平面的分组交换机
- 快速,简单,商业化交换设备,采用硬件实现通用转发功能
- 分组交换机的流表被控制器计算和安装
- SDN控制器通过南向API(例如OpenFlow)访问基于流的交换机
SDN控制器
- 维护网络状态信息
- 通过上面的北向API和网络控制应用交互
- 通过下面的南向API和网络交换机交互
- 逻辑上集中,但是在实现上通常由于性能、可扩展性、容错性以及鲁棒性采用分布式方法实现
- SDN控制器组成
SDN网络控制应用程序
- 控制的大脑: 采用下层提供的服务(SDN控制器提供的API),实现如下网络功能
- 路由器 交换机
- 接入控制 防火墙
- 负载均衡
- 其他功能
- 非绑定:SDN网络控制应用程序可以被第三方提供,与控制器厂商以通常上不同,与数据平面分组交换机厂商也可以不同
OpenFlow
P268
- OpenFlow协议
- 是控制器和SDN交换机交互的协议
- 运行在SDN控制器和SDN控制的交换机或其他实现OpenFlowAPI的设备上
- 基于TCP
- 控制器到交换机的重要报文如下
- 特性:控制器查询交换机特性,交换机应答
- 配置:交换机查询/设置交换机的配置参数
- 修改状态:增加删除修改OpenFlow表中的流表
- 发送分组 packet-out:控制器可以将分组通过特定的端口发出
- 一些关键的交换机到控制器的报文
- 分组进入: 将分组(和它的控制)传给控制器,见来自控制器的packet-out报文
- 流移除: 在交换机上删除流表项
- 端口状态: 通告控制器端口的变化
SDN控制平面-数据平面交互例子
P269
- 交换机s1,经历了与s2的链路失效,采用OpenFlow”端口状态报文”通告控制器链路状态的更新
- SDN 控制器接收OpenFlow报文,更新链路状态信息
- Dijkstra路由算法应用被调用(前面注册过这个状态变化消息)
- Dijkstra路由算法访问控制器中的网络拓扑信息,链路状态信息计算新路由
- 链路状态路由app和SDN控制器中流表计算元件交互,计算出新的所需流表
- 控制器采用OpenFlow在交换机上安装新的需要更新的流表
- 控制器采用OpenFlow在交换机上安装新的需要更新的流表
ICMP : Internet Control Message Protocol
- ICMP协议 , 用于主机、路由器、网关用于传达网络层控制信息
- 最典型用途 :
- 错误报告 :
- 如运行http会话时,可能会遇到”目的网络不可达”之类的错误报文.
- 这种报文源于ICMP.
- 在某个位置,IP路由器不能找到一条通往和http请求种所指定的主机的路径,该路由器就会像你的主机生成并发送一个ICMP报文以指示该错误.
- 最典型用途 :
- ICMP处在网络层,但是在IP协议的上面
- ICMP消息由IP数据报承载
- ICMP 报文: 类型 + 编码 + (第一个导致该ICMP报文生成的)IP数据报的头8Byte
TraceRoute
Traceroute : 通过udp(源主机) 和 ICMP(路由器) 实现
- 源主机发送udp segment,接收 icmp 报文段.
源主机运行Traceroute , 发送一系列具有不可达UDP端口号的UDP报文段给目标主机 , 并为每个数据报开启定时器.
- 第一个:TTL =1 , 第二个: TTL=2, etc.
- 当nth数据报到达nth路由器
- 路由器观察到该数据过期,根据IP协议,路由器抛弃数据报 ,然后发送一个给源的ICMP报文 (type 11, code 0) . 报文包括了路由器的名字和IP地址 .
- 当ICMP报文返回给源主机,源主机通过定时器计算RTT(往返时延),并从icmp报文种获得第n台路由器的名字和ip
源主机何时停止发送udp报文段
- 最终有一个数据报沿着这条路到达目的主机
- 因为该数据报包含了一个具有不可达端口号 UDP 报文段,该目的主机会向源发送一个端口不可达的 ICMP 报文(type 3 code 3)
- 当源主机收到这个特别的 ICMP 报文时,就不再发送另外的探测分组
网络管理和SNMP
略