For the Telis project, we use the TCP protocol for the radio uplink. This is rather unusual since most other balloon flight projects use UDP and use their own retransmission and sequencing algorithms.
It has worked well for us previously, but we want to have more insight and diagnostics in a flight situation. Also, there's a backup function present in the software that's running on the PC104 on the balloon. Normally, it's not switched on and we'd like to automatically switch it on when a transmission occurs.
To gain more insight in the quality of the radio uplink, we think iptraf will do fine. A screenshot with the detailed statistics for an interface:
- Statistics for eth0 --------------------------- Total Total Incoming Incoming Outgoing Outgoing Packets Bytes Packets Bytes Packets Bytes Total: 3142 621643 1665 131825 1477 489818 IP: 3142 577645 1665 108505 1477 469140 TCP: 2903 548408 1434 79900 1469 468508 UDP: 238 29201 230 28569 8 632 ICMP: 0 0 0 0 0 0 Other IP: 1 36 1 36 0 0 Non-IP: 0 0 0 0 0 0
Total rates: 51.7 kbits/sec Broadcast packets: 222 30.4 packets/sec Broadcast bytes: 31189
Incoming rates: 9.2 kbits/sec 15.8 packets/sec IP checksum errors: 0 Outgoing rates: 42.5 kbits/sec 14.6 packets/sec
Note the IP checksum errors. This one would be pretty interesting for us.
Now what we probably also want, is a way to find out how many resends will occur if the radio uplink fails temporarily. We'd probably want to be gentle and not resend too much since the uplink is pretty limited bandwidth-wise. I have found a way to check this per application (man tcp, search for TCP_INFO) but not per interface.
A nice thing to use for testing purposes is Netem, the Linux in-kernel packet mangling software.