zoukankan      html  css  js  c++  java
  • 2019 SDN上机第6次作业

    1.实验拓扑

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

    • 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//可以查看交换机连接情况
    

    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脚本进行测试

    • s1,s2查看下发流表

    • pingall查看结果

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

    • 结果不再展示

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

    • 总结
      本次实验用ryu控制器编写并执行用于下发流表的sh脚本,我觉得比起使用命令下发流表,使用ryu编写sh脚本并执行更加方便。比起繁琐的命令,只要提前准备好脚本,任何人都可以通过直接执行脚本来下发流表,而不需要了解使用原理。
  • 相关阅读:
    Ubuntu下Nginx与Apache2修改默认端口号
    Kerbernetes的Pod资源管理进阶
    Kerbernetes的Pod资源管理
    Kerbernetes的Pod资源清单配置基础
    kubernetes快速入门
    K8S镜像下载报错解决方案(使用阿里云镜像去下载kubeadm需要的镜像文件)
    CentOS 7.6使用kubeadm部署k8s 1.17.2测试集群实战篇
    8
    7
    6
  • 原文地址:https://www.cnblogs.com/ruifeng1/p/11984744.html
Copyright © 2011-2022 走看看