脚本宝典收集整理的这篇文章主要介绍了第七次SDN作业,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_512_26@
(2) 编写Python程序,调用OpenDaylight的北向接口下发指令删除s1上的流表数据。
(3) 编写Python程序,调用OpenDaylight的北向接口下发硬超时流表,实现拓扑内主机h1和h3网络中断20s。
(4) 编写Python程序,调用OpenDaylight的北向接口获取s1上活动的流表数。
(2) 利用Mininet平台搭建下图所示网络拓扑,要求支持OpenFlow 1.3协议,主机名、交换机名以及端口对应正确。拓扑生成后需连接Ryu,且Ryu应能够提供REST API服务。
(3) 整理一个Shell脚本,参考Ryu REST API的文档,利用curl命令,实现和实验2相同的VLAN。
# scripts.sh
curl -X POST -d '{
"dpid": 1,
"PRiorITy": 1,
"match":{
"in_port": 1
},
"actions":[
{
"type": "PUSH_VLAN", # Push a new VLAN tag if a input frame is non-VLAN-tagged
"ethertype": 33024 # Ethertype 0x8100(=33024): IEEE 802.1Q VLAN-tagged frame
},
{
"type": "SET_FIELD",
"field": "vlan_vid", # Set VLAN ID
"value": 4096 # Describe sum of vlan_id(e.g. 6) | OFpvID_PRESENT(0X1000=4096)
},
{
"type": "OUTPUT",
"port": 3
}
]
}' http://localhost:8080/stats/flowentry/add
curl -X POST -d '{
"dpid": 1,
"priority": 1,
"match":{
"in_port": 2
},
"actions":[
{
"type": "PUSH_VLAN", # Push a new VLAN tag if a input frame is non-VLAN-tagged
"ethertype": 33024 # Ethertype 0x8100(=33024): IEEE 802.1Q VLAN-tagged frame
},
{
"type": "SET_FIELD",
"field": "vlan_vid", # Set VLAN ID
"value": 4097 # Describe sum of vlan_id(e.g. 6) | OFPVID_PRESENT(0x1000=4096)
},
{
"type": "OUTPUT",
"port": 3
}
]
}' http://localhost:8080/stats/flowentry/add
curl -X POST -d '{
"dpid": 1,
"priority": 1,
"match":{
"vlan_vid": 0
},
"actions":[
{
"type": "POP_VLAN", # Push a new VLAN tag if a input frame is non-VLAN-tagged
"ethertype": 33024 # Ethertype 0x8100(=33024): IEEE 802.1Q VLAN-tagged frame
},
{
"type": "OUTPUT",
"port": 1
}
]
}' http://localhost:8080/stats/flowentry/add
curl -X POST -d '{
"dpid": 1,
"priority": 1,
"match":{
"vlan_vid": 1
},
"actions":[
{
"type": "POP_VLAN", # Push a new VLAN tag if a input frame is non-VLAN-tagged
"ethertype": 33024 # Ethertype 0x8100(=33024): IEEE 802.1Q VLAN-tagged frame
},
{
"type": "OUTPUT",
"port": 2
}
]
}' http://localhost:8080/stats/flowentry/add
curl -X POST -d '{
"dpid": 2,
"priority": 1,
"match":{
"in_port": 1
},
"actions":[
{
"type": "PUSH_VLAN", # Push a new VLAN tag if a input frame is non-VLAN-tagged
"ethertype": 33024 # Ethertype 0x8100(=33024): IEEE 802.1Q VLAN-tagged frame
},
{
"type": "SET_FIELD",
"field": "vlan_vid", # Set VLAN ID
"value": 4096 # Describe sum of vlan_id(e.g. 6) | OFPVID_PRESENT(0x1000=4096)
},
{
"type": "OUTPUT",
"port": 3
}
]
}' http://localhost:8080/stats/flowentry/add
curl -X POST -d '{
"dpid": 2,
"priority": 1,
"match":{
"in_port": 2
},
"actions":[
{
"type": "PUSH_VLAN", # Push a new VLAN tag if a input frame is non-VLAN-tagged
"ethertype": 33024 # Ethertype 0x8100(=33024): IEEE 802.1Q VLAN-tagged frame
},
{
"type": "SET_FIELD",
"field": "vlan_vid", # Set VLAN ID
"value": 4097 # Describe sum of vlan_id(e.g. 6) | OFPVID_PRESENT(0x1000=4096)
},
{
"type": "OUTPUT",
"port": 3
}
]
}' http://localhost:8080/stats/flowentry/add
curl -X POST -d '{
"dpid": 2,
"priority": 1,
"match":{
"vlan_vid": 0
},
"actions":[
{
"type": "POP_VLAN", # Push a new VLAN tag if a input frame is non-VLAN-tagged
"ethertype": 33024 # Ethertype 0x8100(=33024): IEEE 802.1Q VLAN-tagged frame
},
{
"type": "OUTPUT",
"port": 1
}
]
}' http://localhost:8080/stats/flowentry/add
curl -X POST -d '{
"dpid": 2,
"priority": 1,
"match":{
"vlan_vid": 1
},
"actions":[
{
"type": "POP_VLAN", # Push a new VLAN tag if a input frame is non-VLAN-tagged
"ethertype": 33024 # Ethertype 0x8100(=33024): IEEE 802.1Q VLAN-tagged frame
},
{
"type": "OUTPUT",
"port": 2
}
]
}' http://localhost:8080/stats/flowentry/add
编程实现基本要求第2部分Ryu(3)中的VLAN划分。
importjsonimportrequestsif__name__=="__main__":url='http://127.0.0.1:8080/stats/flowentry/add'flow1= { "dpid":1, "priority":1, "match":{ "in_port":1 }, "actions":[ { "type":"PUSH_VLAN", "ethertype":33024 }, { "type":"SET_FIELD", "field":"vlan_vid", "value":4096 }, { "type":"OUTPUT", "port":3 } ] } flow2= { "dpid":1, "priority":1, "match":{ "in_port":2 }, "actions":[ { "type":"PUSH_VLAN", "ethertype":33024 }, { "type":"SET_FIELD", "field":"vlan_vid", "value":4097 }, { "type":"OUTPUT", "port":3 } ] } flow3= { "dpid":1, "priority":1, "match":{ "vlan_vid":0 }, "actions":[ { "type":"POP_VLAN", "ethertype":33024 }, { "type":"OUTPUT", "port":1 } ] } flow4= { "dpid":1, "priority":1, "match": { "vlan_vid":1 }, "actions": [ { "type":"POP_VLAN", "ethertype":33024 }, { "type":"OUTPUT", "port":2 } ] } flow5= { "dpid":2, "priority":1, "match": { "in_port":1 }, "actions": [ { "type":"PUSH_VLAN", "ethertype":33024 }, { "type":"SET_FIELD", "field":"vlan_vid", "value":4096 }, { "type":"OUTPUT", "port":3 } ] } flow6= { "dpid":2, "priority":1, "match": { "in_port":2 }, "actions": [ { "type":"PUSH_VLAN", "ethertype":33024 }, { "type":"SET_FIELD", "field":"vlan_vid", "value":4097 }, { "type":"OUTPUT", "port":3 } ] } flow7= { "dpid":2, "priority":1, "match": { "vlan_vid":0 }, "actions": [ { "type":"POP_VLAN", "ethertype":33024 }, { "type":"OUTPUT", "port":1 } ] } flow8= { "dpid":2, "priority":1, "match": { "vlan_vid":1 }, "actions": [ { "type":"POP_VLAN", "ethertype":33024 }, { "type":"OUTPUT", "port":2 } ] } res1=requests.post(url,json=flow1)res2=requests.post(url,json=flow2)res3=requests.post(url,json=flow3)res4=requests.post(url,json=flow4)rES5=requests.post(url,json=flow5)res6=requests.post(url,json=flow6)res7=requests.post(url,json=flow7)res8=requests.post(url,json=flow8)
以上是脚本宝典为你收集整理的第七次SDN作业全部内容,希望文章能够帮你解决第七次SDN作业所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。