#!/usr/bin/python

"""
Custom topology for Mininet, generated by GraphML-Topo-to-Mininet-Network-Generator.
"""
from mininet.topo import Topo
from mininet.net import Mininet
from mininet.node import RemoteController
from mininet.node import Node
from mininet.node import CPULimitedHost
from mininet.link import TCLink
from mininet.cli import CLI
from mininet.log import setLogLevel
from mininet.util import dumpNodeConnections

class GeneratedTopo( Topo ):
    "Internet Topology Zoo Specimen."

    def __init__( self, **opts ):
        "Create a topology."

        # Initialize Topology
        Topo.__init__( self, **opts )

        # add nodes, switches first...
        Timisoara = self.addSwitch( 's0' )
        Bucharest = self.addSwitch( 's1' )
        Mainz_Wiesbaden = self.addSwitch( 's2' )
        Mannheim = self.addSwitch( 's3' )
        Stuttgart = self.addSwitch( 's4' )
        Nuremberg = self.addSwitch( 's5' )
        Munich = self.addSwitch( 's6' )
        Vienna = self.addSwitch( 's7' )
        Bratislava = self.addSwitch( 's8' )
        Budapest = self.addSwitch( 's9' )
        Milwaukee = self.addSwitch( 's10' )
        Minneapolis = self.addSwitch( 's11' )
        SouthBend = self.addSwitch( 's12' )
        Chicago = self.addSwitch( 's13' )
        KansasCity = self.addSwitch( 's14' )
        StLouis = self.addSwitch( 's15' )
        DesMoines = self.addSwitch( 's16' )
        Omaha = self.addSwitch( 's17' )
        Louisville = self.addSwitch( 's18' )
        Nashville = self.addSwitch( 's19' )
        Gijon = self.addSwitch( 's20' )
        Santander = self.addSwitch( 's21' )
        Vigo = self.addSwitch( 's22' )
        Leon = self.addSwitch( 's23' )
        Zaragoza = self.addSwitch( 's24' )
        Barcelona = self.addSwitch( 's25' )
        Bilbao = self.addSwitch( 's26' )
        Logrono = self.addSwitch( 's27' )
        Avila = self.addSwitch( 's28' )
        SanSebastian = self.addSwitch( 's29' )
        Indianapolis = self.addSwitch( 's30' )
        Cincinnati = self.addSwitch( 's31' )
        Toledo = self.addSwitch( 's32' )
        Detroit = self.addSwitch( 's33' )
        Dayton = self.addSwitch( 's34' )
        Columbus = self.addSwitch( 's35' )
        Hamilton = self.addSwitch( 's36' )
        Cleveland = self.addSwitch( 's37' )
        Buffalo = self.addSwitch( 's38' )
        Toronto = self.addSwitch( 's39' )
        Oslo = self.addSwitch( 's40' )
        Stockholm = self.addSwitch( 's41' )
        Copenhagen = self.addSwitch( 's42' )
        Malmo = self.addSwitch( 's43' )
        Newcastle = self.addSwitch( 's44' )
        Leeds = self.addSwitch( 's45' )
        Glasgow = self.addSwitch( 's46' )
        Edinburgh = self.addSwitch( 's47' )
        LiverpoolSouthport = self.addSwitch( 's48' )
        Manchester = self.addSwitch( 's49' )
        Lisbon = self.addSwitch( 's50' )
        Coimbra = self.addSwitch( 's51' )
        Alicante = self.addSwitch( 's52' )
        Murcia = self.addSwitch( 's53' )
        Madrid = self.addSwitch( 's54' )
        Valencia = self.addSwitch( 's55' )
        Sevilla = self.addSwitch( 's56' )
        Badajoz = self.addSwitch( 's57' )
        Granada = self.addSwitch( 's58' )
        Malaga = self.addSwitch( 's59' )
        Austin = self.addSwitch( 's60' )
        SanAntonio = self.addSwitch( 's61' )
        NewOrleans = self.addSwitch( 's62' )
        Jackson = self.addSwitch( 's63' )
        Tulsa = self.addSwitch( 's64' )
        OklahomaCity = self.addSwitch( 's65' )
        FortWorth = self.addSwitch( 's66' )
        Dallas = self.addSwitch( 's67' )
        Memphis = self.addSwitch( 's68' )
        Houston = self.addSwitch( 's69' )
        Tours = self.addSwitch( 's70' )
        Nantes = self.addSwitch( 's71' )
        Rennes = self.addSwitch( 's72' )
        Caen = self.addSwitch( 's73' )
        Rouen = self.addSwitch( 's74' )
        Reims = self.addSwitch( 's75' )
        Luxembourg = self.addSwitch( 's76' )
        Frankfurt = self.addSwitch( 's77' )
        Bordeaux = self.addSwitch( 's78' )
        Poiters = self.addSwitch( 's79' )
        Miami = self.addSwitch( 's80' )
        BocaRaton = self.addSwitch( 's81' )
        Atlanta = self.addSwitch( 's82' )
        Charlotte = self.addSwitch( 's83' )
        Greensboro = self.addSwitch( 's84' )
        Raleigh = self.addSwitch( 's85' )
        Tampa = self.addSwitch( 's86' )
        Orlando = self.addSwitch( 's87' )
        Jacksonville = self.addSwitch( 's88' )
        Birmingham = self.addSwitch( 's89' )
        Nice = self.addSwitch( 's90' )
        Grenoble = self.addSwitch( 's91' )
        Lyon = self.addSwitch( 's92' )
        Dijon = self.addSwitch( 's93' )
        Toulouse = self.addSwitch( 's94' )
        Montpellier = self.addSwitch( 's95' )
        Marseille = self.addSwitch( 's96' )
        Sophia = self.addSwitch( 's97' )
        Prague = self.addSwitch( 's98' )
        Geneva = self.addSwitch( 's99' )
        Bern = self.addSwitch( 's100' )
        LosAngeles = self.addSwitch( 's101' )
        OrangeCounty = self.addSwitch( 's102' )
        SanFrancisco = self.addSwitch( 's103' )
        SantaClara = self.addSwitch( 's104' )
        Sacramento = self.addSwitch( 's105' )
        Oakland = self.addSwitch( 's106' )
        SaltLakeCity = self.addSwitch( 's107' )
        Boise = self.addSwitch( 's108' )
        SanDiego = self.addSwitch( 's109' )
        Phoenix = self.addSwitch( 's110' )
        Arezzo = self.addSwitch( 's111' )
        Rome = self.addSwitch( 's112' )
        Odessa = self.addSwitch( 's113' )
        Galati = self.addSwitch( 's114' )
        Balchik = self.addSwitch( 's115' )
        Constanta = self.addSwitch( 's116' )
        Burgas = self.addSwitch( 's117' )
        Varna = self.addSwitch( 's118' )
        Sofia = self.addSwitch( 's119' )
        KapitanAndreevo = self.addSwitch( 's120' )
        McAllen = self.addSwitch( 's121' )
        Laredo = self.addSwitch( 's122' )
        Queretaro = self.addSwitch( 's123' )
        Monterrey = self.addSwitch( 's124' )
        MexicoCity = self.addSwitch( 's125' )
        Guadalajara = self.addSwitch( 's126' )
        Albuquerque = self.addSwitch( 's127' )
        ElPaso = self.addSwitch( 's128' )
        Denver = self.addSwitch( 's129' )
        ColoradoSprings = self.addSwitch( 's130' )
        Dresden = self.addSwitch( 's131' )
        Basel = self.addSwitch( 's132' )
        Strasbourg = self.addSwitch( 's133' )
        Milan = self.addSwitch( 's134' )
        Zurich = self.addSwitch( 's135' )
        Zagreb = self.addSwitch( 's136' )
        Genoa = self.addSwitch( 's137' )
        Padua_Venice = self.addSwitch( 's138' )
        Ljubljana = self.addSwitch( 's139' )
        Florence = self.addSwitch( 's140' )
        Bologna = self.addSwitch( 's141' )
        Berlin = self.addSwitch( 's142' )
        Hamburg = self.addSwitch( 's143' )
        None1 = self.addSwitch( 's144' )
        WhitePlains = self.addSwitch( 's145' )
        Baltimore = self.addSwitch( 's146' )
        None2 = self.addSwitch( 's147' )
        None3 = self.addSwitch( 's148' )
        None4 = self.addSwitch( 's149' )
        None5 = self.addSwitch( 's150' )
        Newark = self.addSwitch( 's151' )
        Philadelphia = self.addSwitch( 's152' )
        Harrisburg = self.addSwitch( 's153' )
        Washington = self.addSwitch( 's154' )
        Boston = self.addSwitch( 's155' )
        Providence = self.addSwitch( 's156' )
        Stamford = self.addSwitch( 's157' )
        NewYork = self.addSwitch( 's158' )
        Herndon = self.addSwitch( 's159' )
        Pittsburgh = self.addSwitch( 's160' )
        Cologne = self.addSwitch( 's161' )
        Dusseldorf = self.addSwitch( 's162' )
        Amsterdam = self.addSwitch( 's163' )
        Cambridge = self.addSwitch( 's164' )
        London = self.addSwitch( 's165' )
        Slough = self.addSwitch( 's166' )
        Essen = self.addSwitch( 's167' )
        Dortmund = self.addSwitch( 's168' )
        Munster = self.addSwitch( 's169' )
        Rotterdam = self.addSwitch( 's170' )
        None6 = self.addSwitch( 's171' )
        None7 = self.addSwitch( 's172' )
        None8 = self.addSwitch( 's173' )
        None9 = self.addSwitch( 's174' )
        None10 = self.addSwitch( 's175' )
        None11 = self.addSwitch( 's176' )
        Dublin = self.addSwitch( 's177' )
        Seattle = self.addSwitch( 's178' )
        Portland = self.addSwitch( 's179' )
        LasVegas = self.addSwitch( 's180' )
        Montreal = self.addSwitch( 's181' )
        Tallinn = self.addSwitch( 's182' )
        Paris = self.addSwitch( 's183' )
        Lille = self.addSwitch( 's184' )
        Bremen = self.addSwitch( 's185' )
        Brussels = self.addSwitch( 's186' )
        Antwerp = self.addSwitch( 's187' )
        Porto = self.addSwitch( 's188' )
        Helsinki = self.addSwitch( 's189' )
        Kharkiv = self.addSwitch( 's190' )
        Kiev = self.addSwitch( 's191' )
        Warsaw = self.addSwitch( 's192' )
        Krakow = self.addSwitch( 's193' )
        Brno = self.addSwitch( 's194' )
        Worcester = self.addSwitch( 's195' )
        Albany = self.addSwitch( 's196' )

        # ... and now hosts
        Timisoara_host = self.addHost( 'h0' )
        Bucharest_host = self.addHost( 'h1' )
        Mainz_Wiesbaden_host = self.addHost( 'h2' )
        Mannheim_host = self.addHost( 'h3' )
        Stuttgart_host = self.addHost( 'h4' )
        Nuremberg_host = self.addHost( 'h5' )
        Munich_host = self.addHost( 'h6' )
        Vienna_host = self.addHost( 'h7' )
        Bratislava_host = self.addHost( 'h8' )
        Budapest_host = self.addHost( 'h9' )
        Milwaukee_host = self.addHost( 'h10' )
        Minneapolis_host = self.addHost( 'h11' )
        SouthBend_host = self.addHost( 'h12' )
        Chicago_host = self.addHost( 'h13' )
        KansasCity_host = self.addHost( 'h14' )
        StLouis_host = self.addHost( 'h15' )
        DesMoines_host = self.addHost( 'h16' )
        Omaha_host = self.addHost( 'h17' )
        Louisville_host = self.addHost( 'h18' )
        Nashville_host = self.addHost( 'h19' )
        Gijon_host = self.addHost( 'h20' )
        Santander_host = self.addHost( 'h21' )
        Vigo_host = self.addHost( 'h22' )
        Leon_host = self.addHost( 'h23' )
        Zaragoza_host = self.addHost( 'h24' )
        Barcelona_host = self.addHost( 'h25' )
        Bilbao_host = self.addHost( 'h26' )
        Logrono_host = self.addHost( 'h27' )
        Avila_host = self.addHost( 'h28' )
        SanSebastian_host = self.addHost( 'h29' )
        Indianapolis_host = self.addHost( 'h30' )
        Cincinnati_host = self.addHost( 'h31' )
        Toledo_host = self.addHost( 'h32' )
        Detroit_host = self.addHost( 'h33' )
        Dayton_host = self.addHost( 'h34' )
        Columbus_host = self.addHost( 'h35' )
        Hamilton_host = self.addHost( 'h36' )
        Cleveland_host = self.addHost( 'h37' )
        Buffalo_host = self.addHost( 'h38' )
        Toronto_host = self.addHost( 'h39' )
        Oslo_host = self.addHost( 'h40' )
        Stockholm_host = self.addHost( 'h41' )
        Copenhagen_host = self.addHost( 'h42' )
        Malmo_host = self.addHost( 'h43' )
        Newcastle_host = self.addHost( 'h44' )
        Leeds_host = self.addHost( 'h45' )
        Glasgow_host = self.addHost( 'h46' )
        Edinburgh_host = self.addHost( 'h47' )
        LiverpoolSouthport_host = self.addHost( 'h48' )
        Manchester_host = self.addHost( 'h49' )
        Lisbon_host = self.addHost( 'h50' )
        Coimbra_host = self.addHost( 'h51' )
        Alicante_host = self.addHost( 'h52' )
        Murcia_host = self.addHost( 'h53' )
        Madrid_host = self.addHost( 'h54' )
        Valencia_host = self.addHost( 'h55' )
        Sevilla_host = self.addHost( 'h56' )
        Badajoz_host = self.addHost( 'h57' )
        Granada_host = self.addHost( 'h58' )
        Malaga_host = self.addHost( 'h59' )
        Austin_host = self.addHost( 'h60' )
        SanAntonio_host = self.addHost( 'h61' )
        NewOrleans_host = self.addHost( 'h62' )
        Jackson_host = self.addHost( 'h63' )
        Tulsa_host = self.addHost( 'h64' )
        OklahomaCity_host = self.addHost( 'h65' )
        FortWorth_host = self.addHost( 'h66' )
        Dallas_host = self.addHost( 'h67' )
        Memphis_host = self.addHost( 'h68' )
        Houston_host = self.addHost( 'h69' )
        Tours_host = self.addHost( 'h70' )
        Nantes_host = self.addHost( 'h71' )
        Rennes_host = self.addHost( 'h72' )
        Caen_host = self.addHost( 'h73' )
        Rouen_host = self.addHost( 'h74' )
        Reims_host = self.addHost( 'h75' )
        Luxembourg_host = self.addHost( 'h76' )
        Frankfurt_host = self.addHost( 'h77' )
        Bordeaux_host = self.addHost( 'h78' )
        Poiters_host = self.addHost( 'h79' )
        Miami_host = self.addHost( 'h80' )
        BocaRaton_host = self.addHost( 'h81' )
        Atlanta_host = self.addHost( 'h82' )
        Charlotte_host = self.addHost( 'h83' )
        Greensboro_host = self.addHost( 'h84' )
        Raleigh_host = self.addHost( 'h85' )
        Tampa_host = self.addHost( 'h86' )
        Orlando_host = self.addHost( 'h87' )
        Jacksonville_host = self.addHost( 'h88' )
        Birmingham_host = self.addHost( 'h89' )
        Nice_host = self.addHost( 'h90' )
        Grenoble_host = self.addHost( 'h91' )
        Lyon_host = self.addHost( 'h92' )
        Dijon_host = self.addHost( 'h93' )
        Toulouse_host = self.addHost( 'h94' )
        Montpellier_host = self.addHost( 'h95' )
        Marseille_host = self.addHost( 'h96' )
        Sophia_host = self.addHost( 'h97' )
        Prague_host = self.addHost( 'h98' )
        Geneva_host = self.addHost( 'h99' )
        Bern_host = self.addHost( 'h100' )
        LosAngeles_host = self.addHost( 'h101' )
        OrangeCounty_host = self.addHost( 'h102' )
        SanFrancisco_host = self.addHost( 'h103' )
        SantaClara_host = self.addHost( 'h104' )
        Sacramento_host = self.addHost( 'h105' )
        Oakland_host = self.addHost( 'h106' )
        SaltLakeCity_host = self.addHost( 'h107' )
        Boise_host = self.addHost( 'h108' )
        SanDiego_host = self.addHost( 'h109' )
        Phoenix_host = self.addHost( 'h110' )
        Arezzo_host = self.addHost( 'h111' )
        Rome_host = self.addHost( 'h112' )
        Odessa_host = self.addHost( 'h113' )
        Galati_host = self.addHost( 'h114' )
        Balchik_host = self.addHost( 'h115' )
        Constanta_host = self.addHost( 'h116' )
        Burgas_host = self.addHost( 'h117' )
        Varna_host = self.addHost( 'h118' )
        Sofia_host = self.addHost( 'h119' )
        KapitanAndreevo_host = self.addHost( 'h120' )
        McAllen_host = self.addHost( 'h121' )
        Laredo_host = self.addHost( 'h122' )
        Queretaro_host = self.addHost( 'h123' )
        Monterrey_host = self.addHost( 'h124' )
        MexicoCity_host = self.addHost( 'h125' )
        Guadalajara_host = self.addHost( 'h126' )
        Albuquerque_host = self.addHost( 'h127' )
        ElPaso_host = self.addHost( 'h128' )
        Denver_host = self.addHost( 'h129' )
        ColoradoSprings_host = self.addHost( 'h130' )
        Dresden_host = self.addHost( 'h131' )
        Basel_host = self.addHost( 'h132' )
        Strasbourg_host = self.addHost( 'h133' )
        Milan_host = self.addHost( 'h134' )
        Zurich_host = self.addHost( 'h135' )
        Zagreb_host = self.addHost( 'h136' )
        Genoa_host = self.addHost( 'h137' )
        Padua_Venice_host = self.addHost( 'h138' )
        Ljubljana_host = self.addHost( 'h139' )
        Florence_host = self.addHost( 'h140' )
        Bologna_host = self.addHost( 'h141' )
        Berlin_host = self.addHost( 'h142' )
        Hamburg_host = self.addHost( 'h143' )
        None1_host = self.addHost( 'h144' )
        WhitePlains_host = self.addHost( 'h145' )
        Baltimore_host = self.addHost( 'h146' )
        None2_host = self.addHost( 'h147' )
        None3_host = self.addHost( 'h148' )
        None4_host = self.addHost( 'h149' )
        None5_host = self.addHost( 'h150' )
        Newark_host = self.addHost( 'h151' )
        Philadelphia_host = self.addHost( 'h152' )
        Harrisburg_host = self.addHost( 'h153' )
        Washington_host = self.addHost( 'h154' )
        Boston_host = self.addHost( 'h155' )
        Providence_host = self.addHost( 'h156' )
        Stamford_host = self.addHost( 'h157' )
        NewYork_host = self.addHost( 'h158' )
        Herndon_host = self.addHost( 'h159' )
        Pittsburgh_host = self.addHost( 'h160' )
        Cologne_host = self.addHost( 'h161' )
        Dusseldorf_host = self.addHost( 'h162' )
        Amsterdam_host = self.addHost( 'h163' )
        Cambridge_host = self.addHost( 'h164' )
        London_host = self.addHost( 'h165' )
        Slough_host = self.addHost( 'h166' )
        Essen_host = self.addHost( 'h167' )
        Dortmund_host = self.addHost( 'h168' )
        Munster_host = self.addHost( 'h169' )
        Rotterdam_host = self.addHost( 'h170' )
        None6_host = self.addHost( 'h171' )
        None7_host = self.addHost( 'h172' )
        None8_host = self.addHost( 'h173' )
        None9_host = self.addHost( 'h174' )
        None10_host = self.addHost( 'h175' )
        None11_host = self.addHost( 'h176' )
        Dublin_host = self.addHost( 'h177' )
        Seattle_host = self.addHost( 'h178' )
        Portland_host = self.addHost( 'h179' )
        LasVegas_host = self.addHost( 'h180' )
        Montreal_host = self.addHost( 'h181' )
        Tallinn_host = self.addHost( 'h182' )
        Paris_host = self.addHost( 'h183' )
        Lille_host = self.addHost( 'h184' )
        Bremen_host = self.addHost( 'h185' )
        Brussels_host = self.addHost( 'h186' )
        Antwerp_host = self.addHost( 'h187' )
        Porto_host = self.addHost( 'h188' )
        Helsinki_host = self.addHost( 'h189' )
        Kharkiv_host = self.addHost( 'h190' )
        Kiev_host = self.addHost( 'h191' )
        Warsaw_host = self.addHost( 'h192' )
        Krakow_host = self.addHost( 'h193' )
        Brno_host = self.addHost( 'h194' )
        Worcester_host = self.addHost( 'h195' )
        Albany_host = self.addHost( 'h196' )

        # add edges between switch and corresponding host
        self.addLink( Timisoara , Timisoara_host )
        self.addLink( Bucharest , Bucharest_host )
        self.addLink( Mainz_Wiesbaden , Mainz_Wiesbaden_host )
        self.addLink( Mannheim , Mannheim_host )
        self.addLink( Stuttgart , Stuttgart_host )
        self.addLink( Nuremberg , Nuremberg_host )
        self.addLink( Munich , Munich_host )
        self.addLink( Vienna , Vienna_host )
        self.addLink( Bratislava , Bratislava_host )
        self.addLink( Budapest , Budapest_host )
        self.addLink( Milwaukee , Milwaukee_host )
        self.addLink( Minneapolis , Minneapolis_host )
        self.addLink( SouthBend , SouthBend_host )
        self.addLink( Chicago , Chicago_host )
        self.addLink( KansasCity , KansasCity_host )
        self.addLink( StLouis , StLouis_host )
        self.addLink( DesMoines , DesMoines_host )
        self.addLink( Omaha , Omaha_host )
        self.addLink( Louisville , Louisville_host )
        self.addLink( Nashville , Nashville_host )
        self.addLink( Gijon , Gijon_host )
        self.addLink( Santander , Santander_host )
        self.addLink( Vigo , Vigo_host )
        self.addLink( Leon , Leon_host )
        self.addLink( Zaragoza , Zaragoza_host )
        self.addLink( Barcelona , Barcelona_host )
        self.addLink( Bilbao , Bilbao_host )
        self.addLink( Logrono , Logrono_host )
        self.addLink( Avila , Avila_host )
        self.addLink( SanSebastian , SanSebastian_host )
        self.addLink( Indianapolis , Indianapolis_host )
        self.addLink( Cincinnati , Cincinnati_host )
        self.addLink( Toledo , Toledo_host )
        self.addLink( Detroit , Detroit_host )
        self.addLink( Dayton , Dayton_host )
        self.addLink( Columbus , Columbus_host )
        self.addLink( Hamilton , Hamilton_host )
        self.addLink( Cleveland , Cleveland_host )
        self.addLink( Buffalo , Buffalo_host )
        self.addLink( Toronto , Toronto_host )
        self.addLink( Oslo , Oslo_host )
        self.addLink( Stockholm , Stockholm_host )
        self.addLink( Copenhagen , Copenhagen_host )
        self.addLink( Malmo , Malmo_host )
        self.addLink( Newcastle , Newcastle_host )
        self.addLink( Leeds , Leeds_host )
        self.addLink( Glasgow , Glasgow_host )
        self.addLink( Edinburgh , Edinburgh_host )
        self.addLink( LiverpoolSouthport , LiverpoolSouthport_host )
        self.addLink( Manchester , Manchester_host )
        self.addLink( Lisbon , Lisbon_host )
        self.addLink( Coimbra , Coimbra_host )
        self.addLink( Alicante , Alicante_host )
        self.addLink( Murcia , Murcia_host )
        self.addLink( Madrid , Madrid_host )
        self.addLink( Valencia , Valencia_host )
        self.addLink( Sevilla , Sevilla_host )
        self.addLink( Badajoz , Badajoz_host )
        self.addLink( Granada , Granada_host )
        self.addLink( Malaga , Malaga_host )
        self.addLink( Austin , Austin_host )
        self.addLink( SanAntonio , SanAntonio_host )
        self.addLink( NewOrleans , NewOrleans_host )
        self.addLink( Jackson , Jackson_host )
        self.addLink( Tulsa , Tulsa_host )
        self.addLink( OklahomaCity , OklahomaCity_host )
        self.addLink( FortWorth , FortWorth_host )
        self.addLink( Dallas , Dallas_host )
        self.addLink( Memphis , Memphis_host )
        self.addLink( Houston , Houston_host )
        self.addLink( Tours , Tours_host )
        self.addLink( Nantes , Nantes_host )
        self.addLink( Rennes , Rennes_host )
        self.addLink( Caen , Caen_host )
        self.addLink( Rouen , Rouen_host )
        self.addLink( Reims , Reims_host )
        self.addLink( Luxembourg , Luxembourg_host )
        self.addLink( Frankfurt , Frankfurt_host )
        self.addLink( Bordeaux , Bordeaux_host )
        self.addLink( Poiters , Poiters_host )
        self.addLink( Miami , Miami_host )
        self.addLink( BocaRaton , BocaRaton_host )
        self.addLink( Atlanta , Atlanta_host )
        self.addLink( Charlotte , Charlotte_host )
        self.addLink( Greensboro , Greensboro_host )
        self.addLink( Raleigh , Raleigh_host )
        self.addLink( Tampa , Tampa_host )
        self.addLink( Orlando , Orlando_host )
        self.addLink( Jacksonville , Jacksonville_host )
        self.addLink( Birmingham , Birmingham_host )
        self.addLink( Nice , Nice_host )
        self.addLink( Grenoble , Grenoble_host )
        self.addLink( Lyon , Lyon_host )
        self.addLink( Dijon , Dijon_host )
        self.addLink( Toulouse , Toulouse_host )
        self.addLink( Montpellier , Montpellier_host )
        self.addLink( Marseille , Marseille_host )
        self.addLink( Sophia , Sophia_host )
        self.addLink( Prague , Prague_host )
        self.addLink( Geneva , Geneva_host )
        self.addLink( Bern , Bern_host )
        self.addLink( LosAngeles , LosAngeles_host )
        self.addLink( OrangeCounty , OrangeCounty_host )
        self.addLink( SanFrancisco , SanFrancisco_host )
        self.addLink( SantaClara , SantaClara_host )
        self.addLink( Sacramento , Sacramento_host )
        self.addLink( Oakland , Oakland_host )
        self.addLink( SaltLakeCity , SaltLakeCity_host )
        self.addLink( Boise , Boise_host )
        self.addLink( SanDiego , SanDiego_host )
        self.addLink( Phoenix , Phoenix_host )
        self.addLink( Arezzo , Arezzo_host )
        self.addLink( Rome , Rome_host )
        self.addLink( Odessa , Odessa_host )
        self.addLink( Galati , Galati_host )
        self.addLink( Balchik , Balchik_host )
        self.addLink( Constanta , Constanta_host )
        self.addLink( Burgas , Burgas_host )
        self.addLink( Varna , Varna_host )
        self.addLink( Sofia , Sofia_host )
        self.addLink( KapitanAndreevo , KapitanAndreevo_host )
        self.addLink( McAllen , McAllen_host )
        self.addLink( Laredo , Laredo_host )
        self.addLink( Queretaro , Queretaro_host )
        self.addLink( Monterrey , Monterrey_host )
        self.addLink( MexicoCity , MexicoCity_host )
        self.addLink( Guadalajara , Guadalajara_host )
        self.addLink( Albuquerque , Albuquerque_host )
        self.addLink( ElPaso , ElPaso_host )
        self.addLink( Denver , Denver_host )
        self.addLink( ColoradoSprings , ColoradoSprings_host )
        self.addLink( Dresden , Dresden_host )
        self.addLink( Basel , Basel_host )
        self.addLink( Strasbourg , Strasbourg_host )
        self.addLink( Milan , Milan_host )
        self.addLink( Zurich , Zurich_host )
        self.addLink( Zagreb , Zagreb_host )
        self.addLink( Genoa , Genoa_host )
        self.addLink( Padua_Venice , Padua_Venice_host )
        self.addLink( Ljubljana , Ljubljana_host )
        self.addLink( Florence , Florence_host )
        self.addLink( Bologna , Bologna_host )
        self.addLink( Berlin , Berlin_host )
        self.addLink( Hamburg , Hamburg_host )
        self.addLink( None1 , None1_host )
        self.addLink( WhitePlains , WhitePlains_host )
        self.addLink( Baltimore , Baltimore_host )
        self.addLink( None2 , None2_host )
        self.addLink( None3 , None3_host )
        self.addLink( None4 , None4_host )
        self.addLink( None5 , None5_host )
        self.addLink( Newark , Newark_host )
        self.addLink( Philadelphia , Philadelphia_host )
        self.addLink( Harrisburg , Harrisburg_host )
        self.addLink( Washington , Washington_host )
        self.addLink( Boston , Boston_host )
        self.addLink( Providence , Providence_host )
        self.addLink( Stamford , Stamford_host )
        self.addLink( NewYork , NewYork_host )
        self.addLink( Herndon , Herndon_host )
        self.addLink( Pittsburgh , Pittsburgh_host )
        self.addLink( Cologne , Cologne_host )
        self.addLink( Dusseldorf , Dusseldorf_host )
        self.addLink( Amsterdam , Amsterdam_host )
        self.addLink( Cambridge , Cambridge_host )
        self.addLink( London , London_host )
        self.addLink( Slough , Slough_host )
        self.addLink( Essen , Essen_host )
        self.addLink( Dortmund , Dortmund_host )
        self.addLink( Munster , Munster_host )
        self.addLink( Rotterdam , Rotterdam_host )
        self.addLink( None6 , None6_host )
        self.addLink( None7 , None7_host )
        self.addLink( None8 , None8_host )
        self.addLink( None9 , None9_host )
        self.addLink( None10 , None10_host )
        self.addLink( None11 , None11_host )
        self.addLink( Dublin , Dublin_host )
        self.addLink( Seattle , Seattle_host )
        self.addLink( Portland , Portland_host )
        self.addLink( LasVegas , LasVegas_host )
        self.addLink( Montreal , Montreal_host )
        self.addLink( Tallinn , Tallinn_host )
        self.addLink( Paris , Paris_host )
        self.addLink( Lille , Lille_host )
        self.addLink( Bremen , Bremen_host )
        self.addLink( Brussels , Brussels_host )
        self.addLink( Antwerp , Antwerp_host )
        self.addLink( Porto , Porto_host )
        self.addLink( Helsinki , Helsinki_host )
        self.addLink( Kharkiv , Kharkiv_host )
        self.addLink( Kiev , Kiev_host )
        self.addLink( Warsaw , Warsaw_host )
        self.addLink( Krakow , Krakow_host )
        self.addLink( Brno , Brno_host )
        self.addLink( Worcester , Worcester_host )
        self.addLink( Albany , Albany_host )

        # add edges between switches
        self.addLink( Timisoara , None11, bw=10, delay='7.1154860232ms')
        self.addLink( Timisoara , Budapest, bw=10, delay='1.3025207759ms')
        self.addLink( Bucharest , Bratislava, bw=10, delay='4.08969867213ms')
        self.addLink( Bucharest , None11, bw=10, delay='9.13434541347ms')
        self.addLink( Bucharest , Galati, bw=10, delay='0.966997690876ms')
        self.addLink( Bucharest , Constanta, bw=10, delay='1.03812920008ms')
        self.addLink( Bucharest , None10, bw=10, delay='9.13434541347ms')
        self.addLink( Mainz_Wiesbaden , Luxembourg, bw=10, delay='0.811049837209ms')
        self.addLink( Mainz_Wiesbaden , Frankfurt, bw=10, delay='0.163432605422ms')
        self.addLink( Mannheim , Stuttgart, bw=10, delay='0.47802280645ms')
        self.addLink( Mannheim , Frankfurt, bw=10, delay='0.363899582112ms')
        self.addLink( Stuttgart , Munich, bw=10, delay='0.969778698936ms')
        self.addLink( Stuttgart , Zurich, bw=10, delay='0.834233586681ms')
        self.addLink( Nuremberg , Dresden, bw=10, delay='1.32323469964ms')
        self.addLink( Nuremberg , Munich, bw=10, delay='0.764129570057ms')
        self.addLink( Munich , Vienna, bw=10, delay='1.80769273889ms')
        self.addLink( Vienna , Bratislava, bw=10, delay='0.278909482113ms')
        self.addLink( Vienna , None9, bw=10, delay='4.78960990617ms')
        self.addLink( Bratislava , Brno, bw=10, delay='0.620246728584ms')
        self.addLink( Bratislava , Kiev, bw=10, delay='5.10481642928ms')
        self.addLink( Bratislava , Budapest, bw=10, delay='0.820283041457ms')
        self.addLink( Milwaukee , Minneapolis, bw=10, delay='2.4372920054ms')
        self.addLink( Milwaukee , Chicago, bw=10, delay='0.680253688447ms')
        self.addLink( Minneapolis , DesMoines, bw=10, delay='1.91489421144ms')
        self.addLink( SouthBend , Toledo, bw=10, delay='1.13742317149ms')
        self.addLink( SouthBend , Chicago, bw=10, delay='0.597531341528ms')
        self.addLink( SouthBend , Indianapolis, bw=10, delay='1.0828321363ms')
        self.addLink( Chicago , DesMoines, bw=10, delay='2.51661455255ms')
        self.addLink( Chicago , StLouis, bw=10, delay='2.12677175127ms')
        self.addLink( KansasCity , Tulsa, bw=10, delay='1.78074803451ms')
        self.addLink( KansasCity , Denver, bw=10, delay='4.53199947571ms')
        self.addLink( KansasCity , StLouis, bw=10, delay='1.96789111022ms')
        self.addLink( DesMoines , Omaha, bw=10, delay='1.00531106683ms')
        self.addLink( Louisville , Nashville, bw=10, delay='1.26700511392ms')
        self.addLink( Louisville , Indianapolis, bw=10, delay='0.873316504428ms')
        self.addLink( Nashville , Birmingham, bw=10, delay='1.49477295544ms')
        self.addLink( Nashville , Memphis, bw=10, delay='1.60500242855ms')
        self.addLink( Nashville , Atlanta, bw=10, delay='1.75967512423ms')
        self.addLink( Gijon , Santander, bw=10, delay='0.763563398553ms')
        self.addLink( Gijon , Leon, bw=10, delay='0.533325499743ms')
        self.addLink( Santander , Bilbao, bw=10, delay='0.378778633603ms')
        self.addLink( Vigo , Porto, bw=10, delay='0.613613544391ms')
        self.addLink( Vigo , Leon, bw=10, delay='1.33023992688ms')
        self.addLink( Zaragoza , Logrono, bw=10, delay='0.803166127466ms')
        self.addLink( Barcelona , None6, bw=10, delay='6.01912730085ms')
        self.addLink( Barcelona , Valencia, bw=10, delay='1.53810013567ms')
        self.addLink( Bilbao , Logrono, bw=10, delay='0.491005892127ms')
        self.addLink( Bilbao , Avila, bw=10, delay='1.65393583771ms')
        self.addLink( Bilbao , SanSebastian, bw=10, delay='0.391903280837ms')
        self.addLink( Avila , Coimbra, bw=10, delay='1.61874852672ms')
        self.addLink( Avila , Madrid, bw=10, delay='0.448229735302ms')
        self.addLink( SanSebastian , Bordeaux, bw=10, delay='1.03200282446ms')
        self.addLink( Indianapolis , Columbus, bw=10, delay='1.37450463525ms')
        self.addLink( Cincinnati , Cleveland, bw=10, delay='1.77735118316ms')
        self.addLink( Toledo , Detroit, bw=10, delay='0.433631734996ms')
        self.addLink( Toledo , Cleveland, bw=10, delay='0.791558154747ms')
        self.addLink( Dayton , Cleveland, bw=10, delay='1.45361068478ms')
        self.addLink( Columbus , Cleveland, bw=10, delay='1.03297965906ms')
        self.addLink( Hamilton , Buffalo, bw=10, delay='3.11812749085ms')
        self.addLink( Hamilton , Toronto, bw=10, delay='1.8182744481ms')
        self.addLink( Cleveland , Pittsburgh, bw=10, delay='0.940077991972ms')
        self.addLink( Cleveland , Buffalo, bw=10, delay='1.41590315961ms')
        self.addLink( Buffalo , Albany, bw=10, delay='2.12851823732ms')
        self.addLink( Toronto , Montreal, bw=10, delay='4.06264770544ms')
        self.addLink( Oslo , Stockholm, bw=10, delay='2.11578228316ms')
        self.addLink( Oslo , Copenhagen, bw=10, delay='2.45576048322ms')
        self.addLink( Stockholm , Malmo, bw=10, delay='2.60665194722ms')
        self.addLink( Stockholm , Helsinki, bw=10, delay='2.01112595345ms')
        self.addLink( Copenhagen , Malmo, bw=10, delay='0.144328865386ms')
        self.addLink( Copenhagen , Hamburg, bw=10, delay='1.46537104809ms')
        self.addLink( Copenhagen , Hamburg, bw=10, delay='1.46537104809ms')
        self.addLink( Newcastle , Leeds, bw=10, delay='0.665334222645ms')
        self.addLink( Newcastle , Edinburgh, bw=10, delay='0.750164909536ms')
        self.addLink( Leeds , LiverpoolSouthport, bw=10, delay='0.526747501833ms')
        self.addLink( Leeds , Cambridge, bw=10, delay='1.06495702306ms')
        self.addLink( Glasgow , Manchester, bw=10, delay='1.50011312513ms')
        self.addLink( Glasgow , Edinburgh, bw=10, delay='0.338404506553ms')
        self.addLink( LiverpoolSouthport , Boston, bw=10, delay='25.5061718737ms')
        self.addLink( LiverpoolSouthport , Montreal, bw=10, delay='25.2283213235ms')
        self.addLink( Manchester , Dublin, bw=10, delay='1.35929472752ms')
        self.addLink( Manchester , None2, bw=10, delay='28.6664546046ms')
        self.addLink( Manchester , London, bw=10, delay='1.33029807422ms')
        self.addLink( Lisbon , Badajoz, bw=10, delay='0.958773884371ms')
        self.addLink( Lisbon , Coimbra, bw=10, delay='0.894599368748ms')
        self.addLink( Coimbra , Porto, bw=10, delay='0.543619046808ms')
        self.addLink( Alicante , Murcia, bw=10, delay='0.348486306862ms')
        self.addLink( Alicante , Valencia, bw=10, delay='0.637116770413ms')
        self.addLink( Murcia , Granada, bw=10, delay='1.20206875449ms')
        self.addLink( Madrid , Valencia, bw=10, delay='1.53657433701ms')
        self.addLink( Sevilla , Badajoz, bw=10, delay='0.955991550041ms')
        self.addLink( Sevilla , Malaga, bw=10, delay='0.798134752409ms')
        self.addLink( Granada , Malaga, bw=10, delay='0.452696560823ms')
        self.addLink( Austin , SanAntonio, bw=10, delay='0.601879409042ms')
        self.addLink( Austin , Houston, bw=10, delay='1.19869206103ms')
        self.addLink( SanAntonio , ElPaso, bw=10, delay='4.10455570576ms')
        self.addLink( SanAntonio , Laredo, bw=10, delay='1.19495953065ms')
        self.addLink( NewOrleans , None1, bw=10, delay='40.597827738ms')
        self.addLink( NewOrleans , Tampa, bw=10, delay='3.93220747616ms')
        self.addLink( NewOrleans , Jackson, bw=10, delay='1.3256574949ms')
        self.addLink( Jackson , Memphis, bw=10, delay='1.61215854665ms')
        self.addLink( Jackson , None4, bw=10, delay='7.35683987192ms')
        self.addLink( Tulsa , OklahomaCity, bw=10, delay='0.798700338796ms')
        self.addLink( Tulsa , Dallas, bw=10, delay='1.94216269569ms')
        self.addLink( Tulsa , Memphis, bw=10, delay='2.78708305196ms')
        self.addLink( OklahomaCity , FortWorth, bw=10, delay='1.55221554638ms')
        self.addLink( FortWorth , Dallas, bw=10, delay='0.246513554954ms')
        self.addLink( Dallas , Houston, bw=10, delay='1.84323719371ms')
        self.addLink( Houston , None1, bw=10, delay='42.2515248338ms')
        self.addLink( Tours , Paris, bw=10, delay='1.04148335576ms')
        self.addLink( Tours , Poiters, bw=10, delay='0.471763245444ms')
        self.addLink( Nantes , Rennes, bw=10, delay='0.491893119015ms')
        self.addLink( Nantes , Poiters, bw=10, delay='0.811727096658ms')
        self.addLink( Rennes , Caen, bw=10, delay='0.795378724438ms')
        self.addLink( Caen , Rouen, bw=10, delay='0.556565796728ms')
        self.addLink( Rouen , Paris, bw=10, delay='0.569488546226ms')
        self.addLink( Reims , None8, bw=10, delay='1.51859837185ms')
        self.addLink( Reims , Paris, bw=10, delay='0.662856276475ms')
        self.addLink( Luxembourg , None8, bw=10, delay='1.43279725497ms')
        self.addLink( Frankfurt , Philadelphia, bw=10, delay='32.1782507849ms')
        self.addLink( Frankfurt , Dusseldorf, bw=10, delay='0.925393789234ms')
        self.addLink( Frankfurt , Strasbourg, bw=10, delay='0.93206060014ms')
        self.addLink( Bordeaux , Toulouse, bw=10, delay='1.07007001837ms')
        self.addLink( Bordeaux , Poiters, bw=10, delay='1.05069582978ms')
        self.addLink( Miami , BocaRaton, bw=10, delay='0.334974695654ms')
        self.addLink( Miami , BocaRaton, bw=10, delay='0.334974695654ms')
        self.addLink( Miami , Tampa, bw=10, delay='1.67667126405ms')
        self.addLink( Miami , Orlando, bw=10, delay='1.67174656025ms')
        self.addLink( Atlanta , Jacksonville, bw=10, delay='2.33227771722ms')
        self.addLink( Atlanta , Charlotte, bw=10, delay='1.85011159274ms')
        self.addLink( Atlanta , None5, bw=10, delay='4.71609602131ms')
        self.addLink( Charlotte , None3, bw=10, delay='2.98127175936ms')
        self.addLink( Greensboro , None3, bw=10, delay='2.30793869175ms')
        self.addLink( Greensboro , Raleigh, bw=10, delay='0.554432026936ms')
        self.addLink( Tampa , Orlando, bw=10, delay='0.632503797913ms')
        self.addLink( Orlando , Jacksonville, bw=10, delay='1.0227367689ms')
        self.addLink( Birmingham , None5, bw=10, delay='5.6604027663ms')
        self.addLink( Nice , None7, bw=10, delay='4.76248164852ms')
        self.addLink( Grenoble , Geneva, bw=10, delay='0.609175506437ms')
        self.addLink( Grenoble , Lyon, bw=10, delay='0.476074859297ms')
        self.addLink( Lyon , Marseille, bw=10, delay='1.40203913128ms')
        self.addLink( Lyon , Dijon, bw=10, delay='0.887650832758ms')
        self.addLink( Lyon , Paris, bw=10, delay='1.99821047314ms')
        self.addLink( Toulouse , None6, bw=10, delay='4.83862762571ms')
        self.addLink( Montpellier , Marseille, bw=10, delay='0.644852341182ms')
        self.addLink( Montpellier , None6, bw=10, delay='4.7082234141ms')
        self.addLink( Marseille , Sophia, bw=10, delay='7.40123543296ms')
        self.addLink( Sophia , None7, bw=10, delay='8.86230010252ms')
        self.addLink( Prague , Brno, bw=10, delay='0.946029123529ms')
        self.addLink( Prague , Dresden, bw=10, delay='0.596662719046ms')
        self.addLink( Geneva , Bern, bw=10, delay='0.658248525472ms')
        self.addLink( Bern , Basel, bw=10, delay='0.354406090069ms')
        self.addLink( LosAngeles , SantaClara, bw=10, delay='2.52575714622ms')
        self.addLink( LosAngeles , LasVegas, bw=10, delay='1.87081041252ms')
        self.addLink( LosAngeles , OrangeCounty, bw=10, delay='0.236366915129ms')
        self.addLink( OrangeCounty , SanDiego, bw=10, delay='0.689476966996ms')
        self.addLink( SanFrancisco , SantaClara, bw=10, delay='0.315869338081ms')
        self.addLink( SanFrancisco , Oakland, bw=10, delay='0.0684206915078ms')
        self.addLink( Sacramento , Oakland, bw=10, delay='0.558355353106ms')
        self.addLink( Sacramento , SaltLakeCity, bw=10, delay='4.35204739341ms')
        self.addLink( Sacramento , Portland, bw=10, delay='3.953758808ms')
        self.addLink( SaltLakeCity , Boise, bw=10, delay='2.41983767928ms')
        self.addLink( SaltLakeCity , Denver, bw=10, delay='3.03315632663ms')
        self.addLink( Boise , Portland, bw=10, delay='2.81930997954ms')
        self.addLink( SanDiego , Phoenix, bw=10, delay='2.44187177512ms')
        self.addLink( Phoenix , ElPaso, bw=10, delay='2.82532167544ms')
        self.addLink( Arezzo , Rome, bw=10, delay='0.920476979351ms')
        self.addLink( Arezzo , Florence, bw=10, delay='0.309092865059ms')
        self.addLink( Rome , Genoa, bw=10, delay='2.03826683839ms')
        self.addLink( Odessa , Galati, bw=10, delay='1.20297978016ms')
        self.addLink( Odessa , Kiev, bw=10, delay='2.24876377582ms')
        self.addLink( Balchik , Constanta, bw=10, delay='0.475956855388ms')
        self.addLink( Balchik , Varna, bw=10, delay='0.152763352722ms')
        self.addLink( Burgas , KapitanAndreevo, bw=10, delay='0.657125373346ms')
        self.addLink( Burgas , Varna, bw=10, delay='0.442497092418ms')
        self.addLink( Sofia , None11, bw=10, delay='8.86230010252ms')
        self.addLink( Sofia , None10, bw=10, delay='8.86230010252ms')
        self.addLink( KapitanAndreevo , None10, bw=10, delay='10.1621669051ms')
        self.addLink( McAllen , Laredo, bw=10, delay='0.978203368007ms')
        self.addLink( McAllen , Monterrey, bw=10, delay='1.10287451162ms')
        self.addLink( Queretaro , Monterrey, bw=10, delay='2.86325056524ms')
        self.addLink( Queretaro , MexicoCity, bw=10, delay='0.939522738717ms')
        self.addLink( Queretaro , Guadalajara, bw=10, delay='1.56047215399ms')
        self.addLink( Albuquerque , ElPaso, bw=10, delay='1.88089878258ms')
        self.addLink( Albuquerque , ColoradoSprings, bw=10, delay='2.27392579512ms')
        self.addLink( Denver , ColoradoSprings, bw=10, delay='0.51650803315ms')
        self.addLink( Dresden , Berlin, bw=10, delay='0.84046844342ms')
        self.addLink( Basel , Zurich, bw=10, delay='0.38008788044ms')
        self.addLink( Strasbourg , None8, bw=10, delay='2.22588535828ms')
        self.addLink( Milan , Genoa, bw=10, delay='0.606502358517ms')
        self.addLink( Milan , Padua_Venice, bw=10, delay='1.24359694516ms')
        self.addLink( Milan , Zurich, bw=10, delay='1.10347665042ms')
        self.addLink( Zagreb , Ljubljana, bw=10, delay='0.594079321939ms')
        self.addLink( Genoa , None7, bw=10, delay='4.56482726741ms')
        self.addLink( Padua_Venice , None9, bw=10, delay='4.68444719422ms')
        self.addLink( Padua_Venice , Bologna, bw=10, delay='0.664091344842ms')
        self.addLink( Ljubljana , None9, bw=10, delay='4.97491103907ms')
        self.addLink( Florence , Bologna, bw=10, delay='0.412461198598ms')
        self.addLink( Berlin , Hamburg, bw=10, delay='1.29547985214ms')
        self.addLink( Hamburg , Bremen, bw=10, delay='0.483727154609ms')
        self.addLink( None1 , None4, bw=10, delay='32.5207238955ms')
        self.addLink( WhitePlains , Stamford, bw=10, delay='0.0961712211037ms')
        self.addLink( Baltimore , Philadelphia, bw=10, delay='0.733036732257ms')
        self.addLink( Baltimore , Washington, bw=10, delay='0.290681265843ms')
        self.addLink( None2 , Slough, bw=10, delay='29.5377494121ms')
        self.addLink( None2 , Dublin, bw=10, delay='27.3710429066ms')
        self.addLink( None3 , Washington, bw=10, delay='0.290681265843ms')
        self.addLink( None4 , None5, bw=10, delay='0.0ms')
        self.addLink( Newark , Philadelphia, bw=10, delay='0.615005611947ms')
        self.addLink( Philadelphia , Harrisburg, bw=10, delay='0.765415695466ms')
        self.addLink( Harrisburg , Pittsburgh, bw=10, delay='1.3430411584ms')
        self.addLink( Harrisburg , Washington, bw=10, delay='0.781809877426ms')
        self.addLink( Washington , Paris, bw=10, delay='31.3320518835ms')
        self.addLink( Washington , Herndon, bw=10, delay='0.159379740023ms')
        self.addLink( Boston , Worcester, bw=10, delay='25.9405833519ms')
        self.addLink( Boston , Providence, bw=10, delay='0.336333855515ms')
        self.addLink( Boston , London, bw=10, delay='26.7529496121ms')
        self.addLink( Providence , Stamford, bw=10, delay='1.00026348229ms')
        self.addLink( Stamford , NewYork, bw=10, delay='0.276721332628ms')
        self.addLink( NewYork , London, bw=10, delay='28.3068708858ms')
        self.addLink( NewYork , Albany, bw=10, delay='1.10034516269ms')
        self.addLink( NewYork , Paris, bw=10, delay='29.6628511925ms')
        self.addLink( Cologne , Dusseldorf, bw=10, delay='0.174256492431ms')
        self.addLink( Dusseldorf , Amsterdam, bw=10, delay='0.926544699999ms')
        self.addLink( Dusseldorf , Essen, bw=10, delay='0.154431116213ms')
        self.addLink( Amsterdam , Antwerp, bw=10, delay='0.674559194158ms')
        self.addLink( Amsterdam , Cambridge, bw=10, delay='1.65246400611ms')
        self.addLink( London , Dublin, bw=10, delay='2.35560572039ms')
        self.addLink( London , Montreal, bw=10, delay='26.5360705797ms')
        self.addLink( London , Lille, bw=10, delay='1.23657488633ms')
        self.addLink( London , Brussels, bw=10, delay='1.62778224079ms')
        self.addLink( Slough , Rotterdam, bw=10, delay='1.78818222974ms')
        self.addLink( Slough , Paris, bw=10, delay='1.83338177407ms')
        self.addLink( Essen , Dortmund, bw=10, delay='0.15707135511ms')
        self.addLink( Dortmund , Munster, bw=10, delay='0.259243790036ms')
        self.addLink( Munster , Bremen, bw=10, delay='0.748713846004ms')
        self.addLink( Seattle , Portland, bw=10, delay='1.18447903559ms')
        self.addLink( Montreal , Albany, bw=10, delay='1.61544314332ms')
        self.addLink( Tallinn , Helsinki, bw=10, delay='0.417166434873ms')
        self.addLink( Paris , Lille, bw=10, delay='1.03937039879ms')
        self.addLink( Paris , Brussels, bw=10, delay='1.34317010784ms')
        self.addLink( Brussels , Antwerp, bw=10, delay='0.208342705954ms')
        self.addLink( Kharkiv , Kiev, bw=10, delay='2.08538078412ms')
        self.addLink( Warsaw , Krakow, bw=10, delay='1.2734411826ms')
        self.addLink( Krakow , Brno, bw=10, delay='1.3105253603ms')
        self.addLink( Worcester , Albany, bw=10, delay='26.7309939714ms')

topos = { 'generated': ( lambda: GeneratedTopo() ) }

# HERE THE CODE DEFINITION OF THE TOPOLOGY ENDS

# the following code produces an executable script working with a remote controller
# and providing ssh access to the the mininet hosts from within the ubuntu vm
controller_ip = ''

def setupNetwork(controller_ip):
    "Create network and run simple performance test"
    # check if remote controller's ip was set
    # else set it to localhost
    topo = GeneratedTopo()
    if controller_ip == '':
        #controller_ip = '10.0.2.2';
        controller_ip = '127.0.0.1';
    net = Mininet(topo=topo, controller=lambda a: RemoteController( a, ip=controller_ip, port=6633 ), host=CPULimitedHost, link=TCLink)
    return net

def connectToRootNS( network, switch, ip, prefixLen, routes ):
    "Connect hosts to root namespace via switch. Starts network."
    "network: Mininet() network object"
    "switch: switch to connect to root namespace"
    "ip: IP address for root namespace node"
    "prefixLen: IP address prefix length (e.g. 8, 16, 24)"
    "routes: host networks to route to"
    # Create a node in root namespace and link to switch 0
    root = Node( 'root', inNamespace=False )
    intf = TCLink( root, switch ).intf1
    root.setIP( ip, prefixLen, intf )
    # Start network that now includes link to root namespace
    network.start()
    # Add routes from root ns to hosts
    for route in routes:
        root.cmd( 'route add -net ' + route + ' dev ' + str( intf ) )

def sshd( network, cmd='/usr/sbin/sshd', opts='-D' ):
    "Start a network, connect it to root ns, and run sshd on all hosts."
    switch = network.switches[ 0 ]  # switch to use
    ip = '10.123.123.1'  # our IP address on host network
    routes = [ '10.0.0.0/8' ]  # host networks to route to
    connectToRootNS( network, switch, ip, 8, routes )
    for host in network.hosts:
        host.cmd( cmd + ' ' + opts + '&' )

    # DEBUGGING INFO
    print
    print "Dumping host connections"
    dumpNodeConnections(network.hosts)
    print
    print "*** Hosts are running sshd at the following addresses:"
    print
    for host in network.hosts:
        print host.name, host.IP()
    print
    print "*** Type 'exit' or control-D to shut down network"
    print
    print "*** For testing network connectivity among the hosts, wait a bit for the controller to create all the routes, then do 'pingall' on the mininet console."
    print

    CLI( network )
    for host in network.hosts:
        host.cmd( 'kill %' + cmd )
    network.stop()


if __name__ == '__main__':
    setLogLevel('info')
    #setLogLevel('debug')
    sshd( setupNetwork(controller_ip) )
