Пример #1
0
def topology():

    "Create a network with some docker containers acting as hosts."

    net = Containernet(controller=Controller)

    info('*** Adding controller\n')
    net.addController('c0')

    info('*** Adding hosts\n')
    h1 = net.addHost('h1')
    h2 = net.addHost('h2')

    info('*** Adding docker containers\n')
    d1 = net.addDocker('d1', ip='10.0.0.251', dimage="ubuntu:trusty")
    d2 = net.addDocker('d2', ip='10.0.0.252', dimage="ubuntu:trusty", cpu_period=50000, cpu_quota=25000)
    d3 = net.addHost(
        'd3', ip='11.0.0.253', cls=Docker, dimage="ubuntu:trusty", cpu_shares=20)
    d5 = net.addDocker('d5', dimage="ubuntu:trusty", volumes=["/:/mnt/vol1:rw"])

    info('*** Adding switch\n')
    s1 = net.addSwitch('s1')
    s2 = net.addSwitch('s2', cls=OVSSwitch)
    s3 = net.addSwitch('s3')

    info('*** Creating links\n')
    net.addLink(h1, s1)
    net.addLink(s1, d1)
    net.addLink(h2, s2)
    net.addLink(d2, s2)
    net.addLink(s1, s2)
    #net.addLink(s1, s2, cls=TCLink, delay="100ms", bw=1, loss=10)
    # try to add a second interface to a docker container
    net.addLink(d2, s3, params1={"ip": "11.0.0.254/8"})
    net.addLink(d3, s3)

    info('*** Starting network\n')
    net.start()

    net.ping([d1, d2])

    # our extended ping functionality
    net.ping([d1], manualdestip="10.0.0.252")
    net.ping([d2, d3], manualdestip="11.0.0.254")

    info('*** Dynamically add a container at runtime\n')
    d4 = net.addDocker('d4', dimage="ubuntu:trusty")
    # we have to specify a manual ip when we add a link at runtime
    net.addLink(d4, s1, params1={"ip": "10.0.0.254/8"})
    # other options to do this
    #d4.defaultIntf().ifconfig("10.0.0.254 up")
    #d4.setIP("10.0.0.254")

    net.ping([d1], manualdestip="10.0.0.254")

    info('*** Running CLI\n')
    CLI(net)

    info('*** Stopping network')
    net.stop()
Пример #2
0
def topology():

    "Create a network with some docker containers acting as hosts."

    net = Containernet(controller=Controller)

    info('*** Adding controller\n')
    net.addController('c0')

    info('*** Adding normal Mininet hosts\n')
    h1 = net.addHost('h1')
    h2 = net.addHost('h2')

    info('*** Adding docker containers\n')
    d1 = net.addDocker('d1', ip='10.0.0.251', dimage="ubuntu:trusty")
    d2 = net.addDocker('d2', ip='10.0.0.252', dimage="ubuntu:trusty")

    info('*** Adding switch\n')
    s1 = net.addSwitch('s1')
    s2 = net.addSwitch('s2')
    s3 = net.addSwitch('s3')

    info('*** Creating links\n')
    net.addLink(h1, s1)
    net.addLink(h2, s2)
    net.addLink(d1, s1)
    net.addLink(d2, s2)
    net.addLink(s1, s2, cls=TCLink, delay="100ms", bw=1)

    # we can even add multiple interfaces to a single docker container
    net.addLink(d2, s3, params1={"ip": "11.0.0.254/24"})

    info('*** Starting network\n')
    net.start()

    # run a short test
    net.ping([d1, d2])

    info('*** Running CLI\n')
    CLI(net)  # wait for user input

    info('*** Stopping network')
    net.stop()
Пример #3
0
d3 = net.addDocker('d3', dimage="ftpwebvideo:latest")
d4 = net.addDocker('d4', dimage="ftpwebvideo:latest")

info('*** Adding docker containers\n')
d1.start()
d2.start()
d3.start()
d4.start()

info('*** Creating links\n')
net.addLink(d1, s2, cls=TCLink, delay='0ms', bw=20)
net.addLink(d2, s2, cls=TCLink, delay='0ms', bw=20)
net.addLink(d3, s3, cls=TCLink, delay='0ms', bw=20)
net.addLink(d4, s3, cls=TCLink, delay='0ms', bw=20)
net.addLink(s1, s2, cls=TCLink, delay='0ms', bw=40)
net.addLink(s1, s3, cls=TCLink, delay='0ms', bw=40)

info('*** Starting network\n')
net.start()

info('*** Testing connectivity\n')
net.ping([d2, d1])
net.ping([d3, d1])
net.ping([d4, d1])

info('*** Running CLI\n')
CLI(net)

info('*** Stopping network')
net.stop()
d5 = net.addDocker('d5', dimage="containernet_example:centos6")
d6 = net.addDocker('d6', dimage="containernet_example:centos7")

info('*** Adding switches\n')
s1 = net.addSwitch('s1')

info('*** Creating links\n')
net.addLink(d1, s1)
net.addLink(d2, s1)
net.addLink(d3, s1)
net.addLink(d4, s1)
net.addLink(d5, s1)
net.addLink(d6, s1)

info('*** Starting network\n')
net.start()

info('*** Testing connectivity\n')
net.ping([d2, d1])
net.ping([d3, d1])
net.ping([d4, d1])
net.ping([d5, d1])
net.ping([d6, d1])

info('*** Running CLI\n')
CLI(net)

info('*** Stopping network')
net.stop()

Пример #5
0
info('*** Adding controller\n')
net.addController('c0')
info('*** Adding docker containers\n')
Serv = net.addDocker('Serv',
                     ip='10.0.0.200',
                     dimage=image,
                     dcmd="sh ./server.sh")
GI = net.addDocker('GI', ip='10.0.0.201', dimage=image, dcmd="sh ./gi.sh")
GF1 = net.addDocker('GF1', ip='10.0.0.202', dimage=image, dcmd="sh ./gf1.sh")
GF2 = net.addDocker('GF2', ip='10.0.0.203', dimage=image, dcmd="sh ./gf2.sh")
GF3 = net.addDocker('GF3', ip='10.0.0.204', dimage=image, dcmd="sh ./gf3.sh")
info('*** Adding switches\n')
s1 = net.addSwitch('s1')
info('*** Creating links\n')
net.addLink(GF1, s1)
net.addLink(GF2, s1)
net.addLink(GF3, s1)
net.addLink(GI, s1)
net.addLink(Serv, s1)
info('*** Starting network\n')
net.start()
info('*** Testing connectivity\n')
net.ping([GF1, GI])
net.ping([GF2, GI])
net.ping([GF3, GI])
net.ping([Serv, GI])
info('*** Running CLI\n')
CLI(net)
info('*** Stopping network')
net.stop()
Пример #6
0
    'Act', ip='10.0.0.101',
    dimage="kumokay/ubuntu_wifi:v6")  #docker_ip=172.18.0.4

info('*** Adding switches\n')
s1 = net.addSwitch('s1')

info('*** Creating links\n')
net.addLink(camera_host, s1)
net.addLink(Tx2_host, s1)
net.addLink(Actuator_host, s1)

info('*** Starting network\n')
net.start()

info('*** Testing connectivity\n')
net.ping([camera_host, Tx2_host])

info('*** Running CLI\n')
CLI(net)

# Now run the individual container code
# Code on TX2 Container: TX address is 172.17.49.168:18801
# Tx2 cd /opt/github/placethings && python main_entity.py run_task -n task_findObj -en task_findObj -a 10.0.0.102:18800 -ra 10.0.0.101:18800 -al offload 172.17.49.168:18801 &> /dev/null &

# Code on Camera Container:
# Cam cd /opt/github/placethings && python main_entity.py run_task -n task_camera -en task_forward -a 172.18.0.2:18800 -ra 10.0.0.102:18800 &> /dev/null &

# Code on Actuator: to forward to the display server
# Act cd /opt/github/placethings && python main_entity.py run_task -n task_alert -en task_forward -a 10.0.0.101:18800 -ra 172.17.49.168:18900 &> /dev/null &

# We need to run the data forwarder on the Mininet machine
Пример #7
0
def topology():
    "Create a network with some docker containers acting as hosts."

    net = Containernet(controller=Controller)

    info('*** Adding controller\n')
    net.addController('c0',
                      controller=RemoteController,
                      ip=CONTROLLER_IP,
                      port=6653)

    info('*** Adding hosts\n')
    h1 = net.addHost('h1')
    h2 = net.addHost('h2')

    info('*** Adding docker containers\n')
    d1 = net.addDocker('d1',
                       ip='10.0.0.251',
                       dimage="host-fluentd:latest",
                       log_driver='fluentd',
                       log_opts={
                           'fluentd-address': '{}:24224'.format(FLUENTD_IP),
                           'tag': 'docker-host-1'
                       },
                       environment={'FLUENTD_IP': FLUENTD_IP})
    d2 = net.addDocker('d2',
                       ip='10.0.0.252',
                       dimage="host-fluentd:latest",
                       cpu_period=50000,
                       cpu_quota=25000,
                       log_driver='fluentd',
                       log_opts={
                           'fluentd-address': '{}:24224'.format(FLUENTD_IP),
                           'tag': 'docker-host-2'
                       },
                       environment={'FLUENTD_IP': FLUENTD_IP})
    d3 = net.addHost('d3',
                     ip='11.0.0.253',
                     cls=Docker,
                     dimage="ubuntu:trusty",
                     cpu_shares=20)
    # using advanced features like volumes and exposed ports
    d5 = net.addDocker('d5',
                       dimage="ubuntu:trusty",
                       volumes=["/:/mnt/vol1:rw"],
                       ports=[9999],
                       port_bindings={9999: 9999},
                       publish_all_ports=True)

    info('*** Adding switch\n')
    s1 = net.addSwitch('s1')
    s2 = net.addSwitch('s2', cls=OVSSwitch)
    s3 = net.addSwitch('s3')

    info('*** Creating links\n')
    net.addLink(h1, s1)
    net.addLink(s1, d1)
    net.addLink(h2, s2)
    net.addLink(d2, s2)
    net.addLink(s1, s2)
    # net.addLink(s1, s2, cls=TCLink, delay="100ms", bw=1, loss=10)
    # try to add a second interface to a docker container
    net.addLink(d2, s3, params1={"ip": "11.0.0.254/8"})
    net.addLink(d3, s3)

    info('*** Starting network\n')
    net.start()

    net.ping([d1, d2])

    # our extended ping functionality
    net.ping([d1], manualdestip="10.0.0.252")
    net.ping([d2, d3], manualdestip="11.0.0.254")

    info('*** Dynamically add a container at runtime\n')
    d4 = net.addDocker('d4', dimage="ubuntu:trusty")
    # we have to specify a manual ip when we add a link at runtime
    net.addLink(d4, s1, params1={"ip": "10.0.0.254/8"})
    # other options to do this
    # d4.defaultIntf().ifconfig("10.0.0.254 up")
    # d4.setIP("10.0.0.254")

    net.ping([d1], manualdestip="10.0.0.254")

    info('*** Running CLI\n')
    CLI(net)

    info('*** Stopping network')
    net.stop()
Пример #8
0
from mininet.net import Containernet
from mininet.node import Controller
from mininet.cli import CLI
from mininet.link import TCLink

net = Containernet(controller=Controller)
net.addController('c0')

d1 = net.addDocker('d1', ip='10.0.0.251', dimage="ubuntu:trusty")
d2 = net.addDocker('d2', ip='10.0.0.252', dimage="ubuntu:trusty")

s1 = net.addSwitch('s1')
s2 = net.addSwitch('s2')

net.addLink(d1, s1)
net.addLink(s1, s2, cls=TCLink, delay='100ms', bw=1)
net.addLink(s2, d2)

net.start()

net.ping([d1, d2])

net.stop()
Пример #9
0
     sender open receiver
           lambda
"""
from mininet.net import Containernet
from mininet.node import Controller
from mininet.cli import CLI
from mininet.link import TCLink
from mininet.log import info, setLogLevel
setLogLevel('info')

net = Containernet(controller=Controller)
info('*** Adding controller\n')
net.addController('c0')
info('*** Adding docker containers using ubuntu:trusty images\n')
d1 = net.addDocker('d1', ip='10.0.0.251', dimage="ubuntu:trusty")
d2 = net.addDocker('d2', ip='10.0.0.252', dimage="ubuntu:trusty")
d3 = net.addDocker('d3', ip='10.0.0.253', dimage="ubuntu:trusty")
info('*** Adding switches\n')
s1 = net.addSwitch('s1')
info('*** Creating links\n')
net.addLink(d1, s1)
net.addLink(d2, s1)
net.addLink(d3, s1)
info('*** Starting network\n')
net.start()
info('*** Testing connectivity\n')
net.ping([d1, d2, d3])
info('*** Running CLI\n')
CLI(net)
info('*** Stopping network')
net.stop()
Пример #10
0
# Magic sauce to make the attacker node behave right. There's a
# strange behavior that makes it such that the node doesn't
# do what it should unless some non-bash command has been run
# via the Docker.cmd member or by creating an interative
# terminal via docker exec.
R4.cmd('ifconfig')

WS.cmd('route del default')
WS.cmd('route add default gw 13.0.1.254')
AWS.cmd('route del default')
AWS.cmd('route add default gw 13.0.1.254')
C1.cmd('route del default')
C1.cmd('route add default gw 11.0.1.254')

WS.cmd('/webserver.py &')
AWS.cmd("/webserver.py --text 'Attacking Webserver' &")

info('*** Starting network\n')
net.start()
info('*** Stalling for 10 seconds to allow BGP advertisisng \n')
time.sleep(10)
info('*** Testing connectivity\n')
net.ping([R1, R2])
net.ping([R2, R3])
net.ping([C1, WS])

info('*** Running CLI\n')
CLI(net)
info('*** Stopping network')
net.stop()
Пример #11
0
info('*** Adding docker containers\n')
node1 = net.addDocker('node1', ip='10.0.0.247', dimage="infoslack/dvwa")
node2 = net.addDocker('node2', ip='10.0.0.248', dimage="szsecurity/mutillidae")
HP3 = net.addDocker('HP3', ip='10.0.0.249', dimage="peakkk/metasploitable")
node4 = net.addDocker('node3', ip='10.0.0.250', dimage="fedora")
node5 = net.addDocker('node4', ip='10.0.0.251', dimage="kalilinux/kali-linux-docker")
node6 = net.addDocker('node5', ip='10.0.0.252', dimage="jvhoof/badstore-docker")
node7 = net.addDocker('node6', ip='10.0.0.253', dimage="ubuntu")

info('*** Adding switches\n')
s1 = net.addSwitch('s1')

info('*** Creating links\n')
net.addLink(node1, node2)
net.addLink(node2, HP3)
net.addLink(node2, s1)
net.addLink(s1, node4)
net.addLink(s1, node6)
net.addLink(node4, node5)
net.addLink(node6, node7)
info('*** Starting network\n')
net.start()
info('*** Testing connectivity\n')
net.ping([node1, node2])
info('*** Running CLI\n')
CLI(net)
info('*** Stopping network')
net.stop()

Пример #12
0
    d[i].cmd('ifconfig d' + str(i + 1) + '-eth1 10.0.0.' + str(last_octet) +
             ' netmask 255.0.0.0')
    if i == 0:
        last_octet += 1
        continue
    if i == (node_count - 1):
        break
    Link(d[i], s1, intfName1='d' + str(i + 1) + '-eth2')
    d[i].cmd('ifconfig d' + str(i + 1) + '-eth2 10.0.0.' +
             str(100 + last_octet) + ' netmask 255.0.0.0')
    last_octet += 1

info('*** Starting network\n')
net.start()
info('*** Testing connectivity\n')
for i in range(len(d)):
    for j in range(len(d)):
        if i == j:
            continue
        net.ping([d[i], d[j]])

info('*** Tuning end-points\n')
d[0].cmd('apt update && apt install -y arping tcpdump')
#d[1].cmd('apt update && apt install -y bridge-utils tcpdump && ip addr flush dev d2-eth1 && ip addr flush dev d2-eth2 && brctl addbr d2-br1 && brctl addif d2-br1 d2-eth1 d2-eth2 && ip link set dev d2-br1 up')
d[node_count - 1].cmd('apt update && apt install -y arping tcpdump')

info('*** Running CLI\n')
CLI(net)
info('*** Stopping network')
net.stop()
Пример #13
0
net.addLink(router, wan_switch)

c2 = net.addDocker('c2', dimage="cs4404m3t9/c2")
net.addLink(c2, wan_switch)

client_1 = net.addDocker('client_1', dimage="cs4404m3t9/client")
client_2 = net.addDocker('client_2', dimage="cs4404m3t9/client")
client_3 = net.addDocker('client_3', dimage="cs4404m3t9/client")
net.addLink(client_1, wan_switch)
net.addLink(client_2, wan_switch)
net.addLink(client_3, wan_switch)

net.start()

ws.cmd("nohup python3 server.py &")
router.cmd('bash entry.sh')

net.ping([c2, ws])
net.ping([client_1, ws])
net.ping([client_2, ws])
net.ping([client_3, ws])

net.ping([ws, client_1])
net.ping([ws, client_2])
net.ping([ws, client_2])

net.ping([ws, db])

CLI(net)
net.stop()
Пример #14
0
# TODO
# create other links
# Hint :
net.addLink(d1, s1, cls=TCLink, delay='10ms', bw=5)
net.addLink(d2, s1, cls=TCLink, delay='10ms', bw=5)
net.addLink(d3, s2, cls=TCLink, delay='10ms', bw=5)
net.addLink(d4, s2, cls=TCLink, delay='10ms', bw=5)
net.addLink(s1, s3, cls=TCLink, delay='5ms', bw=1)
net.addLink(s2, s3, cls=TCLink, delay='5ms', bw=1)

info('*** Starting network\n')
net.start()
info('*** Testing connectivity\n')
# you can test connectivity between nodes with:
net.ping([d1, d2])
net.ping([d1, d3])
net.ping([d1, d4])
net.ping([d2, d3])
net.ping([d2, d4])
net.ping([d3, d4])

info('*** Setup nodes\n')

# start ssh on hosts
for host in net.hosts:
    host.cmd('/usr/sbin/sshd -D &')

# TODO
# By using d1.cmd('command') you can run `command` on container d1
# Run 'export HADOOP_HOSTS="list of comma separated host for example : `10.0.0.1
Пример #15
0
net.addLink(d6, s2, cls=TCLink, delay='50ms', bw=1)
net.addLink(d7, s2, cls=TCLink, delay='50ms', bw=1)
net.addLink(d8, s2, cls=TCLink, delay='50ms', bw=1)
'''
info('*** Starting network\n')
net.start()
info('*** Testing connectivity\n')
edgestoping = []
for cluster in cluster_switch:
    listtoping = []
    for anode in ND.get_clusterNodes(cluster):
        listtoping.append(node_objects[anode])
        if ND.get_id(anode) == 'a':
            edgestoping.append(node_objects[anode])
    print("net.ping(" + str(listtoping) + ")")
    net.ping(listtoping, timeout='1')

for node in edgeNodes:
    node_objects[node].cmd("ip route del default via 172.17.0.1 dev eth0")
    node_objects[node].cmd('ip route add default via ' +
                           (str(ND.get_ip(node))[0:8] + '0'))
net.ping(edgestoping, timeout='1')
'''
net.ping([d1, d2, d3, d4])
net.ping([d5, d6, d7, d8])
'''
info('*** Starting Screen Sessions \n')
threads_screen = []
for cluster in scnode:
    threads_screen.append(
        Thread(target=start_screens, args=(scnode[cluster], cluster)))
net.addLink(d1, s1)
net.addLink(d2, s1)
net.addLink(d3, s1)
net.addLink(d4, s1)
net.addLink(d5, s1)
net.addLink(d6, s1)
net.addLink(d7, s1)
net.addLink(d8, s1)
net.addLink(d9, s1)
net.addLink(d10, s1)

info('*** Starting network\n')
net.start()

info('*** Testing connectivity\n')
net.ping([d2, d1])
net.ping([d3, d1])
net.ping([d4, d1])
net.ping([d5, d1])
net.ping([d6, d1])
net.ping([d7, d1])
net.ping([d8, d1])
net.ping([d9, d1])
net.ping([d9, d1])

info('*** Running CLI\n')
CLI(net)

info('*** Stopping network')
net.stop()
"""
from mininet.net import Containernet
from mininet.node import Controller
from mininet.cli import CLI
from mininet.link import TCLink
from mininet.log import info, setLogLevel
setLogLevel('info')

net = Containernet(controller=Controller)
info('*** Adding controller\n')
net.addController('c0')
info('*** Adding docker containers\n')
d1 = net.addDocker('d1', ip='10.0.0.251', dimage="ubuntu:trusty")
d2 = net.addDocker('d2', ip='10.0.0.252', dimage="ubuntu:trusty")
info('*** Adding switches\n')
s1 = net.addSwitch('s1')
s2 = net.addSwitch('s2')
info('*** Creating links\n')
net.addLink(d1, s1)
net.addLink(s1, s2, cls=TCLink, delay='100ms', bw=1)
net.addLink(s2, d2)
info('*** Starting network\n')
net.start()
info('*** Testing connectivity\n')
net.ping([d1, d2])
info('*** Running CLI\n')
CLI(net)
info('*** Stopping network')
net.stop()

Пример #18
0
# Link routers to their associated AS switches
net.addLink(R1,s1,params1={"ip":"11.0.0.1/24"})
net.addLink(R2,s2,params1={"ip":"12.0.0.1/24"})
net.addLink(R3,s3,params1={"ip":"13.0.0.1/24"})

# Link hosts to their AS switches
net.addLink(WS,s3,params1={"ip":"13.0.0.2/24"})
net.addLink(C1,s1,params1={"ip":"11.0.0.2/24"})

R1.cmd('/start.sh &')
R2.cmd('/start.sh &')
R3.cmd('/start.sh &')

WS.cmd('route add default gw 13.0.0.1')
C1.cmd('route add default gw 11.0.0.1')

info('*** Starting network\n')
net.start()
info('*** Stalling for 5 seconds to allow BGP advertisisng \n')
time.sleep(5)
info('*** Testing connectivity\n')
net.ping([R1, R2])
net.ping([R2, R3])
net.ping([R1, R3])
info('*** Running CLI\n')
CLI(net)
info('*** Stopping network')
net.stop()

Пример #19
0
            bw=1)
net.addLink(s3,
            router,
            intfName2='r0-eth3',
            params2={'ip': '12.0.0.10/8'},
            delay='10000ms',
            bw=1)
net.addLink(s4,
            router,
            intfName2='r0-eth4',
            params2={'ip': '13.0.0.10/8'},
            delay='10000ms',
            bw=1)
#net.addLink(s2, s3, cls=TCLink, delay='100ms', bw=1)
#net.addLink(s3, s4, cls=TCLink, delay='100ms', bw=1)
#net.addLink(s4, s1, cls=TCLink, delay='100ms', bw=1)
#net.addLink(s2, d2)
info('*** Starting network\n')
net.start()
info('*** Testing connectivity\n')
net.ping([d1, d2, d3, d4, d5])
net.ping([d6, d7, d8, d9, d10])
net.ping([d11, d12, d13, d14, d15])
net.ping([d16, d17, d18, d19, d20])
net.ping([d1, d6, d11, d16])

info('*** Running CLI\n')
CLI(net)
info('*** Stopping network')
net.stop()
Пример #20
0
net.addLink(s2, d21, cls=TCLink, delay='10ms', bw=5)
net.addLink(s2, d22, cls=TCLink, delay='10ms', bw=5)

net.addLink(s3, d31, cls=TCLink, delay='10ms', bw=5)
net.addLink(s3, d32, cls=TCLink, delay='10ms', bw=5)

info('*** Starting network\n')
net.start()
d21.cmd('ifconfig d21-eth0 10.0.0.21')
d22.cmd('ifconfig d22-eth0 10.0.0.22')
d31.cmd('ifconfig d31-eth0 10.0.0.31')
d32.cmd('ifconfig d32-eth0 10.0.0.32')

info('*** Testing connectivity\n')
net.ping([d21, d22, d31, d32])

info('*** Setup nodes\n')
d21.cmd('export MY_ROLE="master"')

for host in net.hosts:
    host.cmd('/usr/sbin/sshd -D &')

for host in net.hosts:
    host.cmd(
        'export HADOOP_HOSTS="10.0.0.21 master,10.0.0.22 slave22,10.0.0.31 slave31,10.0.0.32 slave32"'
    )

for host in reversed(net.hosts):
    host.cmd('/$HADOOP_HOME/etc/hadoop/start.sh > result')
def emulate():

    "Create a network with some docker containers acting as hosts."

    net = Containernet(controller=Controller)

    info('*** Adding controller\n')
    net.addController('c0')

    info('*** Adding hosts\n')
    h1 = net.addHost('h1')
    h2 = net.addHost('h2')

    info('*** Adding docker containers\n')
    d1 = net.addDocker('d1', ip='10.0.0.251', dimage="ubuntu:trusty")
    
    # A container with more specific params: cpu period and cpu quota
    d2 = net.addDocker('d2', ip='10.0.0.252', dimage="ubuntu:trusty", cpu_period=50000, cpu_quota=25000)

    # Add a container as a host, using Docker class option.
    d3 = net.addHost('d3', ip='11.0.0.253', cls=Docker, dimage="ubuntu:trusty", cpu_shares=20)

    # Add a container with a specific volume.
    d5 = net.addDocker('d5', dimage="ubuntu:trusty", volumes=["/:/mnt/vol1:rw"])

    info('*** Adding switch\n')
    s1 = net.addSwitch('s1')
    s2 = net.addSwitch('s2', cls=OVSSwitch)
    s3 = net.addSwitch('s3')

    info('*** Creating links\n')
    net.addLink(h1, s1)
    net.addLink(s1, d1)
    net.addLink(h2, s2)
    net.addLink(d2, s2)
    net.addLink(s1, s2)

    # try to add a second interface to a docker container
    net.addLink(d2, s3, params1={"ip": "11.0.0.254/8"})
    net.addLink(d3, s3)

    info('*** Starting network\n')
    net.start()

    # The typical ping example, with two docker instances in place of hosts.
    net.ping([d1, d2])

    # our extended ping functionality
    net.ping([d1], manualdestip="10.0.0.252")
    net.ping([d2, d3], manualdestip="11.0.0.254")

    info('*** Dynamically add a container at runtime\n')
    d4 = net.addDocker('d4', dimage="ubuntu:trusty")

    # we have to specify a manual ip when we add a link at runtime
    net.addLink(d4, s1, params1={"ip": "10.0.0.254/8"})

    # Ping docker instance d1.
    net.ping([d1], manualdestip="10.0.0.254")

    info('*** Running CLI\n')
    CLI(net)

    info('*** Stopping network')
    net.stop()
Пример #22
0
info('*** Creating links\n')
net.addLink(s1, s2, cls=TCLink, delay='50ms', bw=1)
net.addLink(s1, s3, cls=TCLink, delay='50ms', bw=1)

net.addLink(s2, d21, cls=TCLink, delay='10ms', bw=5)
net.addLink(s2, d22, cls=TCLink, delay='10ms', bw=5)

net.addLink(s3, d31, cls=TCLink, delay='10ms', bw=5)
net.addLink(s3, d32, cls=TCLink, delay='10ms', bw=5)


info('*** Starting network\n')
net.start()
info('*** Testing connectivity\n')
net.ping([d21, d22])
net.ping([d21, d31])
net.ping([d21, d32])

net.ping([d31, d21])
net.ping([d31, d22])
net.ping([d31, d32])

net.ping([d32, d21])
net.ping([d32, d22])
net.ping([d32, d31])

info('*** Setup nodes\n')
d21.cmd('export MY_ROLE="master"')

for host in net.hosts: