第5章:网络层:控制平面(四)
声明:以下所有内容均来自陈老师的课件,此博客只是为了方便日后复习
提纲
- 概述
- 路由选择算法
- 链路状态
- 距离向量
- Internet中自治系统内部的路由选择:OSPF
- ISP之间的路由选择:BGP
- SDN控制平面
- 因特网控制报文协议
- 网络管理和SNMP
软件定义网络(SDN)
- Internet网络层:历史上都是通过分布式、每路由器控制方法来实现的
- 单个路由器包含交换设备硬件,并且在专用的路由器操作系统(如Cisco IOS)上运行Internet标准协议(IP、RIP、IS-IS、OSPF、BGP)的私有实现;它们是一个整体
- 需要不同的中间盒来实现不同的网络层功能:防火墙、负载均衡、NAT……
- ~2005:点燃了重新思考网络控制平面的兴趣
每路由器控制平面
在每一台路由器中的单独路由选择组件,在控制平面进行交互

软件定义网络(SDN)控制平面
远程控制器(使用软件实现的)计算、分发转发表(流表,“匹配加动作”抽象)以供每台路由器使用

-
为什么需要一个逻辑上集中的控制平面
- 网络管理更加容易:避免路由器的错误配置,对于通信流的弹性更好
- 基于流表的转发(回顾一下OpenFlow API),允许“可编程”的路由表
- 集中式“编程”更容易:集中计算流表然后分发
- 传统的分布式“编程”比较困难:在每个单独的路由器上分别运行分布式算法,得到转发表(部署和升级代价低)
- 而且要求各分布式算法计算出的转发表都得基本正确
- 控制平面的开放实现(非私有)
- 丰富、开放的生态系统,可促进创新
-
类比:大型机到个人计算机的演变
![image]()
-
流量工程:对于传统路由来说比较困难
![image]()
- Q:如果网格操作员想让u到z的流量沿着路径uvwz(而不是uxyz)流动,怎么办?
- A:需要重新定义链路权重(即链路开销),流量路由选择算法以此计算路由(或者:需要使用新的路由选择算法)!
- 只有链路权重充当了控制旋钮:没有太大控制力
![image]()
- 只有链路权重充当了控制旋钮:没有太大控制力
- Q:如果网格操作员想将u到z的流量分割成两路:uvwz和uxyz(负载均衡),怎么办?
- A:无法完成(或者,需要使用新的路由选择算法,但是在全网部署新的路由选择算法是个大事)
![image]()
- Q:如果需要w对蓝色的和红色的流量采用不同的路径路由到z,怎么办?
- A:传统路由采用的是基于目的地转发的思想和LS或DV路由选择算法,因此无法完成
- 我们在第四章中学习到,通用转发和SDN可用于实现所期望的任何形式的路由
-
软件定义网络(SDN)的关键特征
- 通用的基于流的转发(“匹配加动作”抽象,如OpenFlow)
- 控制平面与数据平面分离
- 控制平面的网络控制功能位于数据平面交换机外部
- 可编程的网络控制应用程序——在控制器之上以网络应用形式实现各种网络功能
![image]()
-
数据平面交换机:
- 快速、简单、商业化的交换设备,在硬件中实现通用转发功能
- 流表被控制器计算和安装
- 基于南向API(如OpenFlow),SDN控制器访问基于流的交换机
- 定义了哪些可以被控制,哪些不可以被控制
- 也定义了交换机和控制器通信的协议(如OpenFlow)
![image]()
-
网络控制应用程序
- 控制的“大脑”:采用下层提供的服务(即SDN控制器提供的API),实现网络控制功能
- 路由选择
- 接入控制
- 负载均衡
- ......
- 非绑定:可以由第三方(与交换机厂商或控制器厂商不同)提供
- 交换机、控制器和网络控制应用程序都可以由不同的厂商和组织结构所提供
![image]()
- 交换机、控制器和网络控制应用程序都可以由不同的厂商和组织结构所提供
- 控制的“大脑”:采用下层提供的服务(即SDN控制器提供的API),实现网络控制功能
-
SDN控制器(网络OS)
- 维护网络状态信息
- 通过北向API与网络控制应用程序进行交互
- 通过南向API与交换机、主机等受控网络设备进行交互
- 逻辑上集中,但是在实践中通常处于性能、可扩展性、容错性以及鲁棒性的考虑而采用分布式服务器集合实现
![image]()
-
SDN控制器的组件
- 对于网络控制应用程序的接口:抽象API
- 网络范围状态管理层:网络链路、交换设备、服务等的状态;构成了一个分布式数据库
- 通信层:SDN控制器与受控网络设备之间的通信
![image]()
OpenFlow协议
- 运行在控制器和交换机之间
- 采用TCP来交换报文,使用6653的默认端口号
- 加密可选
- 三种OpenFlow报文类型
- controller-to-switch报文(控制器到交换机)
- asynchronous报文(异步)(switch-to-controller,交换机到控制器)
- symmetric报文(对称)(可由控制器或交换机任意一方发送,无需对面的许可或请求)
- 不同于OpenFlow API
- API是用于指定通用转发规则的
![image]()
- API是用于指定通用转发规则的
OpenFlow:controller-to-switch报文
一些关键的从控制器发往交换机的报文:
- 特性:控制器查询交换机的特性信息
- 配置:控制器查询/设置交换机的配置参数
- 修改状态:增加/删除/修改OpenFlow流表中的表项和端口状态等
- 读状态:收集交换机的各种数据(包括配置信息、统计信息和功能特性)
- 发送分组:控制器可以向交换机的指定端口发送分组
OpenFlow:switch-to-controller报文
一些关键的从交换机发往控制器的报文
- 流删除:向控制器通知在交换机上已删除一个流表项
- 端口状态:向控制器通知交换机端口状态的变化
- 分组入:将分组(和它的控制信息)发送给控制器
- 错误:向控制器通知交换机发生了错误
幸运的是,网格操作员不需要直接通过创建/发送OpenFlow报文来“编程”交换机,而是采用在控制器之上的上层抽象(即网络控制应用程序)来自动运算和配置
SDN:数据、控制平面交互的例子
- 交换机s1经历了链路故障,使用OpenFlow“端口状态”报文通告SDN控制器
- SDN控制器接受OpenFlow报文,更新链路状态信息
- Dijkstra链路状态路由选择应用程序被调用(该应用程序先前已进行了注册,可以收到链路状态更新的通告)
- 链路状态路由选择应用程序访问控制器中的网络图信息和链路状态信息,计算新的路由
- 链路状态路由选择应用程序与SDN控制器中的流表计算组件进行交互,该组件计算出新的流表
- 控制器采用OpenFlow在交换机上安装新的需要更新的流表
![image]()
OpenDaylight(ODL)控制器
- 网络控制应用程序可以在SDN控制器内部或者外部
- 服务抽象层:与内部以及外部的应用程序和服务进行交互
![image]()
ONOS控制器
- 网络控制应用程序与控制器分离
- 意图框架:服务的高级规范(描述什么而不是如何)
- 相当多的重点聚焦在分布式核上,以提高服务的可靠性、冗余性和可拓展性
![image]()
SDN面临的部分挑战
- 强化控制平面:可信的、可靠的、性能可扩展的、安全的分布式系统
- 对于故障的鲁棒性:借助可用于控制平面的可靠分布式系统的强大理论
- 可信任、安全性:从一开始就开始铸造
- 网络、协议满足特定任务的要求
- 比如:实时性、超高可靠性、超高安全性
- Internet范围内的可扩展性:不仅仅在一个AS的内部部署,要在全网部署
- SDN在5G蜂窝网络中至关重要
SDN与传统网络协议的未来
- SDN计算出的流表 vs. 传统路由计算出的转发表
- “逻辑集中式计算 vs. 协议计算”的一个例子
- 可以设想一种由SDN计算的拥塞控制
- 控制器根据由路由器报告给控制器的拥塞程度来设置发送速率
因特网控制报文协议
因特网控制报文协议(ICMP)
- 被主机和路由器用来彼此沟通网络层的信息
- 差错(或异常)报告
- 网络探寻
- ICMP处在网络层,通常被认为是IP的一部分;但是位于IP之上(从体系结构上来说):
- ICMP报文被IP数据报承载
- ICMP的报文格式:类型字段、编码字段、检验和字段、额外字段、有效载荷
![image]()
- 两类ICMP报文:
- 差错报告报文(5种)
- 目的不可达
- 源抑制
- 超时/超期
- 参数问题
- 重定向
- 网络探寻报文(2组)
- 回显(echo)请求与回答报文(被ping使用)
- 时间戳请求与回答报文
![image]()
- 差错报告报文(5种)
- 几种不发送ICMP差错报告报文的特殊情况:
- 对ICMP差错报告报文不再发送差错报告报文
- 除第1个IP数据报分片外,对所有后续分片均不发送ICMP差错报告报文
- 对所有多播IP数据报均不发送ICMP差错报告报文
- 对具有特殊地址(如127.0.0.0或0.0.0.0)的IP数据报不发送ICMP差错报告报文
- 已不再使用的几种ICMP报文
- 信息请求与回答报文
- 子关掩码请求与回答报文
- 路由器询问和通告报文
- ICMP差错报告报文的数据封装
![image]()
- ICMP的一个应用:路由跟踪程序traceroute(windows系统下是tracert)
- 源主机发送一系列IP数据报给目的主机
- 每个都承载了一个具有不可达UDP端口号(大于30000)的UDP报文段
- 第1组(每组3个数据报):TTL=1
- 第2组:TTL=2
- 第3组、第4组......
- 当第n组的数据报到达第n台路由器:
- 路由器丢弃该数据报,并发送一个ICMP报文(类型11,编码0)给源主机
- 该数据报包括了路由器的名字 & IP地址
- 当ICMP报文到达源主机:记录RTT
- 停止的判据:
- UDP报文段最终到达目的主机
- 目的主机返回给源主机一个ICMP“端口不可达”报文(类型3,编码3)
- 当源主机收到这个报文时,停止
- 源主机发送一系列IP数据报给目的主机
网络管理和SNMP*
什么是网络管理
- 自治系统:1000多个相互的硬件、软件组件
- 其他复杂系统也需要被监视、配置和控制:
- 喷气飞机、核电站等
![image]()
- 喷气飞机、核电站等
网络管理的五大功能
- 性能管理:
- 性能(利用率、吞吐量)的量化、测量、报告、分析和控制不同网络部件的功能
- 涉及到的部件:单独部件(网卡、协议实体),端到端的路径
- 故障管理:记录、检测和响应故障
- 性能管理为长期监测设备性能
- 故障管理:突然发生的强度大的性能降低,强调对故障的响应
- 配置管理:跟踪设备的配置,管理设备配置信息
- 账户管理:定义、记录和控制用户和设备访问网络资源
- 限额使用、给予使用的收费,以及分配资源访问权限
- 安全管理:定义安全策略,控制对网络资源的使用
网络管理的组件

网络操作员管理网络的方法

简单网络管理协议(SNMP)

SNMP协议:报文类型

SNMP协议:报文格式

SNMP:管理信息库(MIB)

第五章总结
我们学习了:
- 网络控制平面的方法
- 每路由控制(传统)
- 逻辑集中式控制(软件定义网络)
- 传统的路由选择算法
- Internet中的实现OSPF,BGP
- SDN控制器
- 在实践中的实现:ODL,ONOS
- 因特网控制报文协议
- 网络管理
下一章:链路层


















浙公网安备 33010602011771号