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. STL访问Map问题,key为Integer或Long

    参考stackoverflows上的这篇文章 http://stackoverflow.com/questions/924451/jstl-access-a-map-value-by-key 换成 原 ...

  2. 安装双版本python2 和 python 3 所产生得问题 解决yum对python依赖版本问题

    错误 解决办法 一是升级yum  直接使用python3以上版本 二是修改yum的解释器为旧版本python2.7,即将连接文件   /usr/bin/python    软连接回   /usr/bi ...

  3. arm linux 移植 jpeg

    背景: host平台 :Ubuntu 16.04 arm平台 : S5P6818 jpeg :v9c arm-gcc :4.8.1 主机准备: 运行以下脚本: ## # Copyright By Sc ...

  4. 对S7通信的连接的理解以及对比CAN通信协议来理解PLC通讯

    对S7通信的连接的理解以及对比CAN通信协议来理解PLC通讯. 对功能块 SFB12 和 SFB13 的R_ID参数的理解 ? 对于同一个数据包.发送方与接收方的R_ID应该相同. 用下图解释 双向连 ...

  5. 5G/NR 帧结构

    原文链接:http://www.sharetechnote.com/html/5G/5G_FrameStructure.html 在学术界和3GPP中对帧结构进行了长时间的讨论,现在我们就NR(5G) ...

  6. 安卓:从assets目录下复制文件到指定目录

    有些时候我们直接将某些资源文件内置到apk中,便于直接使用. 1.首先将文件放置在项目/app/src/main/assets目录中 2.功能代码: public void copyFile(Stri ...

  7. Kubernetes——命令行操作

    如果集群初始化失败需要的操作: master:  kubeadm reset   #回答y  执行一条它提示给你的iptables命令即可 node:  systemctl stop kubelet  ...

  8. db.mybatis.config

    config1: <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryB ...

  9. numpy.linspace使用详解

    numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None) 在指定的间隔内返回均匀间隔的数字. 返回nu ...

  10. 腾讯X5内核使用详解(X5内核播放器使用如何去除控制栏全屏播放)以及一些注意事项

    例子下载地址 https://www.lanzous.com/i2zsv5g      GIT就不用了麻烦的不行 本人安卓刚学 就上X5内核弄了老长时间由于对maven 和idea不熟悉刚开始导包都是 ...