summaryrefslogtreecommitdiff
path: root/2017/tcp_ip_is_boring-nfws2017/tcp_ip_is_boring.adoc
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2017-07-03 09:44:14 +0100
committerHarald Welte <laforge@gnumonks.org>2017-07-03 09:44:14 +0100
commit5c6260b1394dcf756c58e63545912a264e21d5e4 (patch)
treeb5fd827913136b1150c87295faccab1c4f439e10 /2017/tcp_ip_is_boring-nfws2017/tcp_ip_is_boring.adoc
parent602e21f50fb6c1bb2c464d650dcdef708cf6f6bd (diff)
add 'TCP/IP is boring' slide deck
Diffstat (limited to '2017/tcp_ip_is_boring-nfws2017/tcp_ip_is_boring.adoc')
-rw-r--r--2017/tcp_ip_is_boring-nfws2017/tcp_ip_is_boring.adoc254
1 files changed, 254 insertions, 0 deletions
diff --git a/2017/tcp_ip_is_boring-nfws2017/tcp_ip_is_boring.adoc b/2017/tcp_ip_is_boring-nfws2017/tcp_ip_is_boring.adoc
new file mode 100644
index 0000000..97c6f48
--- /dev/null
+++ b/2017/tcp_ip_is_boring-nfws2017/tcp_ip_is_boring.adoc
@@ -0,0 +1,254 @@
+TCP/IP is Boring: Tour of Cellular Protocol Stacks
+==================================================
+:author: Harald Welte <laforge@gnumonks.org>
+:copyright: 2017 by Harald Welte (License: CC-BY-SA)
+:backend: slidy
+:max-width: 45em
+
+
+== Overview / Intro
+
+[role="incremental"]
+* everyone (here) is familiar in-depth with TCP/IP
+* almost nobody (here) has insight into telecom protocols
+* let me take you on a tour
+[role="incremental"]
+** where protocol stacks are deep
+** where acronyms are plentiful
+* some people also call this _applied protocol archeology_
+* a lot of this is still in use, every day, by millions if not billions of subscribers
+
+== Personal Background
+
+* involved in non-profit ISP of early 1990ies
+** built a lot of technology ourselves
+** contact with UUCP, TCP/IP, OSPF, PPP, ISDN PRI/BRI, ...
+* involved with netfilter/iptables 1999-2007
+* always looking for interesting non-TCP/IP protocols
+** 2006: OpenPCD / librfid: ISO14443 / ISO15693 RFID protocols
+** 2008-present: Cellular Protocol Stacks
+
+== Personal Philosophy
+
+* communications systems and protocols are a big fascination
+* I admit I'm even interested more in them for themselves, rather than
+ for their use
+* Personal conviction
+** Every protocol (stack) should be well understood
+** There should be FOSS for experimentation
+*** transmitter
+*** receiver
+*** dissector (e.g. wireshark)
+
+== The Internet-Centric World
+
+I assume this is where most audience members are coming from:
+
+* We assume TCP/IP + Ethernet are everywhere
+* Most obscure protocols people might know: SCTP, DCCP
+* Open Source implementations lead the market (Linux, BSD)
+* IETF is open to anyone, no formal membership required
+** you still need to be able to afford to travel to meetings
+
+== Classic Digital Circuit Switched Telephony
+
+* Based on 8kHz / 8bit PCM audio channels
+* E1/T1 bit-synchronous interfaces (1.5/2MBps)
+* TDMA structure with 24/31 timeslots
+* one 64k slot used for signaling
+** HDLC framing (with CRC)
+** MTP (_Message Transfer Part_) L2 + L3
+** TUP (_Telephony User Part_) or ISUP (_ISDN User Part_) for call signaling
+
+== Telephony Specification Bodies
+
+* ITU-T: Technical ITU Specs for international network interfacing
+* ANSI: American National Standards Institute
+* ETSI: European Telecommunications Standardization Institute
+* TTC: Japanese Telecommunication Technology Committee
+* 3GPP: 3rd Generation Partnership Project
+
+
+== Telephony Signaling Oddities
+
+* Many countries/regions have their own dialects
+** Even inside ETSI region, there are e.g. French + German variants(!)
+* Differences even at very basic level such as address field size:
+** ANSI: 24bit Point Codes
+** ITU-T: 14bit Point Codes
+** Japan: 16bit Point Codes
+
+=> Specific Translators required at boundaries between national/international networks
+
+== Conceptual Differences
+
+* Circuit vs. Packet
+** In TCP/IP, we assume sender/receiver is identified in each packet
+** In Cellular: Sender/Receiver are often implicitly identified based on circuit / time-slot!
+* Signaling vs. User Plane
+** In TCP/IP, we assume user payload is above normal protocol stack
+** In Cellular: Different protocol stacks, or no protocol / header at all for user plane!
+
+== GSM Um
+image::images/Gsm_structures.svg[]
+~image by Tsaitgaist~
+
+== Cellular Protocols: GSM Um
+
+* Um (_U mobile_) modelled after ISDN U (User) interface
+* L2: LAPDm (_LAPD mobile_) modelled after ISDN LAPD (Q.921)
+* L3: CC (_Call Control_) almost identical to ISDN L3 (Q.931)
+* L3: New RR (_Radio Resource_) for radio-specific aspects
+* L3: New MM (_Mobility Management_) for subscriber mobility
+
+== GSM Abis
+image::images/Gsm_structures.svg[]
+~image by Tsaitgaist~
+
+== Cellular Protocols: GSM Abis
+
+* Uses E1/T1 Line/Circuit from ISDN
+* Signaling Slot
+** L2: ISDN L2 (LAPD, Q.921)
+** L3: RSL (TS 48.058) + OML (TS 12.21)
+** L4+ RR/CC/MM of Um interface
+* Traffic Slots
+** 64k Slots divided in 16k sub-slots
+** one 16k sub-slot for GSM-encoded voice
+** TRAU (_Transcoder / Rate Adaption Unit_) Frames
+
+== GSM A
+image::images/Gsm_structures.svg[]
+~image by Tsaitgaist~
+
+== Cellular Protocols: GSM A
+
+* Uses E1/T1 Line/Circuit from ISDN
+* Signaling Slot
+** SS7 MTP2 + MTP3
+** SS7 SCCP (_Signaling Connection Control Part_) in Connection-Oriented Mode
+** BSSAP/BSSMAP for BSC-MSC signaling (TS 48.008)
+* Traffic Slots
+** Uncompressed 64k PCM Audio like in ISDN
+
+== GSM Core (H/E etc.)
+image::images/Gsm_structures.svg[]
+~image by Tsaitgaist~
+
+== Cellular Protocols: Core Network / Roaming Interface
+
+* Uses E1/T1 Line/Circuit from ISDN
+* Cellular specific Signaling
+** SS7 MTP2 + MTP3
+** SS7 SCCP (_Signaling Connection Control Part_) in Connection-Less Mode
+** TCAP (_Transaction Capabilities Application Part_)
+** MAP (_Mobile Application Part_) + CAP (_CAMEL Application Part_)
+*** specified in ASN.1 with Information Object Classes; BER encoding
+* Voice Call Signaling
+** SS7 MTP2 + MTP3
+** SS7 ISUP (_ISDN User Part_)
+* Traffic Slots
+** Uncompressed 64k PCM Audio like in ISDN
+
+== Cellular Protocols: SIM-ME Interface
+
+* Pretty much like most other processor smart cards:
+** ISO 7816-1 for physical interface
+** ISO 7816-2 for electrical interface
+** ISO 7816-3 for framing
+** ISO 7816-4 _Inter-Industry Commands for Information Interchange_
+* GSM TS 11.11 for detailed file/directory/APDU specs
+* ETSI TS 102221 + 3GPP TS 31.102 for USIM
+
+== Cellular Protocols: GPRS Um
+
+* re-use existing GSM Um PHY
+** same TDMA, modulation, ...
+** new coding schemes (different amount of FEC, TS 45.002)
+* L2: New RLC/MAC instead of LAPDm (TS 44.060)
+** unacknowledged + acknowledged mode
+** specified in new syntax: CSN.1 (Concrete Syntax Notation)
+*** seems it was create specifically for GPRS
+*** specification full of non-trivial syntax errors (till today!)
+*** no FOSS code generators (till today!)
+* L3: GPRS LLC (_Logical Link Control_, TS 44.064)
+** unacknowledged + acknowledged mode
+* L3: GPRS SNDCP (_Sub-Network Dependent Convergence Protocol_, TS 44.065)
+* User-IP (or PPP) inside SNDCP
+
+== GPRS Gb
+image::images/Gsm_structures.svg[]
+~image by Tsaitgaist~
+
+== Cellular Protocols: GPRS Gb
+
+* Between PCU (Protocol Control Unit) and SGSN (Serving GPRS Support Node)
+* Classic Transport
+** E1/T1 physical layer
+** L2: Frame Relay
+* Modern Transport
+** IP + UDP replace E1/T1 + FR, or
+** FR over GRE over IP
+* L3: NS (_Network Services_, TS 48.016)
+* L3: BSSGP (_BSS Gateway Protocol_, TS 48.018)
+* Above: GPRS LLC as on GPRS Um interface
+
+== GPRS Gp
+image::images/Gsm_structures.svg[]
+~image by Tsaitgaist~
+
+== Cellular Protocols: GPRS Gp
+
+* Between SGSN (Serving GPRS Support Node) and GGSN (GPRS Gateway Support Node)
+* IP as transport layer (yay!)
+* GTP (_GPRS Tunneling Protocol_, TS 29.060)
+* User-IP traffic inside GTP
+
+== GPRS Control Plane
+
+image::images/gprs_control_stack.svg[width="100%"]
+
+== GPRS User Plane
+
+image::images/gprs_user_stack.svg[width="100%"]
+
+== Cellular Protocols: UMTS (aka WCDMA aka 3G)
+
+* Uu interface on radio: Completely new
+* Iub interface NodeB -> RNC: Completely new
+** RRC protocol: ASN.1; UPER encoding
+* Iu-CS interface RNC -> MSC
+** SS7 E1/MTP2/MTP3 (or MTP3b via ATM)
+** SS7 SCCP Connection-Oriented
+** RANAP (RAN Application Part): ASN.1; APER encoding
+* Iu-PS interface RNC -> SGSN
+** like Iu-CS above
+
+== UMTS PS Control Plane
+
+image::images/umts_ps_control.svg[width="100%"]
+
+== UMTS PS User Plane
+
+image::images/umts_ps_user.svg[width="100%"]
+
+== Evolution towards IP Transport
+
+* 1999-2007: IETF SIGTRAN WG
+** Transmission of Signalling over IP
+** SCTP as reliable transport
+** Not one, but many "competing" stacks on top
+*** Result: Various incompatible products
+
+image::images/sigtran_stackings.svg[width="100%"]
+
+== Further Information
+
+* http://osmocom.org/ contains FOSS implementations of
+** GSM Um, Abis, A
+** GPRS Gb, Gp, Gi
+** UMTS IuCS, IuPS, Iuh
+
+== EOF
+
+End of File
personal git repositories of Harald Welte. Your mileage may vary