FreeRTOS and TCP/IP communication: the lwIP...
Transcript of FreeRTOS and TCP/IP communication: the lwIP...
![Page 1: FreeRTOS and TCP/IP communication: the lwIP libraryindico.ictp.it/event/8003/session/86/contribution/186/... · 2017. 12. 5. · FreeRTOS + lwIP Smr3160 – ICTP (Nov. & Dic. 2017)](https://reader033.fdocuments.in/reader033/viewer/2022052616/60a9b160daddbf55940e2ec6/html5/thumbnails/1.jpg)
Advanced School on Programmable System-on-Chip for Scientific
Instrumentation
Smr3160 – ICTP (Nov. & Dic. 2017)
FreeRTOS and TCP/IP communication: the lwIP library
Fernando Rincó[email protected]
![Page 2: FreeRTOS and TCP/IP communication: the lwIP libraryindico.ictp.it/event/8003/session/86/contribution/186/... · 2017. 12. 5. · FreeRTOS + lwIP Smr3160 – ICTP (Nov. & Dic. 2017)](https://reader033.fdocuments.in/reader033/viewer/2022052616/60a9b160daddbf55940e2ec6/html5/thumbnails/2.jpg)
FreeRTOS + lwIP Smr3160 – ICTP (Nov. & Dic. 2017) 2
Contents
● The lwIP TCP/IP stack– The network stack– The socket concept
● Application Architectures● lwIP and FreeRTOS● https://www.xilinx.com/video/soc/networking-with-lwip-focused-free-
rtos.html
![Page 3: FreeRTOS and TCP/IP communication: the lwIP libraryindico.ictp.it/event/8003/session/86/contribution/186/... · 2017. 12. 5. · FreeRTOS + lwIP Smr3160 – ICTP (Nov. & Dic. 2017)](https://reader033.fdocuments.in/reader033/viewer/2022052616/60a9b160daddbf55940e2ec6/html5/thumbnails/3.jpg)
FreeRTOS + lwIP Smr3160 – ICTP (Nov. & Dic. 2017) 3
lwIP TCP/IP stack ● lwIP stands for Lightweight IP:
– Small footprint implementation– Specially well suited for embedded systems
● Supports a large number of protocols– UDP, TCP, ICMP, ARP, ...
● APIs:– Berkeley sockets:
● requires an O.S.– Raw API
● With or without OS● More control, but more complex to use
● Included in xilinx SDK– Also includes driver for Xilinx Ethernet driver– XAPP1026 is the reference application note
![Page 4: FreeRTOS and TCP/IP communication: the lwIP libraryindico.ictp.it/event/8003/session/86/contribution/186/... · 2017. 12. 5. · FreeRTOS + lwIP Smr3160 – ICTP (Nov. & Dic. 2017)](https://reader033.fdocuments.in/reader033/viewer/2022052616/60a9b160daddbf55940e2ec6/html5/thumbnails/4.jpg)
FreeRTOS + lwIP Smr3160 – ICTP (Nov. & Dic. 2017) 4
The network stack
● The network design is organized as a layer stack.● Each layer provides a set of services to the upper layer and requires
services from the lower layer.● The layer 'n' of a node maintains a virtual conversation with the same
layer the destination node. That conversation must meet a specifc protocol.
![Page 5: FreeRTOS and TCP/IP communication: the lwIP libraryindico.ictp.it/event/8003/session/86/contribution/186/... · 2017. 12. 5. · FreeRTOS + lwIP Smr3160 – ICTP (Nov. & Dic. 2017)](https://reader033.fdocuments.in/reader033/viewer/2022052616/60a9b160daddbf55940e2ec6/html5/thumbnails/5.jpg)
FreeRTOS + lwIP Smr3160 – ICTP (Nov. & Dic. 2017) 5
Network sockets
● Socket:– Basic abstraction for network programming– Combination of IP + port– Inter-process communication
![Page 6: FreeRTOS and TCP/IP communication: the lwIP libraryindico.ictp.it/event/8003/session/86/contribution/186/... · 2017. 12. 5. · FreeRTOS + lwIP Smr3160 – ICTP (Nov. & Dic. 2017)](https://reader033.fdocuments.in/reader033/viewer/2022052616/60a9b160daddbf55940e2ec6/html5/thumbnails/6.jpg)
FreeRTOS + lwIP Smr3160 – ICTP (Nov. & Dic. 2017) 6
Network sockets
● From the programming point of view– Channel abstraction
● Berkeley sockets (BSD sockets | POSIX sockets)– De facto standard API
● LwIP Socket API– ‘lite’ version of BSD socketss
processclient
socketBytes →write
read
processserver
socketwrite
read
← Bytes
lwip_socket(AF_INET, SOCK_STREAM, 0)
![Page 7: FreeRTOS and TCP/IP communication: the lwIP libraryindico.ictp.it/event/8003/session/86/contribution/186/... · 2017. 12. 5. · FreeRTOS + lwIP Smr3160 – ICTP (Nov. & Dic. 2017)](https://reader033.fdocuments.in/reader033/viewer/2022052616/60a9b160daddbf55940e2ec6/html5/thumbnails/7.jpg)
FreeRTOS + lwIP Smr3160 – ICTP (Nov. & Dic. 2017) 7
Application Architectures: superloop
● Two main alternatives:– Superloop– multi-threaded
● Superloop: – forever loop that sequences the set of tasks– Typical in standalone implementations– Pros:
● Simple● No OS overhead
– Cons● Difcult to scale (low number of tasks)● Difcult to balance time and tasks priorities
int main() { init_system(); … While(1) { do_a(); do_b(); do_c(); } // You’l never get here}
![Page 8: FreeRTOS and TCP/IP communication: the lwIP libraryindico.ictp.it/event/8003/session/86/contribution/186/... · 2017. 12. 5. · FreeRTOS + lwIP Smr3160 – ICTP (Nov. & Dic. 2017)](https://reader033.fdocuments.in/reader033/viewer/2022052616/60a9b160daddbf55940e2ec6/html5/thumbnails/8.jpg)
FreeRTOS + lwIP Smr3160 – ICTP (Nov. & Dic. 2017) 8
Application architectures: multi-threaded
● Multi-threaded: – multiple threads spawn to carry out multiple tasks concurrently– Each task has diferent priority and timing requirements– Requires an operating system– Pros:
● More modular architecture● Tasks can be pre-empted. Avoid priority inversion
– Cons:● More complex and extra overhead ● Higher memory requirements● Thread execution is difcult to test
![Page 9: FreeRTOS and TCP/IP communication: the lwIP libraryindico.ictp.it/event/8003/session/86/contribution/186/... · 2017. 12. 5. · FreeRTOS + lwIP Smr3160 – ICTP (Nov. & Dic. 2017)](https://reader033.fdocuments.in/reader033/viewer/2022052616/60a9b160daddbf55940e2ec6/html5/thumbnails/9.jpg)
FreeRTOS + lwIP Smr3160 – ICTP (Nov. & Dic. 2017) 9
FreeRTOS Application Architecture
![Page 10: FreeRTOS and TCP/IP communication: the lwIP libraryindico.ictp.it/event/8003/session/86/contribution/186/... · 2017. 12. 5. · FreeRTOS + lwIP Smr3160 – ICTP (Nov. & Dic. 2017)](https://reader033.fdocuments.in/reader033/viewer/2022052616/60a9b160daddbf55940e2ec6/html5/thumbnails/10.jpg)
FreeRTOS + lwIP Smr3160 – ICTP (Nov. & Dic. 2017) 10
FreeRTOS network application
● Basic template for socket oriented programming:– First setup a network thread and start FreeRTOS task scheduler– Then the network thread:
● Initializes lwip● Confgures a network interface● Rises the interface● Starts another thread for the reception● Installs any other network tasks (new threads) required by the application
– We’ll suppose an echo server● Finally it deletes itself
– Therefore after initialization several threads are active:● Reception● Echo server
![Page 11: FreeRTOS and TCP/IP communication: the lwIP libraryindico.ictp.it/event/8003/session/86/contribution/186/... · 2017. 12. 5. · FreeRTOS + lwIP Smr3160 – ICTP (Nov. & Dic. 2017)](https://reader033.fdocuments.in/reader033/viewer/2022052616/60a9b160daddbf55940e2ec6/html5/thumbnails/11.jpg)
FreeRTOS + lwIP Smr3160 – ICTP (Nov. & Dic. 2017) 11
FreeRTOS network application
● Initialization:
Equivalent to a FreeRTOS task
We need FreeRTOS to start task execution for the rest of the procedure
![Page 12: FreeRTOS and TCP/IP communication: the lwIP libraryindico.ictp.it/event/8003/session/86/contribution/186/... · 2017. 12. 5. · FreeRTOS + lwIP Smr3160 – ICTP (Nov. & Dic. 2017)](https://reader033.fdocuments.in/reader033/viewer/2022052616/60a9b160daddbf55940e2ec6/html5/thumbnails/12.jpg)
FreeRTOS + lwIP Smr3160 – ICTP (Nov. & Dic. 2017) 12
FreeRTOS network application
● Network confguration thread
Static IP confguration
… (continues in the next slide)
![Page 13: FreeRTOS and TCP/IP communication: the lwIP libraryindico.ictp.it/event/8003/session/86/contribution/186/... · 2017. 12. 5. · FreeRTOS + lwIP Smr3160 – ICTP (Nov. & Dic. 2017)](https://reader033.fdocuments.in/reader033/viewer/2022052616/60a9b160daddbf55940e2ec6/html5/thumbnails/13.jpg)
FreeRTOS + lwIP Smr3160 – ICTP (Nov. & Dic. 2017) 13
FreeRTOS network application
● Network confguration thread
This task is just for confguration purposes
Tasks that will remain active:● Network data reception● Echo server (that processes data received)
![Page 14: FreeRTOS and TCP/IP communication: the lwIP libraryindico.ictp.it/event/8003/session/86/contribution/186/... · 2017. 12. 5. · FreeRTOS + lwIP Smr3160 – ICTP (Nov. & Dic. 2017)](https://reader033.fdocuments.in/reader033/viewer/2022052616/60a9b160daddbf55940e2ec6/html5/thumbnails/14.jpg)
FreeRTOS + lwIP Smr3160 – ICTP (Nov. & Dic. 2017) 14
Network programming concepts: Error control
● Network communication at the IP level is unreliable ● If reliability is required at the transport layer. Error control is
responsible for:– Detect and discard corrupt packets– Keep track of lost and discarded packets (resend)– Discard duplicates– Bufer out-of-order packets
● Implemented through:– Sequence numbers (in packets)– Acknowledgement and timers
![Page 15: FreeRTOS and TCP/IP communication: the lwIP libraryindico.ictp.it/event/8003/session/86/contribution/186/... · 2017. 12. 5. · FreeRTOS + lwIP Smr3160 – ICTP (Nov. & Dic. 2017)](https://reader033.fdocuments.in/reader033/viewer/2022052616/60a9b160daddbf55940e2ec6/html5/thumbnails/15.jpg)
FreeRTOS + lwIP Smr3160 – ICTP (Nov. & Dic. 2017) 15
Network programming concepts: Flow control
● Both the sender and receiver adjust the transmission speed● sliding window:
– Bufer used to make the transmission more efcient ● See videos
– as well as to control the fow of data so that the destination does not become overwhelmed with data
● The destination can reduce the size of the window
![Page 16: FreeRTOS and TCP/IP communication: the lwIP libraryindico.ictp.it/event/8003/session/86/contribution/186/... · 2017. 12. 5. · FreeRTOS + lwIP Smr3160 – ICTP (Nov. & Dic. 2017)](https://reader033.fdocuments.in/reader033/viewer/2022052616/60a9b160daddbf55940e2ec6/html5/thumbnails/16.jpg)
FreeRTOS + lwIP Smr3160 – ICTP (Nov. & Dic. 2017) 16
UDP
● Unreliable protocol– No error control
● The client ignores if the packet arrived correctly to the server– No fow control
● No way to adjust the speed of both the sender and receiver● But then why using UDP?
– Extremely simple (minimum overhead) → The fastest way (lowest latency)– Control can be provided by de Aplication Layer
● But that’s on you as a programmer● No help from the network stack
– There are may applications where loosing part of the information can be tolerated:
● Ex. Video conference
![Page 17: FreeRTOS and TCP/IP communication: the lwIP libraryindico.ictp.it/event/8003/session/86/contribution/186/... · 2017. 12. 5. · FreeRTOS + lwIP Smr3160 – ICTP (Nov. & Dic. 2017)](https://reader033.fdocuments.in/reader033/viewer/2022052616/60a9b160daddbf55940e2ec6/html5/thumbnails/17.jpg)
FreeRTOS + lwIP Smr3160 – ICTP (Nov. & Dic. 2017) 17
UDP
● UDP timing diagram
This packet will be discarded
![Page 18: FreeRTOS and TCP/IP communication: the lwIP libraryindico.ictp.it/event/8003/session/86/contribution/186/... · 2017. 12. 5. · FreeRTOS + lwIP Smr3160 – ICTP (Nov. & Dic. 2017)](https://reader033.fdocuments.in/reader033/viewer/2022052616/60a9b160daddbf55940e2ec6/html5/thumbnails/18.jpg)
FreeRTOS + lwIP Smr3160 – ICTP (Nov. & Dic. 2017) 18
UDP
● UDP socket Programming fow
![Page 19: FreeRTOS and TCP/IP communication: the lwIP libraryindico.ictp.it/event/8003/session/86/contribution/186/... · 2017. 12. 5. · FreeRTOS + lwIP Smr3160 – ICTP (Nov. & Dic. 2017)](https://reader033.fdocuments.in/reader033/viewer/2022052616/60a9b160daddbf55940e2ec6/html5/thumbnails/19.jpg)
FreeRTOS + lwIP Smr3160 – ICTP (Nov. & Dic. 2017) 19
TCP
● Connection-oriented protocol● Reliable
– Retransmission of lost or corrupted packets– Cumulative and selective ACKs
● Complex protocol with multiple phases (higher latency, lower throughput)– Connection establishment– Data transfer– Connection teardown
● Used when loosing information can’t be tolerated– HTTP / HTTPS– E-mail, text messaging
![Page 20: FreeRTOS and TCP/IP communication: the lwIP libraryindico.ictp.it/event/8003/session/86/contribution/186/... · 2017. 12. 5. · FreeRTOS + lwIP Smr3160 – ICTP (Nov. & Dic. 2017)](https://reader033.fdocuments.in/reader033/viewer/2022052616/60a9b160daddbf55940e2ec6/html5/thumbnails/20.jpg)
FreeRTOS + lwIP Smr3160 – ICTP (Nov. & Dic. 2017) 20
TCP
● TCP communication fow– Data transfers must be
acknowledges– But acknowledges are
packed. Not one per packet received
![Page 21: FreeRTOS and TCP/IP communication: the lwIP libraryindico.ictp.it/event/8003/session/86/contribution/186/... · 2017. 12. 5. · FreeRTOS + lwIP Smr3160 – ICTP (Nov. & Dic. 2017)](https://reader033.fdocuments.in/reader033/viewer/2022052616/60a9b160daddbf55940e2ec6/html5/thumbnails/21.jpg)
FreeRTOS + lwIP Smr3160 – ICTP (Nov. & Dic. 2017) 21
TCP
● TCP socket Programming fow
![Page 22: FreeRTOS and TCP/IP communication: the lwIP libraryindico.ictp.it/event/8003/session/86/contribution/186/... · 2017. 12. 5. · FreeRTOS + lwIP Smr3160 – ICTP (Nov. & Dic. 2017)](https://reader033.fdocuments.in/reader033/viewer/2022052616/60a9b160daddbf55940e2ec6/html5/thumbnails/22.jpg)
FreeRTOS + lwIP Smr3160 – ICTP (Nov. & Dic. 2017) 22
TCP
![Page 23: FreeRTOS and TCP/IP communication: the lwIP libraryindico.ictp.it/event/8003/session/86/contribution/186/... · 2017. 12. 5. · FreeRTOS + lwIP Smr3160 – ICTP (Nov. & Dic. 2017)](https://reader033.fdocuments.in/reader033/viewer/2022052616/60a9b160daddbf55940e2ec6/html5/thumbnails/23.jpg)
FreeRTOS + lwIP Smr3160 – ICTP (Nov. & Dic. 2017) 23
TCP
![Page 24: FreeRTOS and TCP/IP communication: the lwIP libraryindico.ictp.it/event/8003/session/86/contribution/186/... · 2017. 12. 5. · FreeRTOS + lwIP Smr3160 – ICTP (Nov. & Dic. 2017)](https://reader033.fdocuments.in/reader033/viewer/2022052616/60a9b160daddbf55940e2ec6/html5/thumbnails/24.jpg)
FreeRTOS + lwIP Smr3160 – ICTP (Nov. & Dic. 2017) 24
lwIP performance
● Depends on – the concrete hardware (also the CPU not just the network interface)– and API used (RAW or socket)
![Page 25: FreeRTOS and TCP/IP communication: the lwIP libraryindico.ictp.it/event/8003/session/86/contribution/186/... · 2017. 12. 5. · FreeRTOS + lwIP Smr3160 – ICTP (Nov. & Dic. 2017)](https://reader033.fdocuments.in/reader033/viewer/2022052616/60a9b160daddbf55940e2ec6/html5/thumbnails/25.jpg)
FreeRTOS + lwIP Smr3160 – ICTP (Nov. & Dic. 2017) 25
Network tools: netcat
● The swiss army knife for network operations● Can be confgured to be a client or a server:
– UDP example:● Server: nc -lu -p <port> [<hostname>]● Client: nc -u <hostname> <port>
– TCP example:● Server: nc -l -p <port> [<hostname>]● Client: nc <hostname> <port>
![Page 26: FreeRTOS and TCP/IP communication: the lwIP libraryindico.ictp.it/event/8003/session/86/contribution/186/... · 2017. 12. 5. · FreeRTOS + lwIP Smr3160 – ICTP (Nov. & Dic. 2017)](https://reader033.fdocuments.in/reader033/viewer/2022052616/60a9b160daddbf55940e2ec6/html5/thumbnails/26.jpg)
FreeRTOS + lwIP Smr3160 – ICTP (Nov. & Dic. 2017) 26
Network tools: Wireshark
● Most popular network trafc snifer● Captures and analyzes any kind of network trafc
– Will help you to understand the network stack– Protocol dissector
● Multi-platform (even mobile phones)– Free software
![Page 27: FreeRTOS and TCP/IP communication: the lwIP libraryindico.ictp.it/event/8003/session/86/contribution/186/... · 2017. 12. 5. · FreeRTOS + lwIP Smr3160 – ICTP (Nov. & Dic. 2017)](https://reader033.fdocuments.in/reader033/viewer/2022052616/60a9b160daddbf55940e2ec6/html5/thumbnails/27.jpg)
FreeRTOS + lwIP Smr3160 – ICTP (Nov. & Dic. 2017) 27
Network tools: Wireshark
Captured packets
Packet encapsulation
Packet contents