forked from LeoIannacone/dtn
/
TCA_README
111 lines (72 loc) · 3.37 KB
/
TCA_README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
-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