Rumah  >  Artikel  >  Tutorial sistem  >  Mininet sistem rangkaian SDN

Mininet sistem rangkaian SDN

WBOY
WBOYke hadapan
2024-01-13 21:36:34841semak imbas
SDN dan Mininet Gambaran Keseluruhan

SDN, nama penuh (Software Defined Network), ialah seni bina rangkaian inovatif baharu dalam Internet moden Teknologi terasnya OpenFlow memisahkan satah kawalan dan satah data peralatan rangkaian untuk mencapai kawalan trafik rangkaian yang fleksibel, menyediakan platform yang baik untuk rangkaian dan aplikasi. Mininet ialah rangkaian yang ditakrifkan perisian ringan dan platform ujian ia menggunakan teknologi virtualisasi ringan untuk menjadikan satu sistem kelihatan seperti rangkaian lengkap yang menjalankan sistem kernel pemikiran dan kod pengguna, yang juga boleh difahami secara ringkas sebagai platform virtualisasi berasaskan proses dalam sistem rangkaian SDN. Ia menyokong pelbagai protokol seperti OpenFlow dan OpenvSwith juga boleh mensimulasikan hos rangkaian lengkap, memaut dan menghidupkan komputer yang sama dan memudahkan pembangunan interaktif, ujian dan Demonstrasi, terutamanya yang menggunakan teknologi OpenFlow dan SDN juga mungkin untuk memindahkan kod daripada platform virtualisasi proses ini kepada persekitaran sebenar.

Ciri yang dilaksanakan oleh Mininet
  • Menyokong komponen rangkaian yang ditakrifkan lembut seperti OpenFlow dan OpenvSwitch
  • Menyokong ujian pemulihan peringkat sistem, topologi kompleks, topologi tersuai, dll.
  • Menyediakan API Python untuk memudahkan pembangunan kolaboratif oleh berbilang orang
  • Kemudahalihan perkakasan yang sangat baik dan kebolehskalaan tinggi
  • Menyokong struktur rangkaian beribu-ribu hos
Pelaksanaan miniet dan aliran kerja

Kaedah pemasangan Mininet agak mudah Ia boleh dipasang dalam sistem Linux melalui kod sumber Git dan skrip pemasangan terbina dalam Di sini saya menggunakan pemasangan lalai semua pakej berkaitan Mininet, seperti: OpenFlow. POX dan alatan lain akan disimpan dalam fail semasa secara lalai Direktori rumah pengguna.
<br> # git clone git://github.com/mininet/mininet<br> # cd mininet/util/<br> # ./install.sh -a<br> #ls<br> mininet of-dissector oflops selalunya pox aliran terbuka<br>

Buat rangkaian

Rajah 1. Contoh rajah rangkaian mudah
SDN 网络系统之 Mininet

Memandangkan Mininet menyokong rangkaian tersuai, berikut ialah contoh rangkaian mudah seperti yang ditunjukkan dalam Rajah 1. Masukkan terus perintah mn dalam sistem rangkaian Mininet untuk mencipta rangkaian topologi satu lapisan dalam sistem ini, dari mana dua hos dan satu dicipta oleh lalai, dan pengawal dan suis diaktifkan. Pada masa yang sama, anda juga boleh menyemak status pautan melalui jaring arahan Contoh disenaraikan secara ringkas dahulu, seperti mendayakan pelayan web dan klien dalam sistem Mininet.
<br> #mn<br> *** Mencipta rangkaian<br> *** Menambah pengawal<br> *** Menambah hos:<br> h1 h2<br> *** Menambah suis:<br> s1<br> *** Menambah pautan:<br> (h1, s1) (h2, s1)<br> ***Mengkonfigurasi hos<br> h1 h2<br> *** Pengawal permulaan<br> *** Memulakan 1 suis<br> s1<br> *** Memulakan CLI:<br> mininet><br>

Dayakan dan lumpuhkan perkhidmatan web

Adalah mudah untuk mewujudkan pelayan Web dalam persekitaran Mininet Daripada contoh di bawah, anda boleh melihat bahawa pelayan Web ditubuhkan daripada hos1 dan mendapatkan permintaan HTTP daripada Hos lain kepada pelayan Web.
<br> mininet> h1 python -m SimpleHTTPServer 80 & #Dayakan perkhidmatan Web pada hos h1<br> mininet> h2 wget -O - h1 #Muat turun kandungan tapak web h1 pada hos h2<br> --2013-11-04 00:05:40-- http://10.0.0.1/<br> Menyambung ke 10.0.0.1:80... disambungkan.<br> Permintaan HTTP dihantar, menunggu jawapan... 200 OK<br> …………<br> Panjang: 760 [teks/html<br> <br> <title>Penyenaraian direktori untuk /</title>

  • .bash_history
  • .wireshark/
  • pasang-mininet-vm.sh
  • mininet/
  • pembedah/
  • flops/
  • paling kerap/
  • aliran terbuka/
  • cacar/

  • 0K 100% 1.65J=0s
    04-11-2013 00:05:40 (1.65 MB/s) - ditulis kepada stdout [760/760]

    mininet> h1 kill %python # Bunuh proses web
    10.0.0.2 - - [04/Nov/2013 00:05:40] "DAPATKAN / HTTP/1.1" 200 -
    bash: baris 23: bunuh: python: ambik spec kerja
    Ujian ping

    Pada sistem Mininet, lakukan ujian interkoneksi antara dua hos.
    <br> mininet> h1 ping -c4 h2<br> PING 10.0.0.2 (10.0.0.2) 56(84) bait data.<br> 64 bait daripada 10.0.0.2: icmp_req=1 ttl=64 masa=1.55 ms<br> 64 bait daripada 10.0.0.2: icmp_req=2 ttl=64 masa=0.094 ms<br> 64 bait daripada 10.0.0.2: icmp_req=3 ttl=64 masa=0.075 ms<br> 64 bait daripada 10.0.0.2: icmp_req=4 ttl=64 masa=0.071 ms

    --- 10.0.0.2 statistik ping ---
    4 paket dihantar, 4 diterima, kehilangan paket 0%, masa 3006ms
    rtt min/avg/maks/mdev = 0.071/0.448/1.553/0.638 ms
    Lihat nod dan pautan
    <br> mininet> nod yang tersedia ialah:<br> c0 h1 h2 s1<br> mininet> net<br> h1 h1-eth0:s1-eth1<br> h2 h2-eth0:s1-eth2<br> s1 lo: s1-eth1:h1-eth0 s1-eth2:h2-eth0<br> c0<br> <br>

    Topologi tersuai Mininet menyokong topologi tersuai Satu contoh diberikan dalam direktori mininet/custom Jika mytopo ditakrifkan dalam fail topo-2sw-2host.py, anda boleh menentukan penggunaan topologi ini melalui pilihan --topo:


    Rajah 2. Contoh topologi tersuai
    SDN 网络系统之 Mininet Memandangkan Mininet juga menyokong topologi berparameter, topologi fleksibel boleh dibuat melalui kod Python, yang juga boleh dikonfigurasikan mengikut parameter tersuai yang diluluskan, dan boleh digunakan semula dalam berbilang persekitaran Struktur umum kodnya disenaraikan secara ringkas di bawah .

    #!/usr/bin/python<br>

    dari mininet.topo import Topo

    daripada mininet.net import Mininet
    daripada mininet.util import dumpNodeConnections
    daripada mininet.log import setLogLevel

    kelas SingleSwitchTopo(Topo):

    def __init__(diri, n=2, **pilihan):
    Topo.__init__(diri, **pilih)
    suis = self.addSwitch('s1') #Tambah suis dalam topologi
    untuk h dalam julat(n):
    hos = self.addHost('h%s' % (h + 1)) #Tambah hos pada topologi
    self.addLink(host, switch) #Tambah topologi sambungan dua hala

    def simpleTest():

    topo = SingleSwitchTopo(n=4)
    net = Mininet(topo) #Kelas utama untuk mencipta dan mengurus rangkaian
    net.start() #Mulakan rangkaian topologi anda
    cetak "Lambakan sambungan hos"
    dumpNodeConnections(net.hosts) #Buang sambungan fail
    cetak "Menguji ketersambungan rangkaian"
    net.pingAll() #Semua nod menguji kesalinghubungan antara satu sama lain
    net.stop() #Hentikan rangkaian anda

    jika __nama__ == '__utama__':

    setLogLevel('info') #Tetapkan tahap output lalai Mininet, tetapkan maklumat ia akan memberikan beberapa maklumat berguna
    SimpleTest()

    Sahkan topologi berparameter

    # python test-single.py<br> *** Mencipta rangkaian<br> *** Menambah pengawal<br> *** Menambah hos:<br> h1 h2 h3 h4<br> *** Menambah suis:<br> s1<br> *** Menambah pautan:<br> (h1, s1) (h2, s1) (h3, s1) (h4, s1)<br> ***Mengkonfigurasi hos<br> h1 h2 h3 h4<br> *** Pengawal permulaan<br> *** Memulakan 1 suis<br> s1<br> Lambakan sambungan hos<br> h1 h1-eth0:s1-eth1<br> h2 h2-eth0:s1-eth2<br> h3 h3-eth0:s1-eth3<br> h4 h4-eth0:s1-eth4<br> Menguji ketersambungan rangkaian<br> *** Ping: menguji kebolehcapaian ping<br> h1 -> h2 h3 h4<br> h2 -> h1 h3 h4<br> h3 -> h1 h2 h4<br> h4 -> h1 h2 h3<br> *** Keputusan: 0% jatuh (12/12 diterima)<br>

    ruang nama ruang nama Biasanya, antara muka hos mempunyai ruang nama bebas, dan nod kawalan dan nod pensuisan kedua-duanya berada dalam ruang nama akar. Jika anda mahu semua nod mempunyai ruang nama mereka sendiri, anda perlu menambah parameter --innamespace, iaitu, laksanakan:

    mn --innamespace
    # mn --innamespace --tukar pengguna<br> *** Mencipta rangkaian<br> *** Menambah pengawal<br> *** Menambah hos:<br> h1 h2<br> *** Menambah suis:<br> s1<br> *** Menambah pautan:<br> (h1, s1) (h2, s1)<br> c0 <br> s1 *** Menguji rangkaian kawalan<br> s1 -> c0<br> c0 -> s1<br> *** Keputusan: 0% jatuh (2/2 diterima)<br>

    *** Mengkonfigurasi hos

    h1 h2
    *** Pengawal permulaan
    *** Memulakan 1 suis
    s1
    *** Memulakan CLI:

    Mininet operasi biasa

    Jadual 1. Arahan lazim Mininet

    Atas ialah kandungan terperinci Mininet sistem rangkaian SDN. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan:
    Artikel ini dikembalikan pada:linuxprobe.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam