實驗一 Mininet應用實踐

一、教學目的

  1. 能夠運用 mininet 可視化工具創建計算機網絡拓撲結構
  2. 能夠運用 mininet 交互界面創建拓撲結構
  3. 能夠運用 python 腳本構建計算機網絡拓撲結構

二、實驗環境

  1. 下載並安裝虛擬機 VMware workstation
  2. 打開虛擬機鏡像( SDNHub_tutorial_VM_64-bit[NEW](可直接導入 VMware).ova ),下載鏈接https://pan.baidu.com/s/1qYN_MtUboPmruHda1DgrTA 提取碼:mhfi

三、技術背景

1. 什麼是Mininet

Mininet是由一些虛擬的終端節點(end-hosts)、交換機、路由器連接而成的一個網絡仿真器。

2.Mininet命令圖譜

在這裏插入圖片描述

3.網絡構建參數——topo

3.1 單一(single)拓撲

整個網絡拓撲中交換機只有一個,下面可以連接多個主機
在這裏插入圖片描述

3.2 線性(linear)拓撲

可以有多個交換機,但是每個交換機下面只是連接一個主機
在這裏插入圖片描述

3.3 樹形(tree)拓撲

交換機連接成樹形排列,且每個交換機所連接主機一般有多個
在這裏插入圖片描述

3.4 自定義(custom)拓撲

Python編寫文件file.py,執行此腳本即可創建定義的拓撲,–custom與–topo聯用
在這裏插入圖片描述

4.網絡構建參數——switch

定義mininet要使用的交換機(默認使用OVSK,即OpenVSwitch交換機)
在這裏插入圖片描述

  1. 定義網絡拓撲要使用的交換機,後面可以接的參數有:ovsk、ovsbr、ivs、lxbr、user,前面三種均爲OVS型交換機,後面兩種分別爲內核型(linux bridge)和用戶型(user)交換機。
  2. 交換機分類3類:內核型、用戶型、OVS型,其中內核型和OVS型的吞吐量比用戶型大很多,因此一般採用後兩種。
測試三者的TCP bandwidth

sudo mn --switch ovsk --test iperf        ovs型
sudo mn --switch user --test iperf    用戶型
sudo mn --test iperf    內核型

5.網絡構建參數——controller

  1. –controller定義要使用的控制器,如果沒有指定則使用mininet中默認的控制器
  2. 連接遠程控制器,可以指定存在於本機或者與之相連通設備上的控制器,指定遠程控制器方法:
sudo mn --controller=remote,--ip=[controller IP],--port=[port]
如果--ip和--port省略的話,則默認使用本地ip地址,端口默認使用6653或6633端口號。

6. Mininet內部交互命令

在這裏插入圖片描述
在這裏插入圖片描述

四、內容與任務

4.1 使用命令行創建拓撲

root@sdnhubvm:/home/ubuntu# mn
*** Creating network
*** Adding controller
*** Adding hosts:
h1 h2 
*** Adding switches:
s1 
*** Adding links:
(h1, s1) (h2, s1) 
*** Configuring hosts
h1 h2 
*** Starting controller
c0 
*** Starting 1 switches
s1 ...
*** Starting CLI:
mininet> py net.addHost('h3')
<Host h3:  pid=8949> 
mininet> py net.addLink(s1,net.get('h3'))
<mininet.link.Link object at 0x7ff7df2d2e90>
mininet> dump
<Host h1: h1-eth0:10.0.0.1 pid=8857> 
<Host h2: h2-eth0:10.0.0.2 pid=8861> 
<Host h3: h3-eth0:None pid=8949> 
<OVSSwitch s1: lo:127.0.0.1,s1-eth1:None,s1-eth2:None,s1-eth3:None pid=8870> 
<Controller c0: 127.0.0.1:6653 pid=8850> 
mininet> py s1.attach('s1-eth3')
mininet> py net.get('h3').cmd('ifconfig h3-eth0 10.0.0.3')
mininet> dump
<Host h1: h1-eth0:10.0.0.1 pid=8857> 
<Host h2: h2-eth0:10.0.0.2 pid=8861> 
<Host h3: h3-eth0:None pid=8949> 
<OVSSwitch s1: lo:127.0.0.1,s1-eth1:None,s1-eth2:None,s1-eth3:None pid=8870> 
<Controller c0: 127.0.0.1:6653 pid=8850> 
mininet> h1 ping h3
PING 10.0.0.3 (10.0.0.3) 56(84) bytes of data.
64 bytes from 10.0.0.3: icmp_seq=1 ttl=64 time=1.86 ms
64 bytes from 10.0.0.3: icmp_seq=2 ttl=64 time=0.286 ms
64 bytes from 10.0.0.3: icmp_seq=3 ttl=64 time=0.057 ms
64 bytes from 10.0.0.3: icmp_seq=4 ttl=64 time=0.062 ms
64 bytes from 10.0.0.3: icmp_seq=5 ttl=64 time=0.053 ms
^C
--- 10.0.0.3 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4000ms
rtt min/avg/max/mdev = 0.053/0.465/1.869/0.707 ms
mininet> h2 ping h3
PING 10.0.0.3 (10.0.0.3) 56(84) bytes of data.
64 bytes from 10.0.0.3: icmp_seq=1 ttl=64 time=1.63 ms
64 bytes from 10.0.0.3: icmp_seq=2 ttl=64 time=0.247 ms
64 bytes from 10.0.0.3: icmp_seq=3 ttl=64 time=0.045 ms
64 bytes from 10.0.0.3: icmp_seq=4 ttl=64 time=0.065 ms
^C
--- 10.0.0.3 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3002ms
rtt min/avg/max/mdev = 0.045/0.498/1.636/0.661 ms
mininet> pingall
*** Ping: testing ping reachability
h1 -> h2 h3 
h2 -> h1 h3 
h3 -> h1 h2 
*** Results: 0% dropped (6/6 received)
mininet>

步驟簡述:

  1. 默認mn進入拓撲下已經創建好h1和h2
  2. 添加主機h3,出現進程
  3. 添加主機h3與s1之間的鏈路
  4. 添加s1的開放端口
  5. 添加h3的ip,使得其與網絡中的其他主機能夠進行通信

4.2 使用可視化工具創建拓撲

  1. 首先打開可視化工具Miniedit
root@sdnhubvm:/home/ubuntu# ls
cgi-bin                          Downloads          mininet  onos      Public     trema
Desktop                          eclipse-workspace  Music    openflow  pyretic    Videos
distribution-karaf-0.6.3-Carbon  epoch-simulator    oflops   Pictures  ryu
Documents                        floodlight         oftest   pox       Templates
root@sdnhubvm:/home/ubuntu# cd mininet/examples/
root@sdnhubvm:/home/ubuntu/mininet/examples# python miniedit.py 
topo=none 
  1. 在可視化界面中創建拓撲
  2. 配置控制器
    在這裏插入圖片描述
  3. 配置交換機
    在這裏插入圖片描述
  4. 配置主機
    在這裏插入圖片描述
  5. 全局配置
    在這裏插入圖片描述
  6. 運行拓撲
    在這裏插入圖片描述
  7. 命令行中查看拓撲情況
Getting Hosts and Switches.
Getting controller selection:ref 
Getting Links.
*** Configuring hosts
h1 h2 h3 
**** Starting 1 controllers
c0 
**** Starting 2 switches
s1 s2 
No NetFlow targets specified.
No sFlow targets specified.


 NOTE: PLEASE REMEMBER TO EXIT THE CLI BEFORE YOU PRESS THE STOP BUTTON. Not exiting will prevent MiniEdit from quitting and will prevent you from starting the network again during this sessoin.

*** Starting CLI:
mininet> 
mininet> dump
<Host h1: h1-eth0:10.0.0.1 pid=9349> 
<Host h2: h2-eth0:10.0.0.2 pid=9355> 
<Host h3: h3-eth0:10.0.0.3 pid=9375> 
<customOvs s1: lo:127.0.0.1,s1-eth1:None,s1-eth2:None,s1-eth3:None pid=9367> 
<customOvs s2: lo:127.0.0.1,s2-eth1:None,s2-eth2:None pid=9371> 
<Controller c0: 127.0.0.1:6633 pid=9384> 
mininet> links
s1-eth1<->h1-eth0 (OK OK) 
s1-eth2<->h2-eth0 (OK OK) 
s2-eth1<->h3-eth0 (OK OK) 
s1-eth3<->s2-eth2 (OK OK) 
mininet> net
h1 h1-eth0:s1-eth1
h2 h2-eth0:s1-eth2
h3 h3-eth0:s2-eth1
s1 lo:  s1-eth1:h1-eth0 s1-eth2:h2-eth0 s1-eth3:s2-eth2
s2 lo:  s2-eth1:h3-eth0 s2-eth2:s1-eth3
c0
mininet> 

  1. 保存腳本
    在這裏插入圖片描述

4.3 腳本創建任意拓撲

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章