TCA_README
changeset 0 2b3e5ec03512
equal deleted inserted replaced
-1:000000000000 0:2b3e5ec03512
       
     1 -TCA Readme
       
     2 
       
     3 These are some basic configuration and usage notes about the TCA
       
     4 (Tetherless Computing Architecture) implementation. For a higher-level
       
     5 view of TCA, see the documentation at www.mindstream.watsmore.net
       
     6 
       
     7 
       
     8 1 Configuration
       
     9 
       
    10 The following are important TCA directives in dtn.conf :
       
    11 
       
    12 # There are two types of tca nodes: routers and gateways:
       
    13 route set type [ tca_router | tca_gateway]
       
    14 
       
    15 # A tca endpointid uses the tca scheme, of the form: "tca://guid/app"
       
    16 route local_eid "tca://hail"
       
    17 
       
    18 # All tca nodes must have a tcp0 contact interface
       
    19 interface add tcp0 tcp local_addr=192.168.1.6 local_port=5000
       
    20 
       
    21 # All tca_routers must have a default route toward a gateway as follows:
       
    22 # Note that tca_gateways must *not* have a default route
       
    23 link add default hurricane.cs.uwaterloo.ca:5000 ONDEMAND tcp
       
    24 route add tca://* default
       
    25 
       
    26 
       
    27 2 Using TCA
       
    28 
       
    29 A new mobile endpoint (hail/app) can register as follows:
       
    30 dtnsend -s tca://hail/app -d tca://registry -t m -p "register"
       
    31 
       
    32 Once hail has registered, another node (windstorm) can send it a
       
    33 bundle like this: 
       
    34 
       
    35 dtnsend -s tca://windstorm/test_app -d
       
    36 tca://hail/test_app -t m -p "windstorm says hi"
       
    37 
       
    38 
       
    39 3 Unimplemented Features, Known Bugs, and Limitations
       
    40 
       
    41 - Limitation. OpenDHT nodes are hard-coded at the moment. There should
       
    42 be a file of nodes to use instead.
       
    43 
       
    44 - Limitation. OpenDHT nodes are tested on startup and only those nodes
       
    45 that are responsive are kept. This process should be repeated
       
    46 periodically to refresh the list of "live" OpenDHT nodes.
       
    47 
       
    48 - Limitation. Entries in the DHT are set to time out at 1 week, the
       
    49 maximum TTL allowed by OpenDHT. This value is hard-coded.
       
    50 
       
    51 - Unimplemented. The rules for registration lifetime are not quite
       
    52 settled. When a gateway receives a bundle for an unregistered node
       
    53 (perhaps never registered, perhaps previously registered but expired)
       
    54 the bundle is kept in the gateway's queue until the bundle times out.
       
    55 
       
    56 - Bug. Undeliverable control bundles are not deleted. They remain in the
       
    57 pending bundle list until timeout. This is an error but it affects performance,
       
    58 not correctness.
       
    59 
       
    60 4 Modified Files
       
    61 
       
    62 The key new classes in the implementation are TcaController and TcaRouter.
       
    63 
       
    64 This is a complete list of files that were modified or added to DTN
       
    65 as part of the TCA implementation:
       
    66 
       
    67 servlib/naming/TCAScheme.* 
       
    68 New singleton class, borrowed heavily from DTNScheme.
       
    69 
       
    70 servlib/naming/SchemeTable.cc
       
    71 Added an instance of TCAScheme to the scheme table.
       
    72 
       
    73 servlib/routing/BundleRouter.cc
       
    74 Added TcaRouter instantiations to factory method.
       
    75 
       
    76 servlib/routing/TableBasedRouter.h
       
    77 Made some bundle handler functions virtual.
       
    78 
       
    79 apps/tca_admin
       
    80 New directory for tca controller app.
       
    81 
       
    82 apps/tca_admin/tca_lib/*
       
    83 Third-party tools.
       
    84 
       
    85 apps/tca_admin/TcaRegistry.*
       
    86 New class for accessing the TCA registry.
       
    87 
       
    88 apps/tca_admin/TcaEndpointID.*
       
    89 New class for manipulating TCA endpoint ids.
       
    90 
       
    91 apps/tca_admin/TcaController.*
       
    92 Main implementation of TCA Control logic at the control layer.
       
    93 
       
    94 apps/tca_admin/tca_admin.cc
       
    95 The TCA controller's command-line parsing and main() function.
       
    96 
       
    97 /servlib/routing/TcaEndpointID.*
       
    98 New class for manipulating TCA endpoint ids, subclassed from EndpointID.
       
    99 
       
   100 /servlib/routing/TcaControlBundle.*
       
   101 New class for manipulating TCA control bundles.
       
   102 
       
   103 /servlib/routing/TcaRouter.*
       
   104 Main implementation of TCA Control logic at the bundle routing layer.
       
   105 
       
   106 servlib/Makefile
       
   107 Modified to include TcaRouter and related sources
       
   108 
       
   109 apps/Makefile
       
   110 Modified to include tca_admin app and related sources
       
   111