Changes between Initial Version and Version 1 of Internal/SharedNAT


Ignore:
Timestamp:
Feb 26, 2014 2:43:07 PM (11 years ago)
Author:
faber
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Internal/SharedNAT

    v1 v1  
     1= Controlled eXternal Access =
     2
     3This note attempts to give some information for using
     4the new Controlled eXternal Access sytem (CXA).
     5
     6CXA attempts to be backwards compatible with experiments created under
     7the previous Risky Experiment mechanism, but gives some additional capabilites.
     8
     9== Dynamic modification/access ==
     10
     11If you have an an existing experiment, and you want to grant it external    access, you can do so , even if it is already swapped in, without restarting the experiment.
     12
     13You use a web page {{{https://<testbed>/expcxa.php?pid=<pid>&eid=<eid>}}} and fill out the same form that is used by the "Make Experiment Risky" page, parsed with almost the same rules.
     14
     15For '''Outside nodes''' - triples <dotted quad>/<port>/<proto>,
     16It is now permitted to specify a host of 0.0.0.0 (meaning any IP address),
     17and/or a port number of 0,  (meaning any port).
     18
     19In the future, but not now, we would like to have the host part be
     20regular DNS names, or to allow the use of commas as separators instead
     21of slashes so that the hostpart could be an IP subnet.
     22
     23There is also a bug that you have to click the check the box
     24for "Experiment need outside connetctivity" even if you've already
     25granted it.
     26
     27If your experiment already has specified nodes with external
     28connectivity in its ns file, it will issue commands to reconfigure
     29the '''LAST''' external node in your nsfile, instead of the shared gateway,
     30if the node is running some flavor of BSD; otherwise it just
     31modifies the risky experiment tables in the database.
     32
     33== NS file extensions for shared external access ==
     34
     35We have made a minor change to the parsing of the ns extension
     36
     37{{{
     38    tb-allow-external $node [<cookietype> [key1 value1] [key 2 value2] .... ]
     39}}}
     40
     41if the cookieype is "shared", then only the keyN valueN pairs will
     42be entered in virt parameters table, and no pseudonode with vname
     43external_ipaddr<N> will be requested by the experiment.
     44
     45The CXA backend will examine the virtual parameters whenever an
     46an ns file is (re-)parsed and will (re-)initialize the risky experiment
     47table entries for the experiment based on the values for two
     48keys, namely "nat" and "rdr".
     49
     50The values are a quoted string of whitespace separated targets,
     51such as the slash delimited triples that can be entered in section 1
     52above.
     53
     54Alterations made by the webpage above persist only until
     55modifyexp or endexp is run on the testbed.
     56
     57We allow some abbreviations for convience.
     58
     59For "rdr" targets, one may use triples as in the web page.
     60
     61For pairs, the target is interpreted as be <port>/<proto>,
     62and the node part is assumed to be the node specified
     63in the tb-allow-external call.
     64
     65For singletons, it is assumed to be <port> which the <proto>
     66defaulting to tcp.
     67
     68For "nat" targets, one may use triples as in the web page.
     69
     70Pairs are interpreted as <host>/<port>, the proto defaulted to tcp.
     71and singletons, it is assumed to be <host> which the <proto>
     72defaulting to tcp and the <port> default to 0 meaning all ports.
     73
     74== DNS stuff ==
     75
     76In the interest of backwards compatibility, even when using "shared"
     77external access there will still be a CNAME created for each
     78node named with a tb-allow-external call.  The value will be the
     79IP address of the shared NAT box.
     80
     81Additionally, any nodes designated as targets of inbound
     82redirects will also have CNAMEs created for them, whether or not
     83the targets were created dynamically via a web page, or statically
     84in the NS file.  If all targets for a node specified in the NS file
     85were removed via the web, then no CNAME will be generated.