mininet学习记录之openflow

2023-05-16

一、FAQ

mn 指令的默认controller是ovs-controller,最多只支持16个switch,如果要支持更多,必须换controller

 OpenFlow reference implementation using mininet/util/install.sh -f. Consult the comments in the example's .py file for details.

发现了documentation 要学的东西更多了orz

二、openflow

是远程控制网络交换机、路由器和接入点的接口

学完tutorial之后,不够的话

1、The tutorial instructions require no prior knowledge of OpenFlow. The OpenFlow Learn More page is a concise introduction, and more information is available from the Open Networking Foundation.

(*^▽^*)

2、To learn more about OpenFlow in general, consult the Open Networking Foundation OpenFlow site and the historical OpenFlow page. There are videos, blog entries, and more. Check the wiki for link to OpenFlow-based projects and demos.

2.1 Additional Tools: FlowVisor

https://www.sdnlab.com/3081.html(里面提及的实验暂时未做)

FlowVisor也有个tutorial,真是学不完的

作为一个网络虚拟化平台,FlowVisor部署在标准OpenFlow控制器和OpenFlow交换机之间,成为二者的透明代理。FlowVisor能够与多个控制器连接使得每个控制器控制一个虚网,保证各虚网相互隔离。

FlowVisor是一个特殊的OpenFlow控制器,所有OpenFlow消息都将透过FlowVisor进行传送。FlowVisor会根据配置策略对OpenFlow消息进行拦截、修改、转发等操作。这样,OpenFlow控制器就只控制其被允许控制的流,并不知道其所管理的网络被FlowVisor进行过分片操作。相似地,从交换机发出的消息经过FlowVisor也只会被发送到相应的控制器。

核心思想是:对上行消息的映射和对下行信令的过滤。

02-flowvisor工作原理

Unable to locate tools.jar. Expected to find it in /usr/lib/jvm/java-8-openjdk-amd64/lib/tools.jar

因为没有安装jdk

我把user和group都设置为root

它的配置文件位于/etc/flowvisor/config.json。配置文件中包括简单的Slice、FlowSpaceRule样例,以及FlowVisor的监听端口、日志等级、版本等信息。

{
  "flowvisor": [
    {
      "checkpointing": false,
      "default_flood_perm": "fvadmin",
      "config_name": "default",
      "listen_port": 6633,                   交换机的监听端口
      "log_ident": "flowvisor",               
      "stats_desc_hack": false,
      "api_webserver_port": 8080,            xml请求的监听端口
      "run_topology_server": false,
      "api_jetty_webserver_port": 8081,      json请求的监听端口
      "version": "flowvisor-1.4.0",
      "track_flows": false,
      "db_version": 2,
      "log_facility": "LOG_LOCAL7",
      "host": "localhost",
      "logging": "NOTE"
    }
  ],
  "Slice": [
    {
      "config_name": "default",
      "lldp_spam": true,
      "creator": "fvadmin",
      "controller_port": 0,
      "contact_email": "fvadmin@localhost",
      "drop_policy": "exact",
      "passwd_crypt": "a4ed53c09b3a7bc3bdd8e36dd6038911",
      "passwd_salt": "399487368",
      "name": "fvadmin",
      "admin_status": true,
      "max_flow_rules": -1,
      "flowmap_type": "federated",
      "controller_hostname": "none"
    }
  ],
  "switches": [],
  "FlowSpaceRule": []
}

sudo fvconfig load /etc/flowvisor/config.json 以这条指令开始工作  

2.2 Learn Development Tools

terminal types

  • SSH terminal: connects to OpenFlowTutorial. Created by using putty on Windows or SSH on OS X / Linux, as described in the previous section. Copy and paste should work on this terminal.
  • xterm terminal: connects to a host in the virtual network. Created in the next section when you start up the virtual network. Will be labeled at the top with the name of the host.

networking utilities pre-installed

OpenFlow Controller: OpenFlow接口之上 (可以自己在NOX或者Beacon上写控制器程序)

OpenFlow Switch:OpenFlow接口之下,有user-space software switch和Open vSwitch,Broadcom提供了一些硬件交换机

ovs-ofctl: 控制行工具,可用于查看交换机端口和流状态,以及手动插入流条目

Wireshark:将OpenFlow message发送到OpenFlow默认的6633端口

iperf:测试一个TCP连接的速度

mininet:网络模拟平台,建立虚拟的OpenFlow网络

cbench: 测试OpenFLow controllers的流设置速率

Start Network

nl 是NetLink的简写

sudo mn --topo single,3 --mac --switch ovsk --controller remote

Here's what Mininet just did:

  • Created 3 virtual hosts, each with a separate IP address.
  • Created a single OpenFlow software switch in the kernel with 3 ports.
  • Connected each virtual host to the switch with a virtual ethernet cable.
  • Set the MAC address of each host equal to its IP.
  • Configure the OpenFlow switch to connect to a remote controller.

Mininet Brief Intro

NB: The prompt mininet> is for Mininet console, is for SSH terminal (normal user) and is for SSH terminal (root user) (See Command Prompt Notes). Hereafter we follow with this rule.

ovs-ofctl Example Usage

运行一个网络 --switch ovsk后,换另一个terminal执行ovs-ofctl


sudo mn --topo single,3 --mac --switch ovsk --controller remote  

可以观察和控制一个交换机流表,适用于debug

Most OpenFlow switches can start up with a passive listening port, from which you can poll (轮询)the switch, without having to add debugging code to the controller

大多数OpenFlow交换机可以从被动侦听端口启动,您可以从该端口侦听交换机,而无需向控制器添加调试代码。

show命令连接switch并输出端口状态和容量

用ovs-ofctl dump-flows s1命令输出流表(先启动controller,否则流表为空)

Accessing remote OVS instances or the Stanford reference switch

上面的例子ovs-ofctl是通过Unix域套接字domain socket来连接本地Open vSwitch实例。如果是用别的类型的交换机,要指定tcp端口

ovs-ofctl dump-flows tcp:{ip address}:{port}

其中IP地址是交换机的管理接口,端口是passive OpenFlow 监听/管理端口

如果mininet配置成--switch user,交换机的端口从6633开始按顺序配置,这就是为什么出现错误的时候,再建mininet要求kill掉tcp:6633, 使用命令ovs-ofctl dump-flows tcp:127.0.0.1:6634

注意:dpctl和ovs-dpctl是检验OVS的kernel flow cache,是整个OpenFlow流表的子集,一般不用他们流在OVS's flow cache在5s内失效,这使得OVS可以支持很大的流表

为什么ping失败:ovs-ofctl Example Usage中搭建的网络没有controller,因此交换机不知道该做什么,需要我们手动天界流


 # ovs-ofctl add-flow s1 in_port=1,actions=output:2
 # ovs-ofctl add-flow s1 in_port=2,actions=output:1  

使得port1来的包转发到port2,port2来的包转发到port1

这个时候看流表,它就不是空的了

再次在mininet执行ping命令

再查看流表,就有比较清晰的数据了

Start Wireshark

验证远程主机SSH指纹

https://github.com/mininet/openflow-tutorial/wiki/Set-up-Virtual-Machine#Access_VM_via_SSH 但是不work!

我佛了

Benchmark Controller w/iperf

iperf可以查看两台电脑之间的速度

三、Create a Learning Switch

emm拿了推荐的POX试水

kill 6653之后

(╯‵□′)╯︵┻━┻ 直接重启啥事没有

这条指令使日志信息详细地打印,并且开启of_tutorial组件(相当于hub)

Verify Hub Behavior with tcpdump

教程和实际 不符


tcpdump -XX -n -i h2-eth0 可以打印出所有经过h2-eth0的包
  

注意 xterm里的语法与terminal里的语法一样,和mininet的语法不一样

ping -c 3 des -c指定了发包的数量

如果运行iperf所有的包都会到controller

Open Hub Code and Begin

pox/pox/misc/of_tutorial.py

每次修改的时候重启pox,保证它如下3点:像集线器一样,controller-based Ethernet learning switch, and (3) flow-accelerated learning switch,后两个具体体现在第一次ARP之后,不是目的主机的hosts的tcpdump traffic中不会有记录

Learning Python

Sending OpenFlow messages with POX


connection.send( ... ) # send an OpenFlow message to a switch  

ofp_action_output class

四、Testing Your Controller

暂停一下下

1、确认只有广播包和目的地未知的包进入non-input 端口(每个host在xterm里用tcpdump)

2、用ovs-ofctl测试flow counters,如果紧接着的ping比原先快很多就完成,就可以确定他们每一经过controller(用iperf,没有OpenFlow packet-in 包进入,带宽应该很大,应该和用reference learning switch controller 时差不多大)(这一条不太确定怎么验证)

Other uses could even extend into layer 7; cookie-based load balancing, for example.我的短期最终目标~

五、FAQ

https://github.com/mininet/openflow-tutorial/wiki/Frequently-Asked-Questions-%28FAQ%29

学着使用gnome-terminal叭,它会比xterm更加强大

Why can't I ssh into my VirtualBox VM?

You may not be able to connect to a VirtualBox VM that only has NAT networking enabled. Make sure that you have followed the instructions above and configured host-only networking on at least one interface in the VM settings, and make sure that the host-only interface is configured and that you are connecting to its correct IP address.

If this does not work, or for more advanced setup, see below.

I can't start WireShark or xterm - help!

You are probably getting an error like "cannot open display."

This probably means that you have not successfully connected to the VM with ssh and X11 forwarding enabled.

明天继续尝试连接!!!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mininet学习记录之openflow 的相关文章

  • Zabbix 数据库表结构说明

    该文档提供了zabbix中mysql数据库中各个表及其中字段的详细解释 acknowledges表 xff08 空 xff09 当trigger发生状态变化后 xff0c 即产生某个事件 xff08 event xff09 后 xff0c
  • 2020CVPR对抗样本相关论文整理(有开源代码)

    目录 攻击防御 攻击 1 Towards Large yet Imperceptible Adversarial Image Perturbations withPerceptual Color Distance code链接 朝向具有感知
  • GAN & 对抗样本

    目录 关于对抗样本的解释GAN原理简介GAN生成对抗样本的发展 关于对抗样本的解释 对于对抗样本为何能够攻击成功 xff0c 目前有以下三种解释 xff1a 高维空间的线性模型解释 xff1a 当输入为图像时 xff0c 沿着梯度方向很小的
  • 块元素与内联元素的区别

    在css盒子模型中 xff0c 我们提到了html元素中的块元素 xff08 block element xff09 和内联元素 xff08 inline element xff09 那么它们究竟是什么呢 xff1f 其实 xff0c 这两
  • Ubuntu实用安装

    1 用DVD xff0f 服务器版 ubuntu 来安装命令行系统 2 编辑更新软件源 sudo cp etc apt source list etc apt source list bak 3 安装 X 窗口系统 xff1a sudo a
  • 关于Haar名称一点想说的:Haar而非Harr

    见到一些中文文献 博客 师兄们的简历都出现以一个叫 Harr 的特征 xff0c 有些疑惑 刨根问底一下 xff0c 最后得出结论Harr应该是对Haar的误写 Haar特征因为使用的是Haar小波变换而得名 xff0c 哈尔小波转换 是于
  • 安装远程连接Ubuntu Server 的图形界面——x2go远程连接桌面

    想要远程连接你的Ubuntu服务器的图形界面么 xff1f 这里有个简单的指导告诉你如何使用X2Go来实现 xff0c 这是一个NX远程桌面协议的衍生版本 你所需要做的就是 1 在服务器上面安装X2Go服务端和桌面环境 xff0c 2 在客
  • PHP正则表达式之\A、\Z、 \z、^、$

    文章目录 A Z z 断言与 之间的区别单行模式和多行模式的差异换行符匹配的差异 示例代码及解读文中提到的模式修饰符D PCRE DOLLAR ENDONLY m PCRE MULTILINE A Z z 断言与 之间的区别 A xff0c
  • #发布npm包遇到错误,因为用了淘宝镜像地址的原因的解决方法-403 403 Forbidden - PUT https://registry.npmmirror.com/-/user/org.cou

    使用npm login 也可以使用npm adduser 登录准备发布npm依赖包到npm时 xff0c 遇到问题 xff1a span class token function npm span ERR span class token
  • 面向对象设计和结构化分析设计(软件设计师备考笔记)

    目录 第十章 面向对象设计和结构化分析设计 第一节 结构化设计 第二节 UML 第三节 面向对象设计 设计原则 第四节 面向对象设计 设计模式 第五节 结构化分析 数据流图 DFD 必考 下午第一道题 第六节 面向对象设计方法 多态与绑定
  • 大厂Mysql高频面试题!java操作excelpoi

    微服务的发展 微服务倡导将复杂的单体应用拆分为若干个功能简单 松耦合的服务 xff0c 这样可以降低开发难度 增强扩展性 便于敏捷开发 当前被越来越多的开发者推崇 xff0c 很多互联网行业巨头 开源社区等都开始了微服务的讨论和实践 微服务
  • 知已知彼 ^.^

    如何做一个让男人尊敬的精致女人 转贴 作者 LUKECYK 浏览 160 1 如果一个男人开始怠慢你 xff0c 请你离开他 不懂得疼惜你的男人不要为之不舍 xff0c 更不必继续付出你的柔情和爱情 2 任何时候 xff0c 不要为一个负心
  • 单片机 -定时器计数器工作原理及工作方式

    时钟周期 时钟周期 T 是时序中最小的时间单位 xff0c 具体计算的方法就是 1 时钟源频率 xff0c 假如单片的晶振是 11 0592M xff0c 那么对于我们这个单片机系统来说 xff0c 时钟周期 61 1 11059200 秒
  • 单片机 LCD1602

    LCD1602为工业字符型液晶 xff0c LCD表示LiquidCrystal Display 能够同时显示16 x 2 xff08 16列2行 xff09 即32个字符 1602液晶也叫1602字符型液晶 xff0c 它是一种专门用来显
  • javascript进制及进制之间的转换

    计算机中常用的进制数有二进制 八进制 十进制 十六进制 一 十进制 转 其他 span class token keyword var span x span class token operator 61 span span class
  • 解决进入Ubuntu系统花屏的问题

    安装ubuntu后进入系统花屏 详细步骤 详细步骤 开机选择进入Ubuntu的高级系统模式 gt 恢复模式 xff0c 选择root xff0c 进入命令行界面 输入 xff1a sudo vim etc default grub 打开gr
  • 李沐:用随机梯度下降来优化人生

    用SGD来优化人生 要有目标目标要大坚持走痛苦的卷可以躺平四处看看快也是慢赢在起点很远也能到达独一无二简单最好 转载 xff0c 用随机梯度下降来优化人生1 xff1a https zhuanlan zhihu com p 41400931
  • Ubuntu18.04 + kinova joca2机械臂 + RealSense D435i深度相机进行eye to hand手眼标定

    文章目录 前言一 前期准备1 RealSense D435i安装2 Kinova ROS安装 二 手眼标定环境配置1 visip2 aruco ros3 easy handeye 三 标定前准备1 终端python版本设置2 opencv4
  • 相机成像原理详解

    ybwu 64 whu edu cn 被摄景物反射出的光线通过照相镜头 xff08 摄景物镜 xff09 和控制曝光量的快门聚焦后 xff0c 被摄景物在暗箱内的感光材料上形成潜像 xff0c 经冲洗处理 xff08 即显影 定影 xff0
  • python和numpy matplotlib版本匹配,以及安装指定版本库

    python和numpy matplotlib版本匹配 xff0c 以及安装指定版本库 文章目录 python和numpy matplotlib版本匹配 xff0c 以及安装指定版本库一 卸载二 安装三 验证 Matplotlib is a

随机推荐

  • wegame桌面丢失(所有软件都可用)

    1 打开此电脑 2 右上角搜索引擎里输入代码tgp daemon 即可 如果想要放在左面或者添加快捷方式邮寄此软件 会出现 创建快捷方式 或者固定到 开始位置
  • 人脸识别的LOSS(多分类Softamx)

    人脸1 xff1a N应用 xff1a https blog csdn net intflojx article details 81278330 超多分类的Softmax 早期深度人脸识别方法 xff0c 框架为CNN 43 Softma
  • 一些范冰冰的照片

    你可以说她YD xff0c 也可以说她XJ xff0c 但是你不能否认她的美丽 偶就是无敌小超人 xff0c 克塞前来拜访 热门圈子 xff1a 王仁甫 张佑赫 王绍伟 tony 明道 快速评论 共 19 条回复
  • vnc的默认端口修改

    http inthirties com 90 thread 1261 1 1 html vnc的默认端口是5901 xff0c 这个说法是不对的 vnc并不是只有一个端口 以前另一个文章介绍了nvcserver的配置用户的过程 xff0c
  • JavaScript 关于进制之间的转换实现

    JS要实现进制之间的转换 xff0c 可以利用parseInt xff0c toString完成 1 n进制 gt 10进制 xff1a parseInt string radix 2 n进制 gt radix进制 xff1a a toSt
  • VNC Server配置

    VNC登录用户缺省是root xff0c 但在安装oracle时必须用oracle用户的身份登录 xff0c 下面我们就以oracle为例说明如何配置VNC xff0c 从而可以使用不同的用户登录到主机 步骤描述如下 xff1a 步骤一 x
  • 文字检测识别技术的未来发展趋势和面临的选择

    未来发展趋势和面临的挑战 1文本检测与识别技术的未来发展趋势 场景文本检测与识别的研究发展趋势 场景文本检测识别目前来讲大概分为场景文本检测 场景文本识别 以及端到端文本检测和识别三个主要的方向 其中文本检测方法主要是包括基于文本框回归的分
  • [SIGCOMM2016]Robotron: Top-down Network Management at Facebook Scale

    Facebook面临的问题 分布式配置 xff1a 有很多配置需要在不同的系统中更改 多个Domain xff1a Facebook需要管理网络的网络版本控制 xff1a 需要管理不同版本的网络同时运行 依赖 xff1a 将新路由器添加到
  • Adversary Attack(对抗攻击)论文阅读笔记

    引言 最近开始学习Adversary Attack 对抗攻击 有关的内容 xff0c 于是便从Ian GoodFollow的论文开始读起 xff0c 后面每篇博客都会列举三篇的阅读笔记 xff0c 来记录学习的经历 如果有讲得不到位或者您有
  • 海睿思分享 | 浅谈数仓指标体系管理

    什么是指标 xff1f 指标 xff0c 是用于衡量事物发展程度的单位或方法 xff0c 也常被称作度量 xff0c 通常情况下也是报表统计的字段 xff0c 例如 xff1a 人口数 营业收入 用户数 利润率 成功率 失败率 覆盖率等 1
  • PyTorch 实战:计算 Wasserstein 距离

    xff08 给 Python开发者 加星标 xff0c 提升Python技能 xff09 编译 xff1a 机器之心 xff0c 作者 xff1a Daniel Daza 最优传输理论及 Wasserstein 距离是很多读者都希望了解的基
  • Java8 Lambda表达式教程

    1 什么是 表达式 表达式本质上是一个匿名方法 让我们来看下面这个例子 xff1a public int add int x int y return x 43 y 转成 表达式后是这个样子 xff1a int x int y gt x 4
  • VNC连接失败:The connection was refused by the host computer

    解决方法 xff1a 1 用Xshell登陆自己的服务器 2 在命令行中输入vncserver 命令行中出现 xff1a Warning optimal6 2 is taken because of tmp X2 lock Remove t
  • ACM会用到的一点数学知识

    1 费马小定理 xff1a a p mod p 61 a p为素数 xff0c 且a不是p的倍数 2 数n的约数个数 xff1a n分解因数为p1 s1 p2 s2 pm sm 则约数个数为 s1 43 1 s2 43 1 sm 43 1
  • SVN的Status总结

    执行SVN up和svn merge等命令出现在首位置的各字母含义如下 xff1a 无修改 A 新增 C 冲突 D 删除 G 合并 I 忽略 M 改变 R 替换 X 未纳入版本控制 xff0c 但被外部定义所用 未纳入版本控制 该项目已遗失
  • linux 下中文编码转换问题

    目标 xff1a 接收网络传过来的字节序 xff0c 转换字符串 全英文的情况下直接保存string即可 xff0c 带中文的情况试了好久故做如下记录 1 首先确认gcc 应该是utf 8的格式来存储字符串的 通过cmake 加入 fexe
  • Go 语言汇编快速入门

    在 Go 的源码中包含大量汇编语句 xff0c 最优秀的示例代码位于 math big runtime 和 crypto 这些库中 xff0c 但是从这里入门的话实在太过于痛苦 xff0c 这些示例都是着力于系统操作和性能的运行代码 对于没
  • 从零开始搭建Raspberry Pi机器视觉编程环境

    从零开始搭建Raspberry Pi机器视觉编程环境 本文主要包括如下内容 xff1a 安装Raspbian系统 连接和设置网络 安装中文支持 用电脑控制树莓派 通过SSH远程登录树莓派命令行界面 安装VNC远程登录树莓派图形桌面 通过串口
  • loss函数之margin改进方法

    最近sphereface人脸方法是目前开源人脸中最有效的方法 xff0c 通过改进我也获得了lfw acc 99 7 的结果 xff0c 下面几篇也是对sphereface改进的论文 xff1a AM Additive Margin Sof
  • mininet学习记录之openflow

    一 FAQ mn 指令的默认controller是ovs controller xff0c 最多只支持16个switch xff0c 如果要支持更多 xff0c 必须换controller OpenFlow reference implem