《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++开发,目标是提供快速的控制 ...
随机推荐
- shell脚本中echo显示内容带颜色
转自:http://www.cnblogs.com/lr-ting/archive/2013/02/28/2936792.html shell脚本中echo显示内容带颜色显示,echo显示带颜色,需要 ...
- codevs 1282 约瑟夫问题(线段树)
#include<iostream> #include<cstdio> #include<cstring> #define maxn 30010 using nam ...
- codevs愚蠢的矿工(树形DP)
/* 树形DP 根节点一定有人 然后 剩下的人没到每个孩子去 因为孩子数可能很多 不好枚举 所以转二叉树 分两部分 O(sum)就可以了 当然 转二叉树候必须顾及原来树的一些性质 如不能只选左孩子 转 ...
- 在imge控件中直接显示图片(图片是byte[]格式)
在工作过程中遇到了这个问题,在网上查了一些资料,结合自己的解决方法及解决过程总结了下,方面以后查阅.如果能帮到同样遇到这个问题的你,将非常高兴哦~_~ 由于asp.net中的Image控件是在Syst ...
- ZOJ3527
题意:给你一个有向图,一共N个顶点,且每个顶点只有一个前驱或后继,在顶点上建立圣地,那么就可以获得一个信仰值,如果在这个顶点的后继节点上也建立圣地,那么将改变一定的信仰值,求解能获取的最大信仰值. 思 ...
- 织梦DeDeCms列表分页和内容页分页错位解决办法
文章页分页代码在这里/include/arc.archives.class.php列表页分页/include/arc.listview.class.php 很多入门的站长会碰到这样的问题,织梦的通病, ...
- 第二部分面向对像基础第五章Strng类中方法的使用
package com.java.oop.day2; import java.util.Calendar; import java.util.Formatter; import java.util.L ...
- WMI概述
关于wmi的定义可以在网上和msdn中查询,我在这里想说说自己对wmi的理解.Wmi是Windows Management Instrumentation(windows管理方法)的缩写.在wmi中微 ...
- iOS开发常用的第三方框架
1. AFNetworking 在众多iOS开源项目中,AFNetworking可以称得上是最受开发者欢迎的库项目.AFNetworking是一个轻量级的iOS.Mac OS X网络通信类库,现在是G ...
- JavaScript--对象-检查一个对象是否是数组
<!doctype html> <html> <head> <meta charset="UTF-8"> <title> ...