SDN环境搭建(mininet,OVS,ryu安装及命令)
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
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安装及命令)的更多相关文章
- LNAMP服务器环境搭建(手动编译安装)
LNAMP服务器环境搭建(手动编译安装) 一.准备材料 阿里云主机一台,操作系统CentOS 6.5 64位 lnamp.zip包(包含搭建环境所需要的所有软件) http://123.56.144. ...
- odoo开发环境搭建(三):安装odoo依赖的python包
odoo开发环境搭建(三):安装odoo依赖的python包 http://www.cnblogs.com/jlzhou/p/5940815.html
- odoo开发环境搭建(二):安装Ubuntu 17虚拟机
odoo开发环境搭建(二):安装Ubuntu 17虚拟机 下载镜像文件: 配置网络: 安装vmware tools: 配置共享文件夹: 选中虚拟机,右键编辑设置里边配置共享文件夹,指定windows本 ...
- odoo开发环境搭建(一):安装VMware Workstation
odoo开发环境搭建(一):安装VMware Workstation
- Kafka:ZK+Kafka+Spark Streaming集群环境搭建(十)安装hadoop2.9.0搭建HA
如何搭建配置centos虚拟机请参考<Kafka:ZK+Kafka+Spark Streaming集群环境搭建(一)VMW安装四台CentOS,并实现本机与它们能交互,虚拟机内部实现可以上网.& ...
- Kafka:ZK+Kafka+Spark Streaming集群环境搭建(九)安装kafka_2.11-1.1.0
如何搭建配置centos虚拟机请参考<Kafka:ZK+Kafka+Spark Streaming集群环境搭建(一)VMW安装四台CentOS,并实现本机与它们能交互,虚拟机内部实现可以上网.& ...
- Kafka:ZK+Kafka+Spark Streaming集群环境搭建(八)安装zookeeper-3.4.12
如何搭建配置centos虚拟机请参考<Kafka:ZK+Kafka+Spark Streaming集群环境搭建(一)VMW安装四台CentOS,并实现本机与它们能交互,虚拟机内部实现可以上网.& ...
- Kafka:ZK+Kafka+Spark Streaming集群环境搭建(三)安装spark2.2.1
如何搭建配置centos虚拟机请参考<Kafka:ZK+Kafka+Spark Streaming集群环境搭建(一)VMW安装四台CentOS,并实现本机与它们能交互,虚拟机内部实现可以上网.& ...
- Kafka:ZK+Kafka+Spark Streaming集群环境搭建(二)安装hadoop2.9.0
如何搭建配置centos虚拟机请参考<Kafka:ZK+Kafka+Spark Streaming集群环境搭建(一)VMW安装四台CentOS,并实现本机与它们能交互,虚拟机内部实现可以上网.& ...
- appium 环境搭建(不推荐安装此版本appium,推荐安装appium desktop)
一:安装node.js 1.双击这个软件 2.一键安装,全都下一步,不要私自更改安装路径 3.打开cmd,输入npm,出现如下截图表示成功 二:安装appium 1.双击appium-installe ...
随机推荐
- AsciiDoc Markup Syntax Summary
AsciiDoc Markup Syntax Summary ============================== A summary of the most commonly used ma ...
- Windows Tomcat 安装
JDK的安装可以参考 http://www.cnblogs.com/emanlee/p/3702535.html ,然后安装apache-tomcat step1:http://tomcat.apac ...
- C#开发BHO插件UrlTrack
最近忽然突发奇想,想统计一下我最经常上的网站是哪些,并且在这些网站上都停留了多久.为此决定写一个BHO插件来做这件事. BHO(Browser Help Objects)是实现了特定接口(IObjec ...
- inline-block在ie6中的经典bug
众所周知,给元素设置 inline-block ,可以让ie下的元素出发layout:1. 但是,当给元素设置 inline-block 后,在另外一个class 样式(非设置inline-block ...
- 进程控制的一些api
转自:http://blog.chinaunix.net/uid-26833883-id-3222794.html 1.fork() ,vfork() 创建进程 2‘ exec()类 在进程中执行其他 ...
- 1218. Episode N-th: The Jedi Tournament(bfs)
1218 简答题 对于当前点 判断每个点是否可达 #include <iostream> #include<cstdio> #include<cstring> #i ...
- [原创]Android中LocationManager的简单使用,获取当前位置
Android中LocationManager的提供了一系列方法来地理位置相关的问题,包括查询上一个已知位置:注册/注销来自某个 LocationProvider的周期性的位置更新:以及注册/注销接近 ...
- drop.delete.trauncat的区别
delete删除数据,保留表结构,可以回滚,如果数据量大,很慢,回滚是因为备份了删除的数据(删除数据时有两个动作,删除和备份) truncate删除所有数据,保留表结构,不可以回滚,一次全部删除所有数 ...
- UVa 11427 (期望 DP) Expect the Expected
设d(i, j)表示前i局每局获胜的比例均不超过p,且前i局共获胜j局的概率. d(i, j) = d(i-1, j) * (1-p) + d(i-1, j-1) * p 则只玩一天就就不再玩的概率Q ...
- 《分销系统-原创第一章》之“多用户角色权限访问模块问题”的解决思路( 位运算 + ActionFilterAttribute )
此项目需求就是根据给用户分配的权限,进行相应的权限模块浏览功能,因为项目不是很大,所以权限没有去用一张表去存,我的解决思路如下,希望大家给点建议. 数据库用户表结构如下: 数据库表梳理: BankUs ...