09.02.2013 Views

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

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!