《SDN核心技术剖析和实战指南》3.1控制器核心技术读书笔记
在SDN的架构中,控制器可以说是SDN的核心,它负责对底层转发设备的控制以及向上层应用提供可编程性的北向接口。从实现上看,主要分三个层面来考虑,南向接口技术,北向接口技术以及东西向的可扩展性能力。下面逐一描述。
南向网络控制技术主要包括通过南向接口协议进行链路发现、拓扑管理、策略制定、表项下发等。链路发现和拓扑管理主要是控制器利用交换机上报的信息进行同一管理(上行),而策略制定和表项下发则是控制器向交换机发送控制信息从而实施同一控制(上行)。
SDN控制器主要使用LLDP(Link Layer Discovery Protocol,链路层发现协议)作为链路发现协议。该协议可将设备的能力、管理地址以及设备标识等一系列信息组织成一系列的TLV(Type/Length/Value),并将其封装为LLDPU报文(Link Layer Discovery Protocol Data Unit)发布给自己的直连邻居,邻居收到这些信息后会以MIB(Management Information Base)的形式保存,以供后续使用。而在SDN架构中,发送LLDP数据包的工作由控制器来完成。如下图所示,控制器首先会发送一个Packet_out消息向所有直连的交换机发送LLDP数据包,而交换机接收到LLDP数据包后,也会继续转发给它的邻居。普通的交换机可以直接处理并转发LLDP数据包,但对于OpenFlow交换机来说,一切操作都与流表相关,此时它会查询流表查找相关操作,匹配的流表项会通过一个Packet_in消息将数据包发送给控制器。而控制器接收到消息后,会对数据包进行分析并保存链路发现表中相关交换机的链接记录。
(参考:http://network.51cto.com/art/201312/424022.htm)
基于LLDP的链路发现只能对与控制器直连的OpenFlow交换机进行链路发现。对于存在非直连的OpenFlow交换机情况,直连的OpenFlow交换机在收到Packet_out后还会发送一个广播包,非直连的OpenFlow交换机收到广播包后也会发送Packet_in给控制器,从而达到链路发现的目的。
拓扑管理主要是指监控和管理网络上的动态变化,只需控制器定时发送Packet_out包做链路发现即可。
策略需要针对特定的网络传输需求进行制定,控制器制定策略后会将相应的转发策略生成对应的流表项下发给交换机。SDN的优势在于可以拥有全局的网络资源视图,更容易制定出更好的策略。
表项下发有主动和被动两种模式。主动的表项下发(静态)是指在传输数据前就下发了流表项,因此当数据包到达时,交换机就知道该如何转发了;被动的流表下发(动态)是指当交换机接收到第一个数据包时,因为不存在相关的流表项,会将数据包发送给控制器处理。当控制器确定了相应的处理方式后,就会将相关流表项下发到交换机,交换机在下一次就可以直接转发了。
个人认为,由于流是动态变化的,一般来说,大多数情况下都会采取被动表项下发的模式,但这样会增加控制器的负担。而对于一些具有基本特征的流转发,控制器可以事先下发流表项,采用合适的通配符来满足转发要求。两种模式的结合应用,效果会比单一模式好。
接下来说北向业务的支撑技术,这主要是指通过北向接口向上层业务提供灵活的网络资源抽象。与南向接口不同,北向接口并没有标准化的趋势,因为这是业务相关的,具体情况具体实现。从现在来看,REST API比较多人应用。
而东西向控制器扩展技术主要是指,在SDN架构中,控制能力集中到控制器,其性能问题将成为整个网络的瓶颈。而且,单一的控制器无法解决跨越地域问题的SDN部署。基于控制器集群的SDN架构可以解决这方面的问题。如下图所示,采用分布式控制器的方式,每个控制器控制一定数量的交换机。而主控制器将汇总所有控制器的信息形成整个网络的全局视图。几个关键技术要点是:主控制器选举、集群虚拟地址(控制器间的负载均衡)、全网拓扑获取和控制器失效应对。
(参考:http://network.51cto.com/art/201312/424040.htm)
另外,对于分布式的控制器模式,最经典的可能是Google的B4网络。这是一个基于Onix模式的OpenFlow的SDN架构。具体为就不说了。下面贴个架构图。
《SDN核心技术剖析和实战指南》3.1控制器核心技术读书笔记的更多相关文章
- 《SDN核心技术剖析和实战指南》2.3 OF-CONFIG配置管理协议小结
OpenFlow协议定义了交换机和控制器交换数据的方式和规范,但并没有定义如何配置和管理必需的网络参数和网络资源,OF-CONFIG的提出就是为了对OpenFlow提供配置管理支持.如下图所示,OF- ...
- 《SDN核心技术剖析和实战指南》第一章小结
第一章主要是概况.新技术有一个特点是,每家都有不同的说法.这里我只说说我比较认同的部分. SDN的核心概念大概有两个:转发面与控制面分离.开发可编程化.书里还说逻辑上集中控制,其实这个就可以从转发与控 ...
- Java多线程编程实战指南(核心篇)读书笔记(五)
(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/76730459冷血之心的博客) 博主准备恶补一番Java高并发编程相 ...
- Java多线程编程实战指南(核心篇)读书笔记(四)
(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/76690961冷血之心的博客) 博主准备恶补一番Java高并发编程相 ...
- Java多线程编程实战指南(核心篇)读书笔记(三)
(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/76686044冷血之心的博客) 博主准备恶补一番Java高并发编程相 ...
- Java多线程编程实战指南(核心篇)读书笔记(二)
(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/76651408冷血之心的博客) 博主准备恶补一番Java高并发编程相 ...
- Java多线程编程实战指南(核心篇)读书笔记(一)
(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/76422930冷血之心的博客) 博主准备恶补一番Java高并发编程相 ...
- SDN核心技术剖析和实战指南---读书笔记
第一章 SDN定义如下: SDN是一种新兴的基于软件的网络架构及技术,其最大的特点在于具有松耦合的控制平面与数据平面.支持集中化的网络状态控制.实现底层网络设施对上层应用的透明. SDN和NFV: O ...
- 《SDN核心技术剖析和实战指南》3.3读书笔记
这一节主要是介绍几种开源的SDN控制器. NOX/POX.最初的NOX混合了C++和Python两种编程语言,现在演变为两个版本.NOX版本主要面向Linux平台,利用C++开发,目标是提供快速的控制 ...
随机推荐
- Android(java)学习笔记217:开发一个多界面的应用程序之清单文件
清单文件的重要参数: <intent-filter> 代表的应用程序的入口界面 <action android:name=&quo ...
- 【CSS中width、height的默认值】
对于初学者来说,CSS中的width.height的默认值是很神奇的,因为经常看到如下这样的代码:明明只给一个#father标签(红色的div)设置了一个width,为啥它在浏览器中显示出来是有一个固 ...
- Redis的AOF功能
引言: Redis是基于内存的数据库,同时也提供了若干持久化的方案,允许用户把内存中的数据,写入本地文件系统,以备下次重启或者当机之后继续使用.本文将描述如何基于Redis来设置AOF功能 什么是R ...
- HDU5303
题意:给定一个环形道路长度为L,以及环形道路下标为0处为起始点,在环形道路上距离起始点Xi位置种植一颗苹果树,该树有a个苹果,篮子的最大容量为K,那么求摘完全部苹果所需的最短距离. 思路:之前没想出来 ...
- cancel-ng-swipe-right-on-child
<!DOCTYPE html> <html lang="en" ng-app="myapp"> <head> <met ...
- Dhroid框架配置
1.将dhroid文件夹作为一个Module导入,dhroid下载地址 2.在build.gradle中的dependencies节点中添加compile project(':dhroid') dep ...
- Linq101-Element
using System; using System.Collections.Generic; using System.Linq; namespace Linq101 { class Element ...
- eval("("+json对象+")")
var obj=eval("("+data+")"); 看看下面这条,应该能想到json的数据结构“+(json对象名)+”由于json是以”{}”的方式来开始 ...
- 10个重要的Linux ps命令实战
Linux作为Unix的衍生操作系统,Linux内建有查看当前进程的工具ps.这个工具能在命令行中使用. PS 命令是什么 查看它的man手册可以看到,ps命令能够给出当前系统中进程的快照.它能捕获系 ...
- Python学习笔记四--字典与集合
字典是Python中唯一的映射类型.所谓映射即指该数据类型包含哈希值(key)和与之对应的值(value)的序列.字典是可变类型.字典中的数据是无序排列的. 4.1.1字典的创建及赋值 dict1={ ...