Floodlight+Mininet搭建OpenFlow(四):流表操作
Floodlight+Mininet搭建OpenFlow(四):流表操作
这一节主要讲讲这个环境下的流表操作。
一、如何操作流表:
此环境下,或者说,在使用了OpenvSwitch作为DataPath的环境下,OpenvSwitch提供了工具dpctl以及vsctl可以用来直接与DataPath进行交互,向DataPath中读取或者写入流表。但是这种方式忽略了controller,所以,这里我们引入Floodlight的static flow pusher机制。
简单来说,Floodlight将自己的API通过Rest Api的形式向外暴露,关于Rest Api,简单来讲,就是讲程序的API封装成为通用的http GET/PUT的形式,这样的话无需关注程序实现细节,通过发送http请求即可完成API操作。
所以,我们可以通过Floodlight的Restful api来向Floodlight请求各种信息,包括交换机状态,能力,拓扑等等,而static flow pusher这套机制则是通过Restful api来进行流表的操作,包括添加,删除流表等等。
需要注意:通过Floodlight的Restful api返回的信息是以json格式封装的;Floodlight中的配置、系统、流表信息是存于内存中的(通过Rest api可以知道),以后Floodlight可能会将这个信息放于独立的数据库而不是内存中。
二、流表试验:
1)Restful api形式:
由(三)中所述,启动环境,这里Floodlight需要指定配置文件,取消forwarding模块的载入。此时进入mininet后pingall是ping不通的。
我们先通过Floodlight的Restful api来加入流表项:
sudo curl -d ‘{“switch”: “00:00:00:00:00:00:00:01″, “name”:”flow-mod-1″, “cookie”:”0″, “priority”:”32768″, “ingress-port”:”1″,”active”:”true”, “actions”:”output=2″}’ http://<controller_ip>:8080/wm/staticflowentrypusher/json
sudo curl -d ‘{“switch”: “00:00:00:00:00:00:00:01″, “name”:”flow-mod-2″, “cookie”:”0″, “priority”:”32768″, “ingress-port”:”2″,”active”:”true”, “actions”:”output=1″}’ http://<controller_ip>:8080/wm/staticflowentrypusher/json
这里注意两点:一是每个流表项的名字不能一样,二是以上的流表项可以看出,是基于port的匹配。
我们再通过Floodlight的Restful api来读取流表,以下两个都可以:
sudo curl http://192.168.1.100:8080/wm/core/switch/1/flow/json
sudo curl http://192.168.1.100:8080/wm/staticflowentrypusher/list/all/json
不通之处在于,一个通过core,一个通过static flow pusher来获取流表项,当然,内容不会有太大差别,返回结果:
流表操作%20%20SDNAP原创%20%20SDNAP_files/ad856e84a3957a50fb78013c8a5deada.jpg)
流表操作%20%20SDNAP原创%20%20SDNAP_files/a67ac9b613c30d2f3cfde3111773b5b8.jpg)
OK,此时mininet中执行pingall,发现host间能相互ping通,也可以进WEB UI,看看效果。
最后,删除掉流表项,以下一个是删除全部,一个是删除某一项:
sudo curl http://192.168.1.208:8080/wm/staticflowentrypusher /clear/<dpid>/json
sudo curl -X DELETE -d ‘{“name”:”flow-mod-1″}’ http://<controller_ip>:8080/wm/staticflowentrypusher/json
最后,在mininet中再执行pingall,hots间不能通。
2)DataPath工具形式
所谓DataPath工具,就是在DataPath开发的时候,作为控制DataPath的一套工具。实际上在OpenFlow环境中控制DataPath是应该由controller来实现的。但为了调试等方便还是会提供直接控制DataPath的工具。举例来说,controller与DataPath交互默认是6633端口,而OpenvSwitch提供的dpctl等工具与OpenvSwitch交互的端口是6634.
比较常用的有:
dpctl show tcp:<datapath-ip>:6634 #显示基本信息
dpctl dump-flows tcp:<datapath-ip>:6634 #显示流表
dpctl add-flow tcp:127.0.0.1:6634 in_port=2,idle_timeout=360, actions=output:3 #添加流表
参考资料:
Restful Api:
http://developer.51cto.com/art/200908/141825.htm
http://kb.cnblogs.com/page/114905/
http://blog.csdn.net/excel_bat/article/details/7285241
Floodlight的static flow pusher机制以及REST api:
http://www.openflowhub.org/display/floodlightcontroller/Static+Flow+Pusher
http://www.openflowhub.org/display/floodlightcontroller/REST+API
json:
http://baike.baidu.com/view/136475.htm
早期在blog.wangchang.net 网站,因博主空间不稳定,故将相关文字转过来。作者:SDN QQ群 #王畅
本文链接:http://www.sdnap.com/sdnap-post/1817.html \ 本文标签: floodlight, Mininet
本站声明:本站原创文章可以转载,请注明来自SDNAP.com - SDN联合播报
欢迎光临:SDN联合播报 | 中国第一家报道SDN的独立站点 | SDN交流平台 | SDN开源社区 | SDN技术沙龙
欢迎继续浏览
Openflow世界 发布于:2013年08月5日 下午 6:24,转载请注明并保留本文链接;
- 发布者站点/微博:http://weibo.com/2824083995, 欢迎关注或者发邮箱给他/她;
流表操作%20%20SDNAP原创%20%20SDNAP_files/floodlight-mininet.jpg)
流表操作%20%20SDNAP原创%20%20SDNAP_files/th.png)
流表操作%20%20SDNAP原创%20%20SDNAP_files/sdnap_news2.jpg)
流表操作%20%20SDNAP原创%20%20SDNAP_files/6e18493142a95e4b03d9e8b7a663ead7.jpg)
流表操作%20%20SDNAP原创%20%20SDNAP_files/06bcad82aed963a0486587b3541e843e.jpg)
流表操作%20%20SDNAP原创%20%20SDNAP_files/ShaihaiJiaoTong-SDN-20130716.jpg)
流表操作%20%20SDNAP原创%20%20SDNAP_files/79964884d40403580738478170f3d491.jpg)
流表操作%20%20SDNAP原创%20%20SDNAP_files/2522b8046923975bce764957e693dd8e.jpg)
流表操作%20%20SDNAP原创%20%20SDNAP_files/6006792c37c9c668165479c8f2e8f3e5.jpg)
流表操作%20%20SDNAP原创%20%20SDNAP_files/5e96bf62b9b2c18fdb65564b4a18fd1f.gif)
流表操作%20%20SDNAP原创%20%20SDNAP_files/42485834c21a1f6e85be9859b093cf1e.jpg)
流表操作%20%20SDNAP原创%20%20SDNAP_files/QQ%25e6%2588%25aa%25e5%259b%25be20130514155953.jpg)
流表操作%20%20SDNAP原创%20%20SDNAP_files/ea065752d29892b23ae43de5011e9ff3.jpg)
流表操作%20%20SDNAP原创%20%20SDNAP_files/testing_centec_v330.png)
流表操作%20%20SDNAP原创%20%20SDNAP_files/CNW_SDN.jpg)
流表操作%20%20SDNAP原创%20%20SDNAP_files/3-ethane-molecule-300x223.jpg)
流表操作%20%20SDNAP原创%20%20SDNAP_files/arista-SDN-20130716.jpg)
流表操作%20%20SDNAP原创%20%20SDNAP_files/81d06921381e09cdf78ed0f8a92df105.jpg)
流表操作%20%20SDNAP原创%20%20SDNAP_files/76cfddb8469f6c73765a32277279920c.jpg)
流表操作%20%20SDNAP原创%20%20SDNAP_files/sdnap_salon.png)