-TCA Readme These are some basic configuration and usage notes about the TCA (Tetherless Computing Architecture) implementation. For a higher-level view of TCA, see the documentation at www.mindstream.watsmore.net 1 Configuration The following are important TCA directives in dtn.conf : # There are two types of tca nodes: routers and gateways: route set type [ tca_router | tca_gateway] # A tca endpointid uses the tca scheme, of the form: "tca://guid/app" route local_eid "tca://hail" # All tca nodes must have a tcp0 contact interface interface add tcp0 tcp local_addr=192.168.1.6 local_port=5000 # All tca_routers must have a default route toward a gateway as follows: # Note that tca_gateways must *not* have a default route link add default hurricane.cs.uwaterloo.ca:5000 ONDEMAND tcp route add tca://* default 2 Using TCA A new mobile endpoint (hail/app) can register as follows: dtnsend -s tca://hail/app -d tca://registry -t m -p "register" Once hail has registered, another node (windstorm) can send it a bundle like this: dtnsend -s tca://windstorm/test_app -d tca://hail/test_app -t m -p "windstorm says hi" 3 Unimplemented Features, Known Bugs, and Limitations - Limitation. OpenDHT nodes are hard-coded at the moment. There should be a file of nodes to use instead. - Limitation. OpenDHT nodes are tested on startup and only those nodes that are responsive are kept. This process should be repeated periodically to refresh the list of "live" OpenDHT nodes. - Limitation. Entries in the DHT are set to time out at 1 week, the maximum TTL allowed by OpenDHT. This value is hard-coded. - Unimplemented. The rules for registration lifetime are not quite settled. When a gateway receives a bundle for an unregistered node (perhaps never registered, perhaps previously registered but expired) the bundle is kept in the gateway's queue until the bundle times out. - Bug. Undeliverable control bundles are not deleted. They remain in the pending bundle list until timeout. This is an error but it affects performance, not correctness. 4 Modified Files The key new classes in the implementation are TcaController and TcaRouter. This is a complete list of files that were modified or added to DTN as part of the TCA implementation: servlib/naming/TCAScheme.* New singleton class, borrowed heavily from DTNScheme. servlib/naming/SchemeTable.cc Added an instance of TCAScheme to the scheme table. servlib/routing/BundleRouter.cc Added TcaRouter instantiations to factory method. servlib/routing/TableBasedRouter.h Made some bundle handler functions virtual. apps/tca_admin New directory for tca controller app. apps/tca_admin/tca_lib/* Third-party tools. apps/tca_admin/TcaRegistry.* New class for accessing the TCA registry. apps/tca_admin/TcaEndpointID.* New class for manipulating TCA endpoint ids. apps/tca_admin/TcaController.* Main implementation of TCA Control logic at the control layer. apps/tca_admin/tca_admin.cc The TCA controller's command-line parsing and main() function. /servlib/routing/TcaEndpointID.* New class for manipulating TCA endpoint ids, subclassed from EndpointID. /servlib/routing/TcaControlBundle.* New class for manipulating TCA control bundles. /servlib/routing/TcaRouter.* Main implementation of TCA Control logic at the bundle routing layer. servlib/Makefile Modified to include TcaRouter and related sources apps/Makefile Modified to include tca_admin app and related sources