SDN期末验收

作业地址

网络拓扑

负载均衡程序

拓扑地址

from mininet.topo import Topo

class MyTopo( Topo ):

    def __init__( self ):

        # initilaize topology   
        Topo.__init__( self )

        # add hosts and switches

        host1 = self.addHost( 'h1' )
        host2 = self.addHost( 'h2' )
        host3 = self.addHost( 'h3' )
        host4 = self.addHost( 'h4' )
        switch1 = self.addSwitch( 's1' )
        switch2 = self.addSwitch( 's2' )
        switch3 = self.addSwitch( 's3' )
        switch4 = self.addSwitch( 's4' )

        # add links
  
        self.addLink(host1,switch1)
        self.addLink(switch1,switch2)
        self.addLink(switch1,switch3)
        self.addLink(switch1,switch4)
        self.addLink(switch2,switch4)
        self.addLink(switch3,switch4)
        self.addLink(switch4,host2)
        self.addLink(switch4,host3)
        self.addLink(switch4,host4)




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

下发流表地址: s1flowmonitor

实验步骤:

1、我们先建立拓扑。
2、对s1、s2、s3、s4进行下发流表和组表
3、对s1循环改变三个端口的走向的优先级,然后进行h1 ping h3进行抓包观察。

注意点:对s2 s3 s4 下发流表注意要双向下发,因为h1与h2 h3 h4 进行交互时,h2 h3 h4 会对h1 进行响应,假如没有来回的话,h1就接收不到h2 h3 h4发送的数据包了。

演示内容

1.目的

服务器h2,h3,h4上各自有不同的服务,h1是客户端。实现一个负载均衡的北向程序,当h2,h3,h4向h1传输数据时,北向应用根据链路的使用状况动态的调整路由规则。
例如:s1-s4链路带宽充足情况下应默认s4-s1的传输路径,当剩余带宽不足的情况下应动态调整路由,使链路负载达到平衡。

2.主要思路

a.通过控制s1到s2/s3/s4的优先级,在不同时间片,优先级不同。
b.优先级通过组表实现,优先级有以下三种 s2>s3=s4 / s3>s4=s2 / s4>s2=s3

分工

组里成员一起讨论一起完成(都是新手,共同进步)
1.场景思路设计及方案选定、讲解
2.Python程序代码的编写
3.视频录制

课程总结

1、了解了什么是SDN

--软件定义网络(Software Defined Network, SDN ),是Emulex网络一种新型网络创新架构,是网络虚拟化的一种实现方式,其核心技术OpenFlow通过将网络设备控制面与数据面分离开来,从而实现了网络流量的灵活控制,使网络作为管道变得更加智能。

2、学习使用mininet

mininet安装及其使用:http://www.sdnlab.com/15138.html

3、学习了几种常用OVS命令对流表进行操作、

下发流表

sudo ovs-ofctl -O OpenFlow13 add-flow s1 priority=1,dl_vlan=0,actions=pop_vlan,output:1
sudo ovs-ofctl -O OpenFlow13 add-flow s1 priority=1,dl_vlan=1,actions=pop_vlan,output:2
sudo ovs-ofctl -O OpenFlow13 add-flow s1 priority=1,dl_vlan=2,actions=pop_vlan,output:3

查看流表:

sudo ovs-ofctl -O OpenFlow13 dump-flows s1


sudo ovs-ofctl -O OpenFlow13 dump-flows s2

4、wireshark抓包

开启wireshark

sudo wireshark

wireshark观察端口是否有数据包经过

5、postman的使用

postman的知识

6、利用可视化界面、python建立拓扑

可视化界面建立拓扑相对比较简单

前面的代码就是用python建立网络拓扑的
下面是用python建立拓扑,然后进行链接odl代码

sudo mn --custom topo.py --topo mytopo --controller=remote,ip=控制器IP,port=6633

7、了解了几种SDN控制器,并初步学习使用 Floodlight 控制器和 OpenDayLight 控制器

http://www.cnblogs.com/suefen/p/8046283.html

ODL安装
Floodlight安装

8、初步学习了解P4

p4学习资源

9、感想

自己在这门课学到的还是蛮多的,至少见到了sdn的强大,毕竟是一种新型网络,希望有机会多去接触这方面的知识

原文地址:https://www.cnblogs.com/suefen/p/8343684.html