diff --git a/examples/linearbandwidth.py b/examples/linearbandwidth.py
index 79a13c3aaff0b154d4d59943d7be5f5956015c95..843841018539259f73482603398c8eb0ae9cb172 100755
--- a/examples/linearbandwidth.py
+++ b/examples/linearbandwidth.py
@@ -4,11 +4,11 @@
 Test bandwidth (using iperf) on linear networks of varying size, 
 using both kernel and user datapaths.
 
-We construct a network of N switches and N+1 hosts, connected as follows:
+We construct a network of N hosts and N-1 switches, connected as follows:
 
-hN <-> s0 <-> s1 .. sN-1
-        |      |     |
-        hN+1   hN+2  hN+N
+h1 <-> sN+1 <-> sN+2 .. sN+N-1
+       |        |       |
+       h2       h3      hN
         
 Note: by default, the reference controller only supports 16
 switches, so this test WILL NOT WORK unless you have recompiled
@@ -24,7 +24,7 @@
 from mininet.log import lg
 
 class LinearTopo( Topo ):
-    "Topology for a string of N switches and 1+N hosts."
+    "Topology for a string of N hosts and N-1 switches."
 
     def __init__( self, N ):
     
@@ -32,22 +32,22 @@ def __init__( self, N ):
         super( LinearTopo, self ).__init__()
         
         # Create switch and host nodes
-        switches = range( 0, N )
-        hosts = range( N, 2*N + 1 )
-        for id in switches:
-            self._add_node( id, Node( is_switch=True ) )
+        hosts = range( 1, N+1 )
+        switches = range( N+1, N+N )
         for id in hosts:
             self._add_node( id, Node( is_switch=False ) )
-
-        # Connect switches
+        for id in switches:
+            self._add_node( id, Node( is_switch=True ) )
+        
+        # Wire up switches
         for s in switches[ :-1 ]:
             self._add_edge( s, s + 1 )
-            
-        # Connect hosts
+        
+        # Wire up hosts
         self._add_edge( hosts[ 0 ], switches[ 0 ] )
-        for s in switches:
-            self._add_edge( s, s + N + 1)
-            
+        for h in hosts[ 1: ]:
+            self._add_edge( h, h+N-1 )
+
         # Consider all switches and hosts 'on'
         self.enable_all()
 
@@ -58,18 +58,20 @@ def linearBandwidthTest( lengths ):
     datapaths = [ 'kernel', 'user' ]
     results = {}
     switchCount = max( lengths )
+    hostCount = switchCount + 1
 
     for datapath in datapaths:
         Switch = KernelSwitch if datapath == 'kernel' else UserSwitch
         results[ datapath ] = []
-        net = Mininet( topo=LinearTopo( switchCount ), switch=Switch )
+        net = Mininet( topo=LinearTopo( hostCount ), switch=Switch )
         net.start()
         print "*** testing basic connectivity"
         net.ping( [ net.hosts[ 0 ], net.hosts[ -1 ] ] )
         print "*** testing bandwidth"
         for n in lengths:
-            print "testing h0 <-> h" + `n`, ; flush()
-            bandwidth = net.iperf( [ net.hosts[ 0 ], net.hosts[ n ] ]  )
+            src, dst = net.hosts[ 0 ], net.hosts[ n ]
+            print "testing", src.name, "<->", dst.name
+            bandwidth = net.iperf( [ src, dst ] )
             print bandwidth ; flush()
             results[ datapath ] += [ ( n, bandwidth ) ]
         net.stop()
@@ -90,6 +92,6 @@ def linearBandwidthTest( lengths ):
     lg.setLogLevel( 'info' )
     init()
     print "*** Running linearBandwidthTest"
-    linearBandwidthTest( [ 1, 10 ] )
+    linearBandwidthTest( [ 1, 10, 20  ]  )