zoukankan      html  css  js  c++  java
  • 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的强大,毕竟是一种新型网络,希望有机会多去接触这方面的知识

  • 相关阅读:
    jQuery轮播图(一)轮播实现并封装
    openSUSE 12.3 默认启动项
    最大堆(最小堆)
    二叉树基本操作续二:前序、中序、后序遍历(非递归 迭代方式)
    二叉树基本操作续一:二叉树建立、节点数统计
    二叉树基本操作:前序、中序、后序遍历(递归方式)
    Android如何打印std::cout/printf(重定向stdout)
    textarea高度跟随文字高度而变化
    箭头函数与普通函数的区别
    浏览器兼容问题
  • 原文地址:https://www.cnblogs.com/suefen/p/8343684.html
Copyright © 2011-2022 走看看