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/secNote 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.