ryu 下发流表配置
资料链接:http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
运行ryu进程:
ryu-manager --ofp-tcp-listen-port 6655 --wsapi-port 8080 --verbose /usr/lib/python2.7/site-packages/ryu/app/ofctl_rest.py
#! /bin/python import re
import urllib
import urllib2
import json
import requests
import json
import time # get switch dpid
post_url = 'http://127.0.0.1:8080/stats/switches';
req = urllib2.Request(post_url)
response = urllib2.urlopen(req)
dpid_data = response.read().strip('[]') # show switch group
post_url = 'http://127.0.0.1:8080/stats/groupdesc/%s' % dpid_data;
req = urllib2.Request(post_url)
response = urllib2.urlopen(req)
print response.read() # add switch group
post_url = 'http://127.0.0.1:8080/stats/groupentry/add';
group_data = {
"dpid": dpid_data,
"type": "SELECT",
"fields": "ip_src",
"group_id": 1,
"buckets": [{
"weight": 1,
"actions": [{
"type": "OUTPUT",
"port": 1
}]
},
{
"weight": 1,
"actions": [{
"type": "OUTPUT",
"port": 2
}]
},
{
"weight": 1,
"actions": [{
"type": "OUTPUT",
"port": 3
}]
}]
}
data = json.dumps(group_data)
req = urllib2.Request(post_url)
response = urllib2.urlopen(req,data=data)
print response.read() # show flows
post_url = 'http://127.0.0.1:8080/stats/flow/%s' % dpid_data;
req = urllib2.Request(post_url)
response = urllib2.urlopen(req)
print response.read() # add flow
post_url = 'http://127.0.0.1:8080/stats/flowentry/add';
flows_data = {
"dpid": dpid_data,
"table_id": 0,
"cookie": 10000,
"priority": 1000,
"match":{
"dl_type": "0x8000",
"in_port": 5,
"dl_vlan": 100,
#"dl_vlan": "0x1005" # Describe sum of VLAN-ID(e.g. 5) | OFPVID_PRESENT(0x1000)
"eth_src": "aa:bb:cc:11:22:33",
"eth_dst": "aa:bb:cc:11:22:33",
"ipv4_dst": "192.168.10.10/255.255.255.0", "eth_type": 2048,
"ipv4_src": "192.168.0.1", "eth_type": 2048
},
"actions":[
{
"type": "PUSH_VLAN",
"ethertype": 33024 # Ethertype 0x8100(=33024): IEEE 802.1Q VLAN-tagged frame
},
{
"type": "SET_FIELD",
"field": "vlan_vid",
"value": 4102 # Describe sum of vlan_id(e.g. 6) | OFPVID_PRESENT(0x1000=4096)
},
{
"type": "OUTPUT",
"port": 20
}
]
}
data = json.dumps(flows_data)
req = urllib2.Request(post_url)
response = urllib2.urlopen(req,data=data)
print response.read()
ryu 下发流表配置的更多相关文章
- SDNLAB技术分享(四):利用ODL下发流表创建VxLAN网络
邓晓涛,当前就职于江苏省未来网络创新研究院,是CDN团队的一名研发人员,主要从事SDN相关的研发相关工作.曾就职于三星电子于先行解决方案研发组任高级工程师.思科系统于云协作应用技术部(CCATG)任工 ...
- FAST:通过Floodlight控制器下发流表
参考: Floodlight+Mininet搭建OpenFlow(四):流表操作 通过Floodlight控制器下发流表 下发流表的方式有两种: 1.借助Floodlight的北向API,利用curl ...
- Floodlight下发流表过程分析
https://blog.csdn.net/vonzhoufz/article/details/32166445 当一个packet到达openflow交换机,会进行流表的匹配,如果没有找到相应的流表 ...
- OpenDayLight Beryllium版本 下发流表实现hardtimeout
1. 实验拓扑 2. 创建拓扑 from mininet.topo import Topo class MyTopo(Topo): def __init__(self): # initilaize t ...
- onos控制器通过REST API下发流表
onos控制器REST API地址:http://192.168.43.14:8181/onos/v1/docs/ stream书写格式: { "id": "675540 ...
- ryu的RESTAPI简介——我主要用于下发和查看流表
一.Rest API简介 REST即表述性状态传递(RepreSentational State Transfer),是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性. 表 ...
- openflow流表项中有关ip掩码的匹配的问题(控制器为ryu)
一.写在前面 唉,被分配到sdn安全方向,顶不住,顶不住,感觉搞不出来什么有搞头的东西.可若是让我水水的应付,我想我也是做不到的,世上无难事只怕有心人.好了,进入正题,本次要讨论的时一个比较细节的东西 ...
- 实验 6:OpenDaylight 实验——OpenDaylight 及 Postman 实现流表下发
一.实验目的 熟悉 Postman 的使用;熟悉如何使用 OpenDaylight 通过 Postman 下发流表. 二.实验任务 流表有软超时和硬超时的概念,分别对应流表中的 idle_timeou ...
- 实验 6:OpenDaylight 实验——OpenDaylight 及 Postman 实现流表下发
一.实验目的 熟悉 Postman 的使用:熟悉如何使用 OpenDaylight 通过 Postman 下发流表. 二.实验任务 流表有软超时和硬超时的概念,分别对应流表中的 idle_timeou ...
随机推荐
- Java内存分配及值、引用的传递
关于堆栈的内容网上已经有很多资料了,这是我找的加上自己理解的一篇说明文: 一.内存区域类型 1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制: 2. 栈:存放基本类型的变量数 ...
- C#中StreamWriter与BinaryWriter的区别兼谈编码。
原文:http://www.cnblogs.com/ybwang/archive/2010/06/12/1757409.html 参考: 1. <C#高级编程>第六版 2. 文件流和数据 ...
- [ShaderStaff] Vignette Effect
操作系统:Windows8.1 显卡:Nivida GTX965M 开发工具:GLSL | C 最近在看Cardboard实现,其中关于畸变的着色器代码中有加入 晕影Vignette 效果的实现,固在 ...
- asp.net webapi 参数绑定总结
首先必须得更正下自己一直以来对于get请求和post请求理解的一个误区:get请求只能通过url传参,post请求只能通过body传参. 其实上面的理解是错误的,翻阅了不少资料及具体实践,正确理解应该 ...
- 【Java】JavaIO(一)、基础知识
一.常用概念介绍 Java的IO,实现输入输出的基础,可以方便的实现数据的输入输出 二.流的分类 1. 按照流向来分: a). 输入流:向应用程序输 b). 输出流:从应用程序中输出 输入输出流是站在 ...
- 未能映射路径"/"
1.检查Server.MapPath 这里面需要像这样: ~/uploads/ 有~符号. 2.应用程序池出现问题,换一个应用程序池,或者重启程序池.
- 分析一则halcon抓边拟合直线的小案例
例图: 完整算法: read_image (Image, 'C:/Users/Administrator/Desktop/1.png') threshold (Image, Regions, , ) ...
- 4.jsp学习
1.创建 2.命名 3.utf-8防止乱码 5.导出WAR文件
- spring property标签中的 ref属性和ref 标签有什么不同? 如下:<property name="a" ref="b" />
spring property标签中的 ref属性和ref 标签有什么不同? 如下:<property name="a" ref="b" /> sp ...
- WEB开发常见错误-php无法操作数据库
Ubuntu 安装phpmyadmin 和配置 ubuntu 安装 phpmyadmin 两种 : 1: apt-get 安装 然后使用 已有的虚拟主机目录建立软连接 sudo apt-g ...