AX.25 Connected Mode Convergence Layer Howto for the DTN2 Reference Implementation.
General Description.
AX.25 is a link layer protocol for packet radio networking over HF, VHF and UHF links and is used primarily by radio amateurs. AX.25 connected mode is connection oriented and provides a reliable, in-order transfer using a sequence of data-frames.
The AX.25 Connected Mode Convergence Layer (AX25CM-CL) is a convergence layer implementation for DTN2, using AF_AX25 SOCK_SEQPACKET sockets on Linux platforms. See wikipedia.org and tapr.org for information on the AX.25 protocol itself or try man 4 ax25 on Linux.
This convergence layer is described in:
Ronan, Walsh and Long, Experiments with Delay and Disruption Tolerant Networking in AX.25 and D-Star Networks, ARRL/TAPR 28th Annual Digital Communications Conference, 25-27 September 2009, Chicago.
The AX25CM-CL transports RFC-5050 bundles directly over AX.25 operating as a Layer-2 (link layer) protocol, in a similar fashion to the existing Bluetooth-CL. It has been undergoing occasional testing with KISS mode TNCs and via AX.25 in IP encapsulation (using ax25ip).
Software Description
The AX25CM-CL code in DTN2/servlib/conv_layers is based on (forked from) the existing TCP-CL implementation, but derives from the new SeqPacketConvergenceLayer class instead of the StreamConvergenceLayer in order to allow for modification of the TCP-CL Protocol for use in the amateur environment. Currently, the TCP-CL Protocol is extended to include a 32-bit CRC appended to each TCP-CL Protocol segment, in order to ensure that corruption of KISS frames can be detected (as well as providing additional means to detect implementation induced protocol errors) and an additional option, ack_window is provided to reduce the number of TCP-CL protocol acks sent during long bundle transfers.
The TCP-CL and the AX25CM-CL share commonality provided by the ConnectionConvergenceLayer base class. Supporting classes providing the interface to AF_AX25 SOCK_SEQPACKET and AF_AX25 SOCK_DGRAM sockets are provided as an extension to the oasys library in oasys/ax25. A simple test-harness is provided in oasys/test for the underlying sockets abstraction (the source for the test harness should be modified to use appropriate callsigns before use on air by licenced stations).
Support for AF_AX25 SOCK_DGRAM sockets in future subclasses of the oasis class AX25Client should facilitate further development, such as the use of Disconnected Mode (UI frames) to convey discovery data or perhaps an implementation of LTP for AX.25 links.
The code has been in intermittent development since January 2007, when it started as a fork of the TCP-CL and oasys support classes.
Status.
The AX25CM-CL should probably be regarded as alpha quality. I'd recommend supervised use on shared channels, at least until you are familiar with the traffic load generated by your DTN.
Features.
The AX25CM-CL currently allows for the use of point-to-point links between two peers or with a single non-DTN digipeater in the path, for an ax25cm link. Reactive fragmentation works well across multiple contacts.
There is no announcement/discovery mechanism implemented yet. Links must be manually configured and initiated.
Routing using the static router or the Delay Tolerant Link State Router works fine, although adjustment of the default dtlsr_lsa interval and dtlsr_lsa_lifetime throughout your DTN is advised in order to avoid LSAs clogging up your AX.25 link.
Known Bugs and TODOs.
Bug: Stuck Sockets
An issue has been observed that requires a restart of the dtnd to get broken AX.25 links going again, seemingly due to a connected socket,showing both source and desitnation addresses, stuck in the LISTENING state at the listening end (as can be seen using the command "netstat --ax25"). Killing the kissattach process may be required.
Update: while I can't claim to have fixed this, I've certainly stopped seeing it happen in my testing.
Bug: Receiving runt segments
It seems that sometimes partial segments are read from the socket, effectively causing a protocol error.
Update: I've not noticed this happening at all in my recent testing. Newer kernels, perhaps?
TODO: Discovery mechanism
The lowest level AX.25 socket code in oasys/ax25 should support UI frames as AF_AX25 SOCK_DGRAM as is, but there is nothing above that level to make use of the facility, yet.
Update: There's some work in progress on a discovery mechanism. I've had to resort to using raw sockets, so its a little bit tricky and it will be a while yet before this is useable.
Hardware requirements
In order to use AX.25 links in your DTN you will need access to one of the following:
- a pair of (or more) DTN nodes, running Linux, suitably equipped with TNCs and radios, or
- a DTN node running Linux, with a TNC and a loopback cable, or
- a pair of (or more) DTN nodes, running Linux, passing AX.25 over IP, or
A SignaLinkUSB with an FT-817 and a netbook running Linux works well with soundmodem as a TNC.
A shiny new Kenwood TH-D72 dual band VHF/UHF handheld with built-in KISS TNC, tested in KISS mode at both 1200 and 9600 baud connected via USB to a netbook running Linux, seems to work well enough with small windows although larger windows can cause packet loss in a receiving D72, presumably due to buffer overruns.
Getting the code.
The Code for the AX25CM-CL is available in the oasys and DTN2 Mercurial repositories at sourceforge, and is included in releases since oasys-1.5.0 and dtn-2.8.0.
Building the code
The two main mercurial repositories provide the oasis and DTN2 source (see Code). Assuming you have a functional AX.25 system running on your Linux build machine (see the AX.25 Howto), and have all the appropriate development headers, then the build process should be identical and painless, and the usual configure;make;make install should handle the rest (with your specific additional configure options where necessary.
When configuring oasys, you should see:
checking whether ax25 support should be enabled... try checking netax25/ax25.h usability... yes checking netax25/ax25.h presence... yes checking for netax25/ax25.h... yes checking netax25/axlib.h usability... yes checking netax25/axlib.h presence... yes checking for netax25/axlib.h... yes checking for netax25/axconfig.h... yes checking for library containing ax25_config_load_ports... -lax25 checking whether ax25 support was found... yes
and
-lax25 in the EXTLIB_LDFLAGS in the last line of configure output.
When configuring DTN2, you should see -lax25 in the EXTLIB_LDFLAGS in the last line of configure output.
If that happened when you configured and your builds of oasys and DTN2 worked, you should be good to go and ready to configure your dtnd to use an AX.25 link.
Editing your dtn.conf files.
Currently we've only ever tried a single connection (direct or via a single digipeater), between a link initiator and a listener. In the following examples, G0HWW-6 is the link initiator and G0HWW-7 is the listener.
The dtnd.conf for the listener node (here using G0HWW-7)
For the dtnd running on the listener node, add the listening interface:
interface add axif0 ax25cm local_call=G0HWW-7 axport=pk232
Substitute your "callsign-ssid" for "G0HWW-7" and the appropriate port from your /etc/ax25/axports file for "pk232".
Presently, we're adopting a control-freak approach to link configuration which requires the listener to have an a priori OPPORTUNISTIC link configured for each inbound ONDEMAND link from a link initiator.
link add opaxl0 G0HWW-7:G0HWW-6:pk232 OPPORTUNISTIC ax25cm remote_eid=dtn://hostb.dtn local_call=G0HWW-7 remote_call=G0HWW-6 axport=pk232 min_retry_interval=30 keepalive_interval=240 segment_length=248 data_timeout=300000 idle_close_time=300
This link is known as "opaxl0". The next hop shown here identifies the local callsign of the listening port, the remote callsign and the local axport for the link in the form LOCAL_CALL:REMOTE_CALL:AXPORT. The REMOTE_CALL in the next hop must match the next hop used in the specification of the ONDEMAND link defined at the initiator node, although the use of a digipeater in the initiator's next hop specification is opaque. The inbound link is specified as OPPORTUNISTIC. The convergence layer is ax25cm. The EID of the remote dtnd is specified, as are the local call, the remote call and the local axport. Other options are provided as for the TCP-CL. If these options are used, they should be matched at the other end of the link.
The dtn.conf for the link initiator (here using G0HWW-6)
The link imitator has a single link added for the link itself:
link add axl0 G0HWW-7:pk232 ONDEMAND ax25cm remote_eid=dtn://hosta.dtn local_call=G0HWW-6 remote_call=G0HWW-7 axport=pk232 min_retry_interval=30 keepalive_interval=240 segment_length=248 data_timeout=300000 idle_close_time=300
This link is known as "axl0". The link initiator uses a next hop of the form REMOTE_CALL:AXPORT. Manual source routing through the AX.25 link layer via a single non-DTN digipeater node may be used with a next hop of the form REMOTE_CALL,DIGI_CALL:AXPORT. Other options are used as previously described.
Opening the link.
Once your dtn.conf files have been set correctly, you can run the dtnd program on your nodes then attempt to bring up the ONDEMAND link from the initiator node. It helps to have shell access to both nodes.
At the link initiator, use "link open axl0" (or equivalent with your link name of choice). It seems that the first SABM frame sent never gets a response, but the 2nd should get a UA frame response and establish the connection, at which point, contact headers will be exchanged.
If you are using the DTLSR router, then bundle traffic should start flowing. If you are using the static router then you should manually add routes appropriately, either directly into the running dtnd or in the dtn.conf file.
There's some example traffic grabbed with axlisten at the bottom of the page, for a link that once opened, conveyed a dtnping exchange and some dtlsr advisory bundles (it already knew the routes), and then the link was manually closed. If you look carefully, you will see a REJ causing the Go-Back-N ARQ to kick in.
The final word.
This is experimental code and may produce unexpected results. Feel free to play with link parameters and hack hard-coded values in the oasys/ax25 code.
That's all for now, except to say thanks to John Ronan, EI7IG for his help and experimentation, without which we would not have got this far.
Please let me know if you find issues with code. Questions should probably be posted to the DTN Users mailing list.
Darren Long, G0HWW
mail to: g0hww _at_ mac _dot_ com
dsptnc: fm G0HWW-6 to G0HWW-7 ctl SABM+ 11:43:44 dsptnc: fm G0HWW-7 to G0HWW-6 ctl UA- 11:43:44 dsptnc: fm G0HWW-7 to G0HWW-6 ctl I00+ pid=F0(Text) len 30 11:43:44 0000 64 74 6E 21 03 03 00 F0 11 64 74 6E 3A 2F 2F 67 | dtn!....dtn://g 0010 30 68 77 77 2D 37 2E 64 74 6E 38 23 8C 01 | 0hww-7.dtn8#.. dsptnc: fm G0HWW-6 to G0HWW-7 ctl I00^ pid=F0(Text) len 30 11:43:46 0000 64 74 6E 21 03 03 00 F0 11 64 74 6E 3A 2F 2F 67 | dtn!....dtn://g 0010 30 68 77 77 2D 36 2E 64 74 6E 05 43 A5 B1 | 0hww-6.dtn.C•± dsptnc: fm G0HWW-6 to G0HWW-7 ctl I11+ pid=F0(Text) len 117 11:43:47 0000 13 6F 06 90 80 10 53 00 04 00 25 00 25 00 3D 81 | .o....S...%.%.=. 0010 A1 9D A8 1D 0B 84 58 42 64 74 6E 00 2F 2F 64 74 | °.®...XBdtn.//dt 0020 6E 62 6F 6E 65 2E 64 65 6C 61 79 74 6F 6C 65 72 | nbone.delaytoler 0030 61 6E 74 2E 6E 65 74 2F 70 69 6E 67 00 2F 2F 67 | ant.net/ping.//g 0040 30 68 77 77 2D 36 2E 64 74 6E 2F 70 69 6E 67 2E | 0hww-6.dtn/ping. 0050 38 36 39 30 00 6E 6F 6E 65 00 01 08 14 64 74 6E | 8690.none....dtn 0060 70 69 6E 67 21 00 00 00 00 B1 42 58 65 9D 97 94 | ping!....±BXe... 0070 4C 6B 99 1E 62 | Lk..b dsptnc: fm G0HWW-7 to G0HWW-6 ctl RR2- 11:43:47 dsptnc: fm G0HWW-7 to G0HWW-6 ctl I21+ pid=F0(Text) len 118 11:43:47 0000 13 70 06 81 10 55 00 04 00 1C 00 3D 00 3D 81 A1 | .p...U.....=.=.° 0010 9D A8 1F 81 F7 78 84 58 42 64 74 6E 00 2F 2F 67 | .®..˜x.XBdtn.//g 0020 30 68 77 77 2D 36 2E 64 74 6E 2F 70 69 6E 67 2E | 0hww-6.dtn/ping. 0030 38 36 39 30 00 2F 2F 64 74 6E 62 6F 6E 65 2E 64 | 8690.//dtnbone.d 0040 65 6C 61 79 74 6F 6C 65 72 61 6E 74 2E 6E 65 74 | elaytolerant.net 0050 2F 70 69 6E 67 00 6E 6F 6E 65 00 01 08 14 64 74 | /ping.none....dt 0060 6E 70 69 6E 67 21 00 00 00 00 B1 42 58 65 9D 97 | nping!....±BXe.. 0070 94 4C 7D E8 00 91 | .L}Ë.. dsptnc: fm G0HWW-6 to G0HWW-7 ctl I12^ pid=F0(Text) len 144 11:43:51 0000 13 81 09 06 81 00 3F 00 04 00 1A 00 28 00 28 81 | ......?.....(.(. 0010 A1 9D A8 61 0D 85 A3 00 2D 64 74 6E 00 2F 2F 2A | °.®a..£.-dtn.//* 0020 2F 64 74 6C 73 72 3F 6C 73 61 5F 73 65 71 6E 6F | /dtlsr?lsa_seqno 0030 3D 35 00 2F 2F 67 30 68 77 77 2D 36 2E 64 74 6E | =5.//g0hww-6.dtn 0040 00 6E 6F 6E 65 00 01 08 43 01 00 00 00 00 00 00 | .none...C....... 0050 00 05 00 00 00 01 00 00 00 11 64 74 6E 3A 2F 2F | ..........dtn:// 0060 67 30 68 77 77 2D 37 2E 64 74 6E 00 00 00 04 61 | g0hww-7.dtn....a 0070 78 6C 30 00 00 81 34 01 00 00 00 64 00 00 00 00 | xl0...4....d.... 0080 00 00 00 00 00 00 00 00 00 00 00 00 CC B8 2B 96 | ............Ã∏+. dsptnc: fm G0HWW-6 to G0HWW-7 ctl RR1+ 11:43:57 dsptnc: fm G0HWW-7 to G0HWW-6 ctl RR3- 11:43:57 dsptnc: fm G0HWW-6 to G0HWW-7 ctl I13^ pid=F0(Text) len 117 11:44:13 0000 13 6F 06 90 80 10 53 00 04 00 25 00 25 00 3D 81 | .o....S...%.%.=. 0010 A1 9D A8 7C 0E 84 58 42 64 74 6E 00 2F 2F 64 74 | °.®|..XBdtn.//dt 0020 6E 62 6F 6E 65 2E 64 65 6C 61 79 74 6F 6C 65 72 | nbone.delaytoler 0030 61 6E 74 2E 6E 65 74 2F 70 69 6E 67 00 2F 2F 67 | ant.net/ping.//g 0040 30 68 77 77 2D 36 2E 64 74 6E 2F 70 69 6E 67 2E | 0hww-6.dtn/ping. 0050 38 39 38 34 00 6E 6F 6E 65 00 01 08 14 64 74 6E | 8984.none....dtn 0060 70 69 6E 67 21 00 00 00 00 8A AD 42 2B FC 97 94 | ping!.....≠B+¸.. 0070 4C DE 62 A4 4F | Lfib§O dsptnc: fm G0HWW-6 to G0HWW-7 ctl RR1+ 11:44:22 dsptnc: fm G0HWW-7 to G0HWW-6 ctl RR4- 11:44:22 dsptnc: fm G0HWW-7 to G0HWW-6 ctl RR4+ 11:44:47 dsptnc: fm G0HWW-6 to G0HWW-7 ctl RR1- 11:44:49 dsptnc: fm G0HWW-7 to G0HWW-6 ctl I41+ pid=F0(Text) len 118 11:44:49 0000 13 70 06 81 10 55 00 04 00 1C 00 3D 00 3D 81 A1 | .p...U.....=.=.° 0010 9D A8 1F 81 F7 78 84 58 42 64 74 6E 00 2F 2F 67 | .®..˜x.XBdtn.//g 0020 30 68 77 77 2D 36 2E 64 74 6E 2F 70 69 6E 67 2E | 0hww-6.dtn/ping. 0030 38 36 39 30 00 2F 2F 64 74 6E 62 6F 6E 65 2E 64 | 8690.//dtnbone.d 0040 65 6C 61 79 74 6F 6C 65 72 61 6E 74 2E 6E 65 74 | elaytolerant.net 0050 2F 70 69 6E 67 00 6E 6F 6E 65 00 01 08 14 64 74 | /ping.none....dt 0060 6E 70 69 6E 67 21 00 00 00 00 B1 42 58 65 9D 97 | nping!....±BXe.. 0070 94 4C 7D E8 00 91 | .L}Ë.. dsptnc: fm G0HWW-6 to G0HWW-7 ctl RR2- 11:44:52 dsptnc: fm G0HWW-7 to G0HWW-6 ctl I42+ pid=F0(Text) len 168 11:44:52 0000 13 81 21 06 81 00 49 00 04 00 1C 00 31 00 31 81 | ..!...I.....1.1. 0010 A1 9D A8 28 89 3F 85 A3 00 36 64 74 6E 00 2F 2F | °.®(.?.£.6dtn.// 0020 2A 2F 64 74 6C 73 72 3F 6C 73 61 5F 73 65 71 6E | */dtlsr?lsa_seqn 0030 6F 3D 32 34 31 00 2F 2F 6D 69 6E 69 2D 69 74 78 | o=241.//mini-itx 0040 2E 65 69 37 69 67 2E 64 74 6E 00 6E 6F 6E 65 00 | .ei7ig.dtn.none. 0050 01 08 51 01 00 00 00 00 00 00 00 F1 00 00 00 01 | ..Q........Ò.... 0060 00 00 00 1F 64 74 6E 3A 2F 2F 64 74 6E 62 6F 6E | ....dtn://dtnbon 0070 65 2E 64 65 6C 61 79 74 6F 6C 65 72 61 6E 74 2E | e.delaytolerant. 0080 6E 65 74 00 00 00 04 74 63 70 31 00 36 EE 85 01 | net....tcp1.6Ó.. 0090 00 00 00 64 00 00 00 00 00 00 00 00 00 00 00 00 | ...d............ 00A0 00 00 00 00 72 D7 52 0A | ....r◊R. dsptnc: fm G0HWW-6 to G0HWW-7 ctl I24^ pid=F0(Text) len 6 11:44:52 0000 20 70 84 58 47 61 | p.XGa dsptnc: fm G0HWW-6 to G0HWW-7 ctl RR3- 11:44:55 dsptnc: fm G0HWW-7 to G0HWW-6 ctl I53+ pid=F0(Text) len 221 11:44:55 0000 13 81 56 06 81 00 42 00 04 00 1C 00 2A 00 2A 81 | ..V...B.....*.*. 0010 A1 9D A8 40 8F 5D 85 A3 00 2F 64 74 6E 00 2F 2F | °.®@.].£./dtn.// 0020 2A 2F 64 74 6C 73 72 3F 6C 73 61 5F 73 65 71 6E | */dtlsr?lsa_seqn 0030 6F 3D 33 35 37 00 2F 2F 67 30 68 77 77 2D 37 2E | o=357.//g0hww-7. 0040 64 74 6E 00 6E 6F 6E 65 00 01 08 81 0C 01 00 00 | dtn.none........ 0050 00 00 00 00 01 65 00 00 00 02 00 00 00 22 64 74 | .....e......."dt 0060 6E 3A 2F 2F 70 6C 75 67 31 2E 34 39 73 6F 75 74 | n://plug1.49sout 0070 68 67 61 74 65 2E 68 6F 6D 65 69 70 2E 6E 65 74 | hgate.homeip.net 0080 00 00 00 04 74 63 70 30 00 00 A9 10 01 00 00 00 | ....tcp0..©..... 0090 64 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | d............... 00A0 00 00 00 00 11 64 74 6E 3A 2F 2F 67 30 68 77 77 | .....dtn://g0hww 00B0 2D 36 2E 64 74 6E 00 00 00 06 6F 70 61 78 6C 30 | -6.dtn....opaxl0 00C0 00 00 A9 10 02 00 00 00 64 00 00 00 00 00 00 00 | ..©.....d....... 00D0 00 00 00 00 04 00 00 02 BD 79 FB FB 37 | ........Ωy˚˚7 dsptnc: fm G0HWW-6 to G0HWW-7 ctl I35+ pid=F0(Text) len 7 11:44:55 0000 20 81 21 A9 FD 26 A6 | .!©˝&¶ dsptnc: fm G0HWW-7 to G0HWW-6 ctl RR6- 11:44:55 dsptnc: fm G0HWW-6 to G0HWW-7 ctl RR4- 11:44:59 dsptnc: fm G0HWW-7 to G0HWW-6 ctl I64+ pid=F0(Text) len 6 11:44:59 0000 20 6F 09 50 4A 94 | o.PJ. dsptnc: fm G0HWW-6 to G0HWW-7 ctl RR5- 11:45:00 dsptnc: fm G0HWW-7 to G0HWW-6 ctl I65+ pid=F0(Text) len 221 11:45:00 0000 13 81 56 06 81 00 42 00 04 00 1C 00 2A 00 2A 81 | ..V...B.....*.*. 0010 A1 9D A8 63 8F 5E 85 A3 00 2F 64 74 6E 00 2F 2F | °.®c.^.£./dtn.// 0020 2A 2F 64 74 6C 73 72 3F 6C 73 61 5F 73 65 71 6E | */dtlsr?lsa_seqn 0030 6F 3D 33 35 38 00 2F 2F 67 30 68 77 77 2D 37 2E | o=358.//g0hww-7. 0040 64 74 6E 00 6E 6F 6E 65 00 01 08 81 0C 01 00 00 | dtn.none........ 0050 00 00 00 00 01 66 00 00 00 02 00 00 00 22 64 74 | .....f......."dt 0060 6E 3A 2F 2F 70 6C 75 67 31 2E 34 39 73 6F 75 74 | n://plug1.49sout 0070 68 67 61 74 65 2E 68 6F 6D 65 69 70 2E 6E 65 74 | hgate.homeip.net 0080 00 00 00 04 74 63 70 30 00 00 82 C2 01 00 00 00 | ....tcp0...¬.... 0090 64 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | d............... 00A0 00 00 00 00 11 64 74 6E 3A 2F 2F 67 30 68 77 77 | .....dtn://g0hww 00B0 2D 36 2E 64 74 6E 00 00 00 06 6F 70 61 78 6C 30 | -6.dtn....opaxl0 00C0 00 00 82 C2 01 00 00 00 64 00 00 00 00 00 00 00 | ...¬....d....... 00D0 00 00 00 00 00 00 00 00 00 3E 73 21 4A | .........>s!J dsptnc: fm G0HWW-6 to G0HWW-7 ctl RR6- 11:45:05 dsptnc: fm G0HWW-7 to G0HWW-6 ctl I66+ pid=F0(Text) len 7 11:45:05 0000 20 81 09 9C 48 8E 5C | ...H.\ dsptnc: fm G0HWW-6 to G0HWW-7 ctl I67+ pid=F0(Text) len 7 11:45:05 0000 20 81 56 67 9C C2 39 | .Vg.¬9 dsptnc: fm G0HWW-7 to G0HWW-6 ctl REJ6- 11:45:05 dsptnc: fm G0HWW-6 to G0HWW-7 ctl RR7- 11:45:07 dsptnc: fm G0HWW-7 to G0HWW-6 ctl I67+ pid=F0(Text) len 6 11:45:07 0000 20 6F 09 50 4A 94 | o.PJ. dsptnc: fm G0HWW-6 to G0HWW-7 ctl RR7+ 11:45:09 dsptnc: fm G0HWW-7 to G0HWW-6 ctl RR6- 11:45:09 dsptnc: fm G0HWW-6 to G0HWW-7 ctl I06^ pid=F0(Text) len 7 11:45:11 0000 20 81 56 67 9C C2 39 | .Vg.¬9 dsptnc: fm G0HWW-7 to G0HWW-6 ctl I70+ pid=F0(Text) len 118 11:45:11 0000 13 70 06 81 10 55 00 04 00 1C 00 3D 00 3D 81 A1 | .p...U.....=.=.° 0010 9D A8 7E 81 F7 7F 84 58 42 64 74 6E 00 2F 2F 67 | .®~.˜..XBdtn.//g 0020 30 68 77 77 2D 36 2E 64 74 6E 2F 70 69 6E 67 2E | 0hww-6.dtn/ping. 0030 38 39 38 34 00 2F 2F 64 74 6E 62 6F 6E 65 2E 64 | 8984.//dtnbone.d 0040 65 6C 61 79 74 6F 6C 65 72 61 6E 74 2E 6E 65 74 | elaytolerant.net 0050 2F 70 69 6E 67 00 6E 6F 6E 65 00 01 08 14 64 74 | /ping.none....dt 0060 6E 70 69 6E 67 21 00 00 00 00 8A AD 42 2B FC 97 | nping!.....≠B+¸. 0070 94 4C 21 CA F2 67 | .L! Úg dsptnc: fm G0HWW-6 to G0HWW-7 ctl I07+ pid=F0(Text) len 7 11:45:11 0000 20 81 56 67 9C C2 39 | .Vg.¬9 dsptnc: fm G0HWW-7 to G0HWW-6 ctl RR0- 11:45:11 dsptnc: fm G0HWW-6 to G0HWW-7 ctl RR1- 11:45:13 dsptnc: fm G0HWW-6 to G0HWW-7 ctl I10+ pid=F0(Text) len 6 11:45:14 0000 20 70 84 58 47 61 | p.XGa dsptnc: fm G0HWW-7 to G0HWW-6 ctl RR1- 11:45:14 dsptnc: fm G0HWW-7 to G0HWW-6 ctl I11+ pid=F0(Text) len 247 11:45:58 0000 12 81 70 06 81 00 52 00 04 00 1D 00 39 00 39 81 | ..p...R.....9.9. 0010 A1 9D A9 65 81 F8 00 85 A3 00 3E 64 74 6E 00 2F | °.©e.¯..£.>dtn./ 0020 2F 2A 2F 64 74 6C 73 72 3F 6C 73 61 5F 73 65 71 | /*/dtlsr?lsa_seq 0030 6E 6F 3D 39 34 31 34 00 2F 2F 64 74 6E 62 6F 6E | no=9414.//dtnbon 0040 65 2E 64 65 6C 61 79 74 6F 6C 65 72 61 6E 74 2E | e.delaytolerant. 0050 6E 65 74 00 6E 6F 6E 65 00 01 08 82 5D 01 00 00 | net.none....]... 0060 00 00 00 00 24 C6 00 00 00 05 00 00 00 1C 64 74 | ....$∆........dt 0070 6E 3A 2F 2F 6E 39 30 30 2E 64 65 6C 61 79 74 6F | n://n900.delayto 0080 6C 65 72 61 6E 74 2E 6E 65 74 00 00 00 06 6C 69 | lerant.net....li 0090 6E 6B 2D 30 00 36 EE 8A 02 00 00 00 64 00 00 00 | nk-0.6Ó.....d... 00A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ 00B0 14 64 74 6E 3A 2F 2F 64 74 6E 67 77 2E 74 73 73 | .dtn://dtngw.tss 00C0 67 2E 64 74 6E 00 00 00 06 6C 69 6E 6B 2D 31 00 | g.dtn....link-1. 00D0 36 EE 8A 01 00 00 00 64 00 00 00 00 00 00 00 00 | 6Ó.....d........ 00E0 00 00 00 00 00 00 00 00 00 00 00 22 64 74 6E 3A | ..........."dtn: 00F0 2F 2F 70 0A 18 F2 B7 | //p..Ú∑ dsptnc: fm G0HWW-6 to G0HWW-7 ctl RR2- 11:46:02 dsptnc: fm G0HWW-7 to G0HWW-6 ctl I12+ pid=F0(Text) len 206 11:46:02 0000 11 81 47 6C 75 67 31 2E 34 39 73 6F 75 74 68 67 | ..Glug1.49southg 0010 61 74 65 2E 68 6F 6D 65 69 70 2E 6E 65 74 00 00 | ate.homeip.net.. 0020 00 06 6C 69 6E 6B 2D 32 00 36 EE 8A 01 00 00 00 | ..link-2.6Ó..... 0030 64 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | d............... 0040 00 00 00 00 23 64 74 6E 3A 2F 2F 6D 69 6E 69 2D | ....#dtn://mini- 0050 69 74 78 2E 69 72 69 73 68 73 79 73 74 65 6D 73 | itx.irishsystems 0060 2E 63 6F 6D 2E 64 74 6E 00 00 00 06 6C 69 6E 6B | .com.dtn....link 0070 2D 33 00 36 EE 8A 02 00 00 00 64 00 00 00 00 00 | -3.6Ó.....d..... 0080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 18 64 | ...............d 0090 74 6E 3A 2F 2F 6D 69 6E 69 2D 69 74 78 2E 65 69 | tn://mini-itx.ei 00A0 37 69 67 2E 64 74 6E 00 00 00 06 6C 69 6E 6B 2D | 7ig.dtn....link- 00B0 34 00 36 EE 8A 01 00 00 00 64 00 00 00 00 00 00 | 4.6Ó.....d...... 00C0 00 00 00 00 00 00 00 00 00 00 4A DE 1E CB | ..........Jfi.À dsptnc: fm G0HWW-6 to G0HWW-7 ctl RR3- 11:46:05 dsptnc: fm G0HWW-6 to G0HWW-7 ctl I31^ pid=F0(Text) len 7 11:46:06 0000 20 83 37 6F 1F F1 75 | .7o.Òu dsptnc: fm G0HWW-6 to G0HWW-7 ctl RR3+ 11:46:15 dsptnc: fm G0HWW-7 to G0HWW-6 ctl RR2- 11:46:15 dsptnc: fm G0HWW-6 to G0HWW-7 ctl I32^ pid=F0(Text) len 6 11:46:44 0000 52 02 27 5A 4C 05 | R.'ZL. dsptnc: fm G0HWW-7 to G0HWW-6 ctl I33+ pid=F0(Text) len 5 11:46:44 0000 50 B9 69 BE 79 | Pπiæy dsptnc: fm G0HWW-7 to G0HWW-6 ctl DISC+ 11:46:44 dsptnc: fm G0HWW-6 to G0HWW-7 ctl DISC+ 11:46:44 dsptnc: fm G0HWW-7 to G0HWW-6 ctl UA- 11:46:44 dsptnc: fm G0HWW-6 to G0HWW-7 ctl DM- 11:46:48