SDN(Software Defined Network):软件定义网络

传统的网络转发行为:
1)逐设备单独控制,纯分布式控制。
2)控制面和转发面在同一个设备中,耦合紧密。
管理员无法直接操控转发行为:管理员配置网络协议,网络协议通过自身的运行再去影响转发行为,管理员无法改变协议本身的行为。
网络协议对转发行为的影响是有固定模式的,例如:路由协议只能靠目的IP地址来进行转发。
3)不开放接口 SDN:
1)集中式控制
说明:集中式控制的控制器只适合于中小型网络,对于大型网络,一般采用分布式控制,即多个控制器协同工作,因为这样可以提高网络的可扩展性。
2)转发和控制分离
管理员可以直接操控设备的转发行为:不通过网络协议,而是直接通过软件来控制转发行为,故不受网络协议的影响。
3)开放接口

SDN的体系结构(从下往上):

网络设备:通过南向接口接收控制器发过来的指令,配置位于交换机内的转发表项,并可以通过南向接口主动上报一些事件给控制器。
说明:
1)SDN中的网络设备可以抽象为一个转发面(Forwarding Plane)或数据层(data plane),这个转发面可以是硬件交换机、虚拟交换机或路由器等物理设备。
2)所有的转发表项,都存储在网络设备里面,用户数据报文在这里面被处理、转发。 南向接口(southbound interface):指控制面跟数据转发面之间的接口。
说明:
1)传统网络中的南向接口并没有什么标准,各大设备商的南向接口都是存在于自己的私有代码中,而SDN则期望南向接口是标准化的,只有这样才能让软件摆脱对硬件的依赖,从而达到应用为王的效果。
2)OpenFlow是目前影响力最大的南向接口。 控制器:向上提供软件的编程接口,向下控制着硬件设备,是SDN中的核心元素。 北向接口(northbound interface):控制器和软件之间的接口,例如(支持Java的)REST API等。
说明:传统网络中的北向接口指交换机和网管软件之间的接口,例如SNMP等标准协议。 应用服务:即软件应用程序,对网络进行控制和管理。
说明:
1)替代了传统的网管软件。
2)应用服务可以和控制器位于同一台服务器上,当然了,也可以运行在其它服务器上通过通信协议与控制器通信。

OpenFlow:

概念:OpenFlow是一个标准化的南向接口,用于控制器和网络设备之间的通信。控制器通过OpenFlow来控制网络设备,网络设备则通过OpenFlow把信息反馈到控制器中。

说明:
1)OpenFlow协议涉及两个网络元素:控制器和交换机(网络设备)。
2)OpenFlow规定了网络设备对报文的转发和编辑方式。 名词解释:
流(Flow):指在一段时间内,经过同一个网络的一系列具有相同属性且顺序发送的报文集合。在OpenFlow中,所有的数据都以流的形式进行处理。 流表(Flow Table):流表就是交换机中交换芯片上的转发表,每张流表都由多个流表项组成,类似于路由器中的路由表。 流表项(Flow Entry):流表项是流表的最小单位,每条流表项对应了网络中传输的一条流。流表项是OpenFlow中最核心的元素。
说明:
1)每条流表项由6个部分组成:Match Field(匹配字段)、Priority(优先级)、Counter(计数器)、Instruction(指令)、Timeout(超时)、Cookie(附属属性)
2)流表的查找:对进来的报文,用该流表指定的字段去匹配查找,如果匹配到了一条流表项,那就执行这条流表项所规定的指令。
3)一张流表有nK,就是说这张流表有nK条流表项。 动作(Action):是对一个报文的最小原子操作,宏观上可以分为两大类:报文编辑和报文转发。 OpenFlow协议中控制器和交换机的工作流程:
控制器通过一套标准的消息接口,告诉交换机,当报文从哪些端口进来时,该去查找哪张流表,匹配到一条流表项(Flow Entry)之后,就要去执行这条流表项所规定的指令,然后要么直接转发出去或者丢弃,要么继续去查找下一个指定的流表(由匹配到的这条流表项来指定),然后重复这个过程,直到报文被转发出去或被丢弃。 OpenFlow交换机转发面内部(即交换芯片)在逻辑上由两部分组成:端口(Port)和流表(Flow Table)
注:交换机与控制器通信的通道(Chanel)可以认为是一个特殊的端口(即逻辑端口)。 OpenFlow中的交换机:
1)交换机系统的初始化:交换机系统初始化的时候,一般都会有默认流表。默认流表里面有一条默认流表项,通常这条默认流表项的行为是丢弃所有报文或将所有报文都送到控制器中。
2)控制器维护交换机中的流表:交换机系统初始化完之后,根据业务需求,控制器开始往交换机下发流表项,或者修改已经存在的流表项属性,或者删除不需要的流表项。
3)报文在交换机中的转发:报文进到交换机之后,根据交换机(基于端口)的配置去查找指定的流表,匹配到之后,就执行相应的指令,这些指令中的Action最终会导致该报文被编辑、被丢弃、被计数、被测速、被转发等。 OpenFlow的伴侣协议:OF-Config
1)OpenFlow只负责和业务相关的事情,而管理业务所依赖的资源等非业务事情则是由OF-Config来负责。
2)任务:指定交换机要跟哪些控制器连接(配置控制器的地址),配置交换机的IP地址、掩码、网关等,管理Flow所需要的物理端口以及逻辑端口(Tunnel)的创建和状态改变(up/down)等。 OpenFlow还需完善的地方:
1)控制器的集中式控制,会遇到可扩展性的问题,如果采用分布式控制,则不容易把握分布式的规模。
2)流表配置的速度比较慢,当遇到大型网络时,要配置大量设备的流,速度会跟不上,有严重的性能问题。
3)没有稳定的安全机制,安全性还不能得到充分的保证。

SDN(Software Defined Network):软件定义网络----转载的更多相关文章

  1. 软件定义网络(Software Defined Network,SDN)简介

    SDN的三大关键要素 第一关键要素是转发与控制分离,这使得网络交换机的数据转发变得更加简单.快速:同时,控制变成了网络操作系统中一个相对集中的逻辑功能. 第二个关键要素是OpenFlow协议,它向交换 ...

  2. SDN初体验(软件定义网络实验一)

    作业说明 本次实验步骤2.3是在机房环境下完成的,步骤1.4是在自己笔记本上重新配置完成的,所以环境.用户名什么的会略有差别. 1. 安装轻量级网络仿真工具Mininet 为了节约课程时间,实验室机房 ...

  3. SDN前瞻 该来的来了!SDN 软件定义网络

    SDDC:Software Defined Data Center 软件定义数据中心,全数据中心软件化. 在我们接触SDN概念之前,服务器虚拟化,软件虚拟化技术已经是非常成熟了.如果网络能够被虚拟化, ...

  4. 什么是SDN(软件定义网络)(转载)

    软件定义网络(Software Defined Network, SDN)在InfoWorld于2011年11月公布的将影响未来10年的十项新技术中排名第二.2012年7月,SDN代表厂商Nicira ...

  5. SDN:软件定义网络

    近期高级网络课的小组任务是在老师给定的范围内自选方向主题研究并做展示报告.我们组选了sdn.原以为这东西会是工业界无人问津的概念化产品,Google了一下却发现事实上sdn挺火的,因为它可能带来的可扩 ...

  6. DevOps之软件定义网络SDN

    唠叨话 关于德语噢屁事的知识点,仅提供专业性的精华汇总,具体知识点细节,参考教程网址,如需帮助,请留言. <软件定义网络SDN(Software Defined Network)> 关于软 ...

  7. openflow 和 sdn (软件定义网络) 原理和教程

    OpenFlow概述 OpenFlow简介 通俗的讲,OpenFlow是使用类似于API进程配置网络交换机的协议.OpenFlow的思路很简单,网络设备维护一个FlowTable并且只按照FlowTa ...

  8. 《SDN软件定义网络从入门到精通》导论课

    http://mp.weixin.qq.com/s?__biz=MjM5MTM3MzIzMg==&mid=209513316&idx=1&sn=e5dbd9a2ccccb88d ...

  9. 第1课 VMware的NSX全面落地软件定义网络SDN

    SDN的定义: 即软件定义网络(Software Defined Network)的缩写,它是一种基于网络架构的创新,一种在已存在物理传输网络之上的抽象形态,它是一种体系结构,它是众多网络虚拟化技术中 ...

随机推荐

  1. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 按钮:按钮标签

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  2. 深入了解memcached

    一.memcached如何支持高并发 Memcached使用多路复用 I/O模型(如epoll.select等).传统阻塞 I/O中,系统可能会因为某个用户连接还没做好 I/O准备而一直等待,直到这个 ...

  3. PHP7 源码整体框架

    一.PHP7语言执行原理 常用的高级语言有很多种,根据运行的方式不同,大体分为两种:编译型语言和解释型语言. 编译是指在应用源程序执行之前,就将程序源代码“翻译”成汇编语言,然后进一步根据软硬件环境编 ...

  4. day03-Python运维开发基础-(数据类型强转、运算符、逻辑短路、isinstance)

    1. 强制转换成容器数据类型 # ### 强制类型转换 容器类型数据 (str list tuple set ) var1 = "你好世界" var2 = ["陈博文&q ...

  5. node - 处理跨域 ( 两行代码解决 )

    1,安装 cors 模块 : npm install cors 2,代码 : var express = require('express') var app = express() var cors ...

  6. XV6源代码阅读-同步机制

    Exercise1 源代码阅读 锁部分:spinlock.h/spinlock.c以及相关其他文件代码 // Mutual exclusion lock. struct spinlock { uint ...

  7. 2013蓝桥杯预赛C/C++本科B组

    题目标题: 高斯日记 大数学家高斯有个好习惯:无论如何都要记日记. 他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210 后来人们知道,那个整数就是日期,它表示那一天是高斯 ...

  8. python记事本实现查询替换

    python 大作业 自己写了记事本  也参考网上的  查询会有点问题 替换没问题 # encoding=utf- from tkinter import * from tkinter.filedia ...

  9. 02 DML(DataManipulationLanguage)

    1.插入记录     基本语法 :         INSERT INTO tbl_name (col_name ,col_name1,..,col_nameN) VALUES (val1,val2, ...

  10. 从0开始自己配置一个vps虚拟服务器(3)

    安装数据库mysql,因为这个服务器比较烂,我只能装低版本的数据库.尝试了很多遍,终于装上去了,高版本应该没那么麻烦. 我安装了很多遍,下载的安装包,都没有安装成功. mysql各版本安装地址: (我 ...