TCP/IP over STANAG 5066 HF packet Radio - Ham-pages ... No ...
TCP/IP over STANAG 5066 HF packet Radio - Ham-pages ... No ...
TCP/IP over STANAG 5066 HF packet Radio - Ham-pages ... No ...
- TAGS
- stanag
- packet
- ham.zmailer.org
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
1<br />
<strong>TCP</strong>/<strong>IP</strong> <strong>over</strong> <strong>STANAG</strong> <strong>5066</strong><br />
<strong>HF</strong> <strong>packet</strong> <strong>Radio</strong><br />
Presented By:<br />
Jan-Willem Smaal<br />
Communications Systems Division / <strong>Radio</strong> Branch<br />
Voice: 31 70 314 2407<br />
Fax: 31 70 314 2176<br />
Jan-Willem.Smaal@nc3a.nato.int<br />
NATO UNCLASSIFIED
2 NC3A/CSD-R/JWS<br />
Presentation Overview<br />
• <strong>STANAG</strong> <strong>5066</strong> framework<br />
• Equipment<br />
• Characteristics<br />
• Subnet Clients<br />
• PPP subnet client (Annex F.9)<br />
• Characteristics<br />
• Implementation<br />
• <strong>IP</strong> subnet client (Annex F.10)<br />
• Implementation<br />
• Efficient <strong>IP</strong> Multicast support<br />
• Performance<br />
NATO UNCLASSIFIED
3 NC3A/CSD-R/JWS<br />
<strong>HF</strong> transceiver<br />
<strong>HF</strong> modem<br />
<strong>HF</strong> antenna<br />
RF<br />
IF Audio<br />
<strong>STANAG</strong> <strong>5066</strong> Equipment<br />
Control<br />
<strong>STANAG</strong> <strong>5066</strong> controller<br />
Local Area Network<br />
Server<br />
running<br />
Subnet clients<br />
NATO UNCLASSIFIED
Broadcast<br />
4 NC3A/CSD-R/JWS<br />
<strong>STANAG</strong> <strong>5066</strong> Subnet<br />
Service Characteristics<br />
• Transmission Modes:<br />
• ARQ (requires half/full-duplex transmission)<br />
• non-ARQ (uses simplex transmission)<br />
– with no detectable errors<br />
– with detected errors marked<br />
• Data Delivery Confirmation Modes:<br />
• none<br />
• <strong>No</strong>de-to-<strong>No</strong>de delivery (at subnetwork level)<br />
• Client-to-Client delivery<br />
• Delivery Order:<br />
• in the order submitted by the sending client<br />
• in the order correctly received by the receiving client<br />
• Minimum Number of Retransmissions<br />
• (non-ARQ transmission modes only)<br />
Point-to-Point<br />
NATO UNCLASSIFIED
5 NC3A/CSD-R/JWS<br />
<strong>STANAG</strong> <strong>5066</strong> subnet clients<br />
• HMTP (<strong>HF</strong> Mail Transfer Protocol) �� Annex F.4<br />
• RFC-821 (SMTP)<br />
• RFC-2197 (Command Pipelining)<br />
• BFTP (Basic File Transfer Protocol) �� Annex F.7.3.1<br />
• PPP (Point to Point Protocol) �� Annex F.9<br />
• RFC-1661 (structure)<br />
• RFC-1662 (HDLC-like framing)<br />
• <strong>IP</strong> (Internet Protocol) �� Annex F.10<br />
• RFC-1112 (Internet Group Management Protocol)<br />
• draft-fenner-igmp-proxy-03.txt (IGMP proxy)<br />
• Etc…<br />
NATO UNCLASSIFIED
6 NC3A/CSD-R/JWS<br />
PPP subnet client (Annex F.9)<br />
• Supports any protocol that may be carried by PPP (including<br />
<strong>IP</strong>v6). (�� <strong>IP</strong>CP)<br />
• Authentication (�� CHAP/PAP)<br />
• Compression (�� CCP)<br />
• Multi link PPP (�� MP)<br />
• Limitations … <strong>No</strong> efficient <strong>IP</strong> Multicast support<br />
NATO UNCLASSIFIED
7 NC3A/CSD-R/JWS<br />
Flag<br />
0x7e<br />
PPP datagram and framing<br />
Addr<br />
0xff<br />
Control<br />
0x03<br />
Protocol Information CRC<br />
1 1 1 2 up to 1500 octets/bytes<br />
2 1<br />
Protocol<br />
0x0021<br />
Protocol<br />
0xc021<br />
Protocol<br />
0xc023<br />
Protocol<br />
0xc223<br />
Protocol<br />
0x8021<br />
Protocol<br />
0x00fb<br />
<strong>IP</strong> datagram<br />
Link Control Protocol (LCP)<br />
Password Authentication Protocol<br />
(PAP)<br />
Challenge-Handshake Authentication<br />
Protocol (CHAP)<br />
<strong>IP</strong> Network Control Protocol (NCP)<br />
Link compressed datagram<br />
Flag<br />
0x7e<br />
NATO UNCLASSIFIED
8 NC3A/CSD-R/JWS<br />
Implementation of the PPP subnet client<br />
Received S_UNIDATA_INDICATION<br />
messages are decapsulated, the FCS on the<br />
ppp datagram is recalculated and<br />
asynchronous HDLC-like framing is added.<br />
The resulting asynchronous HDLC-framed byte<br />
stream is written to the stdin of the pseudo<br />
TTY.<br />
Add HDLC-like framing and<br />
recalculate FCS<br />
Decapsulate<br />
S_UNIDATA_INDICATION<br />
stdin<br />
/dev/ppp0<br />
PPP daemon<br />
fork<br />
Pseudo TTY<br />
<strong>TCP</strong> port 999<br />
Subnet Interface Sublayer<br />
The ppp daemon forks off a speudo TTY,<br />
PPP frames in HDLC-like framing will be<br />
read and written to and from stdin/stdout.<br />
stdout<br />
The ppp<strong>5066</strong> program removes the HDLC-like<br />
framing from the stdout of the ppp daemon,<br />
encapsulates the ppp frame into an<br />
S_UNIDATA_DATA_REQUEST and submits it to the<br />
subnetwork using the socket subnet interface.<br />
Remove HDLC-like framing<br />
Encapsulate into<br />
S_UNIDATA_REQUEST<br />
...lower layers... NATO UNCLASSIFIED<br />
Drawing by: J-W Smaal<br />
NATO UNCLASSIFIED
9 NC3A/CSD-R/JWS<br />
<strong>IP</strong> subnet client (Annex F.10)<br />
• <strong>IP</strong> datagram is encapsulated in a S_UNIDATA primitive.<br />
• Point to point <strong>IP</strong> configuration: using ARQ tx_mode. (although<br />
non-ARQ is also allowed).<br />
• IN-ORDER delivery or AS-THEY ARRIVE<br />
• “One to Many”, or “Many to Many” <strong>IP</strong> Multicast configuration:<br />
using non-ARQ tx_mode.<br />
• Class D <strong>IP</strong> addresses (<strong>IP</strong> Multicast) mapped to <strong>STANAG</strong> <strong>5066</strong> group<br />
addresses.<br />
• IN-ORDER delivery or AS-THEY ARRIVE<br />
NATO UNCLASSIFIED
10 NC3A/CSD-R/JWS<br />
<strong>IP</strong> client design and implementation<br />
• Use of the TUN/TAP (Ethertap) interface on the Linux operating<br />
system.<br />
• <strong>No</strong> adjustments necessary to user-space configuration tools<br />
since it looks just like a normal ethernet device to the operating<br />
system.<br />
• The complete system acts as an “<strong>HF</strong> <strong>IP</strong> router” where the ‘tap0’<br />
interface is the <strong>IP</strong> subnet client interface.<br />
• Why did we have to implement the <strong>IP</strong> client in user-space?<br />
• Support for other Operating Systems<br />
NATO UNCLASSIFIED
Queue: inQ<br />
DeQueue<br />
Thread:<br />
EnQueue<br />
11 NC3A/CSD-R/JWS<br />
Thread:<br />
tapread()<br />
Function:<br />
ip_input()<br />
s<strong>5066</strong>_write()<br />
user-space<br />
<strong>STANAG</strong> <strong>5066</strong><br />
stack<br />
kernel-space<br />
user-space<br />
read()<br />
calls....<br />
calls....<br />
Function:<br />
ip_igmp_proxy()<br />
/dev/tap0<br />
calls....<br />
Function:<br />
write()<br />
Thread:<br />
tapwrite()<br />
ip_output()<br />
calls....<br />
Function:<br />
DeQueue<br />
ether_output()<br />
Queue: outQ<br />
EnQueue<br />
calls....<br />
Thread:<br />
s<strong>5066</strong>_read()<br />
user-space<br />
<strong>STANAG</strong> <strong>5066</strong> stack<br />
NATO UNCLASSIFIED
Transmitting end<br />
tapread()<br />
ip_input()<br />
s<strong>5066</strong>_write()<br />
Receiving end<br />
s<strong>5066</strong>_read()<br />
ether_output()<br />
12 NC3A/CSD-R/JWS<br />
Ethernet<br />
hdr<br />
S_UNIDATA<br />
REQ<br />
Filtering and address mapping<br />
payload<br />
(ETHERTYPE_ARP)<br />
Ethernet<br />
hdr<br />
<strong>IP</strong> <strong>TCP</strong>/UDP/...<br />
Ethernet<br />
hdr<br />
U_PDU<br />
payload<br />
(ETHERTYPE_<strong>IP</strong>)<br />
payload<br />
(ETHERTYPE_<strong>IP</strong>)<br />
<strong>IP</strong> IGMP<br />
<strong>STANAG</strong> <strong>5066</strong> stack<br />
Mapping of<br />
<strong>IP</strong> Multicast<br />
to Ethernet<br />
Multicast<br />
Ethernet<br />
hdr<br />
payload<br />
(ETHERTYPE_<strong>IP</strong>)<br />
<strong>IP</strong> PIMv2<br />
<strong>STANAG</strong> <strong>5066</strong> stack<br />
Ethernet<br />
hdr<br />
S_UNIDATA<br />
REQ<br />
payload<br />
(ETHERTYPE_<strong>IP</strong>)<br />
<strong>IP</strong> <strong>TCP</strong>/UDP/...<br />
U_PDU<br />
Subnet MTU<br />
Mapping of<br />
<strong>IP</strong> Multicast<br />
to <strong>STANAG</strong><br />
<strong>5066</strong> group<br />
addresses.<br />
NATO UNCLASSIFIED
13 NC3A/CSD-R/JWS<br />
<strong>IP</strong> Multicast forwarding<br />
PC with 'McastRecv' PC with 'McastRecv' PC with 'McastRecv'<br />
eth0<br />
LAN<br />
penguin1<br />
S<strong>5066</strong>: 10.0.0.6<br />
tap0<br />
LAN<br />
PIM-SM Multicast <strong>IP</strong> router forwards<br />
received Multicast traffic from tap0 to eth0<br />
(and vice versa).<br />
eth0<br />
kernelpanic<br />
tap0<br />
S<strong>5066</strong>: 10.0.03<br />
PC with 'McastRecv'<br />
PC's are running a simple <strong>IP</strong><br />
Multicast receiver application<br />
S<strong>5066</strong>: 10.0.0.5<br />
tap0<br />
LAN<br />
penguin2<br />
eth0<br />
NATO UNCLASSIFIED
14 NC3A/CSD-R/JWS<br />
“user-interface” of sending end<br />
[jw-smaal@kernelpanic src]$ su -c './hfmcast -b -n fieldworks2 -U 10.0.0.3 -M<br />
17.0.0.1 -B 17.0.0.255'<br />
Password:<br />
SISmcast (c)2000 by NATO C3 Agency, CSD <strong>Radio</strong> Branch<br />
Using tap device: /dev/tap0, <strong>IP</strong>v4 address: 10.1.1.69 MAC address: fe:fd:0:0:0:0<br />
S<strong>5066</strong> unicast addr: 10.0.0.3<br />
S<strong>5066</strong> multicast addr: 1.0.0.1(group)<br />
S<strong>5066</strong> broadcast addr: 1.0.0.255(group)<br />
client: Connected to: fieldworks2.csdr.nc3a.nato.int:9999<br />
ETHERNET type : 800 (ip), source: FE:FD:00:00:00:00, dest: 00:00:00:00:00:00<br />
Filtered> <strong>IP</strong> version: 4, header length: 6, total length: 32, id: 41138, ttl: 1,<br />
source: 10.1.1.69, destination: 224.1.2.3, protocol: 2 (igmp), tos: 00000000b<br />
IGMP message type: Ver. 2 membership report, routing code: 0, group address:<br />
224.1.2.3<br />
ETHERNET type : 800 (ip), source: FE:FD:00:00:00:00, dest: 00:00:00:00:00:00<br />
Mcast> <strong>IP</strong> version: 4, header length: 5, total length: 51, id: 41139, ttl: 1,<br />
source: 10.1.1.69, destination: 224.1.2.3, protocol: 17 (udp), tos: 00000000b<br />
ETHERNET type : 800 (ip), source: FE:FD:00:00:00:00, dest: 00:00:00:00:00:00<br />
Filtered> <strong>IP</strong> version: 4, header length: 6, total length: 32, id: 41142, ttl: 1,<br />
source: 10.1.1.69, destination: 224.0.0.2, protocol: 2 (igmp), tos: 00000000b<br />
IGMP message type: Leave-group message, routing code: 0, group address: 224.1.2.3<br />
NATO UNCLASSIFIED
15 NC3A/CSD-R/JWS<br />
“user-interface” of receiving end<br />
[jw-smaal@penguin1 src]$ su -c './hfmcast -b -a 10.1.1.127 -m 255.255.255.0 -n<br />
fieldworks1 -U 10.0.0.3 -M 17.0.0.1 -B 17.0.0.255'<br />
Password:<br />
SISmcast (c)2000 by NATO C3 Agency, CSD <strong>Radio</strong> Branch<br />
executing: /sbin/ifconfig tap0 10.1.1.127 netmask 255.255.255.0 -arp<br />
Using tap device: /dev/tap0, <strong>IP</strong>v4 address: 10.1.1.127 MAC address: 0:ff:9b:ea:6a:90<br />
S<strong>5066</strong> unicast addr: 10.0.0.3<br />
S<strong>5066</strong> multicast addr: 1.0.0.1(group)<br />
S<strong>5066</strong> broadcast addr: 1.0.0.255(group)<br />
client: Connected to: fieldworks1.csdr.nc3a.nato.int:9999<br />
s_unidata_indication: len 64, prio 1, dest sap_id 9, dest_node 1.0.0.1,<br />
non-ARQ (broadcast) tx_mode, src sap_id 9, src_node 10.0.0.5,<br />
sizeof_u_pdu 51<br />
ETHERNET type : 800 (ip), source: 50:66:00:00:00:00, dest: 01:00:5E:01:02:03<br />
<strong>IP</strong> version: 4, header length: 5, total length: 51, id: 41139, ttl: 1, source:<br />
10.1.1.69, destination: 224.1.2.3, protocol: 17 (udp), tos: 00000000b<br />
NATO UNCLASSIFIED
16 NC3A/CSD-R/JWS<br />
Performance<br />
• 4253 bps <strong>TCP</strong> payload throughput @ 9600 1/2 duplex short<br />
interleaver<br />
• ~6 seconds ICMP echo/reply (ping) round trip time.<br />
• <strong>No</strong>n-ARQ versus ARQ impact on <strong>TCP</strong> performance being<br />
investigated.<br />
• IETF PEP (Performance Enhancing Proxies)<br />
• IETF PILC (Performance Implications of Link Characteristics).<br />
NATO UNCLASSIFIED
17 NC3A/CSD-R/JWS<br />
<strong>TCP</strong> troughput @ 2400 bps 1/2 duplex<br />
NATO UNCLASSIFIED