写在前面 这段时间一直在研究如何提高流表空间的利用率.一直没能想到好的idea.有一篇文献中比较了现有研究中提到的手段,在这里记录一下都有哪些类型的手段以及这些手段存在的不足.这些手段不仅局限于如何提高流表空间的利用率,更把范围拓展至如何提高交换机流表的匹配成功率. 背景 软件定义网络(Software Defined Network,SDN)作为一种新的架构,利用分层的思想将控制平面和数据平面分离,为网络的部署和配置提供了极大的灵活性和可扩展性. 然而当前的SDN网络只能对L2-L4层的信息进…
总结: 1.br-int 流表总体是按照Normal 的方式,即常规的交换机的转发方式进行转发.而br-tun 交换机则主要按照流表的方式进行转发. 2.一般情况下,VM发出的ARP请求,会在该VM的所有邻居进行广播发送和查找,大量浪费带宽.当neutron开启了l2 pop后(二次注入功能), 计算节点会学习别的主机发送的免费ARP, 从而在本地存在ARP表项. 3.当本地的VM发出ARP请求时,br-tun交换机会优先查找本地的ARP表项,从而对报文进行ARP应答. 这样的话,就不用发出AR…
背景 在ovs交换机中,报文的处理流程可以划分为一下三个步骤:协议解析,表项查找和动作执行,其中最耗时的步骤在于表项查找,往往一个流表中有数目巨大的表项,如何根据数据报文的信息快速的查找到对应的流表项是ovs交换机的一个重要的功能. 在openflow协议中,支持多级流表的形式,可以类比于将一个复杂的功能进行打散,分解成过个小的功能,实现一个流水线的功能,具体见下图: 上图中可以看到,一个数据报文进入后,会经过多个流表,每个流表负责特定的功能,比如上图中table 1中的流表项只会与数据报文中L…
学习SDN相关的学习也已经有快半年了,期间从一无所知到懵懵懂懂,再到现在的有所熟悉,经历了许多,也走了不少弯路,其中,最为忌讳的便是,我在学习过程中,尚未搞明白OpenFlow协议的情况下,便开始对SDN进行相关操作,今天写这篇博客,一方面是为了巩固我以前所学的东西,另一方面,重新学习SDN相关的协议,以改正我之前的错误认知,当然,由于还是初学者,仍会存在一些错误的认识,欢迎各位留言指正. OpenFlow协议的思路,即使网络设备维护一个FlowTable,并且只通过FlowTable对报文进行…
一.写在前面 唉,被分配到sdn安全方向,顶不住,顶不住,感觉搞不出来什么有搞头的东西.可若是让我水水的应付,我想我也是做不到的,世上无难事只怕有心人.好了,进入正题,本次要讨论的时一个比较细节的东西,在流表项中的有关ip掩码的问题.对了,本文适合于,有一定基础的openflow使用者,一点点就行. 二.问题描述 若不是机缘巧合,我甚至完全不会注意到这个问题,为什么,咱来看一个平时实验环境中最为常见的流表项长啥样,如图1                                      …
本文由SDN原理视频而成:SDN原理 流表 FlowTable --- OpenFlow的核心 问题3 流表项 Flow Entry 单流表(OpenFlow 1.0版本) -> 多流表(OpenFlow 1.3版本) 组成1(OpenFlow 1.0):Header Fields | Counters | Actions 不同版本的OpenFlow协议的流表项 不一样.OpenFlow 1.0版本包括了包头域,计数器,动作三个部分. 流表项包头域 --- 匹配 可以看出来,除了进接口,传统OS…
最近学习如何使用mininet,但是,刚刚开始时一直无法知道如何查看OpenFlow协议的版本,通过查阅网上的资料,从SDNLAB中,学习到了如何验证,mininet自身基于OpenFlow13版本的查看. SDNLAB的链接可以从这里跳转阅读:http://www.sdnlab.com/5172.html 但是,在学习实验的过程中,我发现,现阶段的Mininet自带的控制器似乎已经可以支持OpenFlow13版本,并且按照SDNLAB的实验流程,给出如下的实验结果: 首先创建一个简单的网络拓扑…
OpenFlow是SDN控制器和交换之间交流的协议,在SDN领域有着十分重要的地位. OpenFlow协议发展到现在已经经过了1.0.1.3.1.4等版本.其中1.0和1.3版本使用的是最为广泛的. 本篇博文主要分析1.0版本和1.3版本OpenFLow协议在控制器和交换机之间的交互流程. OpenFlow1.0协议交互 OpenFlow协议1.0的交互过程如下: 交互过程: 交换机或控制器首先发送hello报文,确定openflow通信版本. 交换机或控制器收到hello报文之后,回复一个he…
http://www.h3c.com/cn/d_201811/1131080_30005_0.htm# 1 OpenFlow背景 转发和控制分离是SDN网络的本质特点之一 .在SDN网络架构中,控制平面与转发平面分离,网络的管理和状态在逻辑上集中到一起,底层的网络基础从应用中独立出来,由此,网络获得前所未有的可编程.可控制和自动化能力.这使用户可以很容易根据业务需求,建立高度可扩展的弹性网络.要实现SDN网络的转控分离架构,就需要在SDN控制器与数据转发层之间建立一个通信接口标准. 2008年,…
通道 Channel 在前面的OpenFlow的内容中,我们提到了在交换层所采用的流表是控制层的Controller下发的,那么Controller是如何下发流表的呢?中间经过了哪些的流程和步骤?控制器和交换机的会话是如何建立的? 这就是我们今天要介绍的内容,Channel. 连接建立 Hello包会定期的交换,其中最核心的就是OpenFlow的版本号. Hello1:Switch -> Controller 你支持版本1.3吗? Hello2:Controller -> Switch 我支持…
功能 1.0版本Openflow:控制器通过Openflow协议与交换机建立了安全通道(Sceure Channel),下发流表. 1.3版本Openflow:多控制器,多流表. 用于实现Controller和Switch之间的通信过程,定义了一系列标准术语. 定义了Controller如何来控制Swithch以及Switch如何来反馈Ctroller. 定义了Controller和Switch通信过程的消息类型和格式. 版本 版本升级功能升级. 流表 相当于传统网络的路由表和CAM表. 传统网…
OpenFlow 交换机与控制器交互步骤 1. 利用Mininet仿真平台构建如下图所示的网络拓扑,配置主机h1和h2的IP地址(h1:10.0.0.1,h2:10.0.0.2),测试两台主机之间的网络连通性 miniedit.py设置 start CLI 支持OpenFlow 1.0 1.1 1.2 1.3 其他使用默认设置(Controller选择默认的openflow reference) 2. 利用Wireshark工具,捕获拓扑中交换机与控制器之间的通信数据,对OpenFlow协议类型…
一:OpenFlow协议概述 OpenFlow协议为控制器与交换机之间的通信,提供了一种开放标准的方式.OpenFlow交换机通过安全通道与控制器进行信息交互 二:OpenFlow消息类型 (一)controller-to-switch消息 1.Features消息 在建立传输安全会话时,控制器主动向交换机发送Feature_Request消息,请求交换机的特性信息,交换机通过Feature_Reply消息回复所支持的功能特性 2.Configuration消息 可以设置查询交换机的配置信息,交…
https://blog.csdn.net/vonzhoufz/article/details/32166445 当一个packet到达openflow交换机,会进行流表的匹配,如果没有找到相应的流表项,就会发送一个packet_in消息 到达SDN controller端,控制器根据一定的路由算法决策后,会向该路径上的所有交换机下发流表(也就是发送FLOW_MOD消息,里面有对应的action).这里要知道的是在SDN的环境下,控制器具有全局拓扑信息,每当有链路状态改变时就会跟新拓扑,而路由的…
一.实验目的 熟悉 Postman 的使用:熟悉如何使用 OpenDaylight 通过 Postman 下发流表. 二.实验任务 流表有软超时和硬超时的概念,分别对应流表中的 idle_timeout 和 hard_timeout. idle timeout:如果值为非 0,那么在对应的时间内如果没有数据包匹配流表,时间到该流表将被删除:值为 0 不设软超时机制. hard timeout:如果值为非 0,那么在对应的时间内不论是否有数据包匹配流表,时间到流表都会被删除:值为 0 不设硬超时机…
实验 6 :OpenDaylight 实验--OpenDaylight 及 Postman实现流表下发 一.实验目的 熟悉 Postman 的使用:熟悉如何使用 OpenDaylight 通过 Postman 下发流表. 二.实验任务 流表有软超时和硬超时的概念,分别对应流表中的 idle_timeout 和 hard_timeout. idle timeout:如果值为非 0,那么在对应的时间内如果没有数据包匹配流表,时间到该流表将被删除:值为 0 不设软超时机制. hard timeout:…
参考: Floodlight+Mininet搭建OpenFlow(四):流表操作 通过Floodlight控制器下发流表 下发流表的方式有两种: 1.借助Floodlight的北向API,利用curl命令下发和查看流表. 2.通过Floodlight本身自带的web界面下发流表. 北向API + curl命令 A.下发流表(端口匹配,2端口和3端口互通): sudo curl -d '{"switch": "[sw_dpid]″, "name":"…
问题4:流表匹配 OF1.1版本 这是OF1.1版本的操作,引入了多流表,1.0版本并没有多流表. 多流表的匹配称为 流水线处理:交换机从流表0开始查找,按照流表序号从小到大匹配. 每个包按照优先级去匹配流表中的表项,优先级高的先进行匹配:一旦匹配成功则刷新计数器和执行动作,倘若没有找到匹配的表项则转发给控制器. OF1.3版本及之后版本 关键词:叠加执行 OF1.3版本的流表匹配相比OF1.1版本,改变了很多: (1)当匹配到流表项的时候,首先更新计数器,然后查看指令集(之前有提过,指令是从动…
邓晓涛,当前就职于江苏省未来网络创新研究院,是CDN团队的一名研发人员,主要从事SDN相关的研发相关工作.曾就职于三星电子于先行解决方案研发组任高级工程师.思科系统于云协作应用技术部(CCATG)任工程师.-----------------------------------------------------------------------------------------------------[分享正文]今天想跟大家分享如何通过ODL控制器下发流表来创建VxLAN网络.ODL作为当前…
作业链接:实验3:OpenFlow协议分析实践 一.实验目的 能够运用 wireshark 对 OpenFlow 协议数据交互过程进行抓包: 能够借助包解析工具,分析与解释 OpenFlow协议的数据包交互过程与机制. 二.实验环境 下载虚拟机软件Oracle VisualBox: 在虚拟机中安装Ubuntu 20.04 Desktop amd64,并完整安装Mininet: 三.实验要求 (一)基本要求 1.搭建下图所示拓扑,完成相关 IP 配置,并实现主机与主机之间的 IP 通信.用抓包软件…
一.实验目的 熟悉 Postman 的使用;熟悉如何使用 OpenDaylight 通过 Postman 下发流表. 二.实验任务 流表有软超时和硬超时的概念,分别对应流表中的 idle_timeout 和 hard_timeout.* idle timeout:如果值为非 0,那么在对应的时间内如果没有数据包匹配流表,时间到该流表将被删除;值为 0 不设软超时机制. hard timeout:如果值为非 0,那么在对应的时间内不论是否有数据包匹配流表,时间到流表都会被删除;值为 0 不设硬超时…
学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GRE/VxLAN 虚拟网络 (4)Neutron OVS OpenFlow 流表 和 L2 Population (5)Neutron DHCP Agent (6)Neutron L3 Agent (7)Neutron LBaas (8)Neutron Security Group (9)Neutro…
运行Floodlight,在Mininet中新建一个拓扑之后,并未添加相关的流表项,但是主机之间却可以相互通信.执行pingall操作,任意两个主机之间都能通.相当于没有任何路由表的路由器,它是怎么让这些网络中的主机通信的呢? 原因在于Floodlight默认启用了Forwarding模块.说这个模块之前,首先说说Floodlight 中流表的两种添加方式:主动式和反应式. 官网上的文档是这么说的:http://docs.projectfloodlight.org/display/floodli…
一:流表 (一)流的概念 我们把同一时间经过同一网络中,具有某种共同特征或属性的数据,抽象为一个流 比如:我们将访问同一个地址的数据视为一个流 流一般是由网络管理员定义的,可以根据不同的流执行不同的策略,在OpenFlow中,数据都是作为流进行处理的.所以流表就是针对特定流的策略表项的集合,负责数据包的查找和转发 一张流表包含了一系列的流表项flow entries (二)流表项组成 (包头域.计数器.动作表3个) (三)包头域 (四)计数器 (五)动作表 动作表用于指示交换机,在收到匹配的数据…
Hybrid 交换系统(以下简称Hybrid 交换机)是交换机融合了OVS(Openflow vswitch)原生代码,集传统和Openflow 技术于一体的转发系统.主要解决纯Openflow 基于流表转发的SDN 网络场景,通常面临的四大问题: 管理链路和业务链路分开布线,导致运营成本高: 管理通道没有冗余保护,一旦出现链路故障,设备有脱管风险: 缺乏有效的检测机制,例如链路.丢包率.延时检测.单纯依靠控制器下发检测策略,会造成准确性.时效性差,且占用设备CPU 资源: 在交换机命令行下发和…
  当一个数据包到达网卡的时候,首先要经过内核Openvswitch.ko,流表Flow Table在内核中有一份,通过key查找内核中的flow table,即可以得到action,然后执行action之后,直接发送这个包,只有在内核无法查找到流表项的时候,才会到用户态查找用户态的流表.仅仅查找内核中flow table的情况被称为fast path.     第一步:从数据包中提取出key   实现函数为int ovs_flow_key_extract(const struct ip_tun…
OVS bridge 有两种模式:“normal” 和 “flow”.“normal” 模式的 bridge 同普通的 Linux 桥,而 “flow” 模式的 bridge 是根据其流表(flow tables) 来进行转发的.Neutron 使用两种 OVS bridge:br-int 和 br-tun.其中,br-int 是一个 “normal” 模式的虚拟网桥,而 br-tun 是 “flow” 模式的,它比 br-int 复杂得多. compute1新建一台vm---->neutron…
首先,openflow流表都是使用ovs-ofctl命令进行添加的. 1. 看 ovs-ofctl 的man手册 man ovs-ofctl 或者,这个地方也有:http://www.openvswitch.org/support/dist-docs/ovs-ofctl.8.html 主要就是用,这几个命令: dump-flows .add-flow .del-flows 等. 另外,有关actions的命令也在这个手册里. 2. 有关how to match见如下的man手册 man ovs-…
前言 最近纠结于控制器如何发现拓扑,于是就翻起了OpenFlow 1.3进行查看,以及一些相关协议 OF 1.3 安全通道,即交互消息 OpenFlow Switch Specification 1.3.0 1.消息类型 controller-to-switch 消息由控制器初始化,用来直接管理或监视交换机状态 asynchronous 消息由交换机初始化,用来更新控制器的网络事件以及记录交换机状态 symmetric 消息可以被控制器或交换机初始化 2.通信基础机制 建立TCP连接 交换机主动…
一.Rest API简介 REST即表述性状态传递(RepreSentational State Transfer),是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性. 表述性状态转移是一组构架约束条件和原则,满足这些约束和原则的应用程序或设计就是RESTful,REST是设计风格而不是标准,它通常基于使用HTTP,URI,XML以及HTML这些现有的广泛流行的协议和标准. REST定义了一组体系构架原则,可以根据这些原则设计以系统资源为中心的Web服务,包括使用不同…