The document describes the Linux kernel networking stack and the basic packet receiving, forwarding, and sending paths through the kernel networking layers. It explains how a received packet moves from the NIC hardware through the device driver, data link layer, network layer, transport layer, and finally to a userspace application. It also outlines how packets are forwarded by looking up routing table entries to determine the next hop gateway.
The document discusses various data structures and functions related to network packet processing in the Linux kernel socket layer. It describes the sk_buff structure that is used to pass packets between layers. It also explains the net_device structure that represents a network interface in the kernel. When a packet is received, the interrupt handler will raise a soft IRQ for processing. The packet will then traverse various protocol layers like IP and TCP to be eventually delivered to a socket and read by a userspace application.
This document discusses different methods for virtualizing I/O in virtual machines. It covers virtual I/O approaches like virtio, PCI passthrough, and SR-IOV. It also explains the role of the VMM/hypervisor in managing I/O between VMs and physical devices using techniques like VT-d, Open vSwitch, and single root I/O virtualization. Finally, it discusses emerging standards for virtual switching like virtual Ethernet bridging.
This presentation features a walk through the Linux kernel networking stack covering the essentials and recent developments a developer needs to know. Our starting point is the network card driver as it feeds a packet into the stack. We will follow the packet as it traverses through various subsystems such as packet filtering, routing, protocol stacks, and the socket layer. We will pause here and there to look into concepts such as segmentation offloading, TCP small queues, and low latency polling. We will cover APIs exposed by the kernel that go beyond use of write()/read() on sockets and will look into how they are implemented on the kernel side.
DPDK greatly improves packet processing performance and throughput by allowing applications to directly access hardware and bypass kernel involvement. It can improve performance by up to 10 times, allowing over 80 Mbps throughput on a single CPU or double that with two CPUs. This enables telecom and networking equipment manufacturers to develop products faster and with lower costs. DPDK achieves these gains through techniques like dedicated core affinity, userspace drivers, polling instead of interrupts, and lockless synchronization.
1. DPDK achieves high throughput packet processing on commodity hardware by reducing kernel overhead through techniques like polling, huge pages, and userspace drivers.
2. In Linux, packet processing involves expensive operations like system calls, interrupts, and data copying between kernel and userspace. DPDK avoids these by doing all packet processing in userspace.
3. DPDK uses techniques like isolating cores for packet I/O threads, lockless ring buffers, and NUMA awareness to further optimize performance. It can achieve throughput of over 14 million packets per second on 10GbE interfaces.
Alphorm.com Formation Nouveautés Windows Server 2016Alphorm
Formation complète ici:
http://www.alphorm.com/tutoriel/formation-en-ligne-windows-server-2016-maitrisez-les-nouveautes
Windows Server 2016 est sorti début Octobre 2016 et apporte beaucoup de nouveautés. Ainsi Hyper-V, Failover Clustering, la couche stockage et réseaux ont été grandement amélioré. Windows Server 2016 apporte aussi un nouveau modèle de déploiement appelé Nano Server.
Toutes ces nouveautés sont présentées dans cette formation. La majorité des nouveautés est présentée au travers de démonstration.
Cette formation vous permettra d’appréhender les nouveautés de Windows Server 2016 afin de les déployer dans votre propre infrastructure.
The document describes the Linux kernel networking stack and the basic packet receiving, forwarding, and sending paths through the kernel networking layers. It explains how a received packet moves from the NIC hardware through the device driver, data link layer, network layer, transport layer, and finally to a userspace application. It also outlines how packets are forwarded by looking up routing table entries to determine the next hop gateway.
The document discusses various data structures and functions related to network packet processing in the Linux kernel socket layer. It describes the sk_buff structure that is used to pass packets between layers. It also explains the net_device structure that represents a network interface in the kernel. When a packet is received, the interrupt handler will raise a soft IRQ for processing. The packet will then traverse various protocol layers like IP and TCP to be eventually delivered to a socket and read by a userspace application.
This document discusses different methods for virtualizing I/O in virtual machines. It covers virtual I/O approaches like virtio, PCI passthrough, and SR-IOV. It also explains the role of the VMM/hypervisor in managing I/O between VMs and physical devices using techniques like VT-d, Open vSwitch, and single root I/O virtualization. Finally, it discusses emerging standards for virtual switching like virtual Ethernet bridging.
This presentation features a walk through the Linux kernel networking stack covering the essentials and recent developments a developer needs to know. Our starting point is the network card driver as it feeds a packet into the stack. We will follow the packet as it traverses through various subsystems such as packet filtering, routing, protocol stacks, and the socket layer. We will pause here and there to look into concepts such as segmentation offloading, TCP small queues, and low latency polling. We will cover APIs exposed by the kernel that go beyond use of write()/read() on sockets and will look into how they are implemented on the kernel side.
DPDK greatly improves packet processing performance and throughput by allowing applications to directly access hardware and bypass kernel involvement. It can improve performance by up to 10 times, allowing over 80 Mbps throughput on a single CPU or double that with two CPUs. This enables telecom and networking equipment manufacturers to develop products faster and with lower costs. DPDK achieves these gains through techniques like dedicated core affinity, userspace drivers, polling instead of interrupts, and lockless synchronization.
1. DPDK achieves high throughput packet processing on commodity hardware by reducing kernel overhead through techniques like polling, huge pages, and userspace drivers.
2. In Linux, packet processing involves expensive operations like system calls, interrupts, and data copying between kernel and userspace. DPDK avoids these by doing all packet processing in userspace.
3. DPDK uses techniques like isolating cores for packet I/O threads, lockless ring buffers, and NUMA awareness to further optimize performance. It can achieve throughput of over 14 million packets per second on 10GbE interfaces.
Alphorm.com Formation Nouveautés Windows Server 2016Alphorm
Formation complète ici:
http://www.alphorm.com/tutoriel/formation-en-ligne-windows-server-2016-maitrisez-les-nouveautes
Windows Server 2016 est sorti début Octobre 2016 et apporte beaucoup de nouveautés. Ainsi Hyper-V, Failover Clustering, la couche stockage et réseaux ont été grandement amélioré. Windows Server 2016 apporte aussi un nouveau modèle de déploiement appelé Nano Server.
Toutes ces nouveautés sont présentées dans cette formation. La majorité des nouveautés est présentée au travers de démonstration.
Cette formation vous permettra d’appréhender les nouveautés de Windows Server 2016 afin de les déployer dans votre propre infrastructure.
Advanced performance troubleshooting using esxtopAlan Renouf
This document discusses using esxtop and resxtop tools to troubleshoot performance issues on VMware ESXi hosts. It provides 10 key things to know about esxtop counters and how they work. It then gives examples of using esxtop to troubleshoot common problems like CPU contention, memory issues, network throughput problems, and disk I/O latency. It also lists some other diagnostic tools that can be used along with esxtop.
Introduce the basic concept of Open vSwitch. In this slide, we talked about how Linux kernel and networking stack worked together to forward and process the network packet and also compare those Linux networking stack functionality with Open vSwitch and Openflow.
At the end of this slide, we talk about the challenge to integrate the Open vSwitch with Kubernetes, what kind of the networking function we need to resolve and what is the benefit we can get from the Open Vswitch.
- The document discusses Linux network stack monitoring and configuration. It begins with definitions of key concepts like RSS, RPS, RFS, LRO, GRO, DCA, XDP and BPF.
- It then provides an overview of how the network stack works from the hardware interrupts and driver level up through routing, TCP/IP and to the socket level.
- Monitoring tools like ethtool, ftrace and /proc/interrupts are described for viewing hardware statistics, software stack traces and interrupt information.
DPDK in depth
This document provides an overview of DPDK (Data Plane Development Kit):
1. DPDK is an open source project for data plane programming and network acceleration. It started at Intel in 2010 and is now maintained by the Linux Foundation.
2. DPDK provides poll mode drivers (PMDs), libraries, and sample applications for fast packet processing. It uses hugepages and avoids kernel involvement for high performance.
3. The document outlines several DPDK projects, libraries, PMDs, advantages and disadvantages, development process, and demonstrates a simple DPDK application (l2fwd) and the testpmd tool.
This document discusses the internals of the ixgbe driver, which is the Intel 10 Gigabit Ethernet driver for Linux. It describes how the driver handles transmission and reception of packets using ring buffers and NAPI. It also discusses how the driver supports eXpress Data Path (XDP) by using a separate ring for XDP packets and adjusting page reference counts to support XDP operations like redirection. Upcoming features that will improve XDP support for this driver are also mentioned.
Alphorm.com Formation Docker (1/2) : Installation et AdministrationAlphorm
Formation complète ici:
http://www.alphorm.com/tutoriel/formation-en-ligne-docker-1-2-installation-et-administration
Rentrer dans le DevOps par Docker.
La révolution des environnements «virtuels » a commencé. Ludovic Quenec’hdu vous propose de participer à cette révolution.
Construite, déployer, publier, mettre en réseau sont les fonctionnalités que vous allez découvrir. Au travers les concepts généraux de Docker.
Nous ferons le tour du Build, Ship and Run de Docker.
Nous verrons comment Docker est conçu pour mieux comprendre comment gérer Linux Containers à l'aide du Docker, la gestion des images, des conteneurs, le build.
Linux Traffic Control allows administrators to control network traffic through mechanisms like shaping, scheduling, classifying, policing, dropping and marking. It uses components like queuing disciplines (qdiscs), classes, filters, and actions. The tc command can be used to configure these components by adding, changing or deleting traffic control settings on network interfaces.
This presentation covers the basics about OpenvSwitch and its components. OpenvSwitch is a Open Source implementation of OpenFlow by the Nicira team.
It also also talks about OpenvSwitch and its role in OpenStack Networking
The document describes a biolatency tool that traces block device I/O latency using eBPF. It discusses how the tool was originally written in the bcc framework using C/BPF, but has since been rewritten in the bpftrace framework using a simpler one-liner script. It provides examples of the bcc and bpftrace implementations of biolatency.
The document provides an overview of the cgroup subsystem and namespace subsystem in Linux, which form the basis of Linux containers. It discusses how cgroups and namespaces enable lightweight virtualization of processes through isolation of resources and namespaces. It then covers specific aspects of cgroups like the memory, CPU, devices, and PIDs controllers. It also summarizes the key differences and improvements in the cgroup v2 implementation, such as having a single unified hierarchy and consistent controller interfaces.
LinuxCon 2015 Linux Kernel Networking WalkthroughThomas Graf
This presentation features a walk through the Linux kernel networking stack for users and developers. It will cover insights into both, existing essential networking features and recent developments and will show how to use them properly. Our starting point is the network card driver as it feeds a packet into the stack. We will follow the packet as it traverses through various subsystems such as packet filtering, routing, protocol stacks, and the socket layer. We will pause here and there to look into concepts such as networking namespaces, segmentation offloading, TCP small queues, and low latency polling and will discuss how to configure them.
The document discusses QEMU and adding a new device to it. It begins with an introduction to QEMU and its uses. It then discusses setting up a development environment, compiling QEMU, and examples of existing devices. The main part explains how to add a new "Devix" device by creating source files, registering the device type, initializing PCI configuration, and registering memory regions. It demonstrates basic functionality like interrupts and I/O access callbacks. The goal is to introduce developing new emulated devices for QEMU.
VXLAN Integration with CloudStack was presented at the Advanced Zone CCCEU13 conference in Amsterdam on November 21, 2013. The presentation discussed integrating VXLAN to overcome the VLAN ID limitation in CloudStack and allow for more scalable network isolation. VXLAN was demonstrated working with CloudStack to provide isolated networks and inter-tier connectivity within VPCs while maintaining network isolation. Basic functions like VM connectivity, migration, and network availability were tested under VXLAN and found to work as expected. Feedback was welcomed on the VXLAN integration in CloudStack.
Achieving the ultimate performance with KVM ShapeBlue
This document summarizes an presentation about achieving ultimate performance with KVM. It discusses optimizing hardware, CPU, memory, networking, and storage for virtual machines. The goal is the lowest cost per delivered resource while meeting performance targets. Specific optimizations mentioned include CPU pinning, huge pages, SR-IOV networking, virtio drivers, and bypassing the host for storage. It cautions that many performance claims use unrealistic benchmarks and hardware configurations unlike real-world usage.
This document provides an overview of device passthrough in ACRN. It discusses how device passthrough provides near-native performance by allowing direct access to devices but limits access to single VMs. It describes how ACRN utilizes DMA remapping and interrupt remapping to virtualize device access while maintaining isolation. Code handling is outlined for assigning devices, handling interrupts, and virtualizing ACPI. Limitations discussed include driver dependencies, reset handling, and interrupt programming. New device support requires testing functionality and dependencies in the hypervisor.
Arm device tree and linux device driversHoucheng Lin
This document discusses how the Linux kernel supports different ARM boards using a common source code base. It describes how device tree is used to describe hardware in a board-agnostic way. The kernel initializes machine-specific code via the device tree and initializes drivers by matching compatible strings. This allows a single kernel binary to support multiple boards by abstracting low-level hardware details into the device tree rather than the kernel source. The document also contrasts the ARM approach to the x86 approach, where BIOS abstraction and standardized buses allow one kernel to support most x86 hardware.
The document provides an overview of Docker networking as of version 17.06. It begins with introductions of the presenter and some key terminology used. It then discusses why container networking is needed and compares features of container and VM networking. The major components of Docker networking including network drivers, IPAM, Swarm networking, service discovery, and load balancing are outlined. Concepts of CNI/CNM standards and IP address management are explained. Examples of different network drivers such as bridge, overlay, macvlan are provided. The document also covers Docker networking concepts such as default networks, Swarm mode, service discovery, and load balancing. It concludes with some debugging commands and a reference slide.
"One network to rule them all" - OpenStack Summit Austin 2016Phil Estes
Presentation at IBM Client Day by Kyle Mestery and Phil Estes, OpenStack Summit 2016 - Austin, Texas on April 26, 2016. "Open, Scalable and Integrated Networking for Containers and VMs" covering Project Kuryr, Docker's libnetwork, and Neutron & OVS and OVN network stacks
Linux rumpkernel - ABC2018 (AsiaBSDCon 2018)Hajime Tazaki
This document discusses Linux rumpkernel and the LKL (Linux Kernel Library). It introduces LKL as a library that allows running unmodified Linux kernel code in various configurations like application libraries and microkernels. LKL transforms a monolithic kernel code into a reusable library called liblkl by outsourcing machine-dependent code and keeping application and kernel code untouched. It provides different interfaces for applications to interact with the LKL kernel, including direct syscalls, hijacking the host library, or extending an alternative libc. Various usages of LKL are also presented, such as running a network stack in userspace (NUSE), building unikernels, and doing network simulation with ns-3 using the Linux network stack.
Advanced performance troubleshooting using esxtopAlan Renouf
This document discusses using esxtop and resxtop tools to troubleshoot performance issues on VMware ESXi hosts. It provides 10 key things to know about esxtop counters and how they work. It then gives examples of using esxtop to troubleshoot common problems like CPU contention, memory issues, network throughput problems, and disk I/O latency. It also lists some other diagnostic tools that can be used along with esxtop.
Introduce the basic concept of Open vSwitch. In this slide, we talked about how Linux kernel and networking stack worked together to forward and process the network packet and also compare those Linux networking stack functionality with Open vSwitch and Openflow.
At the end of this slide, we talk about the challenge to integrate the Open vSwitch with Kubernetes, what kind of the networking function we need to resolve and what is the benefit we can get from the Open Vswitch.
- The document discusses Linux network stack monitoring and configuration. It begins with definitions of key concepts like RSS, RPS, RFS, LRO, GRO, DCA, XDP and BPF.
- It then provides an overview of how the network stack works from the hardware interrupts and driver level up through routing, TCP/IP and to the socket level.
- Monitoring tools like ethtool, ftrace and /proc/interrupts are described for viewing hardware statistics, software stack traces and interrupt information.
DPDK in depth
This document provides an overview of DPDK (Data Plane Development Kit):
1. DPDK is an open source project for data plane programming and network acceleration. It started at Intel in 2010 and is now maintained by the Linux Foundation.
2. DPDK provides poll mode drivers (PMDs), libraries, and sample applications for fast packet processing. It uses hugepages and avoids kernel involvement for high performance.
3. The document outlines several DPDK projects, libraries, PMDs, advantages and disadvantages, development process, and demonstrates a simple DPDK application (l2fwd) and the testpmd tool.
This document discusses the internals of the ixgbe driver, which is the Intel 10 Gigabit Ethernet driver for Linux. It describes how the driver handles transmission and reception of packets using ring buffers and NAPI. It also discusses how the driver supports eXpress Data Path (XDP) by using a separate ring for XDP packets and adjusting page reference counts to support XDP operations like redirection. Upcoming features that will improve XDP support for this driver are also mentioned.
Alphorm.com Formation Docker (1/2) : Installation et AdministrationAlphorm
Formation complète ici:
http://www.alphorm.com/tutoriel/formation-en-ligne-docker-1-2-installation-et-administration
Rentrer dans le DevOps par Docker.
La révolution des environnements «virtuels » a commencé. Ludovic Quenec’hdu vous propose de participer à cette révolution.
Construite, déployer, publier, mettre en réseau sont les fonctionnalités que vous allez découvrir. Au travers les concepts généraux de Docker.
Nous ferons le tour du Build, Ship and Run de Docker.
Nous verrons comment Docker est conçu pour mieux comprendre comment gérer Linux Containers à l'aide du Docker, la gestion des images, des conteneurs, le build.
Linux Traffic Control allows administrators to control network traffic through mechanisms like shaping, scheduling, classifying, policing, dropping and marking. It uses components like queuing disciplines (qdiscs), classes, filters, and actions. The tc command can be used to configure these components by adding, changing or deleting traffic control settings on network interfaces.
This presentation covers the basics about OpenvSwitch and its components. OpenvSwitch is a Open Source implementation of OpenFlow by the Nicira team.
It also also talks about OpenvSwitch and its role in OpenStack Networking
The document describes a biolatency tool that traces block device I/O latency using eBPF. It discusses how the tool was originally written in the bcc framework using C/BPF, but has since been rewritten in the bpftrace framework using a simpler one-liner script. It provides examples of the bcc and bpftrace implementations of biolatency.
The document provides an overview of the cgroup subsystem and namespace subsystem in Linux, which form the basis of Linux containers. It discusses how cgroups and namespaces enable lightweight virtualization of processes through isolation of resources and namespaces. It then covers specific aspects of cgroups like the memory, CPU, devices, and PIDs controllers. It also summarizes the key differences and improvements in the cgroup v2 implementation, such as having a single unified hierarchy and consistent controller interfaces.
LinuxCon 2015 Linux Kernel Networking WalkthroughThomas Graf
This presentation features a walk through the Linux kernel networking stack for users and developers. It will cover insights into both, existing essential networking features and recent developments and will show how to use them properly. Our starting point is the network card driver as it feeds a packet into the stack. We will follow the packet as it traverses through various subsystems such as packet filtering, routing, protocol stacks, and the socket layer. We will pause here and there to look into concepts such as networking namespaces, segmentation offloading, TCP small queues, and low latency polling and will discuss how to configure them.
The document discusses QEMU and adding a new device to it. It begins with an introduction to QEMU and its uses. It then discusses setting up a development environment, compiling QEMU, and examples of existing devices. The main part explains how to add a new "Devix" device by creating source files, registering the device type, initializing PCI configuration, and registering memory regions. It demonstrates basic functionality like interrupts and I/O access callbacks. The goal is to introduce developing new emulated devices for QEMU.
VXLAN Integration with CloudStack was presented at the Advanced Zone CCCEU13 conference in Amsterdam on November 21, 2013. The presentation discussed integrating VXLAN to overcome the VLAN ID limitation in CloudStack and allow for more scalable network isolation. VXLAN was demonstrated working with CloudStack to provide isolated networks and inter-tier connectivity within VPCs while maintaining network isolation. Basic functions like VM connectivity, migration, and network availability were tested under VXLAN and found to work as expected. Feedback was welcomed on the VXLAN integration in CloudStack.
Achieving the ultimate performance with KVM ShapeBlue
This document summarizes an presentation about achieving ultimate performance with KVM. It discusses optimizing hardware, CPU, memory, networking, and storage for virtual machines. The goal is the lowest cost per delivered resource while meeting performance targets. Specific optimizations mentioned include CPU pinning, huge pages, SR-IOV networking, virtio drivers, and bypassing the host for storage. It cautions that many performance claims use unrealistic benchmarks and hardware configurations unlike real-world usage.
This document provides an overview of device passthrough in ACRN. It discusses how device passthrough provides near-native performance by allowing direct access to devices but limits access to single VMs. It describes how ACRN utilizes DMA remapping and interrupt remapping to virtualize device access while maintaining isolation. Code handling is outlined for assigning devices, handling interrupts, and virtualizing ACPI. Limitations discussed include driver dependencies, reset handling, and interrupt programming. New device support requires testing functionality and dependencies in the hypervisor.
Arm device tree and linux device driversHoucheng Lin
This document discusses how the Linux kernel supports different ARM boards using a common source code base. It describes how device tree is used to describe hardware in a board-agnostic way. The kernel initializes machine-specific code via the device tree and initializes drivers by matching compatible strings. This allows a single kernel binary to support multiple boards by abstracting low-level hardware details into the device tree rather than the kernel source. The document also contrasts the ARM approach to the x86 approach, where BIOS abstraction and standardized buses allow one kernel to support most x86 hardware.
The document provides an overview of Docker networking as of version 17.06. It begins with introductions of the presenter and some key terminology used. It then discusses why container networking is needed and compares features of container and VM networking. The major components of Docker networking including network drivers, IPAM, Swarm networking, service discovery, and load balancing are outlined. Concepts of CNI/CNM standards and IP address management are explained. Examples of different network drivers such as bridge, overlay, macvlan are provided. The document also covers Docker networking concepts such as default networks, Swarm mode, service discovery, and load balancing. It concludes with some debugging commands and a reference slide.
"One network to rule them all" - OpenStack Summit Austin 2016Phil Estes
Presentation at IBM Client Day by Kyle Mestery and Phil Estes, OpenStack Summit 2016 - Austin, Texas on April 26, 2016. "Open, Scalable and Integrated Networking for Containers and VMs" covering Project Kuryr, Docker's libnetwork, and Neutron & OVS and OVN network stacks
Linux rumpkernel - ABC2018 (AsiaBSDCon 2018)Hajime Tazaki
This document discusses Linux rumpkernel and the LKL (Linux Kernel Library). It introduces LKL as a library that allows running unmodified Linux kernel code in various configurations like application libraries and microkernels. LKL transforms a monolithic kernel code into a reusable library called liblkl by outsourcing machine-dependent code and keeping application and kernel code untouched. It provides different interfaces for applications to interact with the LKL kernel, including direct syscalls, hijacking the host library, or extending an alternative libc. Various usages of LKL are also presented, such as running a network stack in userspace (NUSE), building unikernels, and doing network simulation with ns-3 using the Linux network stack.
Using open source software to build an industrial grade embedded linux platfo...SZ Lin
Building an embedded Linux platform is like a puzzle; placing the suitable software components in the right positions will constitute an optimal platform. However, selecting suitable components is difficult since it depends on different application scenarios. The essential components of an embedded Linux platform include the bootloader, Linux kernel, toolchain, root filesystem; it also needs the tools for image generation, upgrades, and testing. There are abundant resources in the Linux ecosystem with these components and tools; however, selecting the suitable modules and tools is still a key challenge for system designers.
Azure Day Rome Reloaded 2019 - Deconstructing Kubernetes using AKSazuredayit
This document provides an overview of Kubernetes and containers by beginning with an introduction to containers and their benefits over virtual machines. It then discusses microservices architectures and introduces key Kubernetes concepts like pods, deployments, and services. It explains the Kubernetes architecture by describing the main components like the master node, API server, etcd, workers and kubelet. Finally, it compares Kubernetes to the Azure Kubernetes Service.
Dataplane programming with eBPF: architecture and toolsStefano Salsano
eBPF is definitely a complex technology. Developing complex systems based on eBPF is challenging due to the intrinsic limitations of the model and the known shortcomings of the tool chain.
The learning curve of this technology is very steep and needs continuous coaching from experts. This tutorial will investigate:
What is eBPF and why it has gained a prominent position among the solutions to improve the packet processing performance in Linux/x86 nodes. We will shortly present some important use case scenarios for eBPF, like Kubernetes’ Cilium
The architecture of eBPF and its programming toolchain (e.g. bcc
What are the frameworks for eBPF programming, such as Polycube and InKeV.
How to make eBPF programming easier, more flexible and modular with HIKe/eCLAT
How to implement a custom application logic in eBPF with eCLAT using a python-like script
How to extend the framework and develop new modules
Bare-metal, Docker Containers, and Virtualization: The Growing Choices for Cl...Odinot Stanislas
(FR)
Introduction très sympathique autour des environnements Cloud avec un focus particulier sur la virtualisation et les containers (Docker)
(ENG)
Friendly presentation about Cloud solutions with a focus on virtualization and containers (Docker).
Author: Nicholas Weaver – Principal Architect, Intel Corporation
[ELCE] Activities of super long term support kernel workgroup in civil infras...SZ Lin
The document summarizes the activities of the Super Long Term Support Kernel Workgroup in the Civil Infrastructure Platform Project. It discusses the workgroup's maintenance of Linux kernels for over 10 years, including applying real-time patches and maintaining the kernels as the CIP-RT version. Key tasks include participating in the Linux LTS review process, releasing CIP SLTS kernels, tracking CVEs and failed patches for the CIP kernels. The workgroup aims to provide industrial-grade, sustainable and secure kernels for critical infrastructure projects.
Docker Enterprise Networking and Cisco Contiv - Cisco Live 2017 BRKSDN-2256Mark Church
An overview of Docker networking and how the network is impacted by the deployment of containers. This dives into the specifics of how container networking works and also how the Cisco Contiv networking plugin integrates Cisco networking policies with Docker Enterprise.
CloudNative Days Spring 2021 ONLINE キーノートでの発表資料です。
https://event.cloudnativedays.jp/cndo2021/talks/1071
本セッションでは、DockerとKubernetesのもつ基本的な機能の概要を、コンテナの仕組みをふまえつつイラストを用いて紹介していきます。一般にあまり焦点をあてて取り上げられることは多くありませんが、コンテナの作成や管理を担う低レベルなソフトウェア「コンテナランタイム」も本セッションの中心的なトピックのひとつです。
本セッションは、拙著「イラストで分かるDockerとKubernetes」(技術評論社)の内容を参考にしています。
https://www.amazon.co.jp/dp/4297118378
The Yocto Project is a collaborative open source project that provides prototypes, tools and methods that let you create personalized Linux-based systems for embedded products independent from the hardware architecture. The project was born in 2010 as a partnership of many different hardware manufacturers, open-source operative systems providers and electronic companies, to bring some order to the chaos that was the development of Linux Embedded. Why use Project Yocto? Because it's a development environment for Linux embedded complete with tools, meta-data and documentation - everything that one needs. The free of charge tools that Yocto makes available are powerful and easy to generate (included emulation environments, debuggers, a tool-kit to generate applications and others) and they let you create and continue projects, without causing you a loss of optimizations and investments made in the prototyping phase. Project Yocto supports the adoption of this technology by the open-source community letting users concentrate on the characteristics and development of their product.
ebpf and IO Visor: The What, how, and what next!Affan Syed
Extended BPF (eBPF) provides a mechanism for running custom programs inside the Linux kernel that can be used for filtering network packets, monitoring system activity, and more. eBPF programs are written in a restricted subset of C and compiled to bytecode that is verified by the kernel for safety before being run. The BCC toolkit makes it easier to write and load eBPF programs. The IO Visor project aims to further develop eBPF and provide tools and use cases for networking, security, and system tracing applications.
OpenStack Israel Meetup - Project Kuryr: Bringing Container Networking to Neu...Cloud Native Day Tel Aviv
This document describes Project Kuryr, which aims to use Neutron as the networking abstraction for containerized workloads. It maps container networking concepts like endpoints and sandboxes to equivalent Neutron API entities. This allows containers to leverage Neutron features like security groups, LBaaS, and integration with VM networking. Kuryr includes a libnetwork remote driver, generic VIF binding, and plans to support Kubernetes, Docker Swarm, and other orchestration engines. It brings container and VM networking under a common API without vendor lock-in.
Making Networking Apps Scream on Windows with DPDKMichelle Holley
Abstract: Network bandwidth is precious and milliseconds matter for many user-mode applications and virtual appliances running on both Linux and Windows. In order to get the best network throughput to process and forward packets, developers need direct access to the NIC without going through the host networking stack. Until now, only developers on Linux and FreeBSD platforms were able to use DPDK to obtain these performance benefits but, we are happy to announce that we have an implementation of DPDK for the Windows platform!
Intel, with consultation from Microsoft, created a UIO driver for the Windows kernel to enable DPDK-linked applications running in user-mode to have direct access to NIC hardware resources through a Poll Mode Driver (PMD). We will demonstrate a test application with the same packets per second processing capabilities as Linux. Lastly, we will talk about the evolution of Microsoft Packet Direct and the differences we see between kernel-mediated IO and fast packet processing for user-mode applications with custom protocol stacks.
Speaker Bios: Omar Cardona is a Software Engineering Lead at Microsoft. He drives the design and architecture of Windows Virtual Networking/SDN and accelerations. He’s currently focused on Server and Container solutions for Private and Public Cloud. Prior to Microsoft, he was an Engineering Lead at IBM focusing on Ethernet/RDMA, Virtualization, and Performance, and L0 at the US Air Force. Omar holds over 50 patents and publications in Core Systems and IO design. In his free time, you can find him doing nothing; because he doesn’t have any hobbies. You can reach him at ocardona[at]microsoft.com.
Ranjit Menon is a Network Software Engineer at Intel Corporation who has dabbled in various networking technologies for the past 10 years. He is a big proponent of fast network packet processing and is presently looking to evangelize Windows support for DPDK.
Inria Tech Talk : RIOT, l'OS libre pour vos objets connectés #IoTStéphanie Roger
Faites communiquer vos objets connectés avec la solution RIOT !
RIOT est un nano système d'exploitation open source, l’équivalent de Linux, pour l’internet des objets. Grâce aux standards de communication qu'il implémente, il vous permettra de développer facilement et de façon pérenne et sécurisée vos applications pour vos objets communicants et embarqués (agriculture connectée, suivi et gestion de bâtiments intelligents, petits automatismes, usine du futur ...).
Inria, l'institut national de recherche dédié au numérique, qui à French Tech Central connecte les entrepreneurs au meilleur de la recherche publique française, est un des membres co-fondateurs de la communauté mondiale des développeurs RIOT.
BPF & Cilium - Turning Linux into a Microservices-aware Operating SystemThomas Graf
Container runtimes cause Linux to return to its original purpose: to serve applications interacting directly with the kernel. At the same time, the Linux kernel is traditionally difficult to change and its development process is full of myths. A new efficient in-kernel programming language called eBPF is changing this and allows everyone to extend existing kernel components or glue them together in new forms without requiring to change the kernel itself.
Achieving Performance Isolation with Lightweight Co-KernelsJiannan Ouyang, PhD
This slides were presented at the 24th International Symposium on High-Performance Parallel and Distributed Computing (HPDC '15)
Performance isolation is emerging as a requirement for High Performance Computing (HPC) applications, particularly as HPC architectures turn to in situ data processing and application composition techniques to increase system throughput. These approaches require the co-location of disparate workloads on the same compute node, each with different resource and runtime requirements. In this paper we claim that these workloads cannot be effectively managed by a single Operating System/Runtime (OS/R). Therefore, we present Pisces, a system software architecture that enables the co-existence of multiple independent and fully isolated OS/Rs, or enclaves, that can be customized to address the disparate requirements of next generation HPC workloads. Each enclave consists of a specialized lightweight OS co-kernel and runtime, which is capable of independently managing partitions of dynamically assigned hardware resources. Contrary to other co-kernel approaches, in this work we consider performance isolation to be a primary requirement and present a novel co-kernel architecture to achieve this goal. We further present a set of design requirements necessary to ensure performance isolation, including: (1) elimination of cross OS dependencies, (2) internalized management of I/O, (3) limiting cross enclave communication to explicit shared memory channels, and (4) using virtualization techniques to provide missing OS features. The implementation of the Pisces co-kernel architecture is based on the Kitten Lightweight Kernel and Palacios Virtual Machine Monitor, two system software architectures designed specifically for HPC systems. Finally we will show that lightweight isolated co-kernels can provide better performance for HPC applications, and that isolated virtual machines are even capable of outperforming native environments in the presence of competing workloads.
Design, Build,and Maintain the Embedded Linux PlatformSZ Lin
Using open source software to build an embedded Linux platform from scratch.
Building an embedded Linux platform is like a puzzle; placing the suitable software components in the right positions will constitute an optimal platform. However, selecting suitable components is difficult since it depends on different application scenarios. The essential components of an embedded Linux platform include the bootloader, Linux kernel, toolchain, root filesystem; it also needs the tools for image generation, upgrades, and testing. There are abundant resources in the Linux ecosystem with these components and tools; however, selecting the suitable modules and tools is still a key challenge for system designers.
Method of NUMA-Aware Resource Management for Kubernetes 5G NFV Clusterbyonggon chun
Introduce the container runtime environment which is set up with Kubernetes and various CRI runtimes(Docker, Containerd, CRI-O) and the method of NUMA-aware resource management(CPU Manager, Topology Manager, Etc) for CNF(Containerized Network Function) within Kubernetes and related issues.
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...Akihiro Suda
Rootless mode is a technique to harden containers by running the container engine as a non-root user. The support for rootless mode has been merged into Docker since v19.03 (2019) and in Kubernetes since v1.22 (2021). However, setting up Rootless Kubernetes has been more challenging than setting up Rootless Docker due to its complexity. This session presents Usernetes Generation 2, a Kubernetes distribution that wraps Kubernetes in Rootless Docker for ease of setting up multi-node Rootless Kubernetes clusters. Unlike the original Usernetes (Generation 1) that was based on "Kubernetes The Hard Way", Usernetes Generation 2 supports kubeadm. Usernetes Generation 2 is similar to `kind` and `minikube`, however, unlike them Usernetes Generation 2 supports forming real multi-node clusters using Flannel (VXLAN) and it can be potentially used for production clusters. https://github.com/rootless-containers/usernetes
Cisco Live 2017: Container networking deep dive with Docker Enterprise Editio...Sanjeev Rampal
Container networking with Docker Enterprise Edition (EE) and Cisco Contiv allows for:
1) Defining network policies and security controls across virtual and container workloads using Contiv's open source software.
2) Deploying containerized applications on Docker EE across a swarm of nodes using network and security policies defined in Contiv.
3) Integrating Contiv with underlying data center infrastructure like Cisco Application Centric Infrastructure (ACI) to leverage physical network services and policy enforcement.
Similar to Breaking Down the Entry Barriers on Linux Kernel Networking Stack (20)
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUpanagenda
Webinar Recording: https://www.panagenda.com/webinars/hcl-notes-und-domino-lizenzkostenreduzierung-in-der-welt-von-dlau/
DLAU und die Lizenzen nach dem CCB- und CCX-Modell sind für viele in der HCL-Community seit letztem Jahr ein heißes Thema. Als Notes- oder Domino-Kunde haben Sie vielleicht mit unerwartet hohen Benutzerzahlen und Lizenzgebühren zu kämpfen. Sie fragen sich vielleicht, wie diese neue Art der Lizenzierung funktioniert und welchen Nutzen sie Ihnen bringt. Vor allem wollen Sie sicherlich Ihr Budget einhalten und Kosten sparen, wo immer möglich. Das verstehen wir und wir möchten Ihnen dabei helfen!
Wir erklären Ihnen, wie Sie häufige Konfigurationsprobleme lösen können, die dazu führen können, dass mehr Benutzer gezählt werden als nötig, und wie Sie überflüssige oder ungenutzte Konten identifizieren und entfernen können, um Geld zu sparen. Es gibt auch einige Ansätze, die zu unnötigen Ausgaben führen können, z. B. wenn ein Personendokument anstelle eines Mail-Ins für geteilte Mailboxen verwendet wird. Wir zeigen Ihnen solche Fälle und deren Lösungen. Und natürlich erklären wir Ihnen das neue Lizenzmodell.
Nehmen Sie an diesem Webinar teil, bei dem HCL-Ambassador Marc Thomas und Gastredner Franz Walder Ihnen diese neue Welt näherbringen. Es vermittelt Ihnen die Tools und das Know-how, um den Überblick zu bewahren. Sie werden in der Lage sein, Ihre Kosten durch eine optimierte Domino-Konfiguration zu reduzieren und auch in Zukunft gering zu halten.
Diese Themen werden behandelt
- Reduzierung der Lizenzkosten durch Auffinden und Beheben von Fehlkonfigurationen und überflüssigen Konten
- Wie funktionieren CCB- und CCX-Lizenzen wirklich?
- Verstehen des DLAU-Tools und wie man es am besten nutzt
- Tipps für häufige Problembereiche, wie z. B. Team-Postfächer, Funktions-/Testbenutzer usw.
- Praxisbeispiele und Best Practices zum sofortigen Umsetzen
"Choosing proper type of scaling", Olena SyrotaFwdays
Imagine an IoT processing system that is already quite mature and production-ready and for which client coverage is growing and scaling and performance aspects are life and death questions. The system has Redis, MongoDB, and stream processing based on ksqldb. In this talk, firstly, we will analyze scaling approaches and then select the proper ones for our system.
Taking AI to the Next Level in Manufacturing.pdfssuserfac0301
Read Taking AI to the Next Level in Manufacturing to gain insights on AI adoption in the manufacturing industry, such as:
1. How quickly AI is being implemented in manufacturing.
2. Which barriers stand in the way of AI adoption.
3. How data quality and governance form the backbone of AI.
4. Organizational processes and structures that may inhibit effective AI adoption.
6. Ideas and approaches to help build your organization's AI strategy.
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfChart Kalyan
A Mix Chart displays historical data of numbers in a graphical or tabular form. The Kalyan Rajdhani Mix Chart specifically shows the results of a sequence of numbers over different periods.
Generating privacy-protected synthetic data using Secludy and MilvusZilliz
During this demo, the founders of Secludy will demonstrate how their system utilizes Milvus to store and manipulate embeddings for generating privacy-protected synthetic data. Their approach not only maintains the confidentiality of the original data but also enhances the utility and scalability of LLMs under privacy constraints. Attendees, including machine learning engineers, data scientists, and data managers, will witness first-hand how Secludy's integration with Milvus empowers organizations to harness the power of LLMs securely and efficiently.
Discover top-tier mobile app development services, offering innovative solutions for iOS and Android. Enhance your business with custom, user-friendly mobile applications.
For the full video of this presentation, please visit: https://www.edge-ai-vision.com/2024/06/how-axelera-ai-uses-digital-compute-in-memory-to-deliver-fast-and-energy-efficient-computer-vision-a-presentation-from-axelera-ai/
Bram Verhoef, Head of Machine Learning at Axelera AI, presents the “How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-efficient Computer Vision” tutorial at the May 2024 Embedded Vision Summit.
As artificial intelligence inference transitions from cloud environments to edge locations, computer vision applications achieve heightened responsiveness, reliability and privacy. This migration, however, introduces the challenge of operating within the stringent confines of resource constraints typical at the edge, including small form factors, low energy budgets and diminished memory and computational capacities. Axelera AI addresses these challenges through an innovative approach of performing digital computations within memory itself. This technique facilitates the realization of high-performance, energy-efficient and cost-effective computer vision capabilities at the thin and thick edge, extending the frontier of what is achievable with current technologies.
In this presentation, Verhoef unveils his company’s pioneering chip technology and demonstrates its capacity to deliver exceptional frames-per-second performance across a range of standard computer vision networks typical of applications in security, surveillance and the industrial sector. This shows that advanced computer vision can be accessible and efficient, even at the very edge of our technological ecosystem.
How information systems are built or acquired puts information, which is what they should be about, in a secondary place. Our language adapted accordingly, and we no longer talk about information systems but applications. Applications evolved in a way to break data into diverse fragments, tightly coupled with applications and expensive to integrate. The result is technical debt, which is re-paid by taking even bigger "loans", resulting in an ever-increasing technical debt. Software engineering and procurement practices work in sync with market forces to maintain this trend. This talk demonstrates how natural this situation is. The question is: can something be done to reverse the trend?
Monitoring and Managing Anomaly Detection on OpenShift.pdfTosin Akinosho
Monitoring and Managing Anomaly Detection on OpenShift
Overview
Dive into the world of anomaly detection on edge devices with our comprehensive hands-on tutorial. This SlideShare presentation will guide you through the entire process, from data collection and model training to edge deployment and real-time monitoring. Perfect for those looking to implement robust anomaly detection systems on resource-constrained IoT/edge devices.
Key Topics Covered
1. Introduction to Anomaly Detection
- Understand the fundamentals of anomaly detection and its importance in identifying unusual behavior or failures in systems.
2. Understanding Edge (IoT)
- Learn about edge computing and IoT, and how they enable real-time data processing and decision-making at the source.
3. What is ArgoCD?
- Discover ArgoCD, a declarative, GitOps continuous delivery tool for Kubernetes, and its role in deploying applications on edge devices.
4. Deployment Using ArgoCD for Edge Devices
- Step-by-step guide on deploying anomaly detection models on edge devices using ArgoCD.
5. Introduction to Apache Kafka and S3
- Explore Apache Kafka for real-time data streaming and Amazon S3 for scalable storage solutions.
6. Viewing Kafka Messages in the Data Lake
- Learn how to view and analyze Kafka messages stored in a data lake for better insights.
7. What is Prometheus?
- Get to know Prometheus, an open-source monitoring and alerting toolkit, and its application in monitoring edge devices.
8. Monitoring Application Metrics with Prometheus
- Detailed instructions on setting up Prometheus to monitor the performance and health of your anomaly detection system.
9. What is Camel K?
- Introduction to Camel K, a lightweight integration framework built on Apache Camel, designed for Kubernetes.
10. Configuring Camel K Integrations for Data Pipelines
- Learn how to configure Camel K for seamless data pipeline integrations in your anomaly detection workflow.
11. What is a Jupyter Notebook?
- Overview of Jupyter Notebooks, an open-source web application for creating and sharing documents with live code, equations, visualizations, and narrative text.
12. Jupyter Notebooks with Code Examples
- Hands-on examples and code snippets in Jupyter Notebooks to help you implement and test anomaly detection models.
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...Jason Yip
The typical problem in product engineering is not bad strategy, so much as “no strategy”. This leads to confusion, lack of motivation, and incoherent action. The next time you look for a strategy and find an empty space, instead of waiting for it to be filled, I will show you how to fill it in yourself. If you’re wrong, it forces a correction. If you’re right, it helps create focus. I’ll share how I’ve approached this in the past, both what works and lessons for what didn’t work so well.
5th LF Energy Power Grid Model Meet-up SlidesDanBrown980551
5th Power Grid Model Meet-up
It is with great pleasure that we extend to you an invitation to the 5th Power Grid Model Meet-up, scheduled for 6th June 2024. This event will adopt a hybrid format, allowing participants to join us either through an online Mircosoft Teams session or in person at TU/e located at Den Dolech 2, Eindhoven, Netherlands. The meet-up will be hosted by Eindhoven University of Technology (TU/e), a research university specializing in engineering science & technology.
Power Grid Model
The global energy transition is placing new and unprecedented demands on Distribution System Operators (DSOs). Alongside upgrades to grid capacity, processes such as digitization, capacity optimization, and congestion management are becoming vital for delivering reliable services.
Power Grid Model is an open source project from Linux Foundation Energy and provides a calculation engine that is increasingly essential for DSOs. It offers a standards-based foundation enabling real-time power systems analysis, simulations of electrical power grids, and sophisticated what-if analysis. In addition, it enables in-depth studies and analysis of the electrical power grid’s behavior and performance. This comprehensive model incorporates essential factors such as power generation capacity, electrical losses, voltage levels, power flows, and system stability.
Power Grid Model is currently being applied in a wide variety of use cases, including grid planning, expansion, reliability, and congestion studies. It can also help in analyzing the impact of renewable energy integration, assessing the effects of disturbances or faults, and developing strategies for grid control and optimization.
What to expect
For the upcoming meetup we are organizing, we have an exciting lineup of activities planned:
-Insightful presentations covering two practical applications of the Power Grid Model.
-An update on the latest advancements in Power Grid -Model technology during the first and second quarters of 2024.
-An interactive brainstorming session to discuss and propose new feature requests.
-An opportunity to connect with fellow Power Grid Model enthusiasts and users.
Digital Banking in the Cloud: How Citizens Bank Unlocked Their MainframePrecisely
Inconsistent user experience and siloed data, high costs, and changing customer expectations – Citizens Bank was experiencing these challenges while it was attempting to deliver a superior digital banking experience for its clients. Its core banking applications run on the mainframe and Citizens was using legacy utilities to get the critical mainframe data to feed customer-facing channels, like call centers, web, and mobile. Ultimately, this led to higher operating costs (MIPS), delayed response times, and longer time to market.
Ever-changing customer expectations demand more modern digital experiences, and the bank needed to find a solution that could provide real-time data to its customer channels with low latency and operating costs. Join this session to learn how Citizens is leveraging Precisely to replicate mainframe data to its customer channels and deliver on their “modern digital bank” experiences.
Digital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
Breaking Down the Entry Barriers on Linux Kernel Networking Stack
1. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
Breaking Down the Entry Barriers
on Linux Kernel Networking Stack
Juhee Kang(claudiajkang@gmail.com)
2. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 2
Speaker
Juhee Kang
Open-Source Part Frontier Developer
Project: Linux Kernel Networking Stack, Kubernetes i18n
Interest: Cloud, Network, Backend, etc...
Special Lecture at Universities
- Open-Source Software Development Mechanism.
3. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
Linux Kernel
Networking Stack
1
Step by Step
Kernel Contribution
3
3
INDEX
Kernel Ecosystem
2
4. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 4
Let’s think about it
Linux Kernel Contribution?
5. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 5
Linux Kernel Contribution?
How do I start?
6. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 6
Contribution like other open-sources?
Maybe, contribute through GitHub?
(like any other open source)
7. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 7
Open-Source Contribution: managed with GitHub
File an Issue Create a
Branch
Make a
commit
PR
(Pull Request)
Fetch latest
remote repo
(pull)
merge review
clone
Original repository forked repository
8. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 8
Is Kernel Contribution done in the same way?
9. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 9
Is Kernel Contribution done in the same way?
In torvalds/linux Kernel GitHub repository,
10. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 10
Is Kernel Contribution done in the same way?
Pull Request exists just as other open-source.
11. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 11
Is Kernel Contribution done in the same way?
Pull Request 존재 확인
As KernelPRBot replied,
12. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 12
Is Kernel Contribution done in the same way?
Linux Kernel development doesn't happen on GitHub.
Read-Only mirror purpose
13. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 13
Is Kernel Contribution done in the same way?
detailed guide for kernel contribution
14. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 14
Kernel Contribution?
- Linux Kernel
(https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git)
Instead of using GitHub,
Linux kernel uses its own git service.
15. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
Send
Patch mail
review
15
Kernel Contribution process?
clone
Fetch latest
remote repo
(pull)
merge
Create a
local branch
Make a
commit
Make a
Patch
linux.git
16. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
Send
Patch mail
review
16
Kernel Contribution process?
clone
Fetch latest
remote repo
(pull)
merge
Create a
local branch
Make a
commit
Make a
Patch
linux.git
17. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 17
Kernel Contribution
Where to get source code?
How to configure build env?
What is a patch?
Committing by email?
Countless barriers before we even started...
18. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
In this scenario, suppose we fix a bug.
18
Goal of this session
$ cd samples/bpf
$ make -j
$ ./tracex7
sh: 1: Syntax error: word unexpected (expecting ")")
19. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 19
Goal of this session
Step through the Linux kernel contribution
to break down contribution barriers.
20. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
1
Linux Kernel
Networking Stack
20
21. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 21
Linux Kernel Networking Stack
Packet
Ethernet
Frame
Preamble
Ethernet Frame
Inter
Frame Gap
MAC.
Destination
MAC.
Source
Type PAYLOAD
(IP/IPv6/ARP…)
CRC
8 Bytes 6 Bytes 6 Bytes
2
Bytes 46-1500 Bytes 4 Bytes 12 Bytes
8 64 12
22. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 22
Linux Kernel Networking Stack
Packet
Ethernet
Frame
NIC
Network
Hardware
23. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 23
Linux Kernel Networking Stack
Packet
Ethernet
Frame
NIC
Network
Hardware
???
24. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 24
Linux Kernel Networking Stack
Packet
Ethernet
Frame
NIC
Network
Hardware
??? Userspace Program
Userspace Software
25. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 25
Linux Kernel Networking Stack
Packet
Ethernet
Frame
NIC
Network
Hardware
Kernel
Linux Kernel
Network Stack
Userspace Program
Userspace Software
26. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 26
Linux Kernel Networking Stack
Packet Receiving
Packet Sending
Packet Forwarding
Packet Filtering
Packet Mangling
Packet Tunneling
Routing
NAT
TCP
HSR
UDP
AMT
27. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 27
Basic Packet Path
Packet Receiving
Packet Sending
Packet Forwarding
Packet Filtering
Packet Mangling
Packet Tunneling
Routing
NAT
TCP
HSR
UDP
AMT
28. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
Basic Packet Rx/Tx Path
28
29. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
① Receiving Path ② Forwarding Path ③ Sending Path
🖥️ 🖥️ 🖥️
29
Packet Path
30. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 30
Packet Receiving Path
Packet Kernel
Linux Kernel
Network Stack
Userspace Program
Userspace Software
NIC
Network
Hardware
31. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 31
Packet Receiving Path
🖥️
Host A
192.168.0.1
RX
Application
Transport (L4)
Network (L3)
Data Link (L2)
NIC Driver
Packet NIC Hardware
Network Interface Card receives the packet
32. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 32
Packet Receiving Path
🖥️
Host A
192.168.0.1
RX
Application
Transport (L4)
Network (L3)
Data Link (L2)
NIC Hardware
Packet NIC Driver
Rx/Tx
Queue
From Device Driver, pops the packet from the NIC hardware Queue (RX)
33. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 33
Packet Receiving Path
🖥️
Host A
192.168.0.1
RX
Application
Transport (L4)
Network (L3)
NIC Driver
NIC Hardware
Packet Data Link (L2)
Rx/Tx
Queue
📄
struct sk_buff
Create a sk_buff structure with this packet.
34. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 34
Packet Receiving Path
🖥️
Host A
192.168.0.1
RX
Application
Transport (L4)
Data Link (L2)
NIC Driver
NIC Hardware
Packet Network (L3)
Rx/Tx
Queue
📄
struct sk_buff
IP ARP
Protocol Handler
ICMP
Determines which protocol the packet is,
35. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 35
Packet Receiving Path
🖥️
Host A
192.168.0.1
RX
Application
Network (L3)
Data Link (L2)
NIC Driver
NIC Hardware
Packet Transport (L4)
Rx/Tx
Queue
📄
struct sk_buff
IP ARP
UDP
TCP
Protocol Handler
ICMP
QUIC
Call the appropriate handler function for the protocol
36. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 36
Packet Receiving Path
🖥️
Host A
192.168.0.1
RX
Transport (L4)
Network (L3)
Data Link (L2)
NIC Driver
NIC Hardware
Packet Application
Rx/Tx
Queue
📄
struct sk_buff
IP ARP
UDP
TCP
Protocol Handler
ICMP
QUIC
Hand over processed packet to user applications
37. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
DEVICE DRIVER
UPPER LAYER
Ingress
PROTO HANDLER ROUTING FORWARDING
OUTPUT
INPUT
NEIGH
ROUTING
Egress
L4~
L3
L2
37
Linux Kernel Networking Packet Path
38. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 38
Packet Receiving Path
Packet Kernel
Linux Kernel
Network Stack
Userspace Program
Userspace Software
NIC
Network
Hardware
39. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
DEVICE DRIVER
UPPER LAYER
Ingress
PROTO HANDLER ROUTING FORWARDING
OUTPUT
INPUT
NEIGH
ROUTING
Egress
L4~
L3
L2
39
Packet Receiving Path
After Network Interface Card receives the packet,
Device Driver pops the packet from the NIC hardware Queue (RX)
40. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
DEVICE DRIVER
UPPER LAYER
Ingress
PROTO HANDLER ROUTING FORWARDING
OUTPUT
INPUT
NEIGH
ROUTING
Egress
L4~
L3
L2
40
Packet Receiving Path
Create a sk_buff structure with this packet
41. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
DEVICE DRIVER
UPPER LAYER
Ingress
PROTO HANDLER ROUTING FORWARDING
OUTPUT
INPUT
NEIGH
ROUTING
Egress
L4~
L3
L2
41
Packet Receiving Path
Determine which protocol the packet is
and call the appropriate handler function for the protocol
42. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
DEVICE DRIVER
UPPER LAYER
Ingress
PROTO HANDLER ROUTING FORWARDING
OUTPUT
INPUT
NEIGH
ROUTING
Egress
L4~
L3
L2
42
Packet Receiving Path
Lookup the ROUTING table to identify where the packet is headed
43. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
DEVICE DRIVER
UPPER LAYER
Ingress
PROTO HANDLER ROUTING FORWARDING
OUTPUT
INPUT
NEIGH
ROUTING
Egress
L4~
L3
L2
43
Packet Receiving Path
Lookup the ROUTING table to identify where the packet is headed
$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 _gateway 0.0.0.0 UG 101 0 0 eth0
192.168.0.0 0.0.0.0 255.255.255.0 U 101 0 0 eth0
192.168.0.1 192.168.0.2 255.255.255.255 UGH 0 0 0 veth21
192.168.0.4 192.168.0.3 255.255.255.255 UGH 0 0 0 veth23
_gateway 0.0.0.0 255.255.255.255 UH 101 0 0 eth0
44. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
DEVICE DRIVER
UPPER LAYER
Ingress
PROTO HANDLER ROUTING FORWARDING
OUTPUT
INPUT
NEIGH
ROUTING
Egress
L4~
L3
L2
44
Packet Receiving Path
Preprocess the packet before calling L4 function
45. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
DEVICE DRIVER
UPPER LAYER
Ingress
PROTO HANDLER ROUTING FORWARDING
OUTPUT
INPUT
NEIGH
ROUTING
Egress
L4~
L3
L2
45
Packet Receiving Path
Hand over processed packet to upper layer
46. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
DEVICE DRIVER
UPPER LAYER
Ingress
PROTO HANDLER ROUTING FORWARDING
OUTPUT
INPUT
NEIGH
ROUTING
Egress
L4~
L3
L2
46
Packet Receiving Path
47. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
Packet Kernel
Linux Kernel
Network Stack
Packet
NIC
Network
Hardware
47
Packet Forwarding Path
NIC
Network
Hardware
48. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
DEVICE DRIVER
UPPER LAYER
Ingress
PROTO HANDLER ROUTING FORWARDING
OUTPUT
INPUT
NEIGH
ROUTING
Egress
L4~
L3
L2
48
Packet Forwarding Path
Lookup the ROUTING table to identify where the packet is headed
49. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
DEVICE DRIVER
UPPER LAYER
Ingress
PROTO HANDLER ROUTING FORWARDING
OUTPUT
INPUT
NEIGH
ROUTING
Egress
L4~
L3
L2
49
Packet Forwarding Path
Lookup the ROUTING table to identify where the packet is headed
$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 _gateway 0.0.0.0 UG 101 0 0 eth0
192.168.0.0 0.0.0.0 255.255.255.0 U 101 0 0 eth0
192.168.0.1 192.168.0.2 255.255.255.255 UGH 0 0 0 veth21
192.168.0.4 192.168.0.3 255.255.255.255 UGH 0 0 0 veth23
_gateway 0.0.0.0 255.255.255.255 UH 101 0 0 eth0
50. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
DEVICE DRIVER
UPPER LAYER
Ingress
PROTO HANDLER ROUTING FORWARDING
OUTPUT
INPUT
NEIGH
ROUTING
Egress
L4~
L3
L2
50
Packet Forwarding Path
If forwarding is required, send to corresponding interface
51. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
DEVICE DRIVER
UPPER LAYER
Ingress
PROTO HANDLER ROUTING FORWARDING
OUTPUT
INPUT
NEIGH
ROUTING
Egress
L4~
L3
L2
51
Packet Forwarding Path
Determine the MAC address of the destination to send
52. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
DEVICE DRIVER
UPPER LAYER
Ingress
PROTO HANDLER ROUTING FORWARDING
OUTPUT
INPUT
NEIGH
ROUTING
Egress
L4~
L3
L2
52
Packet Forwarding Path
Send the packet to device driver function
53. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
DEVICE DRIVER
UPPER LAYER
Ingress
PROTO HANDLER ROUTING FORWARDING
OUTPUT
INPUT
NEIGH
ROUTING
Egress
L4~
L3
L2
53
Packet Forwarding Path
Transmit packet through the network interface
54. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
DEVICE DRIVER
UPPER LAYER
Ingress
PROTO HANDLER ROUTING FORWARDING
OUTPUT
INPUT
NEIGH
ROUTING
Egress
L4~
L3
L2
54
Packet Forwarding Path
55. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
Userspace Program
Userspace Software
Kernel
Linux Kernel
Network Stack
Packet
📦
NIC
Network
Hardware
55
Packet Sending Path
56. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
DEVICE DRIVER
UPPER LAYER
Ingress
PROTO HANDLER ROUTING FORWARDING
OUTPUT
INPUT
NEIGH
ROUTING
Egress
L4~
L3
L2
56
Packet Sending Path
Packet handed over from upper layer
57. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
DEVICE DRIVER
UPPER LAYER
Ingress
PROTO HANDLER ROUTING FORWARDING
OUTPUT
INPUT
NEIGH
ROUTING
Egress
L4~
L3
L2
57
Packet Sending Path
Check the ROUTING table to see which interface to send packet
58. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
DEVICE DRIVER
UPPER LAYER
Ingress
PROTO HANDLER ROUTING FORWARDING
OUTPUT
INPUT
NEIGH
ROUTING
Egress
L4~
L3
L2
58
Packet Sending Path
Preprocess the packet for the transmission (ex. fragmentation)
59. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
DEVICE DRIVER
UPPER LAYER
Ingress
PROTO HANDLER ROUTING FORWARDING
OUTPUT
INPUT
NEIGH
ROUTING
Egress
L4~
L3
L2
59
Packet Sending Path
Determine the MAC address of the destination to send
60. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
DEVICE DRIVER
UPPER LAYER
Ingress
PROTO HANDLER ROUTING FORWARDING
OUTPUT
INPUT
NEIGH
ROUTING
Egress
L4~
L3
L2
60
Packet Sending Path
Send the packet to device driver function
61. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
DEVICE DRIVER
UPPER LAYER
Ingress
PROTO HANDLER ROUTING FORWARDING
OUTPUT
INPUT
NEIGH
ROUTING
Egress
L4~
L3
L2
61
Packet Sending Path
Transmit packet through the network interface
62. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
DEVICE DRIVER
UPPER LAYER
Ingress
PROTO HANDLER ROUTING FORWARDING
OUTPUT
INPUT
NEIGH
ROUTING
Egress
L4~
L3
L2
62
Packet Sending Path
63. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
① Receiving Path ② Forwarding Path ③ Sending Path
🖥️ 🖥️ 🖥️
63
Packet Path
64. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 64
Linux Kernel Networking Stack
Packet Receiving
Packet Sending
Packet Forwarding
Packet Filtering
Packet Mangling
Packet Tunneling
Routing
NAT
TCP
HSR
UDP
AMT
65. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 65
Packet Processing
Packet Receiving
Packet Sending
Packet Forwarding
Packet Filtering
Packet Mangling
Packet Tunneling
Routing
NAT
TCP
HSR
UDP
AMT
66. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 66
Network Protocol
Packet Receiving
Packet Sending
Packet Forwarding
Packet Filtering
Packet Mangling
Packet Tunneling
Routing
NAT
TCP
HSR
UDP
AMT
67. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
2
Kernel Ecosystem
67
68. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 68
Linux Kernel
The core of the Linux Operating System
Interface that connects computer hardware to processes
Linux Kernel mascot Tux
69. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 69
Linux Kernel Development
The largest open-source project
involving developers worldwide
https://www.semanticscholar.org/paper/Perpetual-development%3A-A-model-of-the-Linux-kernel-
Feitelson/eb7cf446e983e98c1400c8181949f038caf0c8a8/figure/1
Development is done in units called Patch
70. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
v5.15 v5.16
v5.16-rc1 v5.16-rc2 … v5.16-rc7
Stable
(v5.15)
LTS Release
new kernel released in every 10-11 weeks (2 months), stable kernel released once a week
Kernel Release
70
Stable
(v5.16)
LTS Release
Mainline Kernel Release Candidate (RC)
Stable Long-term
71. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
v5.15 v5.16
Kernel Release - 1. Mainline Kernel
71
- released every 9 to 10 weeks
- New features introduced, major bug fix patches
Mainline Kernel
72. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
- Switch to stable mode after mainline kernel release
- Bug fixes & mainline kernel backporting
Stable
(v5.15)
Kernel Release - 2. Stable
72
Stable
(v5.16)
Stable
v5.15 v5.16
73. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
LTS Release
Kernel Release - 3. LTS Release
73
LTS Release
v5.15 v5.16
- provides a critical bug fix among the stable release versions
LTS Release
74. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
v5.15 v5.16
v5.16-rc1 v5.16-rc2 … v5.16-rc7
Kernel Release - 4. Release Candidate (RC)
74
Release Candidate (RC)
Commit
- "pre-release" of Mainline kernel
- For testing new features
- This release must be compiled from source
- Usually, released up to rc7
75. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 75
Linux Kernel Release Cycle
v5.15 v5.16
5.15 mainline
kernel version release
76. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 76
Linux Kernel Release Cycle
v5.15 v5.16
Stable
(v5.15)
5.15 mainline
kernel version release
5.15 Stable release
77. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 77
Linux Kernel Release Cycle
v5.15 v5.16
Stable
(v5.15)
LTS Release
5.15 mainline
kernel version release
5.15 Stable release
5.15 LTS release
78. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 78
Linux Kernel Release Cycle
v5.15 v5.16
Stable
(v5.15)
LTS Release
5.15 mainline
kernel version release
5.15 Stable release
5.15 LTS release
79. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 79
Linux Kernel Release Cycle
v5.15 v5.16
Stable
(v5.15)
LTS Release
v5.16-rc1
5.15 mainline
kernel version release
v5.16-rc1
5.15 Stable release
5.15 LTS release
80. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 80
Linux Kernel Release Cycle
v5.15 v5.16
Stable
(v5.15)
LTS Release
v5.16-rc1
5.15 mainline
kernel version release
v5.16-rc1
v5.16-rc2
v5.16-rc2
5.15 Stable release
5.15 LTS release
81. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 81
Linux Kernel Release Cycle
v5.15 v5.16
Stable
(v5.15)
LTS Release
v5.16-rc1
5.15 mainline
kernel version release
v5.16-rc1
v5.16-rc2 …
v5.16-rc2 . . .
5.15 Stable release
5.15 LTS release
82. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 82
Linux Kernel Release Cycle
v5.15 v5.16
Stable
(v5.15)
LTS Release
v5.16-rc1
5.15 mainline
kernel version release
v5.16-rc1
v5.16-rc2 …
v5.16-rc2 . . .
5.15 Stable release
5.15 LTS release
v5.16-rc6
83. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 83
Linux Kernel Release Cycle
v5.15 v5.16
Stable
(v5.15)
LTS Release
v5.16-rc1
5.15 mainline
kernel version release
v5.16-rc1
v5.16-rc2 … v5.16-rc7
v5.16-rc2 . . . v5.16-rc7
5.15 Stable release
5.15 LTS release
v5.16-rc6
84. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 84
Linux Kernel Release Cycle
http://vger.kernel.org/~davem/net-next.html
85. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
Merge window
85
Linux Kernel Release Cycle
v5.15 v5.16
Stable
(v5.15)
LTS Release
v5.16-rc1
5.15 mainline
kernel version release
v5.16-rc1
v5.16-rc2 … v5.16-rc7
v5.16-rc2 . . . v5.16-rc7 Merge window
5.15 Stable release
5.15 LTS release
v5.16-rc6
86. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
Merge window
86
Linux Kernel Release Cycle
v5.15 v5.16
Stable
(v5.15)
LTS Release
v5.16-rc1
5.15 mainline
kernel version release
v5.16-rc1
v5.16-rc2 … v5.16-rc7
v5.16-rc2 . . . v5.16-rc7 Merge window
v5.16-rc6
* Merge window (2 weeks)
- Linux Torvalds receives a pull of code from the maintainer of subsystem and adds it together
- New version of the kernel is released after merge window
- After period ends, the kernel is developed every two weeks.
Naming convention: <mainline kernel version name>-rc-<rc version name>
87. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
Merge window
87
Linux Kernel Release Cycle
v5.15 v5.16
Stable
(v5.15)
LTS Release
v5.16-rc1
5.15 mainline
kernel version release
v5.16-rc1
v5.16-rc2 … v5.16-rc7
v5.16-rc2 . . . v5.16-rc7 Merge window
5.16 mainline
kernel version release
5.15 Stable release
5.15 LTS release
v5.16-rc6
88. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 88
Linux Kernel Release Cycle
http://vger.kernel.org/~davem/net-next.html
89. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
Merge window
89
Linux Kernel Release Cycle
v5.15 v5.16
Stable
(v5.15)
LTS Release
v5.16-rc1
5.15 mainline
kernel version release
v5.16-rc1
v5.16-rc2 … v5.16-rc7
v5.16-rc2 . . . v5.16-rc7 Merge window
5.16 mainline
kernel version release
Stable
(v5.16)
5.15 Stable release
5.15 LTS release
5.16 Stable release
v5.16-rc6
90. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
Merge window
90
Linux Kernel Release Cycle
v5.15 v5.16
Stable
(v5.15)
LTS Release
v5.16-rc1
5.15 mainline
kernel version release
v5.16-rc1
v5.16-rc2 … v5.16-rc7
v5.16-rc2 . . . v5.16-rc7 Merge window
5.16 mainline
kernel version release
Stable
(v5.16)
LTS Release
5.15 Stable release
5.15 LTS release
5.16 Stable release
5.16 LTS release
v5.16-rc6
91. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 91
Linux Kernel Subsystem
Inside the kernel there are numerous subsystems,
http://www.MakeLinux.net/kernel/diagram
5.16 mainline
kernel version release
92. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 92
Linux Kernel Subsystem
Inside the kernel there are numerous subsystems,
Features developed by each subsystem are combined to be released as the mainline kernel
http://www.MakeLinux.net/kernel/diagram
5.16 mainline
kernel version release
93. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 93
Linux Kernel Subsystem
Subsystems are developed in each directory of the source code.
http://www.MakeLinux.net/kernel/diagram
linux $ tree -d -L 1
.
├── arch
├── block
├── certs
├── crypto
├── Documentation
├── drivers
├── fs
├── include
├── init
├── ipc
├── kernel
├── lib
├── LICENSES
├── mm
├── net
├── samples
├── scripts
├── security
├── sound
├── tools
├── usr
└── virt
94. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 94
Linux Kernel Subsystem
Network subsystem are developed in net directory of the source code.
http://www.MakeLinux.net/kernel/diagram
linux $ tree -d -L 1
.
├── arch
├── block => block device subsystem
├── certs
├── crypto
├── Documentation
├── drivers => driver subsystem
├── fs => file system subsystem
├── include
├── init
├── ipc => IPC subsystem
├── kernel
├── lib
├── LICENSES
├── mm => memory management subsystem
├── net => network subsystem
├── samples
├── scripts
├── security
├── sound
├── tools
├── usr
└── virt
95. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 95
Kernel Tree
https://git.kernel.org/
kernel code is managed by several major subsystem git repositories,
which is called the Kernel Tree
96. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 96
Kernel Tree
Mainline Kernel tree
- Managed by Linus Torvalds
- Mainline kernel tree & RC release source code
* https://www.devcurmudgeon.com/images/mainline-lts-ltsi-genivi-20131025.pdf#page=18
97. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 97
Kernel Tree
Mainline Kernel tree
- Managed by Linus Torvalds
- Mainline kernel tree & RC release source code
Stable Kernel tree
- Managed by Greg Kroah-Hartman
- stable release branches source code
* https://www.devcurmudgeon.com/images/mainline-lts-ltsi-genivi-20131025.pdf#page=18
98. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 98
Kernel Tree
* https://www.devcurmudgeon.com/images/mainline-lts-ltsi-genivi-20131025.pdf#page=18
Mainline Kernel tree
- Managed by Linus Torvalds
- Mainline kernel tree & RC release source code
Stable Kernel tree
- Managed by Greg Kroah-Hartman
- stable release branches source code
linux-next tree
- Managed by Stephen Rothwell
- Subsystem changes are periodically reflected
- Integrated testing of the code is conducted
- After testing, pull request is performed with mainline kernel tree
99. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 99
Linux Kernel Tree Hierarchy
Developer
Developer
net-next
Developer
Developer
driver-core
Developer
Developer
cgroup
linux
Major subsystems have independent tree
100. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 100
Linux Kernel Tree Hierarchy
Developer
Developer
Maintainer
Developer
Developer
Maintainer
Developer
Developer
Maintainer
Torvalds
Each subsystem tree is managed by "Maintainer"
netdev/net-next.git torvalds/linux.git
gregkh/driver-core.git
tj/cgroup.git
101. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 101
Linux Kernel Tree Hierarchy
These maintainers manage the tree for each subsystem,
and there are two trees in each subsystem
Developer
Developer
Maintainer Torvalds
netdev/net-next.git Mainline Kernel Tree
Developer
Developer
Maintainer Greg
netdev/net.git Stable Kernel Tree
Networking Subsystem
102. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 102
Networking Subsystem Tree
Developer
Developer
Maintainer
Developer
Developer
Maintainer
Developer
Developer
Maintainer
Greg
netdev/net.git
git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git
stable/linux.git
netdev/net.git : netdev Stable Tree
Allow only release version of bug fix patch
103. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 103
Networking Subsystem Tree
Developer
Developer
Maintainer
Developer
Developer
Maintainer
Developer
Developer
Maintainer
Torvalds
netdev/net-next.git torvalds/linux.git
git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git
netdev/net-next.git : netdev Mainline Tree
Feature Enhancement, Bug-Fix tree
104. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 104
Subsystem Tree
$ cat MAINTAINERS | grep -A 30 'NETWORKING [GENERAL]'
NETWORKING [GENERAL]
M: "David S. Miller" <davem@davemloft.net>
M: Eric Dumazet <edumazet@google.com>
M: Jakub Kicinski <kuba@kernel.org>
M: Paolo Abeni <pabeni@redhat.com>
L: netdev@vger.kernel.org
S: Maintained
Q: https://patchwork.kernel.org/project/netdevbpf/list/
B: mailto:netdev@vger.kernel.org
T: git git://git.kernel.org/.../netdev/net.git
T: git git://git.kernel.org/.../netdev/net-next.git
F: Documentation/networking/
F: Documentation/process/maintainer-netdev.rst
F: include/linux/in.h
F: include/linux/net.h
F: include/linux/netdevice.h
F: include/net/
F: include/uapi/linux/in.h
F: include/uapi/linux/net.h
F: include/uapi/linux/net_namespace.h
F: include/uapi/linux/netdevice.h
F: lib/net_utils.c
F: lib/random32.c
F: net/
F: tools/testing/selftests/net/
Developer
Developer
Maintainer
Developer
Developer
Maintainer
Developer
Developer
Maintainer
Torvalds
netdev/net.git
105. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 105
Mailing List
Each subsystem has a mailing list,
where contributors submit and discuss patches.
$ cat MAINTAINERS | grep -A 30 'NETWORKING [GENERAL]'
NETWORKING [GENERAL]
M: "David S. Miller" <davem@davemloft.net>
M: Eric Dumazet <edumazet@google.com>
M: Jakub Kicinski <kuba@kernel.org>
M: Paolo Abeni <pabeni@redhat.com>
L: netdev@vger.kernel.org
S: Maintained
http://vger.kernel.org/vger-lists.html
106. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 106
Patch
Contributing units in the kernel
107. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 107
Patch From 0199215216978b612d4e8be11e878b87bc643033 Mon Sep 17 00:00:00 2001
From: Juhee Kang <claudiajkang@gmail.com>
Date: Sun, 10 Oct 2021 13:03:29 +0900
Subject: [PATCH, net-next] mlxsw: spectrum: use netif_is_macsec() instead of
open code
Open code which is dev->priv_flags & IFF_MACSEC has already defined as
netif_is_macsec(). So use netif_is_macsec() instead of open code.
This patch doesn't change logic.
Signed-off-by: Juhee Kang <claudiajkang@gmail.com>
---
include/linux/netdevice.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index 15f4a658e436..0723c1314ea2 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -5237,7 +5237,7 @@ static inline void netif_keep_dst(struct net_device *dev)
static inline bool netif_reduces_vlan_mtu(struct net_device *dev)
{
/* TODO: reserve and use an additional IFF bit, if we get more users */
- return dev->priv_flags & IFF_MACSEC;
+ return netif_is_macsec(dev);
}
extern struct pernet_operations __net_initdata loopback_net_ops;
--
2.34.1
$ git format-patch -1
--subject-prefix="PATCH, net-next"
Contributing units in the kernel
Developers make a patch of development
108. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
Contributing units in the kernel
Developers make a patch of development
and submit it to the mailing list by email
108
Patch
$ git format-patch -1
--subject-prefix="PATCH, net-next"
$ git send-patch --cc “Network Maintainer
<example@email.com>“ --to “Network
Mailing List <list@email.com>” *.patch
109. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 109
Kernel Development Process
Developer
L: netdev
patch
📧
📜
[PATCH net-next] mlxsw: spectrum: use netif_is_macsec() instead of open code
Open code which is dev->priv_flags & IFF_MACSEC has already defined as
netif_is_macsec(). So use netif_is_macsec() instead of open code.
This patch doesn't change logic.
Signed-off-by: Juhee Kang <claudiajkang@gmail.com>
Contributor create patches
$ git format-patch -1
--subject-prefix="PATCH, net-next"
110. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 110
Kernel Development Process
Developer
L: netdev
📧
📜
[PATCH net-next] mlxsw: spectrum: use netif_is_macsec() instead of open code
Open code which is dev->priv_flags & IFF_MACSEC has already defined as
netif_is_macsec(). So use netif_is_macsec() instead of open code.
This patch doesn't change logic.
Signed-off-by: Juhee Kang <claudiajkang@gmail.com>
Contributor sends patches to the mailing list.
$ git send-patch --cc “Network Maintainer
<example@email.com>“ --to “Network Mailing List
<list@email.com>” *.patch
111. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 111
Kernel Development Process
Developer
L: netdev
patch
📧
📜
From mailing list,
review and discussion is conducted.
[PATCH net-next] mlxsw: spectrum: use netif_is_macsec() instead of open code
Open code which is dev->priv_flags & IFF_MACSEC has already defined as
netif_is_macsec(). So use netif_is_macsec() instead of open code.
This patch doesn't change logic.
Signed-off-by: Juhee Kang <claudiajkang@gmail.com>
112. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 112
Kernel Development Process
Developer
L: netdev
patch
📧
📜
Once the patch has been accepted,
an email will be sent informing that it was
reflected in the subsystem
[PATCH net-next] mlxsw: spectrum: use netif_is_macsec() instead of open code
Open code which is dev->priv_flags & IFF_MACSEC has already defined as
netif_is_macsec(). So use netif_is_macsec() instead of open code.
This patch doesn't change logic.
Signed-off-by: Juhee Kang <claudiajkang@gmail.com>
Maintainer
📧
Re: [PATCH net-next] mlxsw: spectrum: use netif_is_macsec() instead of open ode
Hello:
This series was applied to netdev/net-next.git (master)
by David S. Miller <davem@davemloft.net>:
113. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 113
Kernel Development Process
Developer
Maintainer Torvalds
netdev/net-next.git
Patch is reflected in net-next git tree
📧
📜
114. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 114
Kernel Development Process
Developer
Developer
Maintainer Torvalds
netdev/net-next.git 📧
📜
📜
📜
Maintainer will Send Pull Request to Parent Tree
torvalds/linux.git
115. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 115
Kernel Development Process
Developer
Developer
Maintainer
Developer
Developer
Maintainer
Developer
Developer
Maintainer
Torvalds
netdev/net-next.git
Pull Requests are sent from various subsystems to the parent tree
📧
📜
📜
📜
📧
📜
📜
📜
gregkh/driver-core.git
tj/cgroup.git
torvalds/linux.git
116. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 116
Kernel Development Process
Developer
Developer
Maintainer
Developer
Developer
Maintainer
Developer
Developer
Maintainer
Torvalds
netdev/net-next.git
Code combined to release as new version of kernel
📧
📜
📜
📜
📧
📜
📜
📜
gregkh/driver-core.git
tj/cgroup.git
torvalds/linux.git
Mainline Kernel
Release Candidate (RC)
117. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
① Documentation
② Bug-Fix
③ Feature Enhancement
④ etc..
117
Linux Kernel Contribution
118. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 118
1. Documentation
Improve the documentation
- add undocumented or elaborate details
119. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 119
2. Bug Fix
Fixing Bugs
- fix code to work as expected
120. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
Adding a new feature
- for improved usability
120
3. Feature Enhancement
121. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
Enhance feature
- performance improvement
121
3. Feature Enhancement
122. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
Now let's do Contributions to Linux Kernel
122
123. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
3
Step by Step
Kernel Contribution
123
124. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
In this scenario, suppose we fix a bug.
124
Kernel Patch in Action
125. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 125
Discover a Bug
An error occurred
while running the kernel test script.
$ cd samples/bpf
$ make -j
$ ./tracex7
sh: 1: Syntax error: word unexpected (expecting ")")
126. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 126
Configure Environment: kernel development
Fedora
Debian
OpenSUSE
Ubuntu
Prepare Linux in VM
127. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 127
Configure Environment: kernel development
# apt-get install build-essential vim git cscope
libncurses-dev libssl-dev bison flex bison
# systemctl enable serial-getty@ttyS0.service
# systemctl start serial-getty@ttyS0.service
# systemctl daemon-reload
# vim /etc/default/grub
# update-grub2
Install development packages on Linux VM
128. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 128
Configure Environment: kernel development
Configure Linux for a debugging
# apt-get install build-essential vim git cscope
libncurses-dev libssl-dev bison flex bison
# systemctl enable serial-getty@ttyS0.service
# systemctl start serial-getty@ttyS0.service
# systemctl daemon-reload
# vim /etc/default/grub
# update-grub2
129. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 129
Configure Environment: get kernel source
$ git clone https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git
$ cd net-next
$ git checkout -f main
130. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 130
Reproduce Bug: find the cause
$ cd samples/bpf
$ make -j
$ ./tracex7
sh: 1: Syntax error: word unexpected (expecting ")")
Maybe Kernel test script has a Bug.
An error occurred
while running the kernel test script.
131. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 131
Reproduce Bug: find the cause
An error occurred
while running the kernel test script.
$ cd samples/bpf
$ make -j
$ ./tracex7
sh: 1: Syntax error: word unexpected (expecting ")")
# vim tracex7_user.c
Problem caused by failure
to check argument at runtime
132. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 132
Fix source code: resolve problem
diff --git a/samples/bpf/test_override_return.sh b/samples/bpf/test_override_return.sh
index e68b9ee6814b8b..35db26f736b9d9 100755
--- a/samples/bpf/test_override_return.sh
+++ b/samples/bpf/test_override_return.sh
@@ -1,5 +1,6 @@
#!/bin/bash
+rm -r tmpmnt
rm -f testfile.img
dd if=/dev/zero of=testfile.img bs=1M seek=1000 count=1
DEVICE=$(losetup --show -f testfile.img)
diff --git a/samples/bpf/tracex7_user.c b/samples/bpf/tracex7_user.c
index fdcd6580dd736a..8be7ce18d3ba05 100644
--- a/samples/bpf/tracex7_user.c
+++ b/samples/bpf/tracex7_user.c
@@ -14,6 +14,11 @@ int main(int argc, char **argv)
int ret = 0;
FILE *f;
+ if (!argv[1]) {
+ fprintf(stderr, "ERROR: Run with the btrfs device argument!n");
+ return 0;
+ }
+
snprintf(filename, sizeof(filename), "%s_kern.o", argv[0]);
$ git diff
133. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 133
Write a commit message
After modifying the source code, create a commit with detailed message
$ git commit -s
134. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 134
Write a commit message
Having a trouble with writing commit message? Check previous commit log.
$ git log -- samples/bpf/tracex7_user.c
commit 2bf3e2ef425bc2a164f10b554b7db6a8b4090ef4
samples: bpf: include bpf/bpf.h instead of local libbpf.h
There are two files in the tree called libbpf.h which is becoming
problematic. Most samples don't actually need the local libbpf.h
they simply include it to get to bpf/bpf.h. Include bpf/bpf.h
directly instead.
. . .
commit 965de87e54b803223bff703ea6b2a76c056695ae
Author: Josef Bacik <jbacik@fb.com>
Date: Mon Dec 11 11:36:49 2017 -0500
samples/bpf: add a test for bpf_override_return
< change file name >
135. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 135
Write a commit message
samples: bpf: Fix tracex7 error raised on the missing argument
The current behavior of 'tracex7' doesn't consist with other bpf samples
tracex{1..6}. Other samples do not require any argument to run with, but
tracex7 should be run with btrfs device argument. (it should be executed
with test_override_return.sh)
Currently, tracex7 doesn't have any description about how to run this
program and raises an unexpected error. And this result might be
confusing since users might not have a hunch about how to run this
program.
. . .
In order to fix this error, this commit adds logic to report a message
and exit when running this program with a missing argument.
Additionally in test_override_return.sh, there is a problem with
multiple directory(tmpmnt) creation. So in this commit adds a line with
removing the directory with every execution.
Signed-off-by: Juhee Kang <claudiajkang@gmail.com>
Write commit message in detail.
136. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 136
Write a commit message
samples: bpf: Fix tracex7 error raised on the missing argument
The current behavior of 'tracex7' doesn't consist with other bpf samples
tracex{1..6}. Other samples do not require any argument to run with, but
tracex7 should be run with btrfs device argument. (it should be executed
with test_override_return.sh)
Currently, tracex7 doesn't have any description about how to run this
program and raises an unexpected error. And this result might be
confusing since users might not have a hunch about how to run this
program.
// Current behavior
# ./tracex7
sh: 1: Syntax error: word unexpected (expecting ")")
// Fixed behavior
# ./tracex7 ERROR: Run with the btrfs device argument!
In order to fix this error, this commit adds logic to report a message
and exit when running this program with a missing argument.
Additionally in test_override_return.sh, there is a problem with
multiple directory(tmpmnt) creation. So in this commit adds a line with
removing the directory with every execution.
Signed-off-by: Juhee Kang <claudiajkang@gmail.com>
Commit description
- elaborate detail
- 72 characters per line
If necessary,
describe how to reproduce
(for detailed explanation)
Commit Tag
- Add Signed-off-by Tag
Commit Header
- less than 50 characters
137. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 137
Other Commit Tags
1) Signed-off-by
understood the licensing policy, agree to submit commit
2) Acked-by
maintainer reviewed the patch and decided to approve the patch
3) Reviewed-by
Reviewer or another developer reviewed the code for the patch
4) Tested-by
Reviewer or other developer tested for changes to the patch
5) Reported-by / Suggested-by
Tags left to indicate who found the bug or suggested the feature
6) Fixes
Tags that track bugs(commit) that this patch fixes
mlxsw: spectrum: use netif_is_macsec() instead of open code
=== Commit Body ===
Signed-off-by: Juhee Kang <claudiajkang@gmail.com>
Commit Tag Detail
samples: bpf: Fix tracex7 error raised on the missing argument
=== Commit Body ===
Acked-by: Yonghong Song <yhs@fb.com>
amt: Use BIT macros instead of open codes
=== Commit Body ===
Reviewed-by: Taehee Yoo <ap420073@gmail.com>
Tested-by: Taehee Yoo <ap420073@gmail.com>
net: hsr: fix hsr build error when lockdep is not enabled
=== Commit Body ===
Reported-by: Eric Dumazet <eric.dumazet@gmail.com>
bpf_glue: include errno.h
=== Commit Body ===
Fixes: ac4e0913beb1 (“bpf: Export bpf syscall wrapper”)
138. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 138
Configure Environment: prepare to send patch
send patches with git-email
# apt-get install git-email
$ git config --global sendemail.smtpencryption tls
$ git config --global sendemail.smtpserver <mailserver>
$ git config --global sendemail.smtpuser <email>
$ git config --global sendemail.smtpserverport 587
$ git config --global sendemail.smtppass <password>
Configure smtp account with git config
ex) gmail smtp
139. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 139
Create patch and check format
$ git format-patch -1 --subject-prefix=“PATCH, bpf-next“
total: 0 errors, 0 warnings, 0 checks, 17 lines checked
0001-*.patch has no obvious style problems and is ready for submission.
140. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 140
Create patch and check format
$ git format-patch -1 --subject-prefix=“PATCH, bpf-next“
<Add kernel tree to mail prefix>
total: 0 errors, 0 warnings, 0 checks, 17 lines checked
0001-*.patch has no obvious style problems and is ready for submission.
<commit count>
141. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 141
Create patch and check format
$ git format-patch -1 --subject-prefix=“PATCH, bpf-next“
0001-samples-bpf-Fix-tracex7-error-raised-on-the-missing-.patch
total: 0 errors, 0 warnings, 0 checks, 17 lines checked
0001-*.patch has no obvious style problems and is ready for submission.
<Add kernel tree to mail prefix>
<commit count>
142. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 142
Create patch and check format
$ git format-patch -1 --subject-prefix=“PATCH, bpf-next“
0001-samples-bpf-Fix-tracex7-error-raised-on-the-missing-.patch
$ apt-get install codespell python-ply python-git
$ ./scripts/checkpatch.pl --strict --codespell 0001-*.patch
total: 0 errors, 0 warnings, 0 checks, 17 lines checked
0001-*.patch has no obvious style problems and is ready for submission.
<created patch file here>
143. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 143
Create patch and check format
$ git format-patch -1 --subject-prefix=“PATCH, bpf-next“
0001-samples-bpf-Fix-tracex7-error-raised-on-the-missing-.patch
$ apt-get install codespell python-ply python-git
$ ./scripts/checkpatch.pl --strict --codespell 0001-*.patch
total: 0 errors, 0 warnings, 0 checks, 17 lines checked
0001-*.patch has no obvious style problems and is ready for submission.
< Good to go! >
144. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 144
Find patch mail recipients and send
$ ./scripts/get_maintainer.pl –-no-multiline -–no-rolestats 0001-*.patch
Alexei Starovoitov <ast@kernel.org>, Daniel Borkmann <daniel@iogearbox.net>,
Andrii Nakryiko <andrii@kernel.org>, netdev@vger.kernel.org, bpf@vger.kernel.org
$ git send-email --to=“maintainer mail” --to=“mailing list mail” 0001-*.patch
Send this email? ([y]es|[n]o|[q]uit|[a]ll):
[...]
Result: OK
<created patch file here>
Find maintainers
&mailing lists
145. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 145
Find patch mail recipients and send
$ ./scripts/get_maintainer.pl –-no-multiline -–no-rolestats 0001-*.patch
Alexei Starovoitov <ast@kernel.org>, Daniel Borkmann <daniel@iogearbox.net>,
Andrii Nakryiko <andrii@kernel.org>, netdev@vger.kernel.org, bpf@vger.kernel.org
$ git send-email --to=“maintainer mail” --to=“mailing list mail” 0001-*.patch
Send this email? ([y]es|[n]o|[q]uit|[a]ll):
[...]
Result: OK
Find maintainers
&mailing lists
146. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 146
Find patch mail recipients and send
$ ./scripts/get_maintainer.pl –-no-multiline -–no-rolestats 0001-*.patch
Alexei Starovoitov <ast@kernel.org>, Daniel Borkmann <daniel@iogearbox.net>,
Andrii Nakryiko <andrii@kernel.org>, netdev@vger.kernel.org, bpf@vger.kernel.org
$ git send-email --to=“maintainer mail” --to=“mailing list mail” 0001-*.patch
Send this email? ([y]es|[n]o|[q]uit|[a]ll): Y
[...]
Result: OK Send mail
147. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 147
Make sure mail has been sent
You can check the patch through Gmail
148. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 148
Make sure mail has been sent
https://patchwork.kernel.org/project/netdevbpf/list
You can check the patch through Patchwork as well
(Patchwork : Discussions and development of subsystem View patches.)
149. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 149
Check for review
From: Andrii Nakryiko <andrii.nakryiko@gmail.com>
To: Juhee Kang <claudiajkang@gmail.com>
Cc: Daniel Borkmann <daniel@iogearbox.net>, Alexei Starovoitov <ast@kernel.org>,
Andrii Nakryiko <andrii@kernel.org>, Networking <netdev@vger.kernel.org>, bpf <bpf@vger.kernel.org>
Subject: Re: [bpf-next 1/2] samples: bpf: Fix tracex7 error raised on the missing argument
On Sat, Jul 24, 2021 at 8:21 AM Juhee Kang <claudiajkang@gmail.com> wrote:
[...]
> diff --git a/samples/bpf/test_override_return.sh b/samples/bpf/test_override_return.sh
> index e68b9ee6814b..6480b55502c7 100755
> --- a/samples/bpf/test_override_return.sh
> +++ b/samples/bpf/test_override_return.sh
> @@ -1,5 +1,6 @@
> #!/bin/bash
>
> +rm -rf tmpmnt
Do we need -rf or -r would do?
[...]
> --
> 2.27.0
150. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 150
Reply to review
From: Juhee Kang <claudiajkang@gmail.com>
To: Andrii Nakryiko <andrii.nakryiko@gmail.com>
Cc: Daniel Borkmann <daniel@iogearbox.net>, Alexei Starovoitov <ast@kernel.org>,
Andrii Nakryiko <andrii@kernel.org>, Networking <netdev@vger.kernel.org>, bpf <bpf@vger.kernel.org>
Subject: Re: [bpf-next 1/2] samples: bpf: Fix tracex7 error raised on the missing argument
On Tue, Jul 27, 2021 at 5:08 AM Andrii Nakryiko <andrii.nakryiko@gmail.com> wrote:
> On Sat, Jul 24, 2021 at 8:21 AM Juhee Kang <claudiajkang@gmail.com> wrote:
[...]
> > +rm -rf tmpmnt
> Do we need -rf or -r would do?
It works properly using only -r.
Thanks for pointing it out! I will stick to this method.
I will send the next version as soon as possible.
[...]
> > 2.27.0
151. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 151
Modify Code and create second Patch
$ git format-patch -1 –v2 --subject-prefix=“PATCH, bpf-next“
v2-0001-samples-bpf-Fix-tracex7-error-raised-on-the-missing-.patch
$ ./scripts/checkpatch.pl --strict --codespell v2-0001-*.patch
total: 0 errors, 0 warnings, 0 checks, 17 lines checked
v2-0001-*.patch has no obvious style problems and is ready for submission.
< Specify version of the patch >
152. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 152
Find patch mail recipients and send
$ ./scripts/get_maintainer.pl –-no-multiline -–no-rolestats v2-0001-*.patch
Alexei Starovoitov <ast@kernel.org>, Daniel Borkmann <daniel@iogearbox.net>,
Andrii Nakryiko <andrii@kernel.org>, netdev@vger.kernel.org, bpf@vger.kernel.org
$ git send-email --to=“maintainer mail” --to=“mailing list mail” v2-0001-*.patch
Send this email? ([y]es|[n]o|[q]uit|[a]ll): Y
[...]
Result: OK Send mail
153. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 153
Patch accept
From: patchwork-bot+netdevbpf <patchwork-bot+netdevbpf@kernel.org>
To: Juhee Kang <claudiajkang@gmail.com>
Subject: Re: [bpf-next v2 1/2] samples: bpf: Fix tracex7 error raised on the missing argument
Hello:
This series was applied to bpf/bpf-next.git (refs/heads/master):
On Tue, 27 Jul 2021 04:10:55 +0000 you wrote:
> The current behavior of 'tracex7' doesn't consist with other bpf samples
> tracex{1..6}. Other samples do not require any argument to run with, but
> tracex7 should be run with btrfs device argument. (it should be executed
> with test_override_return.sh)
> [...]
Here is the summary with links:
- [bpf-next,v2,1/2] samples: bpf: Fix tracex7 error raised on the missing argument
https://git.kernel.org/bpf/bpf-next/c/7d07006f0592
- [bpf-next,v2,2/2] samples: bpf: Add the omitted xdp samples to .gitignore
https://git.kernel.org/bpf/bpf-next/c/05e9b4f60d31
You are awesome, thank you! You can also check it through Gmail
154. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 154
Patch accept
https://patchwork.kernel.org/project/netdevbpf/list
If the patch is reflected, the state about the patch in patchwork changes to accept.
155. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
This was a quick guide to Linux kernel contribution
155
156. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 156
Need help with kernel patching?
Participate in the kernel-related Contribution program
157. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
Hope you've overcome the barriers to kernel contribution!
158
158. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
Q&A