<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      實(shí)驗(yàn)7:基于REST API的SDN北向應(yīng)用實(shí)踐

      一、基本要求:

      ①、編寫(xiě)Python程序,調(diào)用OpenDaylight的北向接口實(shí)現(xiàn)以下功能:

      1、刪除s1上的流表數(shù)據(jù)代碼及其截圖:
      #!/usr/bin/python
      import requests
      from requests.auth import HTTPBasicAuth
      def http_delete(url):
      	url= url
      	headers = {'Content-Type':'application/json'}
      	resp = requests.detele(url,headers=headers,auth=HTTPBasicAuth('admin', 'admin'))
      	print (resp.content)
      	
      if __name__ == "__main__":
      	url = 'http://127.0.0.1:8181/restconf/config/opendaylight-inventory:nodes/node/openflow:1/'
      	http_delete(url)
      

      2、硬超時(shí)代碼及其截圖:
      #硬超時(shí)json代碼修改
      {
      "flow": [
      {
      "id": "1",
      "match": {
      "in-port": "1",
      "ethernet-match": {
      "ethernet-type": {
      "type": "0x0800"
      }
      },
      "ipv4-destination": "10.0.0.3/32"
      },
      "instructions": {
      "instruction": [
      {
      "order": "0",
      "apply-actions": {
      "action": [
      {
      "order": "0",
      "drop-action": {}
      }
      ]
      }
      }
      ]
      },
      "flow-name": "flow1",
      "priority": "65535",
      "hard-timeout": "20",
      "cookie": "2",
      "table_id": "0"
      }
      ]
      }
      
      #!/usr/bin/python
      import requests
      from requests.auth import HTTPBasicAuth
      def http_timeout(url,str):
      	url= url
      	headers = {'Content-Type':'application/json'}
      	resp = requests.put(url,str,headers=headers,auth=HTTPBasicAuth('admin', 'admin'))
      	print (resp.content)
      	
      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("./timeout.json") as file:
              	str = file.read()
      	http_timeout(url,str)
      

      3、獲取s1上活動(dòng)的流表數(shù)代碼及其截圖:
      #!/usr/bin/python
      import requests
      from requests.auth import HTTPBasicAuth
      def http_get(url):
      	url= url
      	headers = {'Content-Type':'application/json'}
      	resp = requests.get(url,headers=headers,auth=HTTPBasicAuth('admin', 'admin'))
      	print (resp.content)
      	
      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'
      	http_get(url)
      

      ②、編寫(xiě)Python程序,調(diào)用Ryu的北向接口實(shí)現(xiàn)以下功能:

      1、實(shí)現(xiàn)上述OpenDaylight實(shí)驗(yàn)拓?fù)渖舷嗤挠渤瑫r(shí)流表下發(fā)。

      代碼:

      #!/usr/bin/python
      import requests
      def http_timeout(url,str):
      	url= url
      	headers = {'Content-Type':'application/json'}
      	resp = requests.post(url,str,headers=headers)
      	print (resp.content)
      	
      if __name__ == "__main__":
      	url = 'http://127.0.0.1:8080/stats/flowentry/add'
      	with open("./032002225_timeout.json") as file:
              	str = file.read()
      	http_timeout(url,str)
      
      {
          "dpid": 1,
          "cookie": 1,
          "cookie_mask": 1,
          "table_id": 0,
          "hard_timeout": 20,
          "priority": 65535,
          "flags": 1,
          "match":{
              "in_port":1
          },
          "actions":[
      
          ]
       }
      

      參考Ryu REST API的文檔,基于VLAN實(shí)驗(yàn)的網(wǎng)絡(luò)拓?fù)洌幊虒?shí)現(xiàn)相同的VLAN配置。
      from mininet.topo import Topo
      
      class MyTopo(Topo):
          def __init__(self):
              # initilaize topology
              Topo.__init__(self)
      
              self.addSwitch("s1")
              self.addSwitch("s2")
      
              self.addHost("h1")
              self.addHost("h2")
              self.addHost("h3")
              self.addHost("h4")
      
              self.addLink("s1", "h1")
              self.addLink("s1", "h2")
              self.addLink("s2", "h3")
              self.addLink("s2", "h4")
              self.addLink("s1", "s2")
      
      topos = {'mytopo': (lambda: MyTopo())}
      
      import json
      
      import requests
      
      if __name__ == "__main__":
          url = 'http://127.0.0.1:8080/stats/flowentry/add'
          headers = {'Content-Type': 'application/json'}
          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.dumps(flow1), headers=headers)
          res2 = requests.post(url, json.dumps(flow2), headers=headers)
          res3 = requests.post(url, json.dumps(flow3), headers=headers)
          res4 = requests.post(url, json.dumps(flow4), headers=headers)
          res5 = requests.post(url, json.dumps(flow5), headers=headers)
          res6 = requests.post(url, json.dumps(flow6), headers=headers)
          res7 = requests.post(url, json.dumps(flow7), headers=headers)
          res8 = requests.post(url, json.dumps(flow8), headers=headers)
      

      進(jìn)階要求

      shownode.py

      # getall.py
      import requests
      import time
      import re
      
      
      class GetNodes:
          def __init__(self, ip):
              self.ip = ip
              
          def get_switch_id(self):
              url = 'http://' + self.ip + '/stats/switches'
              re_switch_id = requests.get(url=url).json()
              switch_id_hex = []
              for i in re_switch_id:
                  switch_id_hex.append(hex(i))
      
              return switch_id_hex
      
          def getflow(self):
              url = 'http://' + self.ip + '/stats/flow/%d'
              switch_list = self.get_switch_id()
              ret_flow = []
              for switch in switch_list:
                  new_url = format(url % int(switch, 16))
                  re_switch_flow = requests.get(url=new_url).json()
                  ret_flow.append(re_switch_flow)
              return ret_flow
      
          def show(self):
              flow_list = self.getflow()
              for flow in flow_list:
                  for dpid in flow.keys():
                      dp_id = dpid
                      switchnum= '{1}'.format(hex(int(dp_id)), int(dp_id))        
                      print('s'+switchnum,end = " ")
                      switchnum = int(switchnum)
                  for list_table in flow.values():
                      for table in list_table:          
                          string1 = str(table)
                          if re.search("'dl_vlan': '(.*?)'", string1) is not None:
                             num = re.search("'dl_vlan': '(.*?)'", string1).group(1);
                             if num == '0' and switchnum == 1:
                                print('h1',end = " ")
                             if num == '1' and switchnum == 1:
                                print('h2',end = " ")
                             if num == '0' and switchnum == 2:
                                print('h3',end = " ")
                             if num == '1' and switchnum == 2:
                                print('h4',end = " ")
              print("")
              flow_list = self.getflow()
              for flow in flow_list:
                  for dpid in flow.keys():
                      dp_id = dpid
                      print('switch_name:s{1}'.format(hex(int(dp_id)), int(dp_id)))
                  for list_table in flow.values():
                      for table in list_table:
                          print(table)
      s1 = GetNodes("127.0.0.1:8080")
      s1.show()
      

      個(gè)人總結(jié)

      這個(gè)實(shí)驗(yàn)算是綜合能力比較強(qiáng)的實(shí)驗(yàn),在基本要求第一點(diǎn)就結(jié)合了實(shí)驗(yàn)4的內(nèi)容,第二點(diǎn)結(jié)合了實(shí)驗(yàn)6的內(nèi)容

      posted @ 2022-10-25 11:49  小蘇同學(xué)  閱讀(14)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 国产成人亚洲精品自产在线| 偷拍一区二区三区在线视频| 老司机精品成人无码AV| 国产人妻久久精品一区二区三区| 亚洲香蕉免费有线视频| 久久精品手机观看| 55大东北熟女啪啪嗷嗷叫| 国产精品白浆无码流出| 亚洲男人天堂av在线| 南开区| 小伙无套内射老熟女精品| 亚洲熟少妇一区二区三区| 久久综合久中文字幕青草| 久久午夜无码鲁丝片直播午夜精品 | 亚洲av永久无码精品水牛影视| 大屁股肥熟女流白浆| 国产成人午夜精品永久免费| 中文国产不卡一区二区| 少妇和邻居做不戴套视频| 日韩精品18禁一区二区| 亚洲一区二区经典在线播放| 伊人精品成人久久综合97| 欧美视频网站www色| 色吊丝av熟女中文字幕| 国产在线观看网址不卡一区| 忘忧草影视| 亚洲精品一区三区三区在| 拍摄av现场失控高潮数次| 亚成区成线在人线免费99| 久久毛片少妇高潮| 久久亚洲精品中文字幕波多野结衣| 黑人巨大粗物挺进了少妇| 免费无码高H视频在线观看| 午夜福利宅福利国产精品| 久久婷婷五月综合97色直播| 国产精品欧美福利久久| 天天摸夜夜摸夜夜狠狠添| 国产精品v片在线观看不卡| 亚洲va中文字幕无码久久不卡| 日韩欧美亚洲综合久久| 日韩有码国产精品一区|