osmocom_dect.png


Introduction to the OsmocomDECT stack

OsmoDevCon2013
4th-8th April 2013
Berlin, Germany

Patrick McHardy <kaber@trash.net>

http://dect.osmocom.org



(page 1)

osmocom_dect.png


Overview


(page 2)

osmocom_dect.png


Physical layer

Drivers: drivers/dect


(page 3)

osmocom_dect.png


sc1442x driver: drivers/dect/coa


(page 4)

osmocom_dect.png


sc1442x driver: drivers/dect/coa


(page 5)

osmocom_dect.png


sc1442x driver: drivers/dect/coa


(page 6)

osmocom_dect.png


Physical layer

Transceiver layer: net/dect/transceiver.c


(page 7)

osmocom_dect.png


Physical layer

Transceiver layer: net/dect/transceiver.c


(page 8)

osmocom_dect.png


Physical layer

Transceiver layer: net/dect/transceiver.c

\# dect-transceiver-list --name trx9
DECT Transceiver trx9@cell0:
Type: sc1442x
RF-band: 00000
Events: busy: 0 late: 2587
slot 0: <tx> carrier: 2 (1893.888 MHz)
RX: bytes 320 packets 40 a-crc-errors 1 x-crc-errors 0 z-crc-errors 0
TX: bytes 1776 packets 37
slot 2: <idle> carrier: 0 (1897.344 MHz)
RX: bytes 0 packets 0 a-crc-errors 0 x-crc-errors 0 z-crc-errors 0
TX: bytes 0 packets 0
[...]
slot 10: <rx,sync> carrier: 9 (1881.792 MHz +0.569 kHz) signal level: -41.94dBm
RX: bytes 2600 packets 325 a-crc-errors 0 x-crc-errors 0 z-crc-errors 0
TX: bytes 0 packets 0
slot 12: <rx> carrier: 2 (1893.888 MHz +0.083 kHz) signal level: -57.47dBm
RX: bytes 1764 packets 36 a-crc-errors 0 x-crc-errors 0 z-crc-errors 0
TX: bytes 0 packets 0
slot 14: <idle> carrier: 0 (1897.344 MHz)
RX: bytes 0 packets 0 a-crc-errors 0 x-crc-errors 0 z-crc-errors 0
TX: bytes 0 packets 0
[...]
slot 22: <idle> carrier: 0 (1897.344 MHz)
RX: bytes 0 packets 0 a-crc-errors 0 x-crc-errors 0 z-crc-errors 0
TX: bytes 0 packets 0

(page 9)

osmocom_dect.png


MAC layer

MAC layer overview


(page 10)

osmocom_dect.png


MAC layer

MAC cell site functions (CSF): net/dect/mac_csf.c


(page 11)

osmocom_dect.png


MAC layer

MAC cell site functions (CSF): net/dect/mac_csf.c


(page 12)

osmocom_dect.png


MAC layer

MAC cell site functions (CSF): net/dect/mac_csf.c


(page 13)

osmocom_dect.png


MAC layer

MAC cell site functions (CSF): net/dect/mac_csf.c



(page 14)

osmocom_dect.png


MAC layer

MAC cell site functions (CSF): net/dect/mac_csf.c


(page 15)

osmocom_dect.png


MAC layer

MAC cluster control functions (CCF): net/dect/mac_csf.c



(page 16)

osmocom_dect.png


MAC layer

MAC cluster control functions (CCF): net/dect/mac_csf.c


(page 17)

osmocom_dect.png


MAC layer

MAC cluster control functions (CCF): net/dect/mac_csf.c


(page 18)

osmocom_dect.png


DLC layer

Data Link Control (DLC): net/dect/dlc.c



(page 19)

osmocom_dect.png


DLC layer

Data Link Control C-Plane (DLC): net/dect/dlc_cplane.c



(page 20)

osmocom_dect.png


DLC layer

Data Link Control C-Plane (DLC): net/dect/dlc_cplane.c


(page 21)

osmocom_dect.png


DLC layer

Data Link control C-Plane SAP: net/dect/dlc_s_sap.c, net/dect/dlc_b_sap:



(page 22)

osmocom_dect.png


DLC layer

Data Link control U-Place: net/dect/dlc_uplane.c, dlc_lu1_sap.c:



(page 23)

osmocom_dect.png


NWK layer

Network layer: libdect


(page 24)

osmocom_dect.png


NWK layer

Network layer: libdect


(page 25)

osmocom_dect.png


NWK layer

Network layer: libdect

/** MM_ACCESS_RIGHTS primitive parameters. */
struct dect_mm_access_rights_param {
struct dect_ie_collection common;
struct dect_ie_portable_identity *portable_identity;
struct dect_ie_list fixed_identity;
struct dect_ie_location_area *location_area;
struct dect_ie_auth_type *auth_type;
struct dect_ie_cipher_info *cipher_info;
struct dect_ie_zap_field *zap_field;
struct dect_ie_setup_capability *setup_capability;
struct dect_ie_terminal_capability *terminal_capability;
struct dect_ie_service_class *service_class;
struct dect_ie_model_identifier *model_identifier;
struct dect_ie_reject_reason *reject_reason;
struct dect_ie_duration *duration;
struct dect_ie_iwu_to_iwu *iwu_to_iwu;
struct dect_ie_escape_to_proprietary *escape_to_proprietary;
struct dect_ie_codec_list *codec_list;
};

(page 26)

osmocom_dect.png


NWK layer

Network layer: libdect

struct dect_mm_ops {
size_t priv_size;
/**< Size of the private storage area of an MM endpoint */
void (*mm_access_rights_ind)(struct dect_handle *dh,
struct dect_mm_endpoint *mme,
struct dect_mm_access_rights_param *param);
/**< MM_ACCESS_RIGHTS-ind primitive */
void (*mm_access_rights_cfm)(struct dect_handle *dh,
struct dect_mm_endpoint *mme, bool accept,
struct dect_mm_access_rights_param *param);
/**< MM_ACCESS_RIGHTS-cfm primitive */
...
};

extern int dect_mm_access_rights_req(struct dect_handle *dh, struct dect_mm_endpoint *mme,
const struct dect_mm_access_rights_param *param);
extern void dect_mm_access_rights_res(struct dect_handle *dh, struct dect_mm_endpoint *mme,
bool accept, const struct dect_mm_access_rights_param *param);


(page 27)

osmocom_dect.png


NWK layer

Network layer: libdect

static DECT_SFMT_MSG_DESC(mm_access_rights_request,
DECT_SFMT_IE(DECT_IE_PORTABLE_IDENTITY, IE_NONE, IE_MANDATORY, 0),
DECT_SFMT_IE(DECT_IE_AUTH_TYPE, IE_NONE, IE_OPTIONAL, 0),
DECT_SFMT_IE(DECT_IE_CIPHER_INFO, IE_NONE, IE_OPTIONAL, 0),
DECT_SFMT_IE(DECT_IE_SETUP_CAPABILITY, IE_NONE, IE_OPTIONAL, 0),
DECT_SFMT_IE(DECT_IE_TERMINAL_CAPABILITY, IE_NONE, IE_OPTIONAL, 0),
DECT_SFMT_IE(DECT_IE_IWU_TO_IWU, IE_NONE, IE_OPTIONAL, 0),
DECT_SFMT_IE(DECT_IE_MODEL_IDENTIFIER, IE_NONE, IE_OPTIONAL, 0),
DECT_SFMT_IE(DECT_IE_ESCAPE_TO_PROPRIETARY, IE_NONE, IE_OPTIONAL, 0),
DECT_SFMT_IE(DECT_IE_CODEC_LIST, IE_NONE, IE_OPTIONAL, 0),
DECT_SFMT_IE_END_MSG
);

(page 28)

osmocom_dect.png


NWK layer

Network layer: libdect

NWK: 05 42 0b 02 01 88 0c 08 1b 42 27 01 4c 5c 44 84 |.B.......B'.L\\D.|
NWK: 0e 08 9e 01 7e 0c 42 ae ec ff |....~.B...|
{MM-KEY-ALLOCATE} message:
IE: <<ALLOCATION-TYPE>> id: b len: 4 dst: 0xfcf440
authentication algorithm: DSAA (1)
authentication key number: 8
authentication code number: 8
IE: <<RAND>> id: c len: 10 dst: 0xfcf460
value: 84445c4c0127421b
IE: <<RS>> id: e len: 10 dst: 0xfcf480
value: ffecae420c7e019e

NWK: 85 40 0a 03 01 48 00 0c 08 de a7 66 4d 34 fb c2 |.@...H.....fM4..|
NWK: 7f 0d 04 85 6a 5f 9e |....j_.|
{MM-AUTHENTICATION-REQUEST} message:
IE: <<AUTH-TYPE>> id: a len: 5 dst: 0xfcf5e0
authentication algorithm: DSAA (1)
authentication key type: Authentication code (4)
authentication key number: 8
cipher key number: 0
INC: 0 DEF: 0 TXC: 0 UPC: 0
IE: <<RAND>> id: c len: 10 dst: 0xfcf600
value: 7fc2fb344d66a7de
IE: <<RES>> id: d len: 6 dst: 0xfcf620
value: 9e5f6a85

(page 29)

osmocom_dect.png


NWK layer

Network layer Link Control Entity: src/lce.c


(page 30)

osmocom_dect.png


NWK layer

Mobility Management: src/mm.c



(page 31)

osmocom_dect.png


NWK layer

Mobility Management: src/mm.c



(page 32)

osmocom_dect.png


NWK layer

Mobility Management: src/mm.c



(page 33)

osmocom_dect.png


NWK layer

Call Control; src/cc.c


(page 34)

osmocom_dect.png


NWK layer

Connectionless messaging service: src/clms.c


(page 35)

osmocom_dect.png


IWU

Interworking Unit: asterisk, channels/chan_dect.c


(page 36)

osmocom_dect.png


Support tools



(page 37)

osmocom_dect.png


Support tools




(page 38)

osmocom_dect.png


Future work

(page 39)