diff --git a/mininet/node.py b/mininet/node.py
index ba62514a091e41ccecd9271d6383b5038345d27b..759ee85795dddcd2a16b274efcdb2e22da779477 100644
--- a/mininet/node.py
+++ b/mininet/node.py
@@ -52,6 +52,9 @@
 from mininet.util import quietRun, makeIntfPair, moveIntf, isShellBuiltin
 from mininet.moduledeps import moduleDeps, OVS_KMOD, OF_KMOD, TUN
 
+PORT_BASE = 1  # Port numbering to start from.  OF > v0.9 is 1-indexed.
+
+
 class Node( object ):
     """A virtual network node is simply a shell in a network namespace.
        We communicate with it using pipes."""
@@ -258,7 +261,7 @@ def newPort( self ):
         "Return the next port number to allocate."
         if len( self.ports ) > 0:
             return max( self.ports.values() ) + 1
-        return 0
+        return PORT_BASE
 
     def addIntf( self, intf, port=None ):
         """Add an interface.
@@ -544,8 +547,9 @@ def start( self, controllers ):
             mac_str = ' --datapath-id=0000' + \
                       ''.join( self.defaultMAC.split( ':' ) ) + ' '
         ports = sorted( self.ports.values() )
-        if len( ports ) != ports[ -1 ] + 1:
-            raise Exception( 'only contiguous, zero-indexed port ranges'
+        print ports
+        if len( ports ) != ports[ -1 ]:
+            raise Exception( 'only contiguous, one-indexed port ranges '
                             'supported: %s' % self.intfs )
         intfs = [ self.intfs[ port ] for port in ports ]
         self.cmd( 'ovs-dpctl', 'add-if', self.dp, ' '.join( intfs ) )