1、mininet安装与使用

1.1mininet安装

ubuntu 12.04/14.04/14.10      命令行  sudo apt-get install mininet

1.2 mininet基本命令

nodes:查看全部节点

net:查看链路信息

dump:查看各节点详细信息

mn –c:mininet退出后,清理

pingall:测试所有结点是否连通

网络调试命令:

格式:node cmd

举例: h1 ifconfig

h1 ping h2

h1 ping –c 3 h2

打开某结点控制终端:

格式:xterm node

举例:xterm h1

使用link命令,禁用或启用某条链路,格式为 link node1 node2 up/down,例如临时禁用s1跟h2之间的链路,可以用

link s1 h2 down

--mac   The --mac option is super-useful, and sets the switch MAC and host MAC and IP addrs to small, unique, easy-to-read IDs.

--switch ovsk   使用openvswitch交换机

--controller=remote --ip=[controller IP] --port=[controller listening port]

设置远端控制器

--topo   定义网络拓扑

1.单交换机

--topo single,n n表示主机数

2.线性拓仆

--topo linear,n n表示n个交换机直线连接

3.树状拓仆

--topo tree,depth=a,fanout=b depth表示树深度,fanout表示每个结点有几个子结点。所有叶子结点都为主机,非叶子结点为交换机

4自定义拓扑

启动

sudo mn --custom ~/mininet/custom/mytopo.py --topo=mytopo --controller=remote,ip=<>,port=6633

openflow协议设定

启动支持openflow1.3的交换机

sudo mn --controller=remote,ip=10.108.125.9,port=6633 --switch ovsk,protocols=OpenFlow13

设置链路属性

--link:链路属性可以是默认Link及TCLink。将链路类型指定为tc后,可以进一步指定具体参数。具体参数如下命令显示:

--link tc,bw=<>,delay=<>,loss=<>,max_que_size=<>

bw表示链路带宽,使用 Mb/s为单位表示;时延delay以字符串形式表示,如'5ms'、 '100us'、'1s';loss表示数据丢包率的百分比,用0到100之间的一个百分数表示;max_queue_size表示最大排队长度,使用数据包的数量表示。

修改虚拟的主机的ip以及mask地址

h1 ifconfig h1-eth0 10.108.126.3 netmask 255.255.255.01

2、OVS安装与使用

2.1 OVS安装

预先安装

apt-get install aptitude

aptitude install dh-autoreconf

编译

wget http://openvswitch.org/releases/openvswitch-2.1.2.tar.gz

tar zxvf openvswitch-2.1.2.tar.gz && cd openvswitch-2.1.2

./boot.sh

./configure --with-linux=/lib/modules/`uname -r`/build

make -j && sudo make install

sudo make modules_install

sudo modprobe gre

sudo modprobe openvswitch

sudo modprobe libcrc32c

  • 使用 lsmod |grep openvswitch 確認ovs正確地掛載起來
  • ./configure 部份其實還可以下一個 --prefix= 參數, 可以讓openvswitch 完全裝在該目錄底下而不會亂掉

配置数据库ovsdb

ovsdb-tool create /usr/local/etc/openvswitch/conf.db /usr/local/share/openvswitch/vswitch.ovsschema

  • 建立一次即可, 如果設定有問題的話可以把conf.db砍掉重建

启动数据库 ovsdb-server (no ssl)

ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock --remote=db:Open_vSwitch,Open_vSwitch,manager_options --pidfile --detach --log-file

  • cat /usr/local/var/log/openvswitch/ovsdb-server.log 可查到 ovsdb log

启动ovs-vsctl

ovs-vsctl --no-wait init

启动ovs-switchd 功能

ovs-vswitchd --pidfile --detach --log-file

  • /usr/local/var/log/openvswitch/ovs−vswitchd.log 可查到 ovs-vswitchd log
  • ps aux |grep ovs,检查进程

2.2OVS使用

添加网桥

添加名为br0的网桥

ovs-vsctl add-br br0

将网卡eth0挂接到网桥br0上

ovs-vsctl add-port br0 eth0

这个时候,如果挂的插着外网网线的网卡,将不能上网。删掉之后即恢复。

查看结果

ovs-vsctl show

配置QOS,比如队列和限速
  sudo ovs-vsctl -- set Port eth2 qos=@newqos  -- --id=@newqos create QoS type=linux-htb other-config:max-rate=1000000000 queues=0=@q0,1=@q1 -- --id=@q0 create  Queue dscp =1 other-config:min-rate=100000000 other-config:max-rate=100000000 -- --id=@q1 create Queue other-config:min-rate=500000000
  ovs-vsctl clear Port eth2 qos

sudo ovs-vsctl list qos
  sudo ovs-vsctl destroy qos _uuid
  sudo ovs-vsctl list qos
  sudo ovs-vsctl destroy queue _uuid

配置流镜像

sudo ovs-vsctl -- set Bridge br-int mirrors=@m -- --id=@tap6a094914-cd get Port tap6a094914-cd -- --id=@tap73e945b4-79 get Port tap73e945b4-79 -- --id=@tapa6cd1168-a2 get Port tapa6cd1168-a2 -- --id=@m create Mirror name=mymirror select-dst-port=@tap6a094914-cd,@tap73e945b4-79 select-src-port=@tap6a094914-cd,@tap73e945b4-79 output-port=@tapa6cd1168-a2

sudo ovs-vsctl remove Bridge br0 mirrors mymirror
sudo ovs-vsctl clear Bridge br-int mirrors

配置流监控sflow
   sudo ovs-vsctl -- --id=@s create sFlow agent=eth2 target=\"10.0.0.1:6343\" header=128 sampling=64 polling=10  -- set Bridge br-int sflow=@s
   sudo ovs-vsctl -- clear Bridge br-int sflow
配置流规则
    sudo ovs-ofctl add-flow br-int idle_timeout=0,in_port=2,dl_type=0x0800,dl_src=00:88:77:66:55:44,dl_dst=11:22:33:44:55:66,nw_src=1.2.3.4,nw_dst=5.6.7.8,nw_proto=1,tp_src=1,tp_dst=2,actions=drop
    sudo ovs-ofctl del-flows br-int in_port=2 //in_port=2的所有流规则被删除
    sudo ovs-ofctl  dump-ports br-int
    sudo ovs-ofctl  dump-flows br-int
    sudo ovs-ofctl show br-int //查看端口号
    支持字段还有nw_tos,nw_ecn,nw_ttl,dl_vlan,dl_vlan_pcp,ip_frag,arp_sha,arp_tha,ipv6_src,ipv6_dst等;
    支持流动作还有output:port,mod_dl_src/mod_dl_dst,set field等;

配置vxlan gre和ip address

ovs-vsctl add-port br-ex port -- set interface port type=vxlan options:remote_ip=192.168.100.3

ovs−vsctladd−port br-ex port −− set Interface port type=gre options:remote_ip=192.168.100.3

ovs−vsctladd−port br-ex port tag=10 −− set Interface port type=internal//默认为access

ifconfig port 192.168.100.1

显示并学习MAC

ovs-appctl fdb/show br-ex

控制器地址

ovs-vsctl set-controller br-ex tcp:192.168.100.1:6633

ovs-vsctl get-controller br0

ovs-controller ptcp:6633:192.100.100.1

查看OVS上的流表:

ovs-ofctl dump-flows br0

For OpenFlow1.3 you should use "ovs-ofctl -O OpenFlow13 dump-flows s1(switch name)" to view Flow tables.

设置OVS支持的openflow协议版本

sudo ovs-vsctl set Bridge br0 protocols=OpenFlow13

sudo ovs-vsctl clear Bridge br-int protocols

3、ryu安装与使用

1.安裝Ryu 之前需要安装 python 的套件库

sudo apt-get install python-pip python-dev build-essential

2.安装ryu依赖的套件

sudo apt-get install python-eventlet python-routes python-webob python-paramiko

3.six版本不够,卸载再更新

pip uninstall six

pip install six

3.正式安装ryu

pip install ryu

4.如何测试安装成功

在命令行输入 ryu-manager 输出如下图所示,即代表安装成功

SDN环境搭建(mininet,OVS,ryu安装及命令)的更多相关文章

  1. LNAMP服务器环境搭建(手动编译安装)

    LNAMP服务器环境搭建(手动编译安装) 一.准备材料 阿里云主机一台,操作系统CentOS 6.5 64位 lnamp.zip包(包含搭建环境所需要的所有软件) http://123.56.144. ...

  2. odoo开发环境搭建(三):安装odoo依赖的python包

    odoo开发环境搭建(三):安装odoo依赖的python包 http://www.cnblogs.com/jlzhou/p/5940815.html

  3. odoo开发环境搭建(二):安装Ubuntu 17虚拟机

    odoo开发环境搭建(二):安装Ubuntu 17虚拟机 下载镜像文件: 配置网络: 安装vmware tools: 配置共享文件夹: 选中虚拟机,右键编辑设置里边配置共享文件夹,指定windows本 ...

  4. odoo开发环境搭建(一):安装VMware Workstation

    odoo开发环境搭建(一):安装VMware Workstation

  5. Kafka:ZK+Kafka+Spark Streaming集群环境搭建(十)安装hadoop2.9.0搭建HA

    如何搭建配置centos虚拟机请参考<Kafka:ZK+Kafka+Spark Streaming集群环境搭建(一)VMW安装四台CentOS,并实现本机与它们能交互,虚拟机内部实现可以上网.& ...

  6. Kafka:ZK+Kafka+Spark Streaming集群环境搭建(九)安装kafka_2.11-1.1.0

    如何搭建配置centos虚拟机请参考<Kafka:ZK+Kafka+Spark Streaming集群环境搭建(一)VMW安装四台CentOS,并实现本机与它们能交互,虚拟机内部实现可以上网.& ...

  7. Kafka:ZK+Kafka+Spark Streaming集群环境搭建(八)安装zookeeper-3.4.12

    如何搭建配置centos虚拟机请参考<Kafka:ZK+Kafka+Spark Streaming集群环境搭建(一)VMW安装四台CentOS,并实现本机与它们能交互,虚拟机内部实现可以上网.& ...

  8. Kafka:ZK+Kafka+Spark Streaming集群环境搭建(三)安装spark2.2.1

    如何搭建配置centos虚拟机请参考<Kafka:ZK+Kafka+Spark Streaming集群环境搭建(一)VMW安装四台CentOS,并实现本机与它们能交互,虚拟机内部实现可以上网.& ...

  9. Kafka:ZK+Kafka+Spark Streaming集群环境搭建(二)安装hadoop2.9.0

    如何搭建配置centos虚拟机请参考<Kafka:ZK+Kafka+Spark Streaming集群环境搭建(一)VMW安装四台CentOS,并实现本机与它们能交互,虚拟机内部实现可以上网.& ...

  10. appium 环境搭建(不推荐安装此版本appium,推荐安装appium desktop)

    一:安装node.js 1.双击这个软件 2.一键安装,全都下一步,不要私自更改安装路径 3.打开cmd,输入npm,出现如下截图表示成功 二:安装appium 1.双击appium-installe ...

随机推荐

  1. Servlet获取当前服务器的实际路径

    Servlet/Jsp需要操作服务器所拥有的资源,为此需要得到其绝对路径或实际路径, 在Servlet的doGet方法中加入以下代码可以查看服务器的实际路径. package com.mhb; imp ...

  2. 初学者的checklist:对于QTP,你应该知道的9个基本概念

    学习QTP或者其他相关任何工具的方法都是首先把基本的概念过一遍.正所谓砍柴不怕磨刀功,一旦你对这些概念熟悉了,你就可以学习该工具的高级部分了.写这篇文章的目标是列出初学QTP的人应该掌握的所有基本概念 ...

  3. 加密解密(9)Diffie-Hellman密钥交换协议

    过程如下 : 1,小李把KeyX经过加密变化,生成MsgA传给老王. 2,老王得到MsgA,保存在本地. 3,老王把KeyY经过加密变化,生成MsgB传给小李, 4,小李得到MsgB保存在本地, 5, ...

  4. WebBrowser.ObjectForScripting 属性的使用

    主要是winform窗体中使用了webBrowser控件,webBrowser中调用javascript操作窗体里面的后台方法,使用下面的两句. this.webBrowser1.ObjectForS ...

  5. [NYIST16]矩形嵌套(DP,最长上升子序列)

    题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=16 像套娃一样把矩形套起来.先给矩形从小到大排序,然后做最长上升子序列就行 /* ━━━━ ...

  6. Hibernate与Jpa的关系,终于弄懂

    我知道Jpa是一种规范,而Hibernate是它的一种实现.除了Hibernate,还有EclipseLink(曾经的toplink),OpenJPA等可供选择,所以使用Jpa的一个好处是,可以更换实 ...

  7. Codeforces 383A - Milking cows

    原题地址:http://codeforces.com/problemset/problem/383/A 题目大意:有 n 头奶牛,全部看着左边或者右边,现在开始给奶牛挤奶,给一头奶牛挤奶时,所有能看到 ...

  8. Qt之进程间通信(QProcess)

    简述 QProcess可以在应用程序内部与其它进程通信,或启动其它应用程序.与在终端机之类的命令输入窗口上使用名称和参数是一样的,可以使用QProcess提供的函数start()启动进程.可以注册QS ...

  9. UVa 10601 (Polya计数 等价类计数) Cubes

    用6种颜色去染正方体的12条棱,但是每种颜色都都限制了使用次数. 要确定正方体的每一条棱,可以先选择6个面之一作为顶面,然后剩下的四个面选一个作为前面,共有24种. 所以正方体的置换群共有24个置换. ...

  10. Html5大文件断点续传

    大文件分块   一般常用的web服务器都有对向服务器端提交数据有大小限制.超过一定大小文件服务器端将返回拒绝信息.当然,web服务器都提供了配置文件可能修改限制的大小.针对iis实现大文件的上传网上也 ...