SDN(Software Defined Network):软件定义网络----转载
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):软件定义网络----转载的更多相关文章
- 软件定义网络(Software Defined Network,SDN)简介
SDN的三大关键要素 第一关键要素是转发与控制分离,这使得网络交换机的数据转发变得更加简单.快速:同时,控制变成了网络操作系统中一个相对集中的逻辑功能. 第二个关键要素是OpenFlow协议,它向交换 ...
- SDN初体验(软件定义网络实验一)
作业说明 本次实验步骤2.3是在机房环境下完成的,步骤1.4是在自己笔记本上重新配置完成的,所以环境.用户名什么的会略有差别. 1. 安装轻量级网络仿真工具Mininet 为了节约课程时间,实验室机房 ...
- SDN前瞻 该来的来了!SDN 软件定义网络
SDDC:Software Defined Data Center 软件定义数据中心,全数据中心软件化. 在我们接触SDN概念之前,服务器虚拟化,软件虚拟化技术已经是非常成熟了.如果网络能够被虚拟化, ...
- 什么是SDN(软件定义网络)(转载)
软件定义网络(Software Defined Network, SDN)在InfoWorld于2011年11月公布的将影响未来10年的十项新技术中排名第二.2012年7月,SDN代表厂商Nicira ...
- SDN:软件定义网络
近期高级网络课的小组任务是在老师给定的范围内自选方向主题研究并做展示报告.我们组选了sdn.原以为这东西会是工业界无人问津的概念化产品,Google了一下却发现事实上sdn挺火的,因为它可能带来的可扩 ...
- DevOps之软件定义网络SDN
唠叨话 关于德语噢屁事的知识点,仅提供专业性的精华汇总,具体知识点细节,参考教程网址,如需帮助,请留言. <软件定义网络SDN(Software Defined Network)> 关于软 ...
- openflow 和 sdn (软件定义网络) 原理和教程
OpenFlow概述 OpenFlow简介 通俗的讲,OpenFlow是使用类似于API进程配置网络交换机的协议.OpenFlow的思路很简单,网络设备维护一个FlowTable并且只按照FlowTa ...
- 《SDN软件定义网络从入门到精通》导论课
http://mp.weixin.qq.com/s?__biz=MjM5MTM3MzIzMg==&mid=209513316&idx=1&sn=e5dbd9a2ccccb88d ...
- 第1课 VMware的NSX全面落地软件定义网络SDN
SDN的定义: 即软件定义网络(Software Defined Network)的缩写,它是一种基于网络架构的创新,一种在已存在物理传输网络之上的抽象形态,它是一种体系结构,它是众多网络虚拟化技术中 ...
随机推荐
- 实验吧-杂项-WTF?(python 01代码转图片)
比较新的题型了吧. code为base64码,转码出来是01代码,直接蒙圈,查阅相关wp才知道是转图片的. 复制到编辑器里可以看到一共65536个数字,开方是256,于是这就是一个方形的图片了–> ...
- vue前端项目初始化的步骤
前端项目初始化的步骤 1. 安装vue脚手架 2.通过vue脚手架创建项目 可以直接 vue create 项目名 也可以 vue ui 3.配置vue路由 4.配置Element-ui 组件 ...
- springboot内嵌定时任务使用及cron表达式讲解
第一步:pom引入依赖 <dependencies> <dependency> <groupId>org.springframework.boot</grou ...
- BusyBox 添加 自定义命令\小程序 (applet)
背景 在做嵌入式开的时候,busybox无疑是非常好用的命令集,所以很多时候都喜欢把busybox移植到我们的系统里面. 说明 添加一个很简单的命令--hello_busybox,输出"He ...
- extjs开发———用extJS简单写一个饼状图
先上效果图: js编写部分简单如下,先插入一个模块,然后给模块中添加内容. var myChart1 = echarts.init(document.getElementById('myChart1' ...
- 021、Java中汉子与数字的相互转换,利用字符变量保存中文
01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...
- https://blog.csdn.net/yyoinge/article/details/81557604
https://blog.csdn.net/yyoinge/article/details/81557604 http://www.mamicode.com/info-detail-2346464.h ...
- Java中用单例模式有什么好处?
Java Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在. 使用Singleton的好处还在于可以节省内存,因为它限制了实例的个数,有利于Java垃圾回收( ...
- Makefile入门1
Linux中的编译脚本Makefile的讲解设计 概念 编译控制脚本(.c.h----->bin) Makefile最终要的是清晰编译链接的整个过程 Makefile的优化设计 工作原理 mak ...
- 09.swoole学习笔记--进程事件
<?php //进程数组 $workers=[]; //创建进程的数据量 $worker_num=; //创建启动进程 ;$i<$worker_num;$i++){ //创建单独新进程 $ ...