drivers in high level languages
play

Drivers in High-Level Languages Paul Emmerich , Simon Ellmann , - PowerPoint PPT Presentation

Chair of Network Architectures and Services Department of Informatics Technical University of Munich Drivers in High-Level Languages Paul Emmerich , Simon Ellmann , Fabian Bonk, Alex Egger, Alexander Frank, Thomas Gnzel, Stefan Huber,


  1. Chair of Network Architectures and Services Department of Informatics Technical University of Munich Drivers in High-Level Languages Paul Emmerich , Simon Ellmann , Fabian Bonk, Alex Egger, Alexander Frank, Thomas Günzel, Stefan Huber, Alexandru Obada, Maximilian Pudelko, Maximilian Stadlmeier, Sebastian Voit, Thomas Zwickl April 21, 2019 Chair of Network Architectures and Services Department of Informatics Technical University of Munich

  2. Chair of Network Architectures and Services Department of Informatics Technical University of Munich Drivers in High-Level Languages Paul Emmerich 1 , Simon Ellmann 2 , Fabian Bonk 3 , Alex Egger 4 , Alexander Frank 5 , Thomas Günzel 6 , Stefan Huber 7 , Alexandru Obada 8 , Maximilian Pudelko 9 , Maximilian Stadlmeier 10 , Sebastian Voit 11 , Thomas Zwickl 12 1 C, Thesis advisor 2 Rust 3 OCaml 4 Haskell 5 Latency measurement setup 6 Swift 7 IOMMU 8 Python 9 VirtIO driver 10 C# 11 Go 12 Interrupts Chair of Network Architectures and Services Department of Informatics Technical University of Munich

  3. Chair of Network Architectures and Services Department of Informatics Technical University of Munich About us Paul • PhD student at Technical University of Munich • Researching software packet processing performance Simon • Rust driver as bachelor’s thesis, now research assistant (HiWi) Everyone else mentioned on the title slide • Did a thesis with Paul as advisor Paul Emmerich, Simon Ellmann — Drivers in High-Level Languages 1

  4. Chair of Network Architectures and Services Department of Informatics Technical University of Munich C is an awesome language for operating systems! • Low-level access to memory and devices • Pointers are awesome • You can write safe and secure code if you try really hard • Everyone can read and write C • C code can be beautiful Paul Emmerich, Simon Ellmann — Drivers in High-Level Languages 2

  5. Chair of Network Architectures and Services Department of Informatics Technical University of Munich Beautiful C code #define mystery_macro(ptr, type, member) ({\ const typeof(((type*)0)->member)* __mptr = (ptr);\ (type*)((char*)__mptr - offsetof(type, member));\ }) Paul Emmerich, Simon Ellmann — Drivers in High-Level Languages 3

  6. Chair of Network Architectures and Services Department of Informatics Technical University of Munich Beautiful C code #define container_of(ptr, type, member) ({\ const typeof(((type*)0)->member)* __mptr = (ptr);\ (type*)((char*)__mptr - offsetof(type, member));\ }) Paul Emmerich, Simon Ellmann — Drivers in High-Level Languages 4

  7. Chair of Network Architectures and Services Department of Informatics Technical University of Munich Beautiful C code #define container_of(ptr, type, member) ({\ const typeof(((type*)0)->member)* __mptr = (ptr);\ (type*)((char*)__mptr - offsetof(type, member));\ }) • Allows some “inheritance” in C to abstract driver implementations • Virtually all C drivers use this macro • The Linux kernel contains ≈ 15,000 uses of this macro Paul Emmerich, Simon Ellmann — Drivers in High-Level Languages 5

  8. Chair of Network Architectures and Services Department of Informatics Technical University of Munich C can cause security problems (...) • Screenshot from https://www.cvedetails.com/ • Security bugs found in the Linux kernel in the last ≈ 20 years Paul Emmerich, Simon Ellmann — Drivers in High-Level Languages 6

  9. Chair of Network Architectures and Services Department of Informatics Technical University of Munich C can cause security problems • Not all bugs can be blamed on the language • Cutler et al. analyzed 65 CVEs categorized as code execution in the Linux kernel 1 1 C. Cutler, M. F . Kaashoek, and R. T. Morris, “The benefits and costs of writing a POSIX kernel in a high-level language”, USENIX OSDI, 2018 Paul Emmerich, Simon Ellmann — Drivers in High-Level Languages 7

  10. Chair of Network Architectures and Services Department of Informatics Technical University of Munich C can cause security problems • Not all bugs can be blamed on the language • Cutler et al. analyzed 65 CVEs categorized as code execution in the Linux kernel 1 Bug type Num. Perc. Can be avoided by using a better language? Various 11 17% Unclear/Maybe Logic 14 22% No Use-after-free 8 12% Yes Out of bounds 32 49% Yes (likely leads to panic) Table 1: Code execution vulnerabilities in the Linux kernel identified by Cutler et al. 1 1 C. Cutler, M. F . Kaashoek, and R. T. Morris, “The benefits and costs of writing a POSIX kernel in a high-level language”, USENIX OSDI, 2018 Paul Emmerich, Simon Ellmann — Drivers in High-Level Languages 7

  11. Chair of Network Architectures and Services Department of Informatics Technical University of Munich Let’s rewrite all operating systems in better languages? • Rewriting the whole operating system in a safer language is a laudable effort • Redox (Rust) wants to become a production-grade OS but currently isn’t • Singularity (Sing#, Microsoft Research) demonstrated some interesting concepts • Biscuit (Go) implements parts of POSIX for research • Unikernels like MirageOS (OCaml) or IncludeOS (C++) can be useful in some scenarios Paul Emmerich, Simon Ellmann — Drivers in High-Level Languages 8

  12. Chair of Network Architectures and Services Department of Informatics Technical University of Munich Let’s rewrite all operating systems in better languages? • Rewriting the whole operating system in a safer language is a laudable effort • Redox (Rust) wants to become a production-grade OS but currently isn’t • Singularity (Sing#, Microsoft Research) demonstrated some interesting concepts • Biscuit (Go) implements parts of POSIX for research • Unikernels like MirageOS (OCaml) or IncludeOS (C++) can be useful in some scenarios • But none of these will replace your main operating system any time soon Paul Emmerich, Simon Ellmann — Drivers in High-Level Languages 8

  13. Chair of Network Architectures and Services Department of Informatics Technical University of Munich Where are these bugs that could have been prevented? • We looked at these 40 preventable bugs • 39 of them were in drivers (the other was in the Bluetooth stack) Paul Emmerich, Simon Ellmann — Drivers in High-Level Languages 9

  14. Chair of Network Architectures and Services Department of Informatics Technical University of Munich Where are these bugs that could have been prevented? • We looked at these 40 preventable bugs • 39 of them were in drivers (the other was in the Bluetooth stack) • 13 were in the Qualcomm WiFi driver Paul Emmerich, Simon Ellmann — Drivers in High-Level Languages 9

  15. Chair of Network Architectures and Services Department of Informatics Technical University of Munich Where are these bugs that could have been prevented? • We looked at these 40 preventable bugs • 39 of them were in drivers (the other was in the Bluetooth stack) • 13 were in the Qualcomm WiFi driver Paul Emmerich, Simon Ellmann — Drivers in High-Level Languages 9

  16. Chair of Network Architectures and Services Department of Informatics Technical University of Munich Can we rewrite drivers in better languages? • Some operating systems have drivers in (subsets of) C++ • But good luck getting a driver in Rust or Go upstreamed in Linux Paul Emmerich, Simon Ellmann — Drivers in High-Level Languages 10

  17. Chair of Network Architectures and Services Department of Informatics Technical University of Munich Can we rewrite drivers in better languages? • Some operating systems have drivers in (subsets of) C++ • But good luck getting a driver in Rust or Go upstreamed in Linux • User space drivers can be written in any language! • But are all languages an equally good choice? • Is a JIT compiler or a garbage collector a problem in a driver? Paul Emmerich, Simon Ellmann — Drivers in High-Level Languages 10

  18. Chair of Network Architectures and Services Department of Informatics Technical University of Munich Network drivers Intel XL710 [Picture: Intel.com] Paul Emmerich, Simon Ellmann — Drivers in High-Level Languages 11

  19. Chair of Network Architectures and Services Department of Informatics Technical University of Munich Why look at network drivers? • We happen to know a lot about networks ;) • Easy to benchmark to quantify results • Huge attack surface: exposed to the external world by design • User space network drivers are already quite common (e.g., DPDK, Snabb) • Network stacks are also moving into the user space (e.g., TCP stack on iOS) Paul Emmerich, Simon Ellmann — Drivers in High-Level Languages 12

  20. Chair of Network Architectures and Services Department of Informatics Technical University of Munich Why look at network drivers? • We happen to know a lot about networks ;) • Easy to benchmark to quantify results • Huge attack surface: exposed to the external world by design • User space network drivers are already quite common (e.g., DPDK, Snabb) • Network stacks are also moving into the user space (e.g., TCP stack on iOS) • Everything mentioned here is applicable to other drivers as well Paul Emmerich, Simon Ellmann — Drivers in High-Level Languages 12

  21. Chair of Network Architectures and Services Department of Informatics Technical University of Munich Network driver complexity is increasing 10 5 DPDK drivers Linux drivers Lines of code 10 4 0 . 3624 x + 5781 10 3 10 2 10M 100M 1G 2.5G 10G 40G100G Max supported speed Paul Emmerich, Simon Ellmann — Drivers in High-Level Languages 13

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend