Skip to content
  • Shashi Guruprasad's avatar
    Distributed NSE changes. In other words, simulation resources are · d266bd71
    Shashi Guruprasad authored
    now mapped to more than one PC if required. The simnode_capacity
    column in the node_types table determines how many sim nodes can
    be packed on one PC. The packing factor can also be controlled via
    tb-set-colocate-factor to be smaller than simnode_capacity.
    
    - No frontend code changes. To summarize:
      $ns make-simulated {
        ...
      }
      is still the easy way to put a whole bunch of Tcl code to be
      in simulation.
      One unrelated fix in the frontend code is to fix the
      xmlencode() function which prior to this would knock off
      newlines from columns in the XML output. This affected
      nseconfigs since it is one of the few columns with embedded
      newlines. Also changed the event type and event object type
      in traffic.tcl from TRAFGEN/MODIFY to NSE/NSEEVENT.
    
    - More Tcl code in a new directory tbsetup/nseparse
      -> Runs on ops similar to the main parser. This is invoked
         from assign_wrapper in the end if there are simnodes
      -> Partitions the Tcl code into multiple Tcl specifications
         and updates the nseconfigs table via xmlconvert
      -> Comes with a lot of caveats. Arbitrary Tcl code such as user
         specified objects or procedures will not be re-generated. For
         example, if a user wanted a procedure to be included in Tcl
         code for all partitions, there is no way for code in nseparse
         to do that. Besides that, it needs to be tested more thoroughly.
    
    - xmlconvert has a new option -s. When invoked with this option,
      the experiments table is not allowed to be modified. Also,
      virtual tables are just updated (as opposed to deleting
      all rows in the first invocation before inserting new rows)
    
    - nse.patch has all the IP address related changes committed in
      iversion 1.11 + 2 other changes. 1) MTU discovery support in
      the ICMP agent 2) "$ns rlink" mechanism for sim node to real
      node links
    
    - nseinput.tcl includes several client side changes to add IP
      routes in NSE and the kernel routing table for packets crossing
      pnodes. Also made the parsing of tmcc command output more robust
      to new changes. Other client side changes in libsetup.pm and other
      scripts to run nse, are also in this commit
    
    - Besides the expected changes in assign_wrapper for simulated nodes,
      the interfaces and veth_interfaces tables are updated with
      routing table identifiers (rtabid). The tmcd changes are already
      committed. This field is used only by sim hosts on the client side.
      Of course, they can be used by jails as well if desired.
    d266bd71