Openflow Switch 测试方法学

合集下载

SDN软件定义网络之南向协议——OpenFlow协议

SDN软件定义网络之南向协议——OpenFlow协议

SDN软件定义网络之南向协议——OpenFlow协议一、引言SDN(Software-Defined Networking)是一种新兴的网络架构,它通过将网络控制平面与数据平面分离,实现了网络的灵活性和可编程性。

而OpenFlow协议作为SDN架构中的南向协议,负责控制器与交换机之间的通信,实现网络流量的转发和控制。

本协议旨在规范OpenFlow协议的标准格式,以确保各厂商的OpenFlow 实现能够互相兼容和互操作。

二、范围本协议适用于所有实现OpenFlow协议的网络设备厂商和SDN控制器开发者。

三、术语定义1. OpenFlow控制器(Controller):SDN架构中的中央控制节点,负责网络的管理和控制。

2. OpenFlow交换机(Switch):SDN架构中的数据转发节点,通过与控制器通信,根据控制器的指令进行流量转发和控制。

3. OpenFlow通道(Channel):控制器与交换机之间的双向通信通道,用于传输OpenFlow消息。

4. OpenFlow消息(Message):在OpenFlow通道上传输的控制信息单元,用于交换控制器和交换机之间的命令和状态。

四、协议规范1. OpenFlow版本本协议所定义的OpenFlow协议版本为OpenFlow 1.5。

2. OpenFlow消息格式OpenFlow消息由消息头和消息体组成,其中消息头包含消息类型、消息长度等字段,消息体包含具体的命令和参数。

(1)消息头格式:- 版本号(Version):用于指示OpenFlow协议的版本,占4个字节。

- 消息类型(Type):用于标识消息的类型,占2个字节。

- 消息长度(Length):用于指示消息体的长度,占2个字节。

- 事务标识(Transaction ID):用于标识消息的事务,占4个字节。

(2)消息类型:- 控制器与交换机之间的消息类型包括控制消息、配置消息、状态消息和错误消息等。

OpenFlow交换机协议一致性测试集模型研究

OpenFlow交换机协议一致性测试集模型研究

测试集模型的建立是其中十分重要的步骤,本文根据
当 下 SDN 一 致 性 测 试 的 发 展 现 状 ,介 绍 了 两 个
OpenFlow 交换机协议一致性测试的测试集模型。
2
OpenFlow 交换机
OpenFlow 协议规范中充分体现了包含 OpenFlow
3
测试集模型
一致性测试评估过程是指完成所有的一致性测试
示程度,ISO/IEC 9646 将一致性测试分为 3 类:基本互
发展以及相关设备的部署等工作提供一定参考。
·68·
Copyright©博看网 . All Rights Reserved.
《电信网技术》2016 年 5 月第 5 期
泰 尔 检 测
参考文献
Specification 1.0.0[EB/OL]. .
升级带来诸多困难。软件定义网络(Software Defined
Networking,SDN)正是在此背景下被提出的一种新型
网络技术。SDN 分离了数据平面与控制平面,并将其
分别抽象出来封装成 SDN 交换机和 SDN 控制器。
作为一种实现了 SDN 控ቤተ መጻሕፍቲ ባይዱ器和交换设备通信的
标准化协议,OpenFlow 得到业界广泛关注,商业化道
图 1 OpenFIow 交换机逻辑结构
路越走越远,但相关设备质量良莠不齐,设备的协议一
致性、互通性等方面的问题日益凸显。因此,相关协议
实现的测试技术就成为了解决这些问题的根本方法。
一致性测试是网络协议测试中最关键的测试,也
在 OpenFlow 交 换 机 中 ,流 表 、安 全 通 道 以 及
OpenFlow 协 议 ,是 OpenFlow v1.0 规 范 的 核 心 组 件。

【个人总结系列-11】Openflow协议的理解-学习及总结

【个人总结系列-11】Openflow协议的理解-学习及总结

Openflow协议的理解-学习及总结Openflow协议概述OpenFlow协议是斯坦福大学的Nick McKeown提出的,随着OpenFlow协议的提出,SDN(Software Defined Network)也逐渐得到人们以及网络设备运营商的关注。

OpenFlow协议的主要思想就是将传统网络交换机数据包转发的过程分离开来,原来由交换机一步完成的转发动作现由2种设备协作完成,分别是支持openflow协议的交换机(假设为OVS)和控制器(以下称controller)。

OVS 里面维护了一个叫做流表(flow table)的东西,用来指定转发的策略,流表是在controller的控制下生成的,并且controller随时可以维护流表(删除、添加、修改流表项)。

所以网络管理人员可以很容易自己定义网络的行为,这也是SDN的原因。

在OpenFlow网络中数据包的转发流程是这样的:OVS接收到数据以后,通过和流表项进行匹配决定这个包的走向(转发、丢弃还是传给controller等),所以流表就相当于控制的策略,定义网络的行为只要在controller端对流表进行操作即可。

这就涉及到controller和OVS之间通信和交流的问题,而Controller和OVS之间通信的消息格式、内容及种类就是OpenFlow协议的主要内容。

OVS通过secure channel和controller进行通信,而且通信内容是通过TLS加密的,从secure channel发出和接收到的信息是和交换机接收到的数据包(到达的数据包)是不一样的,他们不经过流表的处理,OVS和controller的关系如下图所示[1]:图2-1-1 OVS和控制器的关系所以OpenFlow网络中最重要的就是流表(流表的结构和匹配的过程)和controller与OVS之间的通信。

下面主要介绍一下自己理解的这两块的内容。

流表每个交换机包括许多流表和一个组表,流表从0开始进行编号。

openflow 数据结构-无删减范文

openflow 数据结构-无删减范文

openflow 数据结构openflow 数据结构1. 概述OpenFlow是一种网络通信协议,用于在网络交换机和控制器之间进行通信。

OpenFlow协议允许网络管理员通过控制器直接控制交换机的行为,从而实现网络资源的灵活分配和流量控制。

openflow 数据结构是OpenFlow协议中定义的数据结构,用于表示网络中的各种信息,如数据包、流表、端口等。

2. OpenFlow协议结构OpenFlow协议采用了分层的结构,由OpenFlow Switch、OpenFlow Controller和OpenFlow Protocol三个主要组成部分组成。

2.1 OpenFlow SwitchOpenFlow Switch是网络中的交换机,它负责转发数据包以及与控制器之间的通信。

OpenFlow Switch通过OpenFlow协议与控制器进行通信,接收控制器下发的指令,并根据指令的要求执行相应的操作,包括修改流表、转发数据包、发送统计信息等。

2.2 OpenFlow ControllerOpenFlow Controller是网络中的控制器,它负责对网络进行管理和控制。

Controller与Switch之间通过OpenFlow协议进行通信,Controller下发指令给Switch,根据网络的状态和需求来管理和控制网络。

Controller还负责处理从Switch传送来的统计信息和事件通知等。

2.3 OpenFlow ProtocolOpenFlow Protocol是实现OpenFlow通信的具体协议规范。

它定义了Controller与Switch之间的通信方式、消息的格式、数据结构等。

OpenFlow Protocol采用基于TCP的连接来保证通信的可靠性和稳定性。

3. OpenFlow数据结构3.1 数据包(Packet)数据包是OpenFlow协议中的基本单位,表示网络中的数据传输单元。

OpenFlow中的数据包由许多字段组成,包括源MAC地址、目标MAC地址、源IP地址、目标IP地址等。

Openflow协议入门

Openflow协议入门

传统网络设备工作方式
Hub • 工作原理:基于物理端口转发 • 策略:Flood
L2Switch • 工作原理:基于MAC地址表转发 • 策略:STP+MAC地址学习
Router • 工作原理:基于路由表转发 • 策略:静态路由+动态路由协议
共同点:分布式策略(策略的制定者为设备本身)
转发表的结构:
dst port)
数据包处理方法: • 转发 • 修改包头
Openflow1.0对数据包匹配特征的描述方法
ofp_match的wildcard
ofp_match的wildcard
22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ‐ 31
终端
终端
终端
终端
终端
终端
终端
终端
终端
终端
Step1:建设计算机网络
终端
终端
终端
终端
终端
终端
终端
终端
终端
终端
计算机网络包括网络设备(节点)和链路(边) 任意两台计算机之间有信号的物理通路
Step2:创建转发表
网络A
终端
终端
终端
终端
B
AC
AB
C
BD
D
BC
B
网络B
终端
网络C
网络D
终端
终端
终端
终端
终端
Step3:建立转发表维护机制
以上每一种操作称为一个动作(Action),流表中的数据包处理方法是一个动 作列表(Action List),动作列表由以上各种动作组合合成。
Action头,包括Type和len字段 Type为一下类型之一

OpenFlow Switch学习笔记三Flow Tables

OpenFlow Switch学习笔记三Flow Tables

OpenFlow Switch学习笔记(三)——Flow Tables/CasonChan/p/4620652.html 这次我们主要讨论下OpenFlow Switch的核心组件之一——Flow T ables,以了解其内部的 matching 以及 action handling 机制。

下文将会分为几个部分来逐步详述OpenFlow Switch内部数据包的流转机制。

1、Pipeline Processing 遵循OpenFlow Switch规范的OpenFlow交换机大致分为OpenFlow-only 和OpenFlow-hybrid 两类。

OpenFlow- only交换机仅仅只支持OpenFlow规范定义的操作,所有经过该类交换机的数据包仅仅只能被 OpenFlow Pipeline 处理,而不能被其他方式处理。

而OpenFlow-hybrid 交换机既支持OpenFlow规范定义的操作,又支持传统交换机规定的操作,比如传统的L2交换、VLAN隔离、L3路由、ACL以及QoS处理等。

该类交换机必须要提供一种除OpenFlow Switch规范约定的能将经过它的数据包转发到OpenFlow Pipeline处理,也能转发到Normal Pipeline处理特性之外的分类机制,比如交换机可以根据数据包的VLAN tag或者ingress port来决定使用某个Pipeline来处理,或者可能将所有的数据包直接转发到OpenFlow Pipeline处理。

OpenFlow-hybrid 交换机也可能将来自于 OpenFlow Pipeline 处理后的数据包通过NORMAL 或者 FLOOD Reserved Port 转发到 Normal Pipeline 继续处理。

OpenFlow Pipeline由多个Flow T ables组成,而每个Flow T able又包含有多个Flow Entries。

OpenFlow网络技术原理介绍

OpenFlow网络技术原理介绍
代表OpenFlow控制器的控制信道 代表OpenFlow管道的起点 代表报文的进入端口 用于某些命令的特殊值, 出入端口不能设为any 代表交换机本地网络的堆栈和管理堆栈
TABLE IN_PORT ANY LOCAL
NORMAL
FLOOD
代表传统的非OpenFlow交换机管道
代表传统的非OpenFlow交换机泛洪
14
15
OpenFlow Processing Pipeline

OpenFlow管道处理流程
Packet in
Ingress port
Action OpenFlow管道 Action set Set=0
Table 0
Packet+ Ingress port+ metadata
Table 1
Table Action n set
Discovery 仅仅是理论和功能建模 Data
2
5
Ethane架构
Ethane 中央控制器 Ethane交换机
中央控制器 ?
Ethane交换机
奠定OpenFlow 技术基础
2
6
SDN架构
SDN 应用层 控制层 基础设施层 应用层
API
应用程序
API API
控制层
SDN 控制软件
提取报文的 特征信息 (mac、ip等)
下发Flow-mode 消息到交换机, 添加流表项
yes 按照匹配的 流表项转发
下发packet out 报文,动作为 out到table
25
25
报文上送控制器的处理过程
25
26
单播报文流表转发
报文从 表0开始 yes

open vswitch实验心得

open vswitch实验心得

open vswitch实验心得开放式VSwitch实验心得一、实验介绍本次实验主要是使用Open vSwitch来模拟网络连接,体验网络Resilience,Link Aggregation和VLAN等基本功能,以及实现QoS,SDN等功能。

二、实验准备1. 搭建Open vSwitch软件实验环境,用一台物理机或者虚拟机安装有Ubuntu 16.04 LTS版本的操作系统,另外准备若干个客户端用于测试。

2. 在Open vSwitch环境中搭建T-L-switch,它使用一个宽带连接和若干个客户端,模拟真实的网络环境。

3. 在T-L-switch上安装Open vSwitch,熟悉Open vSwitch 的概念、安装步骤及其使用说明。

三、实验过程1. 安装Open vSwitch,在T-L-switch上安装Open vSwitch,安装步骤参照官方文档完成;2. 熟悉Open vSwitch命令,可以用以下命令查看设备、添加、删除和编辑接口;3. 设置Link Aggregation,在Open vSwitch上用命令行即可设置Link Aggregation;4. 设置Vlan,Open vSwitch的VLAN功能也是通过命令行来设置的;5. 设置QoS,搭建一个QoS服务器,使用Open vSwitch上的QoS功能,对某些应用程序提供分配优先级的服务;6. 实现SDN,这部分内容可以参考openflow协议,使用Open vSwitch上的SDN功能来实现;四、实验心得本次实验不仅让我们掌握了Open vSwitch的基本概念和操作,更让我们体会到了网络可靠性、连接聚合以及VLAN等实用技术的实际价值。

特别是在实现SDN时,让我深入了解了OpenFlow协议的实际操作,也更加深入了理解SDN的重要性。

SDN OpenFlow方案

SDN OpenFlow方案

26
Switch 倒换性能
测试switch的收敛性能 主动切换 提供 CP-DP and DP-DP 测试方法
27
Switch 性能和扩展性
模拟 OpenFlow v1.0 and v1.3.1 Controller 验证 Switch 功能和扩展性 发现拓扑 验证Switch数据面和收敛性能 混合模式设备测试
4
SDN
网络设备承载数据面 软件处理控制面 允许应用程序控制网络 不仅仅是协议 – 是思维方式的转变
5
新兴技术
7
挑战
1.新规范 2.比较传统的网络未知的性能 3.各种支持标准 4.大的命令集且不断增长 5.迁移和管理
8
Image:
SDN两个主流方法
OpenFlow (从下面支撑)
IxVM
Software-based traffic-gen Suitable for virtualized test environment Support for various hypervisor platforms (ESXi, KVM etc)
Unified test applications across both platforms
1
Ixia SDN/OpenFlow Solution
产品经理 杨益锋
2
SDN
3
SDN -行业趋势
SDN市场增长预期 • 到2016年SDN市场达到20亿美金 - Jun 2012 • 到2016年SDN市场达到32亿美金 -May 2013
企业采用SDN网络 • Microsoft – Azure cloud and Lync • eBay – Cloud Data Center • Google – Inter/Intra Data Center 运营商部署基于SDN的网络 • NTT Communication – SDN based IaaS for Enterprise cloud

OpenFlow中基于精确时间戳的延迟测量方法

OpenFlow中基于精确时间戳的延迟测量方法

2017年11月Journal on Communications November 2017 第38卷第11期通信学报V ol.38No.11 OpenFlow中基于精确时间戳的延迟测量方法邱欣逸1,2,李俊1,周建二1,李菁菁1(1. 中国科学院计算机网络信息中心,北京 100190;2. 中国科学院大学,北京 100049)摘 要:目前的OpenFlow延迟测量方法占用较多的网络资源,且测量精度较差。

根据SDN集中控制的特性,在OpenFlow网络中设计一种基于准确时间戳的延迟测量方法。

使用控制器动态计算出任意2个交换机之间的多条可达路径,只需发送一个探测分组就可以测量出多条路径上的延迟,减少了网络资源的消耗。

同时,为了提高准确性,将时间戳的获取从控制器转移到OpenFlow交换机中。

仿真实验证明,与其他测量方法相比,该方法的测量精度与稳定性都有较大提升。

关键词:OpenFlow;软件定义网络;延迟测量;时间戳中图分类号:TP393 文献标识码:ANew delay measurement method based onaccurate timestamp in OpenFlowQIU Xin-yi1,2, LI Jun1, ZHOU Jian-er1, LI Jing-jing1(1. Computer Network Information Center, Chinese Academy of Sciences, Beijing 100190, China;2. University of Chinese Academy of Sciences, Beijing 100049, China)Abstract: At present, delay measurement methods in OpenFlow network have the disadvantage of excessive network re-sources and poor measurement accuracy. DeMon, an active mechanism to measure the delay of multiple paths between any two switch based on the controllable feature of individual traffic flow provided in OpenFlow was proposed. DeMon required only one probe packet to be send from controller, which was excepted to reduce the operational cost. Moreover, DeMon used OpenFlow switch instead of controller to get the timestamp of probe packet, making the measurement accu-racy and stability have been greatly improved compared with other monitoring techniques in the OpenFlow network.Key words: OpenFlow, software defined network, latency monitoring, timestamp1 引言网络延迟是网络故障分析和流量调度的重要依据[1]。

SDN和Openflow详解mininet与opendaylight环境搭建与测试

SDN和Openflow详解mininet与opendaylight环境搭建与测试

基于OpenFlow的SDN技术1. SDN与OpenFlow技术简介SDN指的是软件定义网络。

你可以这样去理解SDN:如果将网络中所有的网络设备视为被管理的资源,那么参考操作系统的原理,可以抽象出一个网络操作系统(Network OS)的概念—这个网络操作系统一方面抽象了底层网络设备的具体细节,同时还为上层应用提供了统一的管理视图和编程接口。

这样,基于网络操作系统这个平台,用户可以开发各种应用程序,通过软件来定义逻辑上的网络拓扑,以满足对网络资源的不同需求,而无需关心底层网络的物理拓扑结构。

云计算的发展,是以虚拟化技术为基础的。

云计算服务商以按需分配为原则,为客户提供具有高可用性、高扩展性的计算、存储和网络等IT资源。

虚拟化技术将各种物理资源抽象为逻辑上的资源,隐藏了各种物理上的限制,为在更细粒度上对其进行管理和应用提供了可能性。

近些年,计算的虚拟化技术(主要指x86平台的虚拟化)取得了长足的发展;相比较而言,尽管存储和网络的虚拟化也得到了诸多发展,但是还有很多问题亟需解决,在云计算环境中尤其如此。

OpenFlow和SDN尽管不是专门为网络虚拟化而生,但是它们带来的标准化和灵活性却给网络虚拟化的发展带来无限可能。

SDN的最重要特征:将传统网络设备的数据转发(data plane)和路由控制(control plane)两个功能模块相分离,通过集中式的控制器(Controller)以标准化的接口对各种网络设备进行管理和配置,那么这将为网络资源的设计、管理和使用提供更多的可能性,从而更容易推动网络的革新与发展。

OpenFlow是实现SDN最常用的的一种协议,OpenFlow的原理和基本架构如下图。

其实,这张图还很好地表明了OpenFlow Switch规范所定义的范围—从图上可以看出,OpenFlow Switch规范主要定义了Switch的功能模块以及其与Controller之间的通信信道等方面。

SDN实验---Mininet实验(玩转流表)

SDN实验---Mininet实验(玩转流表)

SDN实验---Mininet实验(玩转流表)⼀:实验⽬的(⼀)案例⽬的(⼆)实验内容(三)⽹络拓扑结构⼆:OpenFlow流表实验准备(⼀)使⽤Python设置⽹络拓扑 --- tree_topo.pyfrom mininet.topo import Topofrom import Mininetfrom mininet.node import RemoteControllerfrom mininet.link import TCLinkfrom mininet.util import dumpNodeConnectionsclass MyTopo(Topo):def __init__(self):super(MyTopo,self).__init__()# add hostHost1 = self.addHost('h1')Host2 = self.addHost('h2')Host3 = self.addHost('h3')switch1 = self.addSwitch('s1')switch2 = self.addSwitch('s2')self.addLink(Host1,switch1)self.addLink(Host2,switch1)self.addLink(Host3,switch2)self.addLink(switch1,switch2)topos = {"mytopo":(lambda:MyTopo())}(⼆)启动远程Ryu控制器ryu-manager simple_switch.py 注意,该控制器py⽂件在app⽬录下# Copyright (C) 2011 Nippon Telegraph and Telephone Corporation.## Licensed under the Apache License, Version 2.0 (the "License");# you may not use this file except in compliance with the License.# You may obtain a copy of the License at## /licenses/LICENSE-2.0## Unless required by applicable law or agreed to in writing, software# distributed under the License is distributed on an "AS IS" BASIS,# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or# implied.# See the License for the specific language governing permissions and# limitations under the License."""An OpenFlow 1.0 L2 learning switch implementation."""from ryu.base import app_managerfrom ryu.controller import ofp_eventfrom ryu.controller.handler import MAIN_DISPATCHERfrom ryu.controller.handler import set_ev_clsfrom ryu.ofproto import ofproto_v1_0from ryu.lib.mac import haddr_to_binfrom ryu.lib.packet import packetfrom ryu.lib.packet import ethernetfrom ryu.lib.packet import ether_typesclass SimpleSwitch(app_manager.RyuApp): 不同与之前的Ryu实验,这⾥⾯没有在交换机初始连接时下发默认流表...待思考OFP_VERSIONS = [ofproto_v1_0.OFP_VERSION]def __init__(self, *args, **kwargs):super(SimpleSwitch, self).__init__(*args, **kwargs)self.mac_to_port = {}def add_flow(self, datapath, in_port, dst, src, actions): 下发流表ofproto = datapath.ofprotomatch = datapath.ofproto_parser.OFPMatch(in_port=in_port,dl_dst=haddr_to_bin(dst), dl_src=haddr_to_bin(src))mod = datapath.ofproto_parser.OFPFlowMod(datapath=datapath, match=match, cookie=0,command=ofproto.OFPFC_ADD, idle_timeout=0, hard_timeout=0,priority=ofproto.OFP_DEFAULT_PRIORITY,flags=ofproto.OFPFF_SEND_FLOW_REM, actions=actions)datapath.send_msg(mod)@set_ev_cls(ofp_event.EventOFPPacketIn, MAIN_DISPATCHER)def _packet_in_handler(self, ev): 交换机向控制器发送数据msg = ev.msgdatapath = msg.datapathofproto = datapath.ofprotopkt = packet.Packet(msg.data)eth = pkt.get_protocol(ethernet.ethernet)if eth.ethertype == ether_types.ETH_TYPE_LLDP:# ignore lldp packetreturndst = eth.dstsrc = eth.srcdpid = datapath.idself.mac_to_port.setdefault(dpid, {})("packet in %s %s %s %s", dpid, src, dst, msg.in_port)# learn a mac address to avoid FLOOD next time.self.mac_to_port[dpid][src] = msg.in_portif dst in self.mac_to_port[dpid]:out_port = self.mac_to_port[dpid][dst]else:out_port = ofproto.OFPP_FLOODactions = [datapath.ofproto_parser.OFPActionOutput(out_port)]# install a flow to avoid packet_in next timeif out_port != ofproto.OFPP_FLOOD:self.add_flow(datapath, msg.in_port, dst, src, actions)data = Noneif msg.buffer_id == ofproto.OFP_NO_BUFFER:data = msg.dataout = datapath.ofproto_parser.OFPPacketOut(datapath=datapath, buffer_id=msg.buffer_id, in_port=msg.in_port,actions=actions, data=data)datapath.send_msg(out)@set_ev_cls(ofp_event.EventOFPPortStatus, MAIN_DISPATCHER)def _port_status_handler(self, ev):msg = ev.msgreason = msg.reasonport_no = msg.desc.port_noofproto = msg.datapath.ofprotoif reason == ofproto.OFPPR_ADD:("port added %s", port_no)elif reason == ofproto.OFPPR_DELETE:("port deleted %s", port_no)elif reason == ofproto.OFPPR_MODIFY:("port modified %s", port_no)else:("Illeagal port state %s %s", port_no, reason)(三)Mininet开始启动⽹络拓扑sudo mn --custom tree_topt.py --topo=mytopo --controller=remote,ip=127.0.0.1,port=6633注意:应该是主机连接发送了数据,导致控制器对⽹络进⾏了拓扑收集,问题同上:三:进⾏OpenFlow流表分析(⼀)主要流表操作命令dpctl dump-flows 查看静态流表dpctl del-flows 删除所有交换机中的流表dpctl add-flow in_port=1,actions=output:2 添加流表项到所有交换机,注意:⼀般是成对添加,实现双⽅通信sh ovs-ofctl del-flows s1 in_port=2 删除指定交换机的,匹配in_port=2的流表dpctl del-flows in_port=1 删除所有交换机中符合in_port=1的流表dpctl add-flow in_port=2,actions=drop 添加丢弃数据包的流表项(⼆)先解决上⾯问题,是不是启动Mininet后进⾏了数据包发送,导致控制器下发流表重新启动Ryu和Mininet,直接查看交换机中是否有流表.1.先启动交换机,查看流表,为空2.启动控制器,之后再查看交换机中流表信息,依旧为空3.主机使⽤pingall命令后,查看流表,发⽣变化已解决。

全球 SDN 测试认证中心OpenFlow 一致性认证指南

全球 SDN 测试认证中心OpenFlow 一致性认证指南


5
Global SDN Certified Testing Center
全球 SDN 测试认证中心
2.3 OpenFlow 一致性测试认证流程
OpenFlow 一致性测试认证流程如图 2.3.1 所示:
认证前准备
认证流程
结果输出及查询
开始
开始
OpenFlow一致性测试报告 OpenFlow一致性认证证书 OpenFlow一致性Logo标识
3.2 全球 SDN 测试认证中心简介
全球 SDN 测试认证中心()是第三方中立的 SDN/NFV 测试认证机构,致力于 SDN/NFV 技 术研发、测试认证和部署推广。全球 SDN 测试认证中心与 ONF 等 SDN/NFV 国际标准组织合作,承担其测试 规范制订、认证体系建设以及测试工具研发等工作,同时面向全球提供权威中立的测试与认证服务,推动技术与 产品的完善,保障 SDN/NFV 商业部署。 作为第三方中立的测试机构,全球 SDN 测试认证中心提供以下技术服务:

ONF Open Flow 一致性认证 SDN Control/Switch/APP 性能、可扩展性、安全测试 SDN/NFV 解决方案和第三方测试报告 SDN/NFV 大型国际测试活动 SDN/NFV 测试方案和技术咨询
7

GlobaLeabharlann SDN Certified Testing Center
OpenFlow 标准定义了控制层面与转发层面之间的交互协议,及一组转发操作。OpenFlow 协议运行在安全传 输层协议(TLS)或无保护 TCP 连接之上。应用基于 OpenFlow 的 SDN 技术,在应对网络高带宽、业务需求不 断变化的同时,更将显著降低运营和管理的复杂性。 开放网络基金会(ONF)致力于加速发展 SDN(软件定义网络)技术。2013 年,ONF 发布 OpenFlow 协议一 致性认证。 ONF OpenFlow 一致性认证是目前 SDN 领域检测设备是否符合 OpenFlow 协议标准的顶级认证,全球 SDN 测试认证中心作为 ONF 授权的国际第三方认证机构将严格遵循 OpenFlow 协议标准,面向全球网络设备商提 供权威的 OpenFlow 一致性认证。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Contents1. Test case 1:测试Openflow 交换机的流表容量 (1)2. Test case 2:测试Openflow 交换机的流表学习速率 (5)3. Test case 3:测试Openflow 交换机的吞吐量,时延,抖动和丢包率 (12)4. Test case 4:测试Openflow 交换机的流表震荡 (14)1.Test case 1:测试Openflow交换机的流表容量∙测试目的:测试Openflow交换机最多能支持的流表数量∙测试拓扑:∙预配置(请注意,预配置部分是写本文需要,在OpenvSwitch上所做的配置。

读者在用OVS做实验时候可参考此配置,实际测试则不需要进行此部分)设置br1 的flow table 0 表项容量为100Step 1:在OVS 的ovsdb中,在Bridge 表中,把br1 条目的flow_tables列中关联br1 的flow_table 0, 并且在Flow_Table表中创建一行。

ovs-vsctl set Bridge br1 flow_tables:0=@table0 -- --id=@table0 create Flow_Table name=table0 查看Bridge表和Flow_Table表:[root@localhostmrzhao]# ovs-vsctl list bridge_uuid : c5601237-6574-465b-843f-ac52c61d5badController : [bca3710d-1280-44eb-8436-20bbe5c8161c]datapath_id : "0000000c2992086a"datapath_type : ""external_ids : {}fail_mode : []flood_vlans : []flow_tables : {0=bebe5b02-6216-4a8a-af5d-27f1dde2bf48}ipfix : []mirrors : []name : "br1"netflow : []other_config : {}ports : [358480c2-0709-476d-8446-3020584454d0, 4f1a7238-d611-4345-8b06-83a62d414952,5dd30471-07c4-4eac-90a1-0cf7d96e7b07, a4c3be4c-bda5-4686-af08-4e59d51040bd, eaf6eb05-0d95-4775-9abb-1b139469a9b9]protocols : []sflow : []status : {}stp_enable : false[root@localhostmrzhao]# ovs-vsctl list Flow_table_uuid : bebe5b02-6216-4a8a-af5d-27f1dde2bf48external_ids : {}flow_limit : []groups : []name : "table0"overflow_policy : []prefixes : []Step 2:设置br1 的table0 的流表大小是100条流表项ovs-vsctl set Flow_Table table0 flow_limit=100查看流表项设置:[root@localhostmrzhao]# ovs-vsctl list Flow_table_uuid : bebe5b02-6216-4a8a-af5d-27f1dde2bf48external_ids : {}flow_limit : 100groups : []name : "table0"overflow_policy : []prefixes : []测试步骤1.查看初始流表,显示只有一条流表(对应LLDP 报文转发控制器的流表):[root@localhostmrzhao]# ovs-ofctl dump-flows br1NXST_FLOW reply (xid=0x4):cookie=0x0, duration=3.937s, table=0, n_packets=0, n_bytes=0, idle_age=3, dl_type=0x88cc actions=CONTROLLER:50002.创建 50条流表(初始值, Initial flow number), 下发。

本例中一条流表包含三个匹配字段:Ethernet.typeIP.Source AddressIP.Destination Address显示成功下发50条流表:流量验证也显示全部转发,没有丢包:3.增加50条流表,总共100条(step = 50 条流表 ),下发。

显示成功下发90条流表:发送流量也可以看到有10%丢包:从OpenvSwitch上查看,也可以看到,除了LLDP 那条flow table 之外,只有90条流表:[root@localhostmrzhao]# ovs-ofctl dump-aggregate br1NXST_AGGREGATE reply (xid=0x4): packet_count=26760 byte_count=3318240 flow_count=91∙测试结果:指标值:交换机最大支持的流表数量本例的测试结果为91条。

注: a.为什么只有91条,而不是设置的100条,需要查看OVS 文档分析原因。

b.为了验证这个测试结果的正确性,仪表配置不动,我们把table0的流表数限制改为200:ovs-vsctl set Flow_Table table0 flow_limit=200然后可以看到,原配置的100条流表全部下发:OVS 上查看,100条流表也全部学到。

[root@localhostmrzhao]# ovs-ofctl dump-aggregate br1NXST_AGGREGATE reply (xid=0x4): packet_count=26760 byte_count=3318240 flow_count=101∙测试方法深入讨论1.配置单独的 L2 匹配域测试例,单独的 L3 匹配域测试例。

根据交换机的实现方式不同,不同匹配方式对交换机的性能和流表规格有明显影响。

例如有些交换机会把 L2 匹配放在 L2 内存中,而不是在通常放流表的 TCAM 中,这样测试例如果只测试 L2 匹配则无法验证TCAM 容量。

2.配置12元组全匹配的测试例。

匹配元组的多少,可能对Openflow交换机流表的容量发生影响。

3.单个流表和多个流表对性能规格也有明显区别,需验证交换机在单个流表下的容量,多个流表下的流表容量,以及能同时支持多少个表的数量(例如255 个)。

对于多流表的容量,由于流表之间并非一一对应的关系,比如逻辑上流表1的多个流表项可以映射到流表2 的同一个流表项。

所以多流表下的流表容量,可以考虑和应用场景结合起来,比如用Openflow来实现VPN,可以测试伪线的容量,VPN VRF 的容量等等。

2.Test case 2:测试Openflow交换机的流表学习速率∙测试目的:测试Openflow交换机流表的学习速率,即每秒学习多少条流表∙测试拓扑:∙预配置(请注意,预配置部分是写本文需要,在OpenvSwitch上所做的配置。

读者在用OVS做实验时候可参考此配置,实际测试则不需要进行此部分)在Test case 1 的基础上,把br1 的table0 的容量调整为1,000,000 条流表ovs-vsctl set Flow_Table table0 flow_limit=1000000测试方法1:流量图形采样法A.用Custom 方式创建流表B.用flow 方式创建和流表相对应的验证流量C.用图形结果计算流表学习时间和学习速度∙测试步骤1.用custom 方式创建5000条flow(创建的流表条数必须在Test Case 1 测试到的最大流表数之内)。

2.创建一条验证流,匹配5000条flow。

验证流量的带宽可设置小于转发吞吐量,避免因为转发丢包导致的测试结果偏差。

3.在验证流统计视图上,把”Rx Rate(fps)”统计量加入到图形显示中。

4.先发送流量,然后在Openflow仿真控制器上把5000条流表发送给被测交换机:5.观察流量,等待接收流量上升到和发送流量一致。

6.用标尺测量出从流量开始上升到平稳之间的时间,从标尺中可以看到,流表全部学习到4.883秒:∙测试结果:本例测试结果:学习5000条流表,用了4.883秒,平均每秒学习1024条流表测试方法2:流量直接验证法A.创建Bound 流量B.用Bound 方式从Bound stream中提取流表C.用Command Sequence 中“Openflow: Add flows to switches”命令,来直接测试结果∙测试步骤1.创建bound stream,有5000个目的IP地址,对应5000条Stream. 请注意,创建流的时候需要创建”stream only generator”2.用Bound 方式,从Bound Streams 中提取5000条bound flow entries。

3.在”Command sequence中”,加入”Openflow: add flows to switches”命令,并编辑这条命令,4.仿真的控制器和被测交换机建立连接。

请注意,仿真的控制器不要选择”Add flows onconnect”选项。

5.先开发发送验证流量6.运行command sequence7.从Result Report查看结果∙测试结果:本例测试结果:Flow add time(us): 4,758,889 微秒=4.759 秒Flow add rate(flows/秒): 1050条/秒Observed Flow Add Setup Time(us) = 4,994,641 微秒 = 4.995秒Observed Traffic Latency From Last Flow Add Time(us) = 234,751 微秒∙测试方法深入讨论1.已有流对新增速度的影响:流表中已有的流数量对新增流表学习的速度是有影响的,影响程度在不同 DUT 上表现不同。

有研究表明,随着 TCAM 存储被流表逐步填满,流表的学习速度是会下降的,对于有大TCAM 的尤为明显。

相关文档
最新文档