Floodlight 用Static Flow Pusher 改变流表
来源:互联网 发布:ubuntu16.04 caffe gpu 编辑:程序博客网 时间:2024/06/09 14:08
实验拓扑:
1.登录mininet
sudo ssh -x openflow@openflow
2.启动floodlight
写一个把启动floodlight小脚本,用shell来运行
#!/bin/shcd /home/fei/workspace/floodlight-0.90/targetjava -jar floodlight.jar
终端中运行这个脚本
3.构建拓扑
sudo mn --topo single,3 --controller=remote --ip=192.168.131.129 --port=6633
4.h2,h3,h4三个host相互ping,可以看到默认是可以拼通的,而且从每个host,第一个ping包time值比较大,可以猜测出默认转发端口是floodlight控制器
可以在floodlight包的
src/main/resources/floodlightdefault.properties文件中删除
net.floodlightcontroller.forwarding.Forwarding这一项,则默认是ping不同的
5.至此基本网络已经完成,接下来我们使用Static Flow Pusher 改变流表,让h2 ping不通h3,h4。 h3与h4能ping通,转发口使用floodlight控制器,我们设置从端口1的数据从端口1转发回去,也可以在actions域置为空,则丢弃从端口1来的包。
python代码:
import httplibimport jsonclass StaticFlowPusher(object): def __init__(self, server): self.server = server def get(self, data): ret = self.rest_call({}, 'GET') return json.loads(ret[2]) def set(self, data): ret = self.rest_call(data, 'POST') return ret[0] == 200 def remove(self, objtype, data): ret = self.rest_call(data, 'DELETE') return ret[0] == 200 def rest_call(self, data, action): path = '/wm/staticflowentrypusher/json' headers = { 'Content-type': 'application/json', 'Accept': 'application/json', } body = json.dumps(data) conn = httplib.HTTPConnection(self.server, 8080) conn.request(action, path, body, headers) response = conn.getresponse() ret = (response.status, response.reason, response.read()) print ret conn.close() return retpusher = StaticFlowPusher('192.168.131.129') #控制器ipflow1 = { 'switch':"00:00:00:00:00:00:00:01", "name":"flow-mod-1", "cookie":"0", "priority":"32768", "ingress-port":"1", "active":"true", "actions":"output=1" }flow2 = { 'switch':"00:00:00:00:00:00:00:01", "name":"flow-mod-2", "cookie":"0", "priority":"32768", "ingress-port":"2", "active":"true", "actions":"output=flood" }flow3 ={ 'switch':"00:00:00:00:00:00:00:01", "name":"flow-mod-3", "cookie":"0", "priority":"32768", "ingress-port":"3", "active":"true", "actions":"output=flood" }#添加流表flow1,flow2,flow3pusher.set(flow1) pusher.set(flow2)pusher.set(flow3)
运行python flow1.py,可以看到按代码添加了3个流表
在mininet执行
dpctl dump-flows tcp:127.0.0.1:6634查看流表,与代码一致
也可以在floodlight的web页面看到流表项
实验结果如下:
(1)h3与h4能ping通
(2)h2与h3不能ping通,当然h2与h4也是如此
下面将流表flow2,flow3项"actions":"output=flood"字段改成相应的端口,即2转发到3,3转发到2
通过ping h3,h4,可以看到第一个ping 包time值明显缩小,因为添加了直接转发的表项,而不是上面那样的经过控制器,不过跟后面的包time值还不是一个数量级,因为对控制器不是很熟悉,这些细节还有待学习。
0 0
- Floodlight 用Static Flow Pusher 改变流表
- Floodlight 用Static Flow Pusher 改变流表规则
- Floodlight Static Flow Pusher API
- Floodlight Static Flow Pusher API
- Floodlight用StaticFlowPusher操作流表
- Floodlight下发流表过程分析
- Floodlight Mininet自定义拓扑及流表
- Floodlight+Mininet搭建OpenFlow(四):流表操作
- Floodlight Mininet自定义拓扑及自定义流表
- Floodlight 启动及下发流表流程分析
- SDN启蒙(1):Floodlight下发流表过程分析
- hdu2821 Pusher
- 改变STATIC文本颜色
- SDN启蒙(2):Floodlight 启动及下发流表流程分析
- floodlight控制器中通过REST API下发流表遇到的坑
- Floodlight出现错误:Error! Check the fields specified for the flow.Make sure IPv4 fields are not mixed wi
- MFC改变static text颜色
- MFC改变static text颜色
- 屏蔽兼容模式,防止浏览器改变影响页面
- MariaDB/Mysql之主从架构的复制原理及主从/双主配置详解(一)
- 适配器模式
- MySQL binlog
- 我们的下一代教育之一:认字篇
- Floodlight 用Static Flow Pusher 改变流表
- zookeeper3.4.6Linux单机部署
- C/C++除法实现方式及负数取模详解
- Oracle 学习笔记 16 -- 游标(PL/SQL)
- FL2440移植Linux内核
- Java反射实例
- java @Override的作用
- Linux Core Dump
- Job Interview: Why Only 3 Questions Really Matter