Emulator for rapid prototyping of Software Defined Networks

Overview

Mininet: Rapid Prototyping for Software Defined Networks

The best way to emulate almost any network on your laptop!

Mininet 2.3.0b2

Build Status

What is Mininet?

Mininet emulates a complete network of hosts, links, and switches on a single machine. To create a sample two-host, one-switch network, just run:

sudo mn

Mininet is useful for interactive development, testing, and demos, especially those using OpenFlow and SDN. OpenFlow-based network controllers prototyped in Mininet can usually be transferred to hardware with minimal changes for full line-rate execution.

How does it work?

Mininet creates virtual networks using process-based virtualization and network namespaces - features that are available in recent Linux kernels. In Mininet, hosts are emulated as bash processes running in a network namespace, so any code that would normally run on a Linux server (like a web server or client program) should run just fine within a Mininet "Host". The Mininet "Host" will have its own private network interface and can only see its own processes. Switches in Mininet are software-based switches like Open vSwitch or the OpenFlow reference switch. Links are virtual ethernet pairs, which live in the Linux kernel and connect our emulated switches to emulated hosts (processes).

Features

Mininet includes:

  • A command-line launcher (mn) to instantiate networks.

  • A handy Python API for creating networks of varying sizes and topologies.

  • Examples (in the examples/ directory) to help you get started.

  • Full API documentation via Python help() docstrings, as well as the ability to generate PDF/HTML documentation with make doc.

  • Parametrized topologies (Topo subclasses) using the Mininet object. For example, a tree network may be created with the command:

    mn --topo tree,depth=2,fanout=3

  • A command-line interface (CLI class) which provides useful diagnostic commands (like iperf and ping), as well as the ability to run a command to a node. For example,

    mininet> h11 ifconfig -a

    tells host h11 to run the command ifconfig -a

  • A "cleanup" command to get rid of junk (interfaces, processes, files in /tmp, etc.) which might be left around by Mininet or Linux. Try this if things stop working!

    mn -c

Python 3 Support

  • Mininet 2.3.0b2 supports Python 3 and Python 2!

  • You can install both the Python 3 and Python 2 versions of Mininet side by side, but the most recent installation will determine which Python version is used by default by mn.

  • You can run mn directly with Python 2 or Python 3, as long as the appropriate version of Mininet is installed, e.g.

    $ sudo python2 `which mn`
    
  • More information regarding Python 3 and Python 2 support may be found in the release notes on http://docs.mininet.org.

Other Enhancements and Information

  • Support for Ubuntu 20.04 LTS (and 18.04 and 16.04)

  • More reliable testing and CI via github actions

  • Additional information about this release and previous releases may be found in the release notes on http://docs.mininet.org.

Installation

See INSTALL for installation instructions and details.

Documentation

In addition to the API documentation (make doc), much useful information, including a Mininet walkthrough and an introduction to the Python API, is available on the Mininet Web Site. There is also a wiki which you are encouraged to read and to contribute to, particularly the Frequently Asked Questions (FAQ) at http://faq.mininet.org.

Support

Mininet is community-supported. We encourage you to join the Mininet mailing list, mininet-discuss at:

https://mailman.stanford.edu/mailman/listinfo/mininet-discuss

Join Us

Thanks again to all of the Mininet contributors!

Mininet is an open source project and is currently hosted at https://github.com/mininet. You are encouraged to download the code, examine it, modify it, and submit bug reports, bug fixes, feature requests, new features and other issues and pull requests. Thanks to everyone who has contributed code to the Mininet project (see CONTRIBUTORS for more info!) It is because of everyone's hard work that Mininet continues to grow and improve.

Enjoy Mininet

Have fun! We look forward to seeing what you will do with Mininet to change the networking world.

Bob Lantz on behalf of the Mininet Contributors

Comments
  • CGroups disappear from sysfs

    CGroups disappear from sysfs

    When ever I run mininet, all cgroup folders from /sys/fs/cgroup disappear. I have Arch Linux running and the version 2.2.0 of mininet. I traced the problem to calling mnexec from startShell in the Host class. The mnexec call with which I can reproduce it is "mnexec -cdn env PS1=$ bash --norv -mis mininet:h1". I guess it is related to the mount() call on line 134 but I don't know. At this point I don't know how to debug it further.

    opened by maufl 23
  • Problem in running Mininet in docker

    Problem in running Mininet in docker

    Hello,

    I am trying to run the mininet within an ubuntu container using docker. However, I cannot run any of the examples successfully. These are the commands I have used:

    1. sudo docker run -it --name="ubuntu_ovs" ubuntu:latest /bin/bash
    2. [email protected]:/# sudo apt-get update
    3. [email protected]:/# sudo apt-get install mininet
    4. [email protected]:/# sudo apt-get install git
    5. roo[email protected]:/# git clone git://github.com/mininet/mininet.git
    6. [email protected]:/# cd mininet/examples
    7. [email protected]:/mininet/examples# sudo python nat.py

    I get the following errors for all examples in the folder. Do you have any idea what the problem is?

    *** Error setting resource limits. Mininet's performance may be affected. *** Creating network *** Adding controller *** Adding hosts: h1 h2 h3 h4 *** Adding switches: s1 *** Adding links: Traceback (most recent call last): File "nat.py", line 104, in net = TreeNet( depth=1, fanout=4 ) File "/usr/lib/python2.7/dist-packages/mininet/topolib.py", line 36, in TreeNet return Mininet( topo, *_kwargs ) File "/usr/lib/python2.7/dist-packages/mininet/net.py", line 164, in init self.build() File "/usr/lib/python2.7/dist-packages/mininet/net.py", line 357, in build self.buildFromTopo( self.topo ) File "/usr/lib/python2.7/dist-packages/mininet/net.py", line 344, in buildFromTopo self.addLink( src, dst, srcPort, dstPort, *_params ) File "/usr/lib/python2.7/dist-packages/mininet/net.py", line 287, in addLink return cls( node1, node2, *_defaults ) File "/usr/lib/python2.7/dist-packages/mininet/link.py", line 362, in init link=self, *_params1 ) File "/usr/lib/python2.7/dist-packages/mininet/link.py", line 45, in init node.addIntf( self, port=port ) File "/usr/lib/python2.7/dist-packages/mininet/node.py", line 355, in addIntf moveIntf( intf.name, self ) File "/usr/lib/python2.7/dist-packages/mininet/util.py", line 202, in moveIntf srcNode=srcNode, printError=printError ) File "/usr/lib/python2.7/dist-packages/mininet/util.py", line 167, in retry while not fn( _args, *_keywords ) and tries < retries: File "/usr/lib/python2.7/dist-packages/mininet/util.py", line 186, in moveIntfNoRetry links = dstNode.cmd( 'ip link show' ) File "/usr/lib/python2.7/dist-packages/mininet/node.py", line 283, in cmd self.sendCmd( _args, *_kwargs ) File "/usr/lib/python2.7/dist-packages/mininet/node.py", line 229, in sendCmd self.write( cmd + '\n' ) File "/usr/lib/python2.7/dist-packages/mininet/node.py", line 182, in write os.write( self.stdin.fileno(), data ) OSError: [Errno 32] Broken pipe

    These are also the outputs after running ovs service start and restart. I can manually add ovs instances without any problem. [email protected]:/mininet/examples# sudo service openvswitch-switch restart

    • Killing ovs-vswitchd (788)
    • Killing ovsdb-server (778) nice: cannot set niceness: Permission denied
    • Starting ovsdb-server
    • Configuring Open vSwitch system IDs nice: cannot set niceness: Permission denied
    • Starting ovs-vswitchd
    • Enabling remote OVSDB managers
    opened by imehrdad2012 18
  • add support for the IVS virtual switch

    add support for the IVS virtual switch

    IVS is an open source virtual switch available for download at https://github.com/floodlight/ivs. It uses the openvswitch kernel module.

    I also modified test_hifi slightly to let me run those tests against IVS.

    opened by rlane 18
  • fix

    fix "which" calls always returning true

    The redirection of stderr towards stdout means calls to "which program" always return something even when "program" is not installed.

    This patch checks for the return value instead before returning the value.

    See #814.

    discussion 
    opened by teto 17
  • Compilation error in oflops with Ubuntu 18.04

    Compilation error in oflops with Ubuntu 18.04

    util/mininet.sh does not work with Ubuntu 18.04

    /bin/bash ./libtool  --tag=CC   --mode=link gcc  -g -O2 -Wall -I/home/tom/workspace/mininet/openflow/include -Wshadow `pkg-config --cflags libconfig`  -L/home/tom/workspace/mininet/openflow/lib `pkg-config --libs libconfig` -o liboflops_test.la -rpath /usr/local/lib test_module.lo msgbuf.lo pcap_track.lo oflops_snmp.lo utils.lo wc_event.lo -lnetsnmp
    libtool: link: gcc -g -O2 -Wall -I/home/tom/workspace/mininet/openflow/include -Wshadow -Wl,-E -o oflops channel_info.o context.o control.o module_run.o module_default.o oflops.o oflops_pcap.o timer_event.o msg.o log.o traffic_generator.o usage.o  -L/home/tom/workspace/mininet/openflow/lib -lconfig -ldl -lpcap -lnetsnmp -loflops_test -lpthread
    /usr/local/bin/ld: cannot find -loflops_test
    collect2: error: ld returned 1 exit status
    Makefile:576: recipe for target 'oflops' failed
    make[2]: *** [oflops] Error 1
    make[2]: *** Waiting for unfinished jobs....
    libtool: link: gcc -shared  -fPIC -DPIC  .libs/test_module.o .libs/msgbuf.o .libs/pcap_track.o .libs/oflops_snmp.o .libs/utils.o .libs/wc_event.o   -L/home/tom/workspace/mininet/openflow/lib -lconfig -lnetsnmp  -g -O2   -Wl,-soname -Wl,liboflops_test.so.0 -o .libs/liboflops_test.so.0.0.0
    libtool: link: (cd ".libs" && rm -f "liboflops_test.so.0" && ln -s "liboflops_test.so.0.0.0" "liboflops_test.so.0")
    libtool: link: (cd ".libs" && rm -f "liboflops_test.so" && ln -s "liboflops_test.so.0.0.0" "liboflops_test.so")
    libtool: link: ar cru .libs/liboflops_test.a  test_module.o msgbuf.o pcap_track.o oflops_snmp.o utils.o wc_event.o
    libtool: link: ranlib .libs/liboflops_test.a
    libtool: link: ( cd ".libs" && rm -f "liboflops_test.la" && ln -s "../liboflops_test.la" "liboflops_test.la" )
    make[2]: Leaving directory '/home/tom/workspace/mininet/oflops'
    Makefile:641: recipe for target 'all-recursive' failed
    make[1]: *** [all-recursive] Error 1
    make[1]: Leaving directory '/home/tom/workspace/mininet/oflops'
    Makefile:433: recipe for target 'all' failed
    make: *** [all] Error 2
    

    I tried with master, 2.3.0d5 and 2.2.2

    opened by tbarbette 14
  • git links in install.sh not working - unable to install

    git links in install.sh not working - unable to install

    I tried to install mininet from source (./install.sh), but an error occured:

    Cloning into 'openflow'...
    fatal: read error: Connection reset by peer
    (the install script is attempting to clone from git://openflowswitch.org/openflow.git)
    

    according to infomation on top of the page on http://archive.openflow.org/ (where I am being redirected when trying to visit openflowswitch.org), this site is no longer maintained. I think we should change the dead links in install.sh to working ones. I would do it, but as I am new to mininet and openflow, I don't know what are the proper locations.

    the line which is causing the problem:

    https://github.com/mininet/mininet/blob/master/util/install.sh#L164
    

    (there was similar issue some time ago: https://github.com/mininet/mininet/issues/277 , but it seemed to be a temporal problem only)

    opened by loffler 14
  • OvS broken on ChromeOS but --switch user works fine

    OvS broken on ChromeOS but --switch user works fine

    When I run sudo mn --test pingall after mininet installation using git clone git://github.com/mininet/mininet and then mininet/util/install.sh -a it does not run completely. Stuck on Waiting for switches to connect. Please Help!

    Entire Output: *** Error setting resource limits. Mininet's performance may be affected. *** 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 ... *** Waiting for switches to connect ^C

    Keyboard Interrupt. Shutting down and cleaning up... *** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes killall controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 2> /dev/null ^[[A^[[Akillall -9 controller ofprotocol ofdatapath ping nox_corelt-nox_core ovs-openflowd ovs-controllerovs-testcontroller udpbwtest mnexec ivs ryu-manager 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 --if-exists del-br s1 ovs-vsctl --timeout=1 list-br *** Removing all links of the pattern foo-ethX ip link show | egrep -o '([-_.[:alnum:]]+-eth[[:digit:]]+)' ( ip link del s1-eth1;ip link del s1-eth2 ) 2> /dev/null 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.

    opened by jyoti246 13
  • Error on installation in Ubuntu 15.10 amd64

    Error on installation in Ubuntu 15.10 amd64

    The error is the following one:

    /oflops/traffic_generator.c:140: undefined reference to `time_diff' collect2: error: ld returned 1 exit status Makefile:574: recipe for target 'oflops' failed make[2]: *** [oflops] Error 1 make[2]: Leaving directory '/home/txapela/sdn/oflops' Makefile:639: recipe for target 'all-recursive' failed make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory '/home/txapela/sdn/oflops' Makefile:431: recipe for target 'all' failed make: *** [all] Error 2

    Mininet seems to be installed but when I try a test command it gets stuck here:

    sudo mn --test pingall *** 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 ... *** Waiting for switches to connect

    I can't also install it again so any help would be nice.

    Thanks

    opened by ederollora 13
  • Using a SwitchNode LOCAL port to act as a host

    Using a SwitchNode LOCAL port to act as a host

    I'm attempting to implement an in-band controller using the LOCAL port of a Mininet switch, and I've manually given two switches LOCAL interfaces (s1 and s2) IP addresses (with ifconfig), manually added the ARP entries (with arp -s) and created the flows but it seems the packets arriving on the LOCAL port aren't arriving at networking stack.

    So, I ping, s1 -> s2 (with ping -I s1 <s2-ip-addr>), the flow counters increase for the s1 -> s1(port1) and the s2(port1) -> s2 flows. But it doesn't look like its making it from the s2 interface to linux.

    I know this works with Mininet hosts (so, not using the LOCAL port). Am I missing anything important about Mininet SwitchNodes or the LOCAL port here?

    I'll make proof of concept script when I have some time tonight

    opened by jpillora 13
  • (Deferred) Mininet patches from Big Switch

    (Deferred) Mininet patches from Big Switch

    So, here is the first batch of mininet patches from big switch; normally they would create the pull request, but to get things started and to facilitate some discussion and code review, I've created the pull request myself.

    This is (as far as I can tell) revised to have the correct rebase, though it seems to include my commits from the userovs branch on yuba. I'd suggest _discussing (only) the big switch changes here, and discussing the userovs changes at: https://github.com/mininet/mininet/pull/4._

    I haven't reviewed everything, but a couple of things I've seen so far look pretty reasonable, including using sudo so Mininet is only root for the root-like things it needs to do (and so it can be imported into average python code not running as root), and a fix for the annoying control-c-kills-your-xterms (and other subprocesses) bug (assuming that the fix is good and works.)

    Although this is a mass of patches, we may want to cherry-pick specific commits.

    I'm (hopefully) cc'ing Ed and Mike from big switch so they can join the discussion.

    /cc @eswierk @mscohen02 /cc @jvimal @nikhilh

    opened by lantz 13
  • Exception: Error creating interface pair (s2-eth5,s3-eth1): RTNETLINK answers: File exists

    Exception: Error creating interface pair (s2-eth5,s3-eth1): RTNETLINK answers: File exists

    Hi, I'm using mininet I created a topology using miniedit and generated a script (minitopo.py)
    and i'm getting this error when executing the script

    Traceback (most recent call last):
      File "minitopo1.py", line 70, in <module>
        myNetwork()
      File "minitopo1.py", line 49, in myNetwork
        net.addLink(s2, s3)
      File "/home/mininet/mininet/mininet/net.py", line 364, in addLink
        link = cls( node1, node2, **options )
      File "/home/mininet/mininet/mininet/link.py", line 424, in __init__
        node1, node2, deleteIntfs=False )
      File "/home/mininet/mininet/mininet/link.py", line 468, in makeIntfPair
        deleteIntfs=deleteIntfs )
      File "/home/mininet/mininet/mininet/util.py", line 194, in makeIntfPair
        ( intf1, intf2, cmdOutput ) )
    Exception: Error creating interface pair (s2-eth5,s3-eth1): RTNETLINK answers: File exists
    

    I've tried to use it without the remote controller, and had the same problem , there's something wrong in creating the links between (s2,s3) and (s4,s3)

    here's the script (minitopo.py) ,

    #!/usr/bin/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' )
        c1=net.addController(name='c1',
                          controller=Controller,
                          protocol='tcp',
                          port=6633)
    
        info( '*** Add switches\n')
        s2 = net.addSwitch('s2', cls=OVSKernelSwitch)
        s4 = net.addSwitch('s4', cls=OVSKernelSwitch)
        s3 = net.addSwitch('s3', cls=OVSKernelSwitch)
    
        info( '*** Add hosts\n')
        h7 = net.addHost('h7', cls=Host, ip='10.0.0.7', defaultRoute=None)
        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)
        h6 = net.addHost('h6', cls=Host, ip='10.0.0.6', defaultRoute=None)
        h5 = net.addHost('h5', cls=Host, ip='10.0.0.5', defaultRoute=None)
        h8 = net.addHost('h8', cls=Host, ip='10.0.0.8', defaultRoute=None)
        h1 = net.addHost('h1', cls=Host, ip='10.0.0.1', defaultRoute=None)
    
        info( '*** Add links\n')
        net.addLink(s2, h4)
        net.addLink(s2, h3)
        net.addLink(s2, h2)
        net.addLink(s2, h1)
        net.addLink(s4, h5)
        net.addLink(s4, h6)
        net.addLink(s4, h7)
        net.addLink(s4, h8)
        net.addLink(s2, s3)
        net.addLink(s3, s4)
    
        info( '*** Starting network\n')
        net.build()
        info( '*** Starting controllers\n')
        for controller in net.controllers:
            controller.start()
    
        info( '*** Starting switches\n')
        net.get('s2').start([])
        net.get('s4').start([])
        net.get('s3').start([c1])
    
        info( '*** Post configure switches and hosts\n')
    
        CLI(net)
        net.stop()
    
    if __name__ == '__main__':
        setLogLevel( 'info' )
        myNetwork()
    

    could you please telle me what's wrong ?

    opened by AlPazinou 12
  • Feature request: ARM64/Apple Silicon Mininet VM

    Feature request: ARM64/Apple Silicon Mininet VM

    Expected/Desired Behavior:

    Mininet VM should be runnable on an M1 Mac machine as well.

    Actual Behavior:

    Any VM software would report that only x86 architecture is supported.

    feature request 
    opened by ez4bk 1
  • telnet: Unable to connect to remote host: Connection refused

    telnet: Unable to connect to remote host: Connection refused

    I've tried telnet localhost bgpd in terminal, xterm, and the mn example sudo mn, all of them succeeded. However, when I ran this command on a project that was slightly modified based on BGP Path Hijacking Attack Demo, the following error occurred:

    Connecting to shell Trying 127.0.0.1... telnet: Unable to connect to remote host: Connection refused

    Then I ran pingall, which succeeded in the mn example, to get things below:

    *** Ping: testing ping reachability h1-1 -> X X X X X X X X X X X h1-2 -> X X X X X X X X X X X h1-3 -> X X X X X X X X X X X h2-1 -> X X X X X X X X X X X h2-2 -> X X X X X X X X X X X h2-3 -> X X X X X X X X X X X h3-1 -> X X X X X X X X h4-1 X X h3-2 -> X X X X X X X X X h4-2 X h3-3 -> X X X X X X X X X X h4-3 h4-1 -> X X X X X X h3-1 X X X X h4-2 -> X X X X X X X h3-2 X X X h4-3 -> X X X X X X X X h3-3 X X *** Results: 95% dropped (6/132 received)

    opened by weWillGetThere 1
  • Feature request: warn when net.start() is not called

    Feature request: warn when net.start() is not called

    Expected/Desired Behavior:

    Calling methods on a Mininet instance (e.g. ping, pingAll, etc.) should result in a warning or an error if the net has not been started.

    Actual Behavior:

    Commands e.g. ping silently fail when Mininet instance is not started

    Detailed Steps to Reproduce the Behavior:

    from mininet.topo import MinimalTopo
    from mininet.net import Mininet
    from mininet.cli import CLI
    
    topo = MinimalTopo()
    net = Mininet(topo)
    # net.start()
    net.pingAll()
    CLI(net)
    

    The pingAll() gets stuck on h1 when net.start() is not called. If the line is removed and the ping command is tried through the CLI, the same thing happens.

    Additional Information:

    This is one of those obvious errors where people are supposed to start the network before running it, but it's also a very simple QoL fix that can save a lot of time if this error does occur. I ran into this issue and spent a few days trying to fix my topology rather than my initialization script because I didn't realize I had accidentally removed the net.start() when refactoring my code. A message like "Warning: Mininet instance has not been initialized. Did you call start()?" or an error would have saved a lot of time.

    opened by GimmickNG 0
Releases(2.3.0)
Network Automation and Programmability Abstraction Layer with Multivendor support

NAPALM NAPALM (Network Automation and Programmability Abstraction Layer with Multivendor support) is a Python library that implements a set of functio

napalm-automation 2k Dec 31, 2022
The POX network software platform

POX POX is a networking software platform written in Python. POX started life as an OpenFlow controller, but can now also function as an OpenFlow swit

NOX Repo 591 Dec 13, 2022
α-Indirect Control in Onion-like Networks

α-Indirect Control in Onion-like Networks

European University at St. Petersburg (EUSP) 150 Jul 07, 2022
Virt Test Provider for qemu and other related virtualization backends

QEMU test provider for virt-test This is the official [1] test provider for the following subtest types: QEMU Generic (Virtualization backend agnostic

Autotest 41 Jan 03, 2023
Emulator for rapid prototyping of Software Defined Networks

Mininet: Rapid Prototyping for Software Defined Networks The best way to emulate almost any network on your laptop! Mininet 2.3.0b2 What is Mininet? M

Mininet 4.7k Jan 05, 2023
whm also known as wifi-heat-mapper is a Python library for benchmarking Wi-Fi networks and gather useful metrics that can be converted into meaningful easy-to-understand heatmaps.

whm also known as wifi-heat-mapper is a Python library for benchmarking Wi-Fi networks and gather useful metrics that can be converted into meaningful easy-to-understand heatmaps.

Nischay Mamidi 128 Dec 16, 2022
Temporal network visualization

Temporal network visualization This code is what I used to make the visualizations of SocioPatterns' primary school data here It requires the data of

Petter Holme 12 Jun 04, 2022
A python module to create random networks using network models

networkgen A python module to create random networks using network models Usage $

Serkan Demirci 3 Sep 26, 2022
This project calculates current internet upload and download speeds.

Internet-Speed-Calculator Project Description: In this project, are creating an internet speed calculator. Requirements: Following modules need to be

Hassan Shahzad 4 Oct 26, 2021