طریقه نصب و راه اندازی سوئیچ‌های OpenFlow با استفاده از Mininet

Mininet چیست؟

Mininet یک امولاتور یا مقلد شبکه است که می تواند کل شبکه OpenFlow را بر روی کامپیوترتان، یا در  Raspberry Pi ایجاد  کند. از نظر مفهومی می­‌توان گفت، Mininet مانند GNS3 (که یکی از امولاتورهای متداول شبکه می‌باشد) است. حتی ممکن است که در آینده Mininet  به GNS3 اضافه شود.

 

Mininet  به شما امکان ایجاد توپولوژی‌های مختلف شامل سوئیچ های OpenFlow و میزبان ها ( تجهیزات انتهایی) را می ­دهد . توپولوژی­‌های متنوعی را می­‌توان در Mininet ایجاد نمود: از یک توپولوژی ساده با یک سوئیچ (single switch) تا توپولوژی­ های پیچیده­‌تری شامل چند سوئیچ و چندین لینک (multiple switches and multiple links). سوئیچ‌ها و میزبان های مجازی مانند دستگاه های واقعی عمل می کنند و می توانید ترافیک را بین میزبان ها ارسال و پس از آن در سوئیچ ها جریان را مشاهده کنید. علاوه بر این، از برنامه های کاربردی مانند iperf  می توان برای اندازه گیری عملکرد شبکه استفاده کرد. توپولوژی شبکه با استفاده از دستور “sudo mn ” ایجاد میشود. حالت­های مختلف را می توان مانند “topo=linear,4– ” ایجاد کرد. دستور فوق یک شبکه متشکل از 4 سوئیچ که به صورت پشت سرهم و به صورت خطی  و به هر سوئیچ یک میزبان می‌شود. Mininet را می‌توانید به صورت یک ماشین مجازی دانلود کنید که این ماشین مجازی در نرم افزارهای VirtualBox ، VMware workstation ،ESXi قابل اجراست.

طریقه نصب Mininet بر روی Raspberry Pi (و سایر پلتفرم‌ها)

در اینجا، می خواهیم به شما یک راه آسان را برای نصب Mininet  با استفاده از Raspberry Pi نشان دهیم:

مرحله 1: بر روی Raspberry Pi، پروژه Mininet  را از github  کلون می‌گیریم:

pi@raspberrypi1 ~ $ sudo git clone git://github.com/mininet/mininet.git

مرحله 2: وارد دایرکتوری util می شوید:

pi@raspberrypi1 ~ $ cd mininet/util

مرحله 3: اسکریپت install.sh با استفاده از هر کدام از این گزینه ها اجرا می کنید:

گزینه 1:  نصب بیسیک

pi@raspberrypi1 ~/mininet/util $ sudo ./install.sh -fnv

گزینه 2 نصب همه چیز :

pi@raspberrypi1 ~/mininet/util $ sudo ./install.sh -a

گام 4:  این اسکریپت Mininet  را نصب خواهد کرد… (به خصوص اگر شما از گزینه a – استفاده کنید)

نتیجه : انجام شد! Mininet نصب شده است.

آموزش دستورات Mininet

تست: برای تست راه اندازی، یک توپولوژی عمومی Mininet را با استفاده از دستور  sudo  mn اجرا می‌کنیم.

 

pi@raspberrypi1 ~ $ sudo 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>

نتیجه : این یک توپولوژی متشکل از یک سوئیچ و دو میزبان است.

برای تست اتصال بین میزبان ها  از دستور ” pingall ” استفاده می‌شود:

 

نتیجه : ping موفق بود.

برای بستن و خروج از Mininet ، از دستور ” exit ” استفاده میکنیم :

 

mininet> exit
*** Stopping 1 controllers
c0
*** Stopping 2 links
..
*** Stopping 1 switches
s1
*** Stopping 2 hosts
h1 h2
*** Done
completed in 108.673 seconds
pi@raspberrypi1 ~ $

برای clean کردن Mininet  جهت خروج خوب است یکبار از دستور sudo mn -c ” استفاده کنید:

pi@raspberrypi1 ~ $ sudo mn -c
*** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes
killall controller ofprotocol ofdatapath ping nox_core lt-nox_core ovs-openflowd ovs-controller udpbwtest mnexec ivs 2> /dev/null
killall -9 controller ofprotocol ofdatapath ping nox_core lt-nox_core ovs-openflowd ovs-controller udpbwtest mnexec ivs 2> /dev/null
pkill -9 -f “sudo mnexec”
*** Removing junk from /tmp
rm -f /tmp/vconn* /tmp/vlogs* /tmp/*.out /tmp/*.log
*** Removing old X11 tunnels
*** Removing excess kernel datapaths
ps ax | egrep -o ‘dp[0-9]+’ | sed ‘s/dp/nl:/’
*** Removing OVS datapaths
ovs-vsctl –timeout=1 list-br
ovs-vsctl –timeout=1 list-br
*** Removing all links of the pattern foo-ethX
ip link show | egrep -o ‘([-_.[:alnum:]]+-eth[[:digit:]]+)’
ip link show
*** Killing stale mininet node processes
pkill -9 -f mininet:
*** Shutting down stale tunnels
pkill -9 -f Tunnel=Ethernet
pkill -9 -f .ssh/mn
rm -f ~/.ssh/mn/*
*** Cleanup complete.
pi@raspberrypi1 ~

برای ایجاد یک توپولوژی بزرگتر که متشکل از 4 سوئیچ است ، از دستور زیر استفاده می‌شود:

 

pi@raspberrypi1 ~ $ sudo mn --topo=linear,4
*** Creating network
*** Adding controller
*** Adding hosts:
h1 h2 h3 h4
*** Adding switches:
s1 s2 s3 s4
*** Adding links:
(h1, s1) (h2, s2) (h3, s3) (h4, s4) (s2, s1) (s3, s2) (s4, s3)
** Configuring hosts
h1 h2 h3 h4
*** Starting controller
c0
*** Starting 4 switches
s1 s2 s3 s4 …
*** Starting CLI:
mininet

نتیجه : یک توپولوژی شامل 4 سوئیچ هر یک با داشتن یک میزبان متصل به آنها ایجاد شده است.

اتصال بین میزبان ها را  می توان یک بار دیگر با استفاده از دستور Pingall تست کرد:

mininet> pingall
*** Ping: testing ping reachability
h1 -> h2 h3 h4
h2 -> h1 h3 h4
h3 -> h1 h2 h4
h4 -> h1 h2 h3
*** Results: 0% dropped (12/12 received)
mininet>

نتیجه : ping موفق بود.

 

اتصال Mininet به کنترلر‌های remote

Mininet همچنین می تواند با کنترل کننده های خارجی مانند OpenDayLight (ODL)، ONOS، کنترلر HP VAN SDN و دیگر کنترل کننده ها ادغام شود.برای ادغام شدن با یک کنترل کننده خارجی، از گزینه controller– (در این قسمت ، کنترلر بر روی سرور با آدرس IP ، 192.168.56.100 در حال اجرا است) استفاده می شود.

pi@raspberrypi1 ~ $ sudo mn --controller=remote,ip=192.168.56.100 --topo=linear,4
*** Creating network
*** Adding controller
*** Adding hosts:
h1 h2 h3 h4
*** Adding switches:
s1 s2 s3 s4
*** Adding links:
(h1, s1) (h2, s2) (h3, s3) (h4, s4) (s2, s1) (s3, s2) (s4, s3)
*** Configuring hosts
h1 h2 h3 h4
*** Starting controller
c0
*** Starting 4 switches
s1 s2 s3 s4 …
*** Starting CLI:
mininet> pingall
*** Ping: testing ping reachability
h1 -> h2 h3 h4
h2 -> h1 h3 h4
h3 -> h1 h2 h4
h4 -> h1 h2 h3
*** Results: 0% dropped (12/12 received)
mininet

 

مشاهده توپولوژی با کنترلر ODL

مشاهده توپولوژی با کنترلر ONOS

و کنترلر HP VAN SDN

منبع:

pakiti.com

طریقه نصب و راه اندازی سوئیچ‌های OpenFlow با استفاده از Mininet
میانگین 5 امتیاز از 2 رای

(2) دیدگاه

  • سارا پاسخ

    با سلام و تشکر از آموزش مفیدتون

    آیا امکان اتصال mininet به شبیه ساز ns2 وجود داره؟

    ۱۸ بهمن ۱۳۹۶ در ۱۱:۳۳ ق.ظ
    • سید حسام قاسمی
      سید حسام قاسمی پاسخ

      سلام خدمت شما. ممنون از توجهتون
      خیر. ولی با استفاده از OpenNet امکان اتصال مینی نت و ns3 وجود دارد. به این آموزش مراجعه کنید

      ۱۸ بهمن ۱۳۹۶ در ۴:۰۴ ب.ظ

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *