• OpenDayLight Helium实验三 OpenDaylight二层转发机制实验


    本文基于OpenDaylight二层转发机制实验 而成

    在SDN网络中,处于末端的主机并不知道其连接的网络是SDN,某台主机要发送数据包到另一台主机,仍然需要进行IP到MAC地址的ARP解析。SDN网络中由于引入了控制器的角色,其二层数据转发的机制与普通二层以太交换机洪泛+MAC地址学习机制存在很大的差异。当源IP要与目的IP通信时,会将ARP请求转发到控制器,由控制器帮助询问目的主机的MAC并将结果返回给源主机。

    本实验在SDN环境中配置相同网段的两台主机,通过测试二者之间的数据转发来理解和掌握二层转发机制。

    实验topu:

    实验过程

    启动OpenDaylight

    Helium 版本,进入目录,执行:./karaf。

    等待五分钟左右,出现如上提示。
    执行以下命令查看进程,默认监听端口为6633。

    ps -ef|grep opendaylight
    
    netstat -anp|grep 6633
    

    访问网站

    通过游览器访问ODL的可视化网站,Helium版本:http://[ODL_host_ip]:8181/dlux/index.html。在运行ODL的主机上运行ifconfig获得ODL_host_ip。

    账户和密码,都是admin。

    Mininet操作

    登录Mininet虚拟机,检查/home/mininet目录下是否有topo-2sw_2host.py实验脚本,如果没有则执行以下步骤创建脚本并脚本内容,如果有,请跳过此步骤。

    cd /home/wasdns/mininet
    
    touch topo-2sw_2host.py
    
    vim topo-2sw_2host.py
    
    #Mininet OpenDayLight 2016/9/20 by Wasdns
    
    """Custom topology example
    Two directly connected switches plus two hosts for each switch:
       host1 --- switch1 --- switch2 --- host3
                   |            |
                   |            |
                 host2        host4
    """
    from mininet.topo import Topo
     
    class MyTopo( Topo ):
        "Simple topology example."
     
        def __init__( self ):
            "Create custom topo."
     
            # Initialize 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' )
        
            # Add links
            self.addLink( Host1, Switch1 )
            self.addLink( Host2, Switch1 )
            self.addLink( Switch2, Host3 )
            self.addLink( Switch2, Host4 )
            self.addLink( Switch1, Switch2 )
     
    topos = { 'mytopo': ( lambda: MyTopo() ) }
    

    执行下面命令,启动网络拓扑:
    原命令:

    screen mn --custom /home/mininet/topo-2sw_2host.py --topo mytopo --controller=remote,ip=10.0.0.226,port=6633 --switch ovsk,protocols=OpenFlow10
    

    我执行的:
    sudo mn --custom /home/wasdns/mininet/topo-2sw_2host.py --topo mytopo --controller=remote,ip=192.168.31.132,port=6633 --switch ovsk,protocols=OpenFlow10

    原文说明
    通过screen mn命令启动mininet,这样可以通过ctrl+a+d和screen –r命令进行系统命令行和mininet命令行之前的窗口切换。

    请根据实际情况将ip为OpenDaylight的ip,添加protocols参数指定OpenFlow协议版本。
    mn为mininet启动命令。

    • --mac指定虚拟主机的mac地址顺序编号,若不带此参数则随机编号
    • --controller指定of交换机的控制器
    • --switch指定虚拟交换机的类型,ovsk表示虚拟交换机为ovs Kernel mode
    • --custom指定自定义拓扑文件
    • --topo指定加载拓扑的名字

    执行ctrl+a+d命令切换到系统命令行。

    输入ovs-vsctl show命令查看Mininet是否与OpenDaylight连通。

    输入 ovs-vsctl show 查看Mininet和ODL是否连接。

    返回ODLweb界面 查看拓扑

    返回界面,发现topu发生了变化。

    抓包验证

    在同一台虚拟机里面搞,太卡了。所以在这一步我打开了另外一个虚拟机,执行Mininet的功能。
    命令:

    ODL虚拟机:tcpdump -i any port 6633 -s0 -w 206.pcap
    Mininet虚拟机:nodes
    Mininet虚拟机:h1 ping h3
    

    在同一台虚拟机的情况:

    2016/9/29

  • 相关阅读:
    Elasticsearch的介绍与安装配置启动问题
    代码发布项目
    gitpython模块
    Paramiko模块
    gojs插件的介绍与使用
    django中如何实现websocket,真正通过websocket实现群聊功能
    如何实现服务端主动给客户端推送消息,websocket详解,以及django如何使用websocket问题
    简单爬取汽车之家新闻(requests模块+bs4)
    http协议版本,响应状态码,正反向代理的区别,与伪静态
    web开发经验——富头像上传编辑器的使用
  • 原文地址:https://www.cnblogs.com/qq952693358/p/5890498.html
Copyright © 2020-2023  润新知