近期对SDN进行了初步的认识和学习,现将自己做的笔记进行简要整理。


目 录

  • 目 录
  • OpenFlow交换机
    • 安全通道
    • 流表
    • OpenFlow协议
      • OpenFlow交换机分类
  • FlowVisor
  • Controller

SDN是一种数据控制分离、软件可编程的新型网络体系架构。SDN基于OpenFlow的可编程特性,分别由Controller和OpenFlow交换机组成,形成控制层和数据转发层。
SDN采用了集中式的控制平面和分布式的转发平面,两个平面相互分离,控制平面利用控制、转发通信接口,对转发平面上的网络设备进行集中式管理。
其基本架构如下图所示。

可以看到有业务层、控制层、转发层。其中业务层和控制层之间的API叫做“北向接口”,用户可以通过北向接口对控制层进行定义或控制,并触发事件;控制层和转发层之间的API叫做“南向接口”,“南向接口”是控制层与转发层之间的通信通道,以OpenFlow协议为标准,实现了控制器与交换机之间的信息交互。

下面介绍一下OpenFlow。OpenFlow网络从底到高由以下三部分组成:

  • OpenFlow交换机 ——实现数据层的转发
  • Flow Visor ——对网络进行虚拟化
  • Controller ——对网络集中控制

OpenFlow交换机

OpenFlow交换机由 安全通道流表OpenFlow协议 三部分组成。

安全通道

安全通道是连接OpenFlow交换机和控制器通信的接口。控制器通过这个接口来控制和管理OF交换机,同时OF交换机通过这个接口将事件传给控制器,发送数据包,并接收来自控制器下发数据包。

控制器和交换机必须通过安全通道进行通信,而且进行通信的数据包必须按照OpenFlow协议规定的格式执行。

流表

流表是数据转发的依据,与交换机的mac地址转发表和IP地址路由表类似,流表中保存了网络中各个层次的网络配置信息,因此可以进行更加丰富的转发规则。交换机收到来自主机的数据包后,会在本机查询对应的动作,和对应的输出端口。

流表有很多流表项,每一条流表项都是一个转发规则。流表项的结构如下图:

  • 包头域用于数据包匹配;
  • 计数器用于统计匹配数据包个数;
  • 动作用于指示匹配数据包如何处理;

流表由控制器下发给交换机。下发模式有两种:主动模式、被动模式。

主动模式——控制器将自己收集的流表信息主动下发给交换机等网络设备,随后网络设备可直接查询流表转发。
被动模式——网络设备收到一个没有匹配的FlowTable记录时,将其封装成Packet_in数据包,转发给控制器,由控制器决定如何处理,并下发流表。

关于流表包头域、计数器和具体动作模式的介绍,可以参考:流表结构的介绍

OpenFlow协议

OpenFlow协议是交换机与控制器之间通信时所遵循的标准,包括交互信息的标准和控制器与交换机的接口标准。协议的核心部分是用于OpenFlow协议信息结构的集合。2014年OpenFlow协议已到了Edition 1.5。

具体的版本内容可以参考:OpenFlow协议规范概况介绍
也可下载各版本的英文文档:openflow协议各版本下载(1.0—1.5)(中英)

OpenFlow协议有三种消息类型:
1. Controller-to-Switch(控制器主动发出)

  • Features 用来获取交换机特性
  • Configuration 用来配置OpenFlow交换机
  • Modify-State 用来修改交换机状态(修改流表)
  • Read-Stats 用来读取交换机状态
  • Send-Packet 用来发送数据包
  • Barrier 阻塞消息

2. Asynchronous(异步消息,交换机主动发出)

  • Packet-in 用来告知控制器,交换机接收到了数据包(该数据包要么被完全包含在packet-in消息中,要么被buffer在交换机中,等待控制器的Packet-out事件来处理)
  • Flow-Removed 用来告知控制器交换机流表被删除
  • Port-Status 用来告知控制器交换机端口状态更新
  • Error 用来告知控制器交换机发生错误

3. Symmetric(对称消息,由控制器或交换机主动发出)

  • Hello 用来建立OpenFlow连接
  • Echo 用来确认交换机与控制器之间的连接状态
  • Vendor 厂商自定义消息

OpenFlow协议的数据包包括 Header 和 Message ,其中Header主要是协议版本,数据包长度等,Message是具体的数据包内容。

OpenFlow交换机分类

OpenFlow交换机分为两类:专用OpenFlow交换机、支持OpenFlow的交换机

专用OpenFlow交换机:专门为OpenFlow设计的交换机。与传统交换机不同,它不再具有控制逻辑,而仅仅是在端口间转发数据包的一个简单部件。

支持OpenFlow的交换机:是在传统商业交换机的基础上,添加了安全通道、流表、OpenFlow协议,获得了OpenFlow特性的交换机。它既具有传统交换机的控制转发功能,又具有OpenFlow的转发逻辑。因此该交换机对数据包支持两种不同的接收处理方式。

按照发展程度,OpenFlow交换机还可分为:“Type0”交换机、“Type1”交换机。

“Type0”交换机:仅支持十元组。对数据包的操作只有以下4条:

  • 转发给指定的一个或几个端口
  • 压缩并转发给控制器
  • 丢弃
  • 通过交换机的正常处理流程来转发数据包

“Type1”交换机:相比于“Type0”交换机,功能更多,从而支持更复杂的网络试验,具有一个新的功能集合。

FlowVisor

FlowVisor是建立在OpenFlow协议上的网络虚拟化工具。它将物理网络划分为不同的逻辑网络,从而实现虚网划分。它让管理员通过定义流规则来管理网络,而不是修改路由器和交换机的配置。

FlowVisor部署在标准OpenFlow控制器与OpenFlow交换机之间,并对两者是透明的。它将物理网络划分为多个虚网,使每个控制器控制一个虚网,并保证各虚网相互隔离。

FlowVisor的设计原则是:

  • FlowVisor对控制器和交换机是透明的,它们都感知不到FlowVisor的存在
  • 各虚网之间相互隔离,即使是广播包,各虚网的流量也相互隔离
  • 划分虚网的策略是灵活、模块化、可扩展的

OpenFlow消息在进行传输时,FlowVisor会根据配置策略对OpenFlow消息进行拦截、修改、转发等操作。这样,控制器就只能控制其被允许控制的流,但是控制器并不知道它所管理的网络被FlowVisor进行过分片操作。 同样,交换机发出的消息经过FlowVisor过滤后,也会被发送到相应的控制器。

Controller

OpenFlow将控制层与数据转发层分离,其中OpenFlow交换机实现了数据转发功能,而OpenFlow控制器则实现了控制层功能。Controller通过OpenFlow协议提供的标准数据接口,对OpenFlow交换机中的流表进行控制、管理,实现了对整个网络的集中控制。
在Controller中,可以用python等程序对其功能进行定义,比如下发流表,对Packet_in包进行处理等。


参考文章如下:
1. OpenFlow协议的理解
2. 流表的结构的介绍
3. OpenFlow网络的基本组成
4. FlowVisor入门教程
5. 网络虚拟化之FlowVisor:网络虚拟层(中)

OpenFlow网络基本介绍相关推荐

  1. 漫谈云计算网络(一):云计算网络技术介绍

    声明:本文CSDN作者原创投稿文章,未经许可禁止任何形式的转载. 作者:张钦,云途腾高级云解决方案架构师,负责企业级云计算网络解决方案的架构设计及客户培训.曾就职于金山云和中国电信,任职售前解决方案架 ...

  2. OpenFlow网络、OpenFlow交换机及OpenFlow协议的知识总结

    目录 OpenFlow起源与发展 OpenFlow网络 1.OpenFlow交换机: 2.FlowVisor: 3.Controller: OpenFlow交换机 分类 安全通道 流表 OpenFlo ...

  3. Linux 网络路由介绍

    from: Linux 网络路由介绍 六月份的时候我们讨论了基础网络配置,其中有一点我没提到的是路由.这篇文章将简洁明了的介绍下Linux网络下的路由,来方便理解一些简单的网络环境. 每台网络中相连的 ...

  4. 网络爬虫介绍||为什么学网络爬虫

    网络爬虫介绍 在大数据时代,信息的采集是一项重要的工作,而互联网中的数据是海量的,如果单纯靠人力进行信息采集,不仅低效繁琐,搜集的成本也会提高.如何自动高效地获取互联网中我们感兴趣的信息并为我们所用是 ...

  5. 常见网络命令介绍及使用

    常见网络命令介绍及使用 ping 介绍 参数说明 使用例子 ipconfig 介绍 参数说明 使用例子 tracert 介绍 参数说明 使用例子 netstat 介绍 参数说明 使用例子 route ...

  6. python 网络爬虫介绍

    一.网络爬虫相关概念 网络爬虫介绍 我们都知道,当前我们所处的时代是大数据的时代,在大数据时代,要进行数据分析,首先要有数据源,而学习爬虫,可以让我们获取更多的数据源,并且这些数据源可以按我们的目的进 ...

  7. OpenFlow网络中处理正常流量的工作流程

    OpenFlow网络中处理正常流量的工作流程 在OpenFlow网络中,控制平面中的控制器通过两种方式在数据平面上安装流规则来控制整个网络的行为:主动流安装和反应流安装. 在主动方法中,控制平面在数据 ...

  8. Docker 外部访问容器Pp、数据管理volume、网络network 介绍

    Docker 外部访问容器Pp.数据管理volume.网络network 介绍 外部访问容器 容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过 -P 或 -p 参数来 指定端口映射. ...

  9. 目前网络环境介绍目前网络环境

    目前网络环境介绍目前网络环境 • 公司介绍 – 一家网络服务的IT公司 知 识 讲 解 – 公司位于北京有80多台服务器 – 通过NAT技术将web服务器发布给Internet 公司 服务器集群 服务 ...

最新文章

  1. 客快物流大数据项目(十四):DockerFile介绍与构建过程解析
  2. 解决 IDEA 使用过程中让你觉得不爽的一些问题
  3. java笔记4-类型转换
  4. puTTY的配置导入和导出
  5. 北京内推 | 微软亚洲研究院MSRA STCA招聘多模态算法实习生
  6. 【iCore4 双核心板_FPGA】例程十六:基于双口RAM的ARM+FPGA数据存取实验
  7. 由HTTPS抓包引发的一系列思考(HTTPS解密)
  8. Shopify:管理一个顶级域名绑定shopify网店
  9. mysql5.7 开启重连_MySQL5.7.9,怎样永久设置client、connection、results这三项为utf8?...
  10. 【唐宇迪】神经网络原理解读与整体架构
  11. 量化策略回测DualThrust
  12. 怎么彻底卸载cad2017_彻底卸载cad2010的方法步骤
  13. 通信工程cdma篇-网优网规基础
  14. 图画日记怎么画_画画提高的一个方法: 绘画日记!
  15. 企鹅java游戏下载安装_飞翔企鹅游戏下载
  16. 前端实战:教你写出简单的侧边栏功能以及返回顶部特效
  17. 手把手教你用Python分析微信聊天内容
  18. 帝国CMS 批量修改信息标题方法
  19. 微信小程序基于OCR插件实现图文识别(超简单)
  20. 电音制作宿主软件-Ableton Live Suite v11.0.2 x64 WiN

热门文章

  1. uni-app实现PDF预览功能(避坑看这)
  2. JAVA_HOME指的是什么内容?
  3. SuperData最新报告:2017年VR硬件营收将达到36亿美元
  4. Python 绘制遥感数字高程影像(DEM)
  5. 如何利用TFTP协议发动DDoS放大攻击
  6. MySQL数据库锁介绍
  7. 也许是得益于快播案,电子证物的程序正义问题终于有了保障
  8. 好看的常用背景色RGB数值
  9. 如何设置IPv4和IPv6报文的DSCP值——网络测试仪实操
  10. ubuntu 12.04英文版设置成中文版