In this tutorial, i will show you how to create a simple network topology in your computer. For the first step, you need to install mininet on your computer.
Environment:
parallels@parallels-vm:~$ uname -r4.13.0-43-genericparallels@parallels-vm:~$ uname -aLinux parallels-vm 4.13.0-43-generic #48~16.04.1-Ubuntu SMP Thu May 10 12:56:46 UTC 2020 x86_64 x86_64 x86_64 GNU/Linuxparallels@parallels-vm:~$ git clone git://github.com/mininet/mininetparallels@parallels-vm:~$ cd mininetparallels@parallels-vm:~$ util/install.sh -a
parallels@parallels-vm:~$ sudo mn -hUsage: mn [options](type mn -h for details)The mn utility creates Mininet network from the command line. It can createparametrized topologies, invoke the Mininet CLI, and run tests.Options: -h, --help show this help message and exit --switch=SWITCH default|ivs|lxbr|ovs|ovsbr|ovsk|user[,param=value...] ovs=OVSSwitch default=OVSSwitch ovsk=OVSSwitch lxbr=LinuxBridge user=UserSwitch ivs=IVSSwitch ovsbr=OVSBridge --host=HOST cfs|proc|rt[,param=value...] rt=CPULimitedHost{'sched': 'rt'} proc=Host cfs=CPULimitedHost{'sched': 'cfs'} --controller=CONTROLLER default|none|nox|ovsc|ref|remote|ryu[,param=value...] ovsc=OVSController none=NullController remote=RemoteController default=DefaultController nox=NOX ryu=Ryu ref=Controller --link=LINK default|ovs|tc|tcu[,param=value...] default=Link ovs=OVSLink tcu=TCULink tc=TCLink --topo=TOPO linear|minimal|reversed|single|torus|tree[,param=value ...] linear=LinearTopo torus=TorusTopo tree=TreeTopo single=SingleSwitchTopo reversed=SingleSwitchReversedTopo minimal=MinimalTopo -c, --clean clean and exit --custom=CUSTOM read custom classes or params from .py file(s) --test=TEST none|build|all|iperf|pingpair|iperfudp|pingall -x, --xterms spawn xterms for each node -i IPBASE, --ipbase=IPBASE base IP address for hosts --mac automatically set host MACs --arp set all-pairs ARP entries -v VERBOSITY, --verbosity=VERBOSITY info|warning|critical|error|debug|output --innamespace sw and ctrl in namespace? --listenport=LISTENPORT base port for passive switch listening --nolistenport don't use passive listening port --pre=PRE CLI script to run before tests --post=POST CLI script to run after tests --pin pin hosts to CPU cores (requires --host cfs or --host rt) --nat [option=val...] adds a NAT to the topology that connects Mininet hosts to the physical network. Warning: This may route any traffic on the machine that uses Mininet's IP subnet into the Mininet network. If you need to change Mininet's IP subnet, see the --ipbase option. --version prints the version and exits --cluster=server1,server2... run on multiple servers (experimental!) --placement=block|random node placement for --cluster (experimental!)
Ok! Let's start to create a realistic virtual network!
1.Create a simple network topology:
parallels@parallels-vm:~$ sudo mn*** Creating network*** Adding controller*** Adding hosts:h1 h2 *** Adding switches:s1 *** Adding links:(h1, s1) (h2, s1) *** Configuring hostsh1 h2 *** Starting controllerc0 *** Starting 1 switchess1 ...*** Starting CLI:mininet>
Check how many nodes are in the network topology:mininet> nodesavailable nodes are: c0 h1 h2 s1
3.Check network topology connection status:
mininet> neth1 h1-eth0:s1-eth1h2 h2-eth0:s1-eth2s1 lo: s1-eth1:h1-eth0 s1-eth2:h2-eth0c0
4.you can type a command to operate on special equipment:
mininet> h1 ifconfigh1-eth0 Link encap:Ethernet HWaddr e6:06:6d:77:e4:c5 inet addr:10.0.0.1 Bcast:10.255.255.255 Mask:255.0.0.0 inet6 addr: fe80::e406:6dff:fe77:e4c5/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:59 errors:0 dropped:0 overruns:0 frame:0 TX packets:31 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:5911 (5.9 KB) TX bytes:2630 (2.6 KB)lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
5.Closed the mininet:
mininet> exit*** Stopping 1 controllersc0 *** Stopping 2 links..*** Stopping 1 switchess1 *** Stopping 2 hostsh1 h2 *** Donecompleted in 779.394 seconds
You can use sudo mn -c
to clean the virtual network environment when something problems.