diff --git a/tools/test/topos/geant.py b/tools/test/topos/geant.py
new file mode 100644
index 0000000..e2e6fb7
--- /dev/null
+++ b/tools/test/topos/geant.py
@@ -0,0 +1,184 @@
+#!/usr/bin/env python
+
+"""
+"""
+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 GeantMplsTopo( Topo ):
+    "Internet Topology Zoo Specimen."
+
+    def __init__( self ):
+        "Create a topology."
+
+        # Initialize Topology
+        Topo.__init__( self )
+
+        # add nodes, switches first...
+        ATH = self.addSwitch( 's1' )
+        LIS = self.addSwitch( 's2', protocols='OpenFlow13' )
+        LON = self.addSwitch( 's3' )
+        BRU = self.addSwitch( 's4' )
+        PAR = self.addSwitch( 's5' )
+        DUB = self.addSwitch( 's6' )
+        MAD = self.addSwitch( 's7' )
+        GEN = self.addSwitch( 's8' )
+        MIL = self.addSwitch( 's9', protocols='OpenFlow13' )
+        SOF = self.addSwitch( 's10' )
+        BUC = self.addSwitch( 's11' )
+        VIE = self.addSwitch( 's12' )
+        FRA = self.addSwitch( 's13' )
+        COP = self.addSwitch( 's14' )
+        TLN = self.addSwitch( 's15' )
+        RIG = self.addSwitch( 's16' )
+        KAU = self.addSwitch( 's17' )
+        POZ = self.addSwitch( 's18' )
+        PRA = self.addSwitch( 's19' )
+        BRA = self.addSwitch( 's20' )
+        ZAG = self.addSwitch( 's21' )
+        LJU = self.addSwitch( 's22', protocols='OpenFlow13' )
+        BUD = self.addSwitch( 's23' )
+        MLT = self.addSwitch( 's24' )
+        LUX = self.addSwitch( 's25' )
+        MAR = self.addSwitch( 's26' )
+        HAM = self.addSwitch( 's27' )
+        AMS = self.addSwitch( 's28' )
+        STO = self.addSwitch( 's29' )
+        OSL = self.addSwitch( 's30' )
+        HEL = self.addSwitch( 's31' )
+
+
+    # ... and now hosts
+        ATH_host = self.addHost( 'h1' )
+        LIS_host = self.addHost( 'h2' )
+        LON_host = self.addHost( 'h3' )
+        BRU_host = self.addHost( 'h4' )
+        PAR_host = self.addHost( 'h5' )
+        DUB_host = self.addHost( 'h6' )
+        MAD_host = self.addHost( 'h7' )
+        GEN_host = self.addHost( 'h8' )
+        MIL_host = self.addHost( 'h9' )
+        SOF_host = self.addHost( 'h10' )
+        BUC_host = self.addHost( 'h11' )
+        VIE_host = self.addHost( 'h12' )
+        FRA_host = self.addHost( 'h13' )
+        COP_host = self.addHost( 'h14' )
+        TLN_host = self.addHost( 'h15' )
+        RIG_host = self.addHost( 'h16' )
+        KAU_host = self.addHost( 'h17' )
+        POZ_host = self.addHost( 'h18' )
+        PRA_host = self.addHost( 'h19' )
+        BRA_host = self.addHost( 'h20' )
+        ZAG_host = self.addHost( 'h21' )
+        LJU_host = self.addHost( 'h22' )
+        BUD_host = self.addHost( 'h23' )
+        MLT_host = self.addHost( 'h24' )
+        LUX_host = self.addHost( 'h25' )
+        MAR_host = self.addHost( 'h26' )
+        HAM_host = self.addHost( 'h27' )
+        AMS_host = self.addHost( 'h28' )
+        STO_host = self.addHost( 'h29' )
+        OSL_host = self.addHost( 'h30' )
+        HEL_host = self.addHost( 'h31' )
+
+        # add edges between switch and corresponding host
+        self.addLink( ATH , ATH_host )
+        self.addLink( LIS , LIS_host )
+        self.addLink( LON , LON_host )
+        self.addLink( BRU , BRU_host )
+        self.addLink( PAR , PAR_host )
+        self.addLink( DUB , DUB_host )
+        self.addLink( MAD , MAD_host )
+        self.addLink( GEN , GEN_host )
+        self.addLink( MIL , MIL_host )
+        self.addLink( SOF , SOF_host )
+        self.addLink( BUC , BUC_host )
+        self.addLink( VIE , VIE_host )
+        self.addLink( FRA , FRA_host )
+        self.addLink( COP , COP_host )
+        self.addLink( TLN , TLN_host )
+        self.addLink( RIG , RIG_host )
+        self.addLink( KAU , KAU_host )
+        self.addLink( POZ , POZ_host )
+        self.addLink( PRA , PRA_host )
+        self.addLink( BRA , BRA_host )
+        self.addLink( ZAG , ZAG_host )
+        self.addLink( LJU , LJU_host )
+        self.addLink( BUD , BUD_host )
+        self.addLink( MLT , MLT_host )
+        self.addLink( LUX , LUX_host )
+        self.addLink( MAR , MAR_host )
+        self.addLink( HAM , HAM_host )
+        self.addLink( AMS , AMS_host )
+        self.addLink( STO , STO_host )
+        self.addLink( OSL , OSL_host )
+        self.addLink( HEL , HEL_host )
+
+        # add edges between switches
+        self.addLink( ATH , MIL, bw=10 )
+        self.addLink( MIL , ATH, bw=10 )
+        self.addLink( MIL , VIE, bw=10 )
+        self.addLink( MIL , MAR, bw=10 )
+        self.addLink( MIL , GEN, bw=10 )
+        self.addLink( GEN , MIL, bw=10 )
+        self.addLink( MIL , MLT, bw=10 )
+        self.addLink( GEN , FRA, bw=10 )
+        self.addLink( FRA , GEN, bw=10 )
+        self.addLink( GEN , PAR, bw=10 )
+        self.addLink( PAR , GEN, bw=10 )
+        self.addLink( GEN , PAR, bw=10 )
+        self.addLink( FRA , POZ, bw=10 )
+        self.addLink( GEN , MAR, bw=10 )
+        self.addLink( MAR , MAD, bw=10 )
+        self.addLink( MAD , PAR, bw=10 )
+        self.addLink( MAD , LIS, bw=10 )
+        self.addLink( LIS , LON, bw=10 )
+        self.addLink( LON , LIS, bw=10 )
+        self.addLink( LON , PAR, bw=10 )
+        self.addLink( LON , DUB, bw=10 )
+        self.addLink( DUB , LON, bw=10 )
+        self.addLink( LON , BRU, bw=10 )
+        self.addLink( BRU , AMS, bw=10 )
+        self.addLink( AMS , LUX, bw=10 )
+        self.addLink( LUX , FRA, bw=10 )
+        self.addLink( AMS , HAM, bw=10 )
+        self.addLink( HAM , FRA, bw=10 )
+        self.addLink( HAM , COP, bw=10 )
+        self.addLink( COP , AMS, bw=10 )
+        self.addLink( FRA , POZ, bw=10 )
+        self.addLink( FRA , PRA, bw=10 )
+        self.addLink( FRA , BUD, bw=10 )
+        self.addLink( FRA , VIE, bw=10 )
+        self.addLink( POZ , PRA, bw=10 )
+        self.addLink( POZ , KAU, bw=10 )
+        self.addLink( KAU , RIG, bw=10 )
+        self.addLink( ZAG , VIE, bw=10 )
+        self.addLink( ZAG , BUD, bw=10 )
+        self.addLink( BUD , PRA, bw=10 )
+        self.addLink( BUD , BRA, bw=10 )
+        self.addLink( BUD , BUC, bw=10 )
+        self.addLink( BUD , SOF, bw=10 )
+        self.addLink( BUD , LJU, bw=10 )
+        self.addLink( BUC , SOF, bw=10 )
+        self.addLink( BUC , VIE, bw=10 )
+        self.addLink( VIE , BRA, bw=10 )
+        self.addLink( RIG , TLN, bw=10 )
+        self.addLink( TLN , HAM, bw=10 )
+        self.addLink( OSL , STO, bw=10 )
+        self.addLink( STO , HEL, bw=10 )
+        self.addLink( STO , COP, bw=10 )
+        self.addLink( OSL , COP, bw=10 )
+        self.addLink( TLN , HEL, bw=10 )
+
+topos = { 'att': ( lambda: GeantMplsTopo() ) }
+
+if __name__ == '__main__':
+    from onosnet import run
+    run( GeantMplsTopo() )
