Skip to content
  • Leigh B Stoller's avatar
    This commit adds some simple support for using the Infiniband on the · 997b21b5
    Leigh B Stoller authored
    Probe Cluster. The problem is that the IFB is a shared network that
    every node attaches to, which can looks like an ethernet device that
    can ifconfig'ed. In other words, one big lan.
    
    But we still want the user to be able to create a lan so that they can
    interact with it in thei NS file like any other network.
    
    The NS syntax is:
    
    	set lan2 [$ns make-lan "node1 node2 node3" * 0ms]
    	tb-set-switch-fabric $lan2 "infiniband"
    
    The switch fabric tells the backend to do IP assignment for the
    specific global network. Yes, I tried to be a little but general
    purpose. Lets see how this actually turns out.
    
    This first commit treats the fabric as a single big lan on the same
    subnet.
    
    NOTE 1: Since the unroutable IP space is kinda small, but the Probe
    Cluster is really big, we can easily run out of bits if we tried to do
    assignment on virtual topos. Instead, fabrics get their IP allocation
    at swapin time, and the allocations are deleted when the experiment is
    swapped out. The rationale is that the number of swapped in
    experiments is much much smaller then the number of possible topos
    that can be loaded into the DB. Still might run out, but less likely.
    
    The primary impact of above is that IP assignments can change from
    one swap to another, but this is easy to deal with if the user is
    scripting their experiment; the IP allocation is available via the
    XMLRPC interface.
    
    NOTE 2: The current code allocates from a single big network, which
    makes it easy for users to mess each other up if they start doing
    things by hand. Ultimately, we want each lan in each experinent to use
    their own subnet, but that is going to take more work, so lets do it
    in the second phase.
    
    The definition of "network fabrics" is in the new network_fabrics
    tables. As an example for probe:
    
    	INSERT INTO `network_fabrics` set
    		idx=NULL,
    		name='ifband',
    		created=now(),
    		ipalloc=1, ipalloc_onenet=1,
    		ipalloc_subnet='192.168.0.0',ipalloc_netmask='255.255.0.0'
    997b21b5