SDN期末作业验收

一.网络拓扑

二.拓扑建立和Python代码,下发流表等

代码部分:

from mininet.topo import Topo
   class MyTopo( Topo ):
        "Simple topology example."

      def __init__( self ):

     # Initialize topology
    Topo.__init__( self )
    s1 = self.addSwitch('s1')
    s2 = self.addSwitch('s2')
    s3 = self.addSwitch('s3')
    s4 = self.addSwitch('s4')

    h1 = self.addHost('h1')
    h2 = self.addHost('h2')
    h3 = self.addHost('h3')
    
    self.addLink(h1,s1)
    self.addLink(s1,s2)
    self.addLink(s1,s3)
    self.addLink(s2,s4)
    self.addLink(s3,s4)
    self.addLink(h2,s4)
    self.addLink(h3,s4)

    topos = { 'mytopo': ( lambda: MyTopo() ) }

  

import httplib2

import time
class OdlUtil:

url = ''
def __init__(self, host, port):

    self.url = 'http://' + host + ':' + str(port)
   def install_flow(self, container_name='default',username="admin", password="admin"):

   http = httplib2.Http()
   http.add_credentials(username, password)    
   headers = {'Accept': 'application/json'}     
   flow_name = 'flow_' + str(int(time.time()*1000))

   h1h2body1 ='{"flow": [{"id": "1","match": {"ethernet-match":'\
              '{"ethernet-type": {"type": "2048"}},'\
              '"ipv4-source":"10.0.0.1/32","ipv4-destination": "10.0.0.2/32"},'\
              '"instructions": {"instruction": [{"order": "0",'\
              '"apply-actions": {"action": [{"output-action": {'\
              '"output-node-connector": "2"},"order": "0"}]}}]},'\
              '"priority": "100","cookie": "1","table_id": "0"}]}'

   mh1h2body1 ='{"flow": [{"id": "1","match": {"ethernet-match":'\
               '{"ethernet-type": {"type": "2048"}},'\
               '"ipv4-source":"10.0.0.1/32","ipv4-destination": "10.0.0.2/32"},'\
               '"instructions": {"instruction": [{"order": "0",'\
               '"apply-actions": {"action": [{"output-action": {'\
               '"output-node-connector": "2"},"order": "0"}]}}]},'\
               '"priority": "102","cookie": "1","table_id": "0"}]}'

   h1h2body2 ='{"flow": [{"id": "2","match": {"ethernet-match":'\
              '{"ethernet-type": {"type": "2048"}},'\
              '"ipv4-source":"10.0.0.1/32","ipv4-destination": "10.0.0.2/32"},'\
              '"instructions": {"instruction": [{"order": "0",'\
              '"apply-actions": {"action": [{"output-action": {'\
              '"output-node-connector": "3"},"order": "0"}]}}]},'\
              '"priority": "99","cookie": "2","table_id": "0"}]}'

   mh1h2body2 ='{"flow": [{"id": "2","match": {"ethernet-match":'\
               '{"ethernet-type": {"type": "2048"}},'\
               '"ipv4-source":"10.0.0.1/32","ipv4-destination": "10.0.0.2/32"},'\
               '"instructions": {"instruction": [{"order": "0",'\
               '"apply-actions": {"action": [{"output-action": {'\
               '"output-node-connector": "3"},"order": "0"}]}}]},'\
               '"priority": "102","cookie": "2","table_id": "0"}]}'

   headers = {'Content-type': 'application/json'}
   num=0
   while num < 4 :
            response, content = http.request(uri='http://127.0.0.1:8181/restconf/config/opendaylight
-inventory:nodes/node/openflow:1/flow-node-inventory:table/0/flow/3', body=mh1h2body1, method='PUT',
headers=headers) time.sleep(0.1) response, content = http.request(uri='http://127.0.0.1:8181/restconf/config/opendaylight-
inventory:nodes/node/openflow:1/flow-node-inventory:table/0/flow/3', body=h1h2body1, method='PUT',headers=headers) response, content = http.request(uri='http://127.0.0.1:8181/restconf/config/opendaylight-
inventory:nodes/node/openflow:1/flow-node-inventory:table/0/flow/2', body=mh1h2body2, method='PUT',headers=headers) time.sleep(0.1) response, content = http.request(uri='http://127.0.0.1:8181/restconf/config/opendaylight-inventory
:nodes/node/openflow:1/flow-node-inventory:table/0/flow/2', body=h1h2body2, method='PUT',headers=headers) print(content.decode()) odl = OdlUtil('127.0.0.1','8181') odl.install_flow()

  相关图片:

三.任务分工

主要负责搜集相关资料和拓扑的建立,演讲ppt和后期视频的剪辑等。

四.课程总结

        主要是学会了一些基本的SDN的网络拓扑知识,学会了在mninet上创建拓扑并通过floodlight验证器正确,用ODL控制器下发流表并通过

OVS命令查看验证,用Postman通过ODL的北向接口下发流表,用Wireshark抓包验证拓扑结构的正确性,学习了实现较简单的负载均衡场景,

了解了几种负载均衡的简单算法以及对负载均衡的优化,收获还是挺大的。

 

posted on 2018-01-25 14:24  大丰收鱼庄  阅读(208)  评论(0编辑  收藏  举报

导航