TCA_README
changeset 0 2b3e5ec03512
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TCA_README	Thu Apr 21 14:57:45 2011 +0100
@@ -0,0 +1,111 @@
+-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
+