2019 SDN上机第6次作业

1.实验拓扑

  • 用python脚本建立拓扑并查看net

2019 SDN上机第6次作业_第1张图片

  • python代码
from mininet.topo import Topo
class Mytopo(Topo):
    def __init__(self):
        Topo.__init__(self)
        s=[]
        for i in range(2):
         sw = self.addSwitch('s{}'.format(i+1))
         s.append(sw)
        self.addLink(s[0],s[1])
        count=1
        for two in s:
         for i in range(3):
          host = self.addHost('h{}'.format(count))
          self.addLink(two,host)
          count += 1
topos = {'mytopo': (lambda:Mytopo())}
  • 连接ryu控制器
ryu-manager gui_topology.py
ryu-manager --observe-links gui_topology.py//可以查看交换机连接情况

2019 SDN上机第6次作业_第2张图片

2.使用Ryu的REST API下发流表实现和第2次实验同样的VLAN

  • 编写下发流表的sh脚本(展示两个例子)
    • h1-s1.sh
    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": 4096            # Describe sum of vlan_id(e.g. 6) | OFPVID_PRESENT(0x1000=4096)
          },
          {
              "type": "OUTPUT",
              "port": 1
          }
      ]
     }' http://0.0.0.0:8080/stats/flowentry/add
    • s1-h4.sh
    curl -X POST -d '{
      "dpid": 1,
      "priority":1,
      "match":{
          "dl_vlan": "0"
      },
      "actions":[
          {
              "type": "POP_VLAN",    
          },
          {
              "type": "OUTPUT",
              "port": 2
          }
      ]
     }' http://0.0.0.0:8080/stats/flowentry/add
  • 执行所有sh脚本进行测试

2019 SDN上机第6次作业_第3张图片

  • s1,s2查看下发流表

2019 SDN上机第6次作业_第4张图片

2019 SDN上机第6次作业_第5张图片

  • pingall查看结果

2019 SDN上机第6次作业_第6张图片

  • 整合所有sh脚本
    • 直接执行Allflow.sh,一次性下发流表
    sudo sh Allflow.sh
    • Allflow.sh

2019 SDN上机第6次作业_第7张图片

  • 结果不再展示

3.对比两种方法,写出你的实验体会

  • 总结
    本次实验用ryu控制器编写并执行用于下发流表的sh脚本,我觉得比起使用命令下发流表,使用ryu编写sh脚本并执行更加方便。比起繁琐的命令,只要提前准备好脚本,任何人都可以通过直接执行脚本来下发流表,而不需要了解使用原理。

你可能感兴趣的:(2019 SDN上机第6次作业)