Interconnecting the IoT IEEE World Forum on IoT Limerick, Ireland - - PowerPoint PPT Presentation

interconnecting the iot
SMART_READER_LITE
LIVE PREVIEW

Interconnecting the IoT IEEE World Forum on IoT Limerick, Ireland - - PowerPoint PPT Presentation

Interconnecting the IoT IEEE World Forum on IoT Limerick, Ireland Cenk Gndoan cenk.guendogan@haw-hamburg.de On Behalf of the RIOT Community April 17, 2019 The Internet 10 billion devices by 2020, 22 billion devices by 2025 The Internet


slide-1
SLIDE 1

Interconnecting the IoT

IEEE World Forum on IoT Limerick, Ireland Cenk Gündoğan

cenk.guendogan@haw-hamburg.de

On Behalf of the RIOT Community

April 17, 2019

slide-2
SLIDE 2
slide-3
SLIDE 3
slide-4
SLIDE 4

The Internet 10 billion devices by 2020, 22 billion devices by 2025

slide-5
SLIDE 5

The Internet 10 billion devices by 2020, 22 billion devices by 2025 Foster a transparent, robust, secure IoT: Software big bang & reusable components

slide-6
SLIDE 6

The Internet 10 billion devices by 2020, 22 billion devices by 2025 Milliwatt instead of Watt Megahertz instead of Gigahertz Kilobytes instead of Gigabytes

slide-7
SLIDE 7

The Internet 10 billion devices by 2020, 22 billion devices by 2025

If you can’t run Linux ...

slide-8
SLIDE 8

The Internet 10 billion devices by 2020, 22 billion devices by 2025

...run

slide-9
SLIDE 9

RIOT—The Friendly Operating System for the IoT

◮ Free, open source operating system for the IoT ◮ Small memory footprint (≈ 1.5 kB RAM, ≈ 5 kB ROM) ◮ Hardware abstraction ◮ Full featured, expendable network stacks

Design Principles

◮ Adaptive: High modularity and easy tailoring ◮ Robust: Module-level error handling ◮ Energy efficient: Tickless scheduler ◮ Instinctive: Preemptive multi-threading & powerful IPC ◮ Real-time capable: Deterministic O(1) scheduling ◮ Reactive: Low latency interrupt handling

9 / 37

slide-10
SLIDE 10

Supported Platforms

◮ Vendor independent support: TI, NXP, STM, Nordic, Ateml, Silicon Labs, ESP ◮ Runs on various 8-bit, 16-bit, 32-bit platforms ◮ 8-bit: AVR8 ◮ 16-bit: MSP430 ◮ 32-bit: MIPS, PIC32, ARM7, x86, Cortex-M, RISC-V, ESP ◮ Over 130 boards supported

10 / 37

slide-11
SLIDE 11

Supported Connectivity Technologies

◮ Wireless Personal Area Networks (WPANs)

◮ IEEE 802.15.4(e) ◮ Bluetooth Low Energy (BLE) ◮ Near Field Communication (NFC)

◮ Local Area Networks (LANs)

◮ Ethernet ◮ Wi-Fi ◮ CAN Bus

◮ Cellular Technologies (ongoing)

◮ 2G, 3G, 4G ◮ NB-IoT & LTE-M

◮ Long-range Technologies

◮ LoRa ◮ SigFox

LE

11 / 37

slide-12
SLIDE 12

History of RIOT

2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 FeuerWhere Project FireKernel Branding of RIOT RIOT Community Summits

2013.08 2014.01 2014.05 2014.12 2015.09 2015.12 2016.04 2016.07 2016.10 2017.01 2017.04 2017.07 2017.10 2018.01 2018.04 2018.07 2018.10 2019.01 2019.04 2019.07 2019.10

RIOT Releases

12 / 37

slide-13
SLIDE 13

Open Source Community

◮ RIOT core distributed with non-viral copyleft license (LGPLv2.1) ◮ Source code and community maintenance on GitHub ◮ Maintainer team of ≈ 30 people, larger number of contributors ◮ 210 contributors worldwide from academia, industry, hobbyist background ◮ More than 1200 forks & over 20000 commits in code base ◮ ≈ 170 new pull requests per month ◮ Self-organizing community with rough consensus decision-making (c.f. IETF) ◮ Bazaar1 model: development and discussions in public

1The Cathedral and the Bazaar: Musings on Linux and Open Source by an Accidental Revolutionary, Eric S. Raymond 13 / 37

slide-14
SLIDE 14

Github Statistics—Contributions Activity

◮ Increased contributions activity since 2013 ◮ Fast-paced progression for 6 years without interruptions

14 / 37

slide-15
SLIDE 15

Github Statistics—Views & Unique Visitors

15 / 37

slide-16
SLIDE 16

Easy Development & Code Portability

◮ Compliant to widely used POSIX features, such as pthread and sockets ◮ Standard development & debugging tools, such as gcc, clang, gdb, valgrind ◮ Fast feedback & rapid iteration: deploy RIOT as a Linux process ◮ Recommended programming language: ANSI-C ◮ Support for C++, Arduino Sketches, partial support for scripting languages

1

struct sockaddr_in6 dst = { .sin6_family = AF_INET6 };

2

uint16_t port = 8888;

3

int s;

4

...

5

s = socket(AF_INET6, SOCK_DGRAM, IPPROTO_UDP);

6

sendto(s, data, data_len, 0, (struct sockaddr *)&dst, sizeof(dst))

7

...

16 / 37

slide-17
SLIDE 17

Hardware & Software Abstraction

Application Application Application System Libraries External Packages Network Stack Kernel Drivers Device & Peripheral Drivers CPU Implementation Board Implementation Hardware Hardware Hardware

17 / 37

slide-18
SLIDE 18

Hardware & Software Abstraction

Application Application Application System Libraries External Packages Network Stack Kernel Drivers Device & Peripheral Drivers CPU Implementation Board Implementation Hardware Hardware Hardware

18 / 37

slide-19
SLIDE 19

Hardware & Software Abstraction

Application Application Application System Libraries External Packages Network Stack Kernel Drivers Device & Peripheral Drivers CPU Implementation Board Implementation Hardware Hardware Hardware

19 / 37

slide-20
SLIDE 20

IoT Network Stack

◮ Open-access protocols ◮ Support for IETF network stacks

◮ GNRC for IPv6/6LoWPAN (default) ◮ lwIP for IPv4 & IPv6/6LoWPAN ◮ emb6 for 6LoWPAN ◮ OpenWSN for 6LoWPAN & 802.15.4e

◮ Support for non-IETF network stacks

◮ OpenThread for Thread ◮ LoRaWAN for LoRa deployments ◮ CCN-lite & NDN-lite for Information-centric Networking

IEEE 802.15.4, BLE, LoRa,... 6LoWPAN

Dispatch Fragment Compress

IPv6

RPL ND

UDP CoAP MQTT-SN

20 / 37

slide-21
SLIDE 21

Loosely Coupled Network Stack Architecture

Application / Library Hardware Driver Driver Driver Network Stack

21 / 37

slide-22
SLIDE 22

Loosely Coupled Network Stack Architecture

Application / Library Hardware Driver Driver Driver Network Stack sock sock_ip sock_udp sock_tcp

22 / 37

slide-23
SLIDE 23

Loosely Coupled Network Stack Architecture

Application / Library Hardware Driver Driver Driver Network Stack sock sock_ip sock_udp sock_tcp netdev

23 / 37

slide-24
SLIDE 24

Loosely Coupled Network Stack Architecture

Application / Library Hardware Driver Driver Driver sock sock_ip sock_udp sock_tcp netdev GNRC (Default IPv6/6LoWPAN Stack)

24 / 37

slide-25
SLIDE 25

Loosely Coupled Network Stack Architecture

Application / Library Hardware Driver Driver Driver sock sock_ip sock_udp sock_tcp netdev

gnrc_udp gnrc_tcp gnrc_ip gnrc_6lo

25 / 37

slide-26
SLIDE 26

Loosely Coupled Network Stack Architecture

Application / Library Hardware Driver Driver Driver sock sock_ip sock_udp sock_tcp netdev

gnrc_udp gnrc_tcp gnrc_ip gnrc_6lo

IPC IPC IPC

26 / 37

slide-27
SLIDE 27

Goodput Comparison for RIOT vs Linux in a IEEE 802.15.4 Network

200 400 600 800 1000 1200

UDP Payload [Bytes]

50 100 150 200

Goodput [kBit/s] Theoretical Bound RIOT TX w/o CSMA, ACK RIOT TX Raspberry Pi TX

27 / 37

slide-28
SLIDE 28

Multi-Interface & IoT Gateway Setups

Internet

Ethernet IEEE 802.15.4 LoRa

◮ Allows multiple interfaces simultaneously ◮ Supports gateway functionalities 6LoWPAN Gateway IPv6

28 / 37

slide-29
SLIDE 29

Multi-Interface & IoT Gateway Setups

Internet

Ethernet IEEE 802.15.4 LoRa

◮ Allows multiple interfaces simultaneously ◮ Supports gateway functionalities 6LoWPAN Gateway IPv6

29 / 37

slide-30
SLIDE 30

Open Source Impact

30 / 37

slide-31
SLIDE 31

Open Source Impact

Wireshark: Contribution of P2P-RPL dissector

31 / 37

slide-32
SLIDE 32

Open Source Impact

Linux: Interop. testing, contribute discussions and fixes

32 / 37

slide-33
SLIDE 33

Open Source Impact

OpenOCD: Threading support for RIOT in GDB

33 / 37

slide-34
SLIDE 34

Open Source Impact

IETF: Participation in discussions Authoring of IoT related documents

34 / 37

slide-35
SLIDE 35

Current Hot Topics of Interest

◮ Hardware-in-the-loop (HIL) testing infrastructure

◮ Automated network tests, including interoperability & regression

◮ LoRa PHY & MAC layer integration ◮ NB-IoT & LTE-M transceiver integration ◮ IoT semantic & hypermedia interop. (T2TRG/IETF) ◮ Exploration of secure firmware update mechanisms for the IoT (SUIT/IETF)

35 / 37

slide-36
SLIDE 36

We Care About our Community

slide-37
SLIDE 37

Thank You!

↸ www.riot-os.org riot@riot-os.org @RIOT_OS riot-os@freenode