Software ubiquitärer Systeme
Übung 3: CiAO/IP
http://ess.cs.tu-dortmund.de/DE/Teaching/SS2016/SuS/
Ulrich Gabor, Christoph Borchert
http://ess.cs.tu-dortmund.de/~ug
AG Eingebettete SystemsoftwareInformatik 12, TU Dortmund
Software ubiquitärer Systeme: 3. Übung 2
Inhalt● Internet in ubiquitären Systemen
● CiAO/IP
Software ubiquitärer Systeme: 3. Übung 3
Internet in ubiquitären Systemen● TCP/IP ist de-facto Standard für Datenübertragung
– Geeignet für ubiquitäre (eingebettete) Systeme?
Software ubiquitärer Systeme: 3. Übung 4
Herausforderungen● Verschiedenste Anforderung müssen erfüllt werden
– Unterschiedliche Hardware (Microcontroller)● Unterschiedliche Netzwerke (Ethernet, WLAN, GSM, Bluetooth, LTE, …)● Wenig Speicher verfügbar (z.B. die 32 KiB unseres MSP430)
– Unterschiedliche Anwendungen● Voice-over-IP: Geringe Latenz, Quality-of-Service● Video Streaming: Hoher Durchsatz● E-Mail: Zuverlässiger Datentransfer● …
● Statische Konfigurierbarkeit (zur Compile-Zeit) erforderlich– TCP/IP als Software-Produktlinie
Software ubiquitärer Systeme: 3. Übung 5
TCP/IP in Linux● Geringe statische Konfigurierung des TCP/IP-Stacks
– Hoher Speicherbedarf: > 240 KiB
TCP/IP Networking (IPv4)The IPv6 Protocol
IPv6: IPSecIP: IPSec
IP: Multicast RoutingIP: Multicasting (IGMP)
0
50
100
150
200
250
300
”size arch/x86/boot/compressed/vmlinux.bin”
Software ubiquitärer Systeme: 3. Übung 6
uIP – Micro IP [1]● Minimale TCP/IP Implementierung
– Ethernet, ARP, IPv4, TCP (nicht konfigurierbar)● Kein Sliding Window, Keine Übertragungswiederholung
– Wenig Konfigurierungsmöglichkeiten– Ausgelegt auf minimale Codegröße
● ca. 2800 LOC● ca. 5-10 KiB Codegröße
Software ubiquitärer Systeme: 3. Übung 7
lwIP – lightweight IP [1]● Teilweise konfigurierbar (und mehr Funktionalität als uIP)
– Codegröße: 7-40 KiB
● Parallel zu uIP entwickelt (vom selben Autor)
TCP
Software ubiquitärer Systeme: 3. Übung 9
State-of-the-Art TCP/IP Stacks● Linux
– Geringe statische Konfigurierung des TCP/IP-Stacks ● Hoher Speicherbedarf: > 240 KiB
● micro-IP (uIP)– Wenig Konfigurierungsmöglichkeiten
● Codegröße: 5-10 KiB
● lightweight IP (lwIP)– Teilweise konfigurierbar
● Codegröße: 7-40 KiBWarum nicht feingranular konfigurierbar?Warum nicht feingranular konfigurierbar?
Software ubiquitärer Systeme: 3. Übung 10
switch (IPH_PROTO(iphdr)) {#if LWIP_UDP case IP_PROTO_UDP:#if LWIP_UDPLITE case IP_PROTO_UDPLITE:#endif /* LWIP_UDPLITE */ snmp_inc_ipindelivers(); udp_input(p, inp); break;#endif /* LWIP_UDP */#if LWIP_TCP case IP_PROTO_TCP: snmp_inc_ipindelivers(); tcp_input(p, inp); break;#endif /* LWIP_TCP */#if LWIP_ICMP case IP_PROTO_ICMP: snmp_inc_ipindelivers(); icmp_input(p, inp); break;#endif /* LWIP_ICMP */#if LWIP_IGMP
lwip-1.3.2/src/core/ip.c
Konfigurierbarkeit in lwIP● Etwa 50 Präprozessor-
Anweisungen pro
Merkmal
Software ubiquitärer Systeme: 3. Übung 11
Konfigurierbarkeit in lwIP● Etwa 50 Präprozessor-
Anweisungen pro
Merkmal
switch (IPH_PROTO(iphdr)) {#if LWIP_UDP case IP_PROTO_UDP:#if LWIP_UDPLITE case IP_PROTO_UDPLITE:#endif /* LWIP_UDPLITE */ snmp_inc_ipindelivers(); udp_input(p, inp); break;#endif /* LWIP_UDP */#if LWIP_TCP case IP_PROTO_TCP: snmp_inc_ipindelivers(); tcp_input(p, inp); break;#endif /* LWIP_TCP */#if LWIP_ICMP case IP_PROTO_ICMP: snmp_inc_ipindelivers(); icmp_input(p, inp); break;#endif /* LWIP_ICMP */#if LWIP_IGMP
lwip-1.3.2/src/core/ip.c
UDP
Software ubiquitärer Systeme: 3. Übung 12
Konfigurierbarkeit in lwIP● Etwa 50 Präprozessor-
Anweisungen pro
Merkmal
switch (IPH_PROTO(iphdr)) {#if LWIP_UDP case IP_PROTO_UDP:#if LWIP_UDPLITE case IP_PROTO_UDPLITE:#endif /* LWIP_UDPLITE */ snmp_inc_ipindelivers(); udp_input(p, inp); break;#endif /* LWIP_UDP */#if LWIP_TCP case IP_PROTO_TCP: snmp_inc_ipindelivers(); tcp_input(p, inp); break;#endif /* LWIP_TCP */#if LWIP_ICMP case IP_PROTO_ICMP: snmp_inc_ipindelivers(); icmp_input(p, inp); break;#endif /* LWIP_ICMP */#if LWIP_IGMP
lwip-1.3.2/src/core/ip.c
UDP
UDP
Lite
Software ubiquitärer Systeme: 3. Übung 13
Konfigurierbarkeit in lwIP● Etwa 50 Präprozessor-
Anweisungen pro
Merkmal
switch (IPH_PROTO(iphdr)) {#if LWIP_UDP case IP_PROTO_UDP:#if LWIP_UDPLITE case IP_PROTO_UDPLITE:#endif /* LWIP_UDPLITE */ snmp_inc_ipindelivers(); udp_input(p, inp); break;#endif /* LWIP_UDP */#if LWIP_TCP case IP_PROTO_TCP: snmp_inc_ipindelivers(); tcp_input(p, inp); break;#endif /* LWIP_TCP */#if LWIP_ICMP case IP_PROTO_ICMP: snmp_inc_ipindelivers(); icmp_input(p, inp); break;#endif /* LWIP_ICMP */#if LWIP_IGMP
lwip-1.3.2/src/core/ip.c
UDP
UDP
UDP
Lite
Software ubiquitärer Systeme: 3. Übung 14
Konfigurierbarkeit in lwIP● Etwa 50 Präprozessor-
Anweisungen pro
Merkmal
switch (IPH_PROTO(iphdr)) {#if LWIP_UDP case IP_PROTO_UDP:#if LWIP_UDPLITE case IP_PROTO_UDPLITE:#endif /* LWIP_UDPLITE */ snmp_inc_ipindelivers(); udp_input(p, inp); break;#endif /* LWIP_UDP */#if LWIP_TCP case IP_PROTO_TCP: snmp_inc_ipindelivers(); tcp_input(p, inp); break;#endif /* LWIP_TCP */#if LWIP_ICMP case IP_PROTO_ICMP: snmp_inc_ipindelivers(); icmp_input(p, inp); break;#endif /* LWIP_ICMP */#if LWIP_IGMP
lwip-1.3.2/src/core/ip.c
TCP
UDP
UDP
UDP
Lite
Software ubiquitärer Systeme: 3. Übung 15
Konfigurierbarkeit in lwIP● Etwa 50 Präprozessor-
Anweisungen pro
Merkmal
switch (IPH_PROTO(iphdr)) {#if LWIP_UDP case IP_PROTO_UDP:#if LWIP_UDPLITE case IP_PROTO_UDPLITE:#endif /* LWIP_UDPLITE */ snmp_inc_ipindelivers(); udp_input(p, inp); break;#endif /* LWIP_UDP */#if LWIP_TCP case IP_PROTO_TCP: snmp_inc_ipindelivers(); tcp_input(p, inp); break;#endif /* LWIP_TCP */#if LWIP_ICMP case IP_PROTO_ICMP: snmp_inc_ipindelivers(); icmp_input(p, inp); break;#endif /* LWIP_ICMP */#if LWIP_IGMP
lwip-1.3.2/src/core/ip.c
TCP
UDP
ICMP
UDP
UDP
Lite
Software ubiquitärer Systeme: 3. Übung 16
switch (IPH_PROTO(iphdr)) {#if LWIP_UDP case IP_PROTO_UDP:#if LWIP_UDPLITE case IP_PROTO_UDPLITE:#endif /* LWIP_UDPLITE */ snmp_inc_ipindelivers(); udp_input(p, inp); break;#endif /* LWIP_UDP */#if LWIP_TCP case IP_PROTO_TCP: snmp_inc_ipindelivers(); tcp_input(p, inp); break;#endif /* LWIP_TCP */#if LWIP_ICMP case IP_PROTO_ICMP: snmp_inc_ipindelivers(); icmp_input(p, inp); break;#endif /* LWIP_ICMP */#if LWIP_IGMP
lwip-1.3.2/src/core/ip.c
Konfigurierbarkeit in lwIP● Etwa 50 Präprozessor-
Anweisungen pro
Merkmal
→ “#ifdef Hölle”
TCP
UDP
ICMP
UDP
UDP
Lite
MP
Software ubiquitärer Systeme: 3. Übung 17
tcp_in.c
etharp.c
etharp.h
icmp.cinet.c
inet_chksum.c
inet.hip_addr.h
ip.c
ip_frag.c
ip.h
tcp.c
tcp.h
tcp_out.c
udp.c
Feature-Implementierung in lwIP● Konvertierung der Paket-Header zur Network Byte Order
– Konfigurierbar durch #define (htons, ntohs, htonl, ntohl)
Files of lwIP
Software ubiquitärer Systeme: 3. Übung 18
tcp_in.c
etharp.c
etharp.h
icmp.cinet.c
inet_chksum.c
inet.hip_addr.h
ip.c
ip_frag.c
ip.h
tcp.c
tcp.h
tcp_out.c
udp.c
Feature-Implementierung in lwIP● Konvertierung der Paket-Header zur Network Byte Order
– Konfigurierbar durch #define (htons, ntohs, htonl, ntohl)– 210 Code-Einfügungen, verteilt über 15 DateienFiles of lwIP
Software ubiquitärer Systeme: 3. Übung 19
State-of-the-Art TCP/IP Stacks (2)● #ifdef-basierte Konfigurierung skaliert nicht
– Hunderte von #ifdef-basierten Bugs in Linux [2]– “problems induced by “#ifdef-hell” grow more than linearly” [2]
● TCP/IP Stacks vermeiden feingranulare Konfigurierbarkeit– Quellcode soll wartbar/verstehbar sein– „Zufällige“ Auswahl von Protokollfeatures wird implementiert
● Häufig suboptimale Auswahl
Software ubiquitärer Systeme: 3. Übung 20
Inhalt● Internet in ubiquitären Systemen
● CiAO/IP
Software ubiquitärer Systeme: 3. Übung 21
Der CiAO/IP Ansatz● Jedes Merkmal ist optional
– Keine festgelegten Merkmale
Software ubiquitärer Systeme: 3. Übung 22
Concern Impact Analysis (Iterativ) Merkmale und Abhängigkeiten identifizieren
Analyse der Interaktionen zwischen diesen Merkmalen
Entwurf der Software-Architektur
Specification(RFCs)
ExpertKnowledge
ConcernHierarchy
DesignPrinciples
FeatureModelling
ImpactAnalysis
Design
Explicit Features
Internal Features
1 2 3
1
2
3
Software ubiquitärer Systeme: 3. Übung 23
Concern Impact Analysis (Iterativ) Merkmale und Abhängigkeiten identifizieren
Analyse der Interaktionen zwischen diesen Merkmalen
Entwurf der Software-Architektur
Specification(RFCs)
ExpertKnowledge
ConcernHierarchy
DesignPrinciples
FeatureModelling
ImpactAnalysis
Design
Explicit Features
Internal Features
1 2 3
1
2
3
Software ubiquitärer Systeme: 3. Übung 24
Merkmalmodellierung● Beispiel: Das Internet Protocol (IP)
– Ausgangspunkt: Spezifikation (z.B. RFC1122)● MUST, SHOULD, MAY
Software ubiquitärer Systeme: 3. Übung 25
Concern Impact Analysis (Iterativ) Merkmale und Abhängigkeiten identifizieren
Analyse der Interaktionen zwischen diesen Merkmalen
Entwurf der Software-Architektur
Specification(RFCs)
ExpertKnowledge
ConcernHierarchy
DesignPrinciples
FeatureModelling
ImpactAnalysis Design
Explicit Features
Internal Features
1 2 3
1
2
3
Software ubiquitärer Systeme: 3. Übung 26
Concern Impact AnalysisEinfügung:
Erweiterung:
Modifikation:
● Basis: min. eine
Einfügung
● Benutzt: min. eine
Erweiterung
● Querschneidend:
viele Modifikationen
AP
IS
tate
Eve
nts
Software ubiquitärer Systeme: 3. Übung 27
Concern Hierarchy● Basismerkmale → Klassen (hier Rechtecke)● Benutzt-Hierarchie → Abgeleitete Klassen● Querschneidende Merkmale → Aspekte (hier abgerundet)
Software ubiquitärer Systeme: 3. Übung 28
Concern Impact Analysis (Iterativ) Merkmale und Abhängigkeiten identifizieren
Analyse der Interaktionen zwischen diesen Merkmalen
Entwurf der Software-Architektur
Specification(RFCs)
ExpertKnowledge
ConcernHierarchy
DesignPrinciples
FeatureModelling
ImpactAnalysis
Design
Explicit Features
Internal Features
1 2 3
1
2
3
Software ubiquitärer Systeme: 3. Übung 30
① Minimale Erweiterungen● Inkrementeller Systementwurf
– Beginnend mit minimaler Merkmal-Teilmenge
Software ubiquitärer Systeme: 3. Übung 31
① Minimale Erweiterungen● Inkrementeller Systementwurf
– Beginnend mit minimaler Merkmal-Teilmenge
● Querschneidende Merkmale werden Aspekte
Software ubiquitärer Systeme: 3. Übung 32
① Minimale Erweiterungen● Inkrementeller Systementwurf
– Beginnend mit minimaler Merkmal-Teilmenge
● Querschneidende Merkmale werden Aspekte– Ermöglicht feingranulare Konfigurierbarkeit
Software ubiquitärer Systeme: 3. Übung 33
② Upcall Dispatcher Hierarchy● Modulares Demultiplexing von empfangenen Paketen
Software ubiquitärer Systeme: 3. Übung 34
② Upcall Dispatcher Hierarchy● Modulares Demultiplexing von empfangenen Paketen
– Jeder Protokol-Handler zapft upcall()-Funktionen an● Und fügt upcall()-Funktionen für höhere Schichten hinzu
Software ubiquitärer Systeme: 3. Übung 35
② Upcall Dispatcher Hierarchy● Modulares Demultiplexing von empfangenen Paketen
– Jeder Protokol-Handler zapft upcall()-Funktionen an● Und fügt upcall()-Funktionen für höhere Schichten hinzu
Software ubiquitärer Systeme: 3. Übung 36
③ Sichtbare Übergänge● Systemstrategien explizit machen
– Durch eindeutige Benennung von C++ Klassen und Funktionen– Erleichtert spätere Anwendung von AOP
Software ubiquitärer Systeme: 3. Übung 37
③ Sichtbare Übergänge● Systemstrategien explizit machen
– Durch eindeutige Benennung von C++ Klassen und Funktionen– Erleichtert spätere Anwendung von AOP
Software ubiquitärer Systeme: 3. Übung 38
③ Sichtbare Übergänge● Aspekt zur Konvertierung zur Network Byte Order
Software ubiquitärer Systeme: 3. Übung 39
➃ Lose Kopplung● Durch Selbstintegration von Komponenten
– CiAO/IP-Stack kennt die Gerätetreiber nicht● Stattdessen rufen diese einen expliziten JoinPoint auf (ready())
– Aspekt meldet die Gerätetreiber am CiAO/IP-Stack an● Gerätetreiber können leicht weggelassen werden
Software ubiquitärer Systeme: 3. Übung 40
Was bringt die Konfigurierbarkeit?● Auf verschiedenen Systemen?
8-bit AVR128 KiB ROMSub GHz Radio
16-bit MSP43032 KiB ROMSub GHz Radio
32/64-bit Intel/AMD4 GiB RAMGbit Ethernet
Software ubiquitärer Systeme: 3. Übung 42
Energieverbrauch (8-bit AVR)● 32 kB Firmware-Update über TCP
– B-MAC link layer (25 ms LPL)
● Erklärung– uIP: RTT-Estimation ist Vielfaches von 500 ms (Relikt aus 4.3 BSD)
Software ubiquitärer Systeme: 3. Übung 44
Zusammenfassung● Internet & ubiquitäre Systeme
– Herausforderung: verschiedenste Anforderungen
● Ansätze– uIP/lwIP: Effizienzprobleme durch mangelnde Flexibilität
● Mögliche Lösung– Software-Produktlinie, wie z.B. CiAO/IP
Software ubiquitärer Systeme: 3. Übung 45
Referenzen1. Adam Dunkels: „Full TCP/IP for 8-Bit Architectures“
In Proceedings of the first international conference on mobile applications, systems and services (MOBISYS 2003), San Francisco, May 2003
2. R. Tartler et al. Feature Consistency in Compile-Time-Configurable System Software: Facing the Linux 10,000 Feature Problem. In EuroSys '11, pages 47–60, April 2011.
Top Related