实验2:Open vSwitch虚拟交换机实践

Open vSwitch虚拟交换机实践

实验报告

基础部分:

  • /home/用户名/学号/lab2/目录下执行ovs-vsctl show命令、以及p0和p1连通性测试的执行结果截图;

  • /home/用户名/学号/lab2/目录下开启Mininet CLI并执行pingall命令的截图、上述目录下查看OVS流表的命令结果截图,wireshark抓包截图;




进阶部分:

#!/usr/bin/env python

from mininet.net import Mininet
from mininet.node import Controller, RemoteController, OVSController
from mininet.node import CPULimitedHost, Host, Node
from mininet.node import OVSKernelSwitch, UserSwitch
from mininet.node import IVSSwitch
from mininet.cli import CLI
from mininet.log import setLogLevel, info
from mininet.link import TCLink, Intf
from subprocess import call

def myNetwork():

    net = Mininet( topo=None,
                   build=False,
                   ipBase='10.0.0.0/8')

    info( '*** Adding controller\n' )
    c0=net.addController(name='c0',
                      controller=Controller,
                      protocol='tcp',
                      port=6633)

    info( '*** Add switches\n')
    s1 = net.addSwitch('s1', cls=OVSKernelSwitch)
    s2 = net.addSwitch('s2', cls=OVSKernelSwitch)

    info( '*** Add hosts\n')
    h1 = net.addHost('h1', cls=Host, ip='10.0.0.1', defaultRoute=None,cpu=0.5)
    h2 = net.addHost('h2', cls=Host, ip='10.0.0.2', defaultRoute=None)
    h3 = net.addHost('h3', cls=Host, ip='10.0.0.3', defaultRoute=None)
    h4 = net.addHost('h4', cls=Host, ip='10.0.0.4', defaultRoute=None)
    #net.addHost('h1',cpu=0.5)

    info( '*** Add links\n')
    net.addLink(h1, s1, bw=10, delay='5ms',max_queue_size=1000, loss=50, use_htb=True)
    net.addLink(h2, s1)
    net.addLink(h3, s2)
    net.addLink(h4, s2)
    net.addLink(s1, s2)
    #net.addLink(h1, s1, bw=10, delay='5ms',max_queue_size=1000, loss=50, use_htb=True)

    info( '*** Starting network\n')
    net.build()
    info( '*** Starting controllers\n')
    for controller in net.controllers:
        controller.start()

    info( '*** Starting switches\n')
    net.get('s1').start([c0])
    net.get('s2').start([c0])

    info( '*** Post configure switches and hosts\n')

    CLI(net)
    net.stop()

if __name__ == '__main__':
    setLogLevel( 'info' )
    myNetwork()
  • 执行结果截图:




个人总结:

本次实验的难度适中,总体而言进行得还算比较顺利,参照实验指导书能较为顺利地完成本次的实验。。比较不幸的是,在一开始创建交换机的时候就遇到了“could not add network device…”的报错,在通过多次删除缓存重做及上网查询也没能解决,其对最终实验结果并无太大影响,便没在深究。另外就是一开始在抓包的时候总是不能达到预期结果,后来发现是因为在开始抓抱前没有选择好端口,之后再次抓包就顺利达到了预期结果。此外,通过本次实验,了解学习了ovs-vsctl相关基本操作,也通过进阶实验了解了直接使用python完成基础部分的内容,并实现一样的结果。

posted @ 2022-09-24 21:27  恒27539  阅读(27)  评论(0编辑  收藏  举报