This commit adds some simple support for using the Infiniband on the
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'
Showing with 454 additions and 14 deletions