SlideShare a Scribd company logo
1 of 158
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)
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.
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
UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 4
Let’s think about it
Linux Kernel Contribution?
UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 5
Linux Kernel Contribution?
How do I start?
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)
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
UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 8
Is Kernel Contribution done in the same way?
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,
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.
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,
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
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
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.
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
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
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...
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 ")")
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.
UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
1
Linux Kernel
Networking Stack
20
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
UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 22
Linux Kernel Networking Stack
Packet
Ethernet
Frame
NIC
Network
Hardware
UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 23
Linux Kernel Networking Stack
Packet
Ethernet
Frame
NIC
Network
Hardware
???
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
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
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
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
UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
Basic Packet Rx/Tx Path
28
UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
① Receiving Path ② Forwarding Path ③ Sending Path
🖥️ 🖥️ 🖥️
29
Packet Path
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
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
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)
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.
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,
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
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
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
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
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)
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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)
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
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
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
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
UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
① Receiving Path ② Forwarding Path ③ Sending Path
🖥️ 🖥️ 🖥️
63
Packet Path
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
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
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
UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
2
Kernel Ecosystem
67
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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>
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 106
Patch
Contributing units in the kernel
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
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
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"
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
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>
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>:
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
📧
📜
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
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
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)
UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
① Documentation
② Bug-Fix
③ Feature Enhancement
④ etc..
117
Linux Kernel Contribution
UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 118
1. Documentation
Improve the documentation
- add undocumented or elaborate details
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
UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
Adding a new feature
- for improved usability
120
3. Feature Enhancement
UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
Enhance feature
- performance improvement
121
3. Feature Enhancement
UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
Now let's do Contributions to Linux Kernel
122
UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
3
Step by Step
Kernel Contribution
123
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
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 ")")
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
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
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
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
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.
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
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
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
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 >
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.
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
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”)
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
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.
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>
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>
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>
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! >
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
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
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
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
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.)
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
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
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 >
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
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
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.
UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
This was a quick guide to Linux kernel contribution
155
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
UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
Hope you've overcome the barriers to kernel contribution!
158
UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack
Q&A

More Related Content

What's hot

Linux Kernel Crashdump
Linux Kernel CrashdumpLinux Kernel Crashdump
Linux Kernel CrashdumpMarian Marinov
 
A Kernel of Truth: Intrusion Detection and Attestation with eBPF
A Kernel of Truth: Intrusion Detection and Attestation with eBPFA Kernel of Truth: Intrusion Detection and Attestation with eBPF
A Kernel of Truth: Intrusion Detection and Attestation with eBPFoholiab
 
LinuxCon 2015 Linux Kernel Networking Walkthrough
LinuxCon 2015 Linux Kernel Networking WalkthroughLinuxCon 2015 Linux Kernel Networking Walkthrough
LinuxCon 2015 Linux Kernel Networking WalkthroughThomas Graf
 
Cilium - BPF & XDP for containers
 Cilium - BPF & XDP for containers Cilium - BPF & XDP for containers
Cilium - BPF & XDP for containersDocker, Inc.
 
eBPF Trace from Kernel to Userspace
eBPF Trace from Kernel to UserspaceeBPF Trace from Kernel to Userspace
eBPF Trace from Kernel to UserspaceSUSE Labs Taipei
 
Linux 4.x Tracing: Performance Analysis with bcc/BPF
Linux 4.x Tracing: Performance Analysis with bcc/BPFLinux 4.x Tracing: Performance Analysis with bcc/BPF
Linux 4.x Tracing: Performance Analysis with bcc/BPFBrendan Gregg
 
Fun with Network Interfaces
Fun with Network InterfacesFun with Network Interfaces
Fun with Network InterfacesKernel TLV
 
Arm device tree and linux device drivers
Arm device tree and linux device driversArm device tree and linux device drivers
Arm device tree and linux device driversHoucheng Lin
 
malloc & vmalloc in Linux
malloc & vmalloc in Linuxmalloc & vmalloc in Linux
malloc & vmalloc in LinuxAdrian Huang
 
BPF - in-kernel virtual machine
BPF - in-kernel virtual machineBPF - in-kernel virtual machine
BPF - in-kernel virtual machineAlexei Starovoitov
 
Kernel_Crash_Dump_Analysis
Kernel_Crash_Dump_AnalysisKernel_Crash_Dump_Analysis
Kernel_Crash_Dump_AnalysisBuland Singh
 
alphorm.com - Formation Linux LPIC-1/Comptia Linux+
alphorm.com - Formation Linux LPIC-1/Comptia Linux+alphorm.com - Formation Linux LPIC-1/Comptia Linux+
alphorm.com - Formation Linux LPIC-1/Comptia Linux+Alphorm
 
Intel DPDK Step by Step instructions
Intel DPDK Step by Step instructionsIntel DPDK Step by Step instructions
Intel DPDK Step by Step instructionsHisaki Ohara
 
Linux KVM のコードを追いかけてみよう
Linux KVM のコードを追いかけてみようLinux KVM のコードを追いかけてみよう
Linux KVM のコードを追いかけてみようTsuyoshi OZAWA
 
Hardware Probing in the Linux Kernel
Hardware Probing in the Linux KernelHardware Probing in the Linux Kernel
Hardware Probing in the Linux KernelKernel TLV
 
Network Programming: Data Plane Development Kit (DPDK)
Network Programming: Data Plane Development Kit (DPDK)Network Programming: Data Plane Development Kit (DPDK)
Network Programming: Data Plane Development Kit (DPDK)Andriy Berestovskyy
 
Meet cute-between-ebpf-and-tracing
Meet cute-between-ebpf-and-tracingMeet cute-between-ebpf-and-tracing
Meet cute-between-ebpf-and-tracingViller Hsiao
 

What's hot (20)

Linux Kernel Crashdump
Linux Kernel CrashdumpLinux Kernel Crashdump
Linux Kernel Crashdump
 
A Kernel of Truth: Intrusion Detection and Attestation with eBPF
A Kernel of Truth: Intrusion Detection and Attestation with eBPFA Kernel of Truth: Intrusion Detection and Attestation with eBPF
A Kernel of Truth: Intrusion Detection and Attestation with eBPF
 
LinuxCon 2015 Linux Kernel Networking Walkthrough
LinuxCon 2015 Linux Kernel Networking WalkthroughLinuxCon 2015 Linux Kernel Networking Walkthrough
LinuxCon 2015 Linux Kernel Networking Walkthrough
 
Cilium - BPF & XDP for containers
 Cilium - BPF & XDP for containers Cilium - BPF & XDP for containers
Cilium - BPF & XDP for containers
 
eBPF Trace from Kernel to Userspace
eBPF Trace from Kernel to UserspaceeBPF Trace from Kernel to Userspace
eBPF Trace from Kernel to Userspace
 
Understanding DPDK
Understanding DPDKUnderstanding DPDK
Understanding DPDK
 
Linux 4.x Tracing: Performance Analysis with bcc/BPF
Linux 4.x Tracing: Performance Analysis with bcc/BPFLinux 4.x Tracing: Performance Analysis with bcc/BPF
Linux 4.x Tracing: Performance Analysis with bcc/BPF
 
Fun with Network Interfaces
Fun with Network InterfacesFun with Network Interfaces
Fun with Network Interfaces
 
Arm device tree and linux device drivers
Arm device tree and linux device driversArm device tree and linux device drivers
Arm device tree and linux device drivers
 
malloc & vmalloc in Linux
malloc & vmalloc in Linuxmalloc & vmalloc in Linux
malloc & vmalloc in Linux
 
BPF - in-kernel virtual machine
BPF - in-kernel virtual machineBPF - in-kernel virtual machine
BPF - in-kernel virtual machine
 
Kernel_Crash_Dump_Analysis
Kernel_Crash_Dump_AnalysisKernel_Crash_Dump_Analysis
Kernel_Crash_Dump_Analysis
 
alphorm.com - Formation Linux LPIC-1/Comptia Linux+
alphorm.com - Formation Linux LPIC-1/Comptia Linux+alphorm.com - Formation Linux LPIC-1/Comptia Linux+
alphorm.com - Formation Linux LPIC-1/Comptia Linux+
 
Intel DPDK Step by Step instructions
Intel DPDK Step by Step instructionsIntel DPDK Step by Step instructions
Intel DPDK Step by Step instructions
 
Linux KVM のコードを追いかけてみよう
Linux KVM のコードを追いかけてみようLinux KVM のコードを追いかけてみよう
Linux KVM のコードを追いかけてみよう
 
Linux Network Stack
Linux Network StackLinux Network Stack
Linux Network Stack
 
Hardware Probing in the Linux Kernel
Hardware Probing in the Linux KernelHardware Probing in the Linux Kernel
Hardware Probing in the Linux Kernel
 
Network Programming: Data Plane Development Kit (DPDK)
Network Programming: Data Plane Development Kit (DPDK)Network Programming: Data Plane Development Kit (DPDK)
Network Programming: Data Plane Development Kit (DPDK)
 
Meet cute-between-ebpf-and-tracing
Meet cute-between-ebpf-and-tracingMeet cute-between-ebpf-and-tracing
Meet cute-between-ebpf-and-tracing
 
Dpdk applications
Dpdk applicationsDpdk applications
Dpdk applications
 

Similar to Breaking Down the Entry Barriers on Linux Kernel Networking Stack

"One network to rule them all" - OpenStack Summit Austin 2016
"One network to rule them all" - OpenStack Summit Austin 2016"One network to rule them all" - OpenStack Summit Austin 2016
"One network to rule them all" - OpenStack Summit Austin 2016Phil Estes
 
Linux rumpkernel - ABC2018 (AsiaBSDCon 2018)
Linux rumpkernel - ABC2018 (AsiaBSDCon 2018)Linux rumpkernel - ABC2018 (AsiaBSDCon 2018)
Linux rumpkernel - ABC2018 (AsiaBSDCon 2018)Hajime Tazaki
 
Using open source software to build an industrial grade embedded linux platfo...
Using open source software to build an industrial grade embedded linux platfo...Using open source software to build an industrial grade embedded linux platfo...
Using open source software to build an industrial grade embedded linux platfo...SZ Lin
 
Azure Day Rome Reloaded 2019 - Deconstructing Kubernetes using AKS
Azure Day Rome Reloaded 2019 - Deconstructing Kubernetes using AKSAzure Day Rome Reloaded 2019 - Deconstructing Kubernetes using AKS
Azure Day Rome Reloaded 2019 - Deconstructing Kubernetes using AKSazuredayit
 
Dataplane programming with eBPF: architecture and tools
Dataplane programming with eBPF: architecture and toolsDataplane programming with eBPF: architecture and tools
Dataplane programming with eBPF: architecture and toolsStefano Salsano
 
Bare-metal, Docker Containers, and Virtualization: The Growing Choices for Cl...
Bare-metal, Docker Containers, and Virtualization: The Growing Choices for Cl...Bare-metal, Docker Containers, and Virtualization: The Growing Choices for Cl...
Bare-metal, Docker Containers, and Virtualization: The Growing Choices for Cl...Odinot Stanislas
 
[ELCE] Activities of super long term support kernel workgroup in civil infras...
[ELCE] Activities of super long term support kernel workgroup in civil infras...[ELCE] Activities of super long term support kernel workgroup in civil infras...
[ELCE] Activities of super long term support kernel workgroup in civil infras...SZ Lin
 
Docker Enterprise Networking and Cisco Contiv - Cisco Live 2017 BRKSDN-2256
Docker Enterprise Networking and Cisco Contiv - Cisco Live 2017 BRKSDN-2256Docker Enterprise Networking and Cisco Contiv - Cisco Live 2017 BRKSDN-2256
Docker Enterprise Networking and Cisco Contiv - Cisco Live 2017 BRKSDN-2256Mark Church
 
DockerとKubernetesをかけめぐる
DockerとKubernetesをかけめぐるDockerとKubernetesをかけめぐる
DockerとKubernetesをかけめぐるKohei Tokunaga
 
Linux day 2016 Yocto Project
Linux day 2016 Yocto ProjectLinux day 2016 Yocto Project
Linux day 2016 Yocto ProjectMarco Cavallini
 
ebpf and IO Visor: The What, how, and what next!
ebpf and IO Visor: The What, how, and what next!ebpf and IO Visor: The What, how, and what next!
ebpf and IO Visor: The What, how, and what next!Affan Syed
 
OpenStack Israel Meetup - Project Kuryr: Bringing Container Networking to Neu...
OpenStack Israel Meetup - Project Kuryr: Bringing Container Networking to Neu...OpenStack Israel Meetup - Project Kuryr: Bringing Container Networking to Neu...
OpenStack Israel Meetup - Project Kuryr: Bringing Container Networking to Neu...Cloud Native Day Tel Aviv
 
Making Networking Apps Scream on Windows with DPDK
Making Networking Apps Scream on Windows with DPDKMaking Networking Apps Scream on Windows with DPDK
Making Networking Apps Scream on Windows with DPDKMichelle Holley
 
Inria Tech Talk : RIOT, l'OS libre pour vos objets connectés #IoT
Inria Tech Talk : RIOT, l'OS libre pour vos objets connectés #IoTInria Tech Talk : RIOT, l'OS libre pour vos objets connectés #IoT
Inria Tech Talk : RIOT, l'OS libre pour vos objets connectés #IoTStéphanie Roger
 
BPF & Cilium - Turning Linux into a Microservices-aware Operating System
BPF  & Cilium - Turning Linux into a Microservices-aware Operating SystemBPF  & Cilium - Turning Linux into a Microservices-aware Operating System
BPF & Cilium - Turning Linux into a Microservices-aware Operating SystemThomas Graf
 
Achieving Performance Isolation with Lightweight Co-Kernels
Achieving Performance Isolation with Lightweight Co-KernelsAchieving Performance Isolation with Lightweight Co-Kernels
Achieving Performance Isolation with Lightweight Co-KernelsJiannan Ouyang, PhD
 
Design, Build,and Maintain the Embedded Linux Platform
Design, Build,and Maintain the Embedded Linux PlatformDesign, Build,and Maintain the Embedded Linux Platform
Design, Build,and Maintain the Embedded Linux PlatformSZ Lin
 
Method of NUMA-Aware Resource Management for Kubernetes 5G NFV Cluster
Method of NUMA-Aware Resource Management for Kubernetes 5G NFV ClusterMethod of NUMA-Aware Resource Management for Kubernetes 5G NFV Cluster
Method of NUMA-Aware Resource Management for Kubernetes 5G NFV Clusterbyonggon chun
 
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...Akihiro Suda
 
Cisco Live 2017: Container networking deep dive with Docker Enterprise Editio...
Cisco Live 2017: Container networking deep dive with Docker Enterprise Editio...Cisco Live 2017: Container networking deep dive with Docker Enterprise Editio...
Cisco Live 2017: Container networking deep dive with Docker Enterprise Editio...Sanjeev Rampal
 

Similar to Breaking Down the Entry Barriers on Linux Kernel Networking Stack (20)

"One network to rule them all" - OpenStack Summit Austin 2016
"One network to rule them all" - OpenStack Summit Austin 2016"One network to rule them all" - OpenStack Summit Austin 2016
"One network to rule them all" - OpenStack Summit Austin 2016
 
Linux rumpkernel - ABC2018 (AsiaBSDCon 2018)
Linux rumpkernel - ABC2018 (AsiaBSDCon 2018)Linux rumpkernel - ABC2018 (AsiaBSDCon 2018)
Linux rumpkernel - ABC2018 (AsiaBSDCon 2018)
 
Using open source software to build an industrial grade embedded linux platfo...
Using open source software to build an industrial grade embedded linux platfo...Using open source software to build an industrial grade embedded linux platfo...
Using open source software to build an industrial grade embedded linux platfo...
 
Azure Day Rome Reloaded 2019 - Deconstructing Kubernetes using AKS
Azure Day Rome Reloaded 2019 - Deconstructing Kubernetes using AKSAzure Day Rome Reloaded 2019 - Deconstructing Kubernetes using AKS
Azure Day Rome Reloaded 2019 - Deconstructing Kubernetes using AKS
 
Dataplane programming with eBPF: architecture and tools
Dataplane programming with eBPF: architecture and toolsDataplane programming with eBPF: architecture and tools
Dataplane programming with eBPF: architecture and tools
 
Bare-metal, Docker Containers, and Virtualization: The Growing Choices for Cl...
Bare-metal, Docker Containers, and Virtualization: The Growing Choices for Cl...Bare-metal, Docker Containers, and Virtualization: The Growing Choices for Cl...
Bare-metal, Docker Containers, and Virtualization: The Growing Choices for Cl...
 
[ELCE] Activities of super long term support kernel workgroup in civil infras...
[ELCE] Activities of super long term support kernel workgroup in civil infras...[ELCE] Activities of super long term support kernel workgroup in civil infras...
[ELCE] Activities of super long term support kernel workgroup in civil infras...
 
Docker Enterprise Networking and Cisco Contiv - Cisco Live 2017 BRKSDN-2256
Docker Enterprise Networking and Cisco Contiv - Cisco Live 2017 BRKSDN-2256Docker Enterprise Networking and Cisco Contiv - Cisco Live 2017 BRKSDN-2256
Docker Enterprise Networking and Cisco Contiv - Cisco Live 2017 BRKSDN-2256
 
DockerとKubernetesをかけめぐる
DockerとKubernetesをかけめぐるDockerとKubernetesをかけめぐる
DockerとKubernetesをかけめぐる
 
Linux day 2016 Yocto Project
Linux day 2016 Yocto ProjectLinux day 2016 Yocto Project
Linux day 2016 Yocto Project
 
ebpf and IO Visor: The What, how, and what next!
ebpf and IO Visor: The What, how, and what next!ebpf and IO Visor: The What, how, and what next!
ebpf and IO Visor: The What, how, and what next!
 
OpenStack Israel Meetup - Project Kuryr: Bringing Container Networking to Neu...
OpenStack Israel Meetup - Project Kuryr: Bringing Container Networking to Neu...OpenStack Israel Meetup - Project Kuryr: Bringing Container Networking to Neu...
OpenStack Israel Meetup - Project Kuryr: Bringing Container Networking to Neu...
 
Making Networking Apps Scream on Windows with DPDK
Making Networking Apps Scream on Windows with DPDKMaking Networking Apps Scream on Windows with DPDK
Making Networking Apps Scream on Windows with DPDK
 
Inria Tech Talk : RIOT, l'OS libre pour vos objets connectés #IoT
Inria Tech Talk : RIOT, l'OS libre pour vos objets connectés #IoTInria Tech Talk : RIOT, l'OS libre pour vos objets connectés #IoT
Inria Tech Talk : RIOT, l'OS libre pour vos objets connectés #IoT
 
BPF & Cilium - Turning Linux into a Microservices-aware Operating System
BPF  & Cilium - Turning Linux into a Microservices-aware Operating SystemBPF  & Cilium - Turning Linux into a Microservices-aware Operating System
BPF & Cilium - Turning Linux into a Microservices-aware Operating System
 
Achieving Performance Isolation with Lightweight Co-Kernels
Achieving Performance Isolation with Lightweight Co-KernelsAchieving Performance Isolation with Lightweight Co-Kernels
Achieving Performance Isolation with Lightweight Co-Kernels
 
Design, Build,and Maintain the Embedded Linux Platform
Design, Build,and Maintain the Embedded Linux PlatformDesign, Build,and Maintain the Embedded Linux Platform
Design, Build,and Maintain the Embedded Linux Platform
 
Method of NUMA-Aware Resource Management for Kubernetes 5G NFV Cluster
Method of NUMA-Aware Resource Management for Kubernetes 5G NFV ClusterMethod of NUMA-Aware Resource Management for Kubernetes 5G NFV Cluster
Method of NUMA-Aware Resource Management for Kubernetes 5G NFV Cluster
 
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
 
Cisco Live 2017: Container networking deep dive with Docker Enterprise Editio...
Cisco Live 2017: Container networking deep dive with Docker Enterprise Editio...Cisco Live 2017: Container networking deep dive with Docker Enterprise Editio...
Cisco Live 2017: Container networking deep dive with Docker Enterprise Editio...
 

Recently uploaded

Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Neo4j
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraDeakin University
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 

Recently uploaded (20)

DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning era
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 

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