第七次上机作业

发布时间:2022-07-02 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了第七次上机作业脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

实验7:基于REST API的SDN北向应用实践一、实验目的能够编写程序调用OPEnDaylight REST API实现特定网络功能;能够编写程序调用Ryu REST API实现特定网络功能。二、实验环境下载虚拟机软件oracle VisualBox或VMware;在虚拟机中安装Ubuntu 20.04 Desktop amd64,并完整安装Mininet、OpenDaylight(Carbon版本)、Postman和Ryu;三、实验要求(一)基本要求OpenDaylight(1) 利用Mininet平台搭建下图所示网络拓扑,并连接OpenDaylight;搭建拓扑:sudo mn --topo=single,3 --mac --controller=remote,ip=127.0.0.1,port=6633 --swITch ovsk,PRotocols=OpenFlow10连接OpenDaylight(ODL目录下):./distribution-karaf-0.6.4-Carbon/bin/karaf(2) 编写Python程序,调用OpenDaylight的北向接口下发指令删除s1上的流表数据。def http_detele(url):url = urlheaders = {'Content-Type': 'application/json'}resp = requests.delete(url, headers=headers, auth=HTTPBasicAuth('admin', 'admin'))return respif name == 'main':url = 'http://127.0.0.1:8181/restconf/config/opendaylight-inventory:nodes/node/openflow:1/'with open('test.json') as f:jstr = f.read()resp = http_detele(url)print(resp.content)

(3) 编写Python程序,调用OpenDaylight的北向接口下发硬超时流表,实现拓扑内主机h1和h3网络中断20s。import requestsFrom requests.auth import HTTPBasicAuthdef http_put(url,jstr):url= urlheaders = {'Content-Type':'application/json'}resp = requests.put(url,jstr,headers=headers,auth=HTTPBasicAuth('admin', 'admin'))return resp

 

 

第七次上机作业

 

 

if name == "main":url='http://127.0.0.1:8181/restconf/config/opendaylight-inventory:nodes/node/openflow:1/flow-node-inventory:table/0/flow/1'with open('206.json') as f:jstr = f.read()resp = http_put(url,jstr)print (resp.content)(4) 编写Python程序,调用OpenDaylight的北向接口获取s1上活动的流表数。import requestsimport jsonfrom requests.auth import HTTPBasicAuthdef http_get(url):url= urlheaders = {'Content-Type':'application/json'}resp = requests.get(url,headers=headers,auth=HTTPBasicAuth('admin','admin'))return resp

if name == "main":url = 'http://127.0.0.1:8181/restconf/operational/opendaylight-inventory:nodes/node/openflow:1/flow-node-inventory:table/0/opendaylight-flow-table-statistics:flow-table-statistics'with open('206.json') as f:jstr = f.read()resp = http_get(url)print(resp.content)Ryu(1) 编写Python程序,调用Ryu的北向接口,实现上述OpenDaylight实验拓扑上相同的硬超时流表下发。json:{"dpid": 1,"match": {"in-port": "1","dl_dst": "00:00:00:00:00:03"},"priority": 65535,"hard_timeout": 20,"cookie": "2","table_id": 0,"actions": []}

第七次上机作业

 

 (2) 利用Mininet平台搭建下图所示网络拓扑,要求支持OpenFlow 1.3协议,主机名、交换机名以及端口对应正确。拓扑生成后需连接Ryu,且Ryu应能够提供REST API服务。

pythonimport requestsfrom requests.auth import HTTPBasicAuthdef http_post(url,jstr):url= urlheaders = {'Content-Type':'application/json'}resp = requests.post(url,jstr,headers=headers)return resp

if name == "main":url='http://127.0.0.1:8080/stats/flowentry/add'with open('206-Ryu-1.json') as f:jstr = f.read()resp = http_post(url,jstr)print (resp.content)(3) 整理一个Shell脚本,参考Ryu REST API的文档,利用curl命令,实现和实验2相同的VLAN。curl -X POST -d '{"dpid": 1,"match": {"in_port": 1},"actions": [{"type": "PUSH_VLAN","ethertype": 33024},{"type": "SET_FIELD","field": "vlan_vid","value": 4096},{"type":"OUTPUT","port": 3}],"priority":5}' http://localhost:8080/stats/flowentry/add

curl -X POST -d '{"dpid": 1,"priority":5,"match": {"in_port": 2},"actions": [{"type": "PUSH_VLAN","ethertype": 33024},{"type": "SET_FIELD","field": "vlan_vid","value": 4097},{"type":"OUTPUT","port": 3}]}' http://localhost:8080/stats/flowentry/add

curl -X POST -d '{"dpid": 1,"match": {"vlan_vid": 0},"actions": [{"type": "POP_VLAN","ethertype": 33024},{"type":"OUTPUT","port": 1}],"priority":5}' http://localhost:8080/stats/flowentry/add

curl -X POST -d'{"dpid": 1,"match": {"vlan_vid": 1},"actions": [{"type": "POP_VLAN","ethertype": 33024},{"type":"OUTPUT","port": 2}],"priority":5}' http://localhost:8080/stats/flowentry/addcurl -X POST -d '{"dpid": 2,"match": {"in_port": 1},"actions": [{"type": "PUSH_VLAN","ethertype": 33024},{"type": "SET_FIELD","field": "vlan_vid","value": 4096},{"type":"OUTPUT","port": 3}],"priority":5}' http://localhost:8080/stats/flowentry/add

curl -X POST -d '{"dpid": 2,"match": {"in_port": 2},"actions": [{"type": "PUSH_VLAN","ethertype": 33024},{"type": "SET_FIELD","field": "vlan_vid","value": 4097},{"type":"OUTPUT","port": 3}],"priority":5}' http://localhost:8080/stats/flowentry/add

curl -X POST -d '{"dpid": 2,"match": {"vlan_vid": 0},"actions": [{"type": "POP_VLAN","ethertype": 33024},{"type":"OUTPUT","port": 1}],"priority":5}' http://localhost:8080/stats/flowentry/add

curl -X POST -d'{"dpid": 2,"match": {"vlan_vid": 1},"actions": [{"type": "POP_VLAN","ethertype": 33024},{"type":"OUTPUT","port": 2}],"priority":5}' http://localhost:8080/stats/flowentry/add

第七次上机作业

 

 

VLAN_IDHosts
0 h1 h3
1 h2 h4

脚本宝典总结

以上是脚本宝典为你收集整理的第七次上机作业全部内容,希望文章能够帮你解决第七次上机作业所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。