2019 SDN上机第6次作业

1.实验拓扑

2019 SDN上机第6次作业_第1张图片
2019 SDN上机第2次作业
要求
使用Python脚本完成拓扑搭建,并连接ryu控制器。

from mininet.topo import Topo
 
class MyTopo( Topo ):
    "Simple topology example."
 
    def __init__( self ):
 
        # Initialize topology
        Topo.__init__( self )
        
        sw1 = self.addSwitch('s1')
        sw2 = self.addSwitch('s2')

        h1 = self.addHost('h1')
        h2 = self.addHost('h2')
        h3 = self.addHost('h3')
        h4 = self.addHost('h4')
        h5 = self.addHost('h5')
        h6 = self.addHost('h6')

        self.addLink(h1,sw1,1,1)
        self.addLink(h2,sw1,1,2)
        self.addLink(h3,sw1,1,3)
        self.addLink(sw1,sw2,4,4)
        self.addLink(h4,sw2,1,1)
        self.addLink(h5,sw2,1,2)
        self.addLink(h6,sw2,1,3)

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

sudo mn --custom ./sdn2.py --topo mytopo --controller=remote,ip=127.0.0.1,port=6633 --switch ovsk,protocols=OpenFlow13

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

输入以下命令连接ryu控制器

ryu-manager ofctl_rest.py

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

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

curl -X POST -d '{
    "dpid": 1,
    "priority":1,
    "match":{
        "in_port":1                  #端口1
    },
    "actions":[
        {
            "type": "PUSH_VLAN",     # 给进入交换机的包打上vlan_tag
            "ethertype": 33024       # 帧类型0x8100(=33024): 表示IEEE 802.1Q的VLAN数据帧
        },
        {
            "type": "SET_FIELD",
            "field": "vlan_vid",     # 设置VLAN ID
            "value": 4096            # 设置vlan_id的值
        },
        {
            "type": "OUTPUT",
            "port": 4
        }
    ]
 }' http://127.0.0.1:8080/stats/flowentry/add
curl -X POST -d '{
    "dpid": 1,
    "priority":1,
    "match":{
        "dl_vlan": "0"
    },
    "actions":[
        {
            "type": "POP_VLAN",     # 给进入交换机的包去除 vlan_tag
        },
        {
            "type": "OUTPUT",
            "port": 1
        }
    ]
 }' http://localhost:8080/stats/flowentry/add

逐个执行

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

也可以合并在一起执行

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

查看流表

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

可以看到控制器端显示下发的流表已被接收

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

可以ping通相同VLAN的,如实验2

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

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

curl相比于之前的方法实际上是用远程管理的方法来下发流表,相比ovs-ofctl 这种方法,通用性更高。
全部sh命令见链接

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