SlideShare a Scribd company logo
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

Advanced performance troubleshooting using esxtop
Advanced performance troubleshooting using esxtopAdvanced performance troubleshooting using esxtop
Advanced performance troubleshooting using esxtop
Alan Renouf
 
Open vSwitch Introduction
Open vSwitch IntroductionOpen vSwitch Introduction
Open vSwitch Introduction
HungWei Chiu
 
Linux Network Stack
Linux Network StackLinux Network Stack
Linux Network Stack
Adrien Mahieux
 
DPDK In Depth
DPDK In DepthDPDK In Depth
DPDK In Depth
Kernel TLV
 
Ixgbe internals
Ixgbe internalsIxgbe internals
Ixgbe internals
SUSE Labs Taipei
 
Alphorm.com Formation Docker (1/2) : Installation et Administration
Alphorm.com Formation Docker (1/2) : Installation et AdministrationAlphorm.com Formation Docker (1/2) : Installation et Administration
Alphorm.com Formation Docker (1/2) : Installation et Administration
Alphorm
 
Linux Linux Traffic Control
Linux Linux Traffic ControlLinux Linux Traffic Control
Linux Linux Traffic Control
SUSE Labs Taipei
 
OpenvSwitch Deep Dive
OpenvSwitch Deep DiveOpenvSwitch Deep Dive
OpenvSwitch Deep Dive
rajdeep
 
Cours SNMP
Cours SNMPCours SNMP
Cours SNMP
EL AMRI El Hassan
 
eBPF Perf Tools 2019
eBPF Perf Tools 2019eBPF Perf Tools 2019
eBPF Perf Tools 2019
Brendan Gregg
 
Advanced Namespaces and cgroups
Advanced Namespaces and cgroupsAdvanced Namespaces and cgroups
Advanced Namespaces and cgroups
Kernel TLV
 
LinuxCon 2015 Linux Kernel Networking Walkthrough
LinuxCon 2015 Linux Kernel Networking WalkthroughLinuxCon 2015 Linux Kernel Networking Walkthrough
LinuxCon 2015 Linux Kernel Networking Walkthrough
Thomas Graf
 
Qemu device prototyping
Qemu device prototypingQemu device prototyping
Qemu device prototyping
Yan Vugenfirer
 
VXLAN Integration with CloudStack Advanced Zone
VXLAN Integration with CloudStack Advanced ZoneVXLAN Integration with CloudStack Advanced Zone
VXLAN Integration with CloudStack Advanced Zone
Yoshikazu Nojima
 
Achieving the ultimate performance with KVM
Achieving the ultimate performance with KVM Achieving the ultimate performance with KVM
Achieving the ultimate performance with KVM
ShapeBlue
 
Project ACRN Device Passthrough Introduction
Project ACRN Device Passthrough IntroductionProject ACRN Device Passthrough Introduction
Project ACRN Device Passthrough Introduction
Project ACRN
 
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
Houcheng Lin
 
Docker Networking Overview
Docker Networking OverviewDocker Networking Overview
Docker Networking Overview
Sreenivas Makam
 
Reconnaissance of Virtio: What’s new and how it’s all connected?
Reconnaissance of Virtio: What’s new and how it’s all connected?Reconnaissance of Virtio: What’s new and how it’s all connected?
Reconnaissance of Virtio: What’s new and how it’s all connected?
Samsung Open Source Group
 

What's hot (20)

Advanced performance troubleshooting using esxtop
Advanced performance troubleshooting using esxtopAdvanced performance troubleshooting using esxtop
Advanced performance troubleshooting using esxtop
 
Open vSwitch Introduction
Open vSwitch IntroductionOpen vSwitch Introduction
Open vSwitch Introduction
 
Linux Network Stack
Linux Network StackLinux Network Stack
Linux Network Stack
 
DPDK In Depth
DPDK In DepthDPDK In Depth
DPDK In Depth
 
Ixgbe internals
Ixgbe internalsIxgbe internals
Ixgbe internals
 
Alphorm.com Formation Docker (1/2) : Installation et Administration
Alphorm.com Formation Docker (1/2) : Installation et AdministrationAlphorm.com Formation Docker (1/2) : Installation et Administration
Alphorm.com Formation Docker (1/2) : Installation et Administration
 
Linux Linux Traffic Control
Linux Linux Traffic ControlLinux Linux Traffic Control
Linux Linux Traffic Control
 
Snmp
SnmpSnmp
Snmp
 
OpenvSwitch Deep Dive
OpenvSwitch Deep DiveOpenvSwitch Deep Dive
OpenvSwitch Deep Dive
 
Cours SNMP
Cours SNMPCours SNMP
Cours SNMP
 
eBPF Perf Tools 2019
eBPF Perf Tools 2019eBPF Perf Tools 2019
eBPF Perf Tools 2019
 
Advanced Namespaces and cgroups
Advanced Namespaces and cgroupsAdvanced Namespaces and cgroups
Advanced Namespaces and cgroups
 
LinuxCon 2015 Linux Kernel Networking Walkthrough
LinuxCon 2015 Linux Kernel Networking WalkthroughLinuxCon 2015 Linux Kernel Networking Walkthrough
LinuxCon 2015 Linux Kernel Networking Walkthrough
 
Qemu device prototyping
Qemu device prototypingQemu device prototyping
Qemu device prototyping
 
VXLAN Integration with CloudStack Advanced Zone
VXLAN Integration with CloudStack Advanced ZoneVXLAN Integration with CloudStack Advanced Zone
VXLAN Integration with CloudStack Advanced Zone
 
Achieving the ultimate performance with KVM
Achieving the ultimate performance with KVM Achieving the ultimate performance with KVM
Achieving the ultimate performance with KVM
 
Project ACRN Device Passthrough Introduction
Project ACRN Device Passthrough IntroductionProject ACRN Device Passthrough Introduction
Project ACRN Device Passthrough Introduction
 
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
 
Docker Networking Overview
Docker Networking OverviewDocker Networking Overview
Docker Networking Overview
 
Reconnaissance of Virtio: What’s new and how it’s all connected?
Reconnaissance of Virtio: What’s new and how it’s all connected?Reconnaissance of Virtio: What’s new and how it’s all connected?
Reconnaissance of Virtio: What’s new and how it’s all connected?
 

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 2016
Phil 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 AKS
azuredayit
 
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
Stefano 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-2256
Mark 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 Project
Marco 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 DPDK
Michelle 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 #IoT
Sté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 System
Thomas 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-Kernels
Jiannan 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 Platform
SZ 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 Cluster
byonggon 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

JavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green MasterplanJavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green Masterplan
Miro Wengner
 
9 CEO's who hit $100m ARR Share Their Top Growth Tactics Nathan Latka, Founde...
9 CEO's who hit $100m ARR Share Their Top Growth Tactics Nathan Latka, Founde...9 CEO's who hit $100m ARR Share Their Top Growth Tactics Nathan Latka, Founde...
9 CEO's who hit $100m ARR Share Their Top Growth Tactics Nathan Latka, Founde...
saastr
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
panagenda
 
"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota
Fwdays
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
MichaelKnudsen27
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
ssuserfac0301
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
Chart Kalyan
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
Zilliz
 
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Pitangent Analytics & Technology Solutions Pvt. Ltd
 
“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...
“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...
“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...
Edge AI and Vision Alliance
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
saastr
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
Jason Packer
 
Apps Break Data
Apps Break DataApps Break Data
Apps Break Data
Ivo Velitchkov
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Tosin Akinosho
 
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
Jason Yip
 
Principle of conventional tomography-Bibash Shahi ppt..pptx
Principle of conventional tomography-Bibash Shahi ppt..pptxPrinciple of conventional tomography-Bibash Shahi ppt..pptx
Principle of conventional tomography-Bibash Shahi ppt..pptx
BibashShahi
 
Harnessing the Power of NLP and Knowledge Graphs for Opioid Research
Harnessing the Power of NLP and Knowledge Graphs for Opioid ResearchHarnessing the Power of NLP and Knowledge Graphs for Opioid Research
Harnessing the Power of NLP and Knowledge Graphs for Opioid Research
Neo4j
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
DanBrown980551
 
Y-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PPY-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PP
c5vrf27qcz
 
Digital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
Digital Banking in the Cloud: How Citizens Bank Unlocked Their MainframeDigital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
Digital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
Precisely
 

Recently uploaded (20)

JavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green MasterplanJavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green Masterplan
 
9 CEO's who hit $100m ARR Share Their Top Growth Tactics Nathan Latka, Founde...
9 CEO's who hit $100m ARR Share Their Top Growth Tactics Nathan Latka, Founde...9 CEO's who hit $100m ARR Share Their Top Growth Tactics Nathan Latka, Founde...
9 CEO's who hit $100m ARR Share Their Top Growth Tactics Nathan Latka, Founde...
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
 
"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
 
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
 
“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...
“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...
“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
 
Apps Break Data
Apps Break DataApps Break Data
Apps Break Data
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
 
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
 
Principle of conventional tomography-Bibash Shahi ppt..pptx
Principle of conventional tomography-Bibash Shahi ppt..pptxPrinciple of conventional tomography-Bibash Shahi ppt..pptx
Principle of conventional tomography-Bibash Shahi ppt..pptx
 
Harnessing the Power of NLP and Knowledge Graphs for Opioid Research
Harnessing the Power of NLP and Knowledge Graphs for Opioid ResearchHarnessing the Power of NLP and Knowledge Graphs for Opioid Research
Harnessing the Power of NLP and Knowledge Graphs for Opioid Research
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
 
Y-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PPY-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PP
 
Digital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
Digital Banking in the Cloud: How Citizens Bank Unlocked Their MainframeDigital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
Digital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
 

Breaking Down the Entry Barriers on Linux Kernel Networking Stack

  • 1. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack Breaking Down the Entry Barriers on Linux Kernel Networking Stack Juhee Kang(claudiajkang@gmail.com)
  • 2. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 2 Speaker Juhee Kang Open-Source Part Frontier Developer Project: Linux Kernel Networking Stack, Kubernetes i18n Interest: Cloud, Network, Backend, etc... Special Lecture at Universities - Open-Source Software Development Mechanism.
  • 3. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack Linux Kernel Networking Stack 1 Step by Step Kernel Contribution 3 3 INDEX Kernel Ecosystem 2
  • 4. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 4 Let’s think about it Linux Kernel Contribution?
  • 5. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 5 Linux Kernel Contribution? How do I start?
  • 6. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 6 Contribution like other open-sources? Maybe, contribute through GitHub? (like any other open source)
  • 7. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 7 Open-Source Contribution: managed with GitHub File an Issue Create a Branch Make a commit PR (Pull Request) Fetch latest remote repo (pull) merge review clone Original repository forked repository
  • 8. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 8 Is Kernel Contribution done in the same way?
  • 9. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 9 Is Kernel Contribution done in the same way? In torvalds/linux Kernel GitHub repository,
  • 10. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 10 Is Kernel Contribution done in the same way? Pull Request exists just as other open-source.
  • 11. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 11 Is Kernel Contribution done in the same way? Pull Request 존재 확인 As KernelPRBot replied,
  • 12. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 12 Is Kernel Contribution done in the same way? Linux Kernel development doesn't happen on GitHub. Read-Only mirror purpose
  • 13. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 13 Is Kernel Contribution done in the same way? detailed guide for kernel contribution
  • 14. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 14 Kernel Contribution? - Linux Kernel (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git) Instead of using GitHub, Linux kernel uses its own git service.
  • 15. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack Send Patch mail review 15 Kernel Contribution process? clone Fetch latest remote repo (pull) merge Create a local branch Make a commit Make a Patch linux.git
  • 16. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack Send Patch mail review 16 Kernel Contribution process? clone Fetch latest remote repo (pull) merge Create a local branch Make a commit Make a Patch linux.git
  • 17. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 17 Kernel Contribution Where to get source code? How to configure build env? What is a patch? Committing by email? Countless barriers before we even started...
  • 18. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack In this scenario, suppose we fix a bug. 18 Goal of this session $ cd samples/bpf $ make -j $ ./tracex7 sh: 1: Syntax error: word unexpected (expecting ")")
  • 19. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 19 Goal of this session Step through the Linux kernel contribution to break down contribution barriers.
  • 20. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 1 Linux Kernel Networking Stack 20
  • 21. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 21 Linux Kernel Networking Stack Packet Ethernet Frame Preamble Ethernet Frame Inter Frame Gap MAC. Destination MAC. Source Type PAYLOAD (IP/IPv6/ARP…) CRC 8 Bytes 6 Bytes 6 Bytes 2 Bytes 46-1500 Bytes 4 Bytes 12 Bytes 8 64 12
  • 22. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 22 Linux Kernel Networking Stack Packet Ethernet Frame NIC Network Hardware
  • 23. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 23 Linux Kernel Networking Stack Packet Ethernet Frame NIC Network Hardware ???
  • 24. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 24 Linux Kernel Networking Stack Packet Ethernet Frame NIC Network Hardware ??? Userspace Program Userspace Software
  • 25. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 25 Linux Kernel Networking Stack Packet Ethernet Frame NIC Network Hardware Kernel Linux Kernel Network Stack Userspace Program Userspace Software
  • 26. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 26 Linux Kernel Networking Stack Packet Receiving Packet Sending Packet Forwarding Packet Filtering Packet Mangling Packet Tunneling Routing NAT TCP HSR UDP AMT
  • 27. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 27 Basic Packet Path Packet Receiving Packet Sending Packet Forwarding Packet Filtering Packet Mangling Packet Tunneling Routing NAT TCP HSR UDP AMT
  • 28. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack Basic Packet Rx/Tx Path 28
  • 29. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack ① Receiving Path ② Forwarding Path ③ Sending Path 🖥️ 🖥️ 🖥️ 29 Packet Path
  • 30. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 30 Packet Receiving Path Packet Kernel Linux Kernel Network Stack Userspace Program Userspace Software NIC Network Hardware
  • 31. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 31 Packet Receiving Path 🖥️ Host A 192.168.0.1 RX Application Transport (L4) Network (L3) Data Link (L2) NIC Driver Packet NIC Hardware Network Interface Card receives the packet
  • 32. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 32 Packet Receiving Path 🖥️ Host A 192.168.0.1 RX Application Transport (L4) Network (L3) Data Link (L2) NIC Hardware Packet NIC Driver Rx/Tx Queue From Device Driver, pops the packet from the NIC hardware Queue (RX)
  • 33. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 33 Packet Receiving Path 🖥️ Host A 192.168.0.1 RX Application Transport (L4) Network (L3) NIC Driver NIC Hardware Packet Data Link (L2) Rx/Tx Queue 📄 struct sk_buff Create a sk_buff structure with this packet.
  • 34. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 34 Packet Receiving Path 🖥️ Host A 192.168.0.1 RX Application Transport (L4) Data Link (L2) NIC Driver NIC Hardware Packet Network (L3) Rx/Tx Queue 📄 struct sk_buff IP ARP Protocol Handler ICMP Determines which protocol the packet is,
  • 35. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 35 Packet Receiving Path 🖥️ Host A 192.168.0.1 RX Application Network (L3) Data Link (L2) NIC Driver NIC Hardware Packet Transport (L4) Rx/Tx Queue 📄 struct sk_buff IP ARP UDP TCP Protocol Handler ICMP QUIC Call the appropriate handler function for the protocol
  • 36. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 36 Packet Receiving Path 🖥️ Host A 192.168.0.1 RX Transport (L4) Network (L3) Data Link (L2) NIC Driver NIC Hardware Packet Application Rx/Tx Queue 📄 struct sk_buff IP ARP UDP TCP Protocol Handler ICMP QUIC Hand over processed packet to user applications
  • 37. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack DEVICE DRIVER UPPER LAYER Ingress PROTO HANDLER ROUTING FORWARDING OUTPUT INPUT NEIGH ROUTING Egress L4~ L3 L2 37 Linux Kernel Networking Packet Path
  • 38. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 38 Packet Receiving Path Packet Kernel Linux Kernel Network Stack Userspace Program Userspace Software NIC Network Hardware
  • 39. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack DEVICE DRIVER UPPER LAYER Ingress PROTO HANDLER ROUTING FORWARDING OUTPUT INPUT NEIGH ROUTING Egress L4~ L3 L2 39 Packet Receiving Path After Network Interface Card receives the packet, Device Driver pops the packet from the NIC hardware Queue (RX)
  • 40. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack DEVICE DRIVER UPPER LAYER Ingress PROTO HANDLER ROUTING FORWARDING OUTPUT INPUT NEIGH ROUTING Egress L4~ L3 L2 40 Packet Receiving Path Create a sk_buff structure with this packet
  • 41. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack DEVICE DRIVER UPPER LAYER Ingress PROTO HANDLER ROUTING FORWARDING OUTPUT INPUT NEIGH ROUTING Egress L4~ L3 L2 41 Packet Receiving Path Determine which protocol the packet is and call the appropriate handler function for the protocol
  • 42. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack DEVICE DRIVER UPPER LAYER Ingress PROTO HANDLER ROUTING FORWARDING OUTPUT INPUT NEIGH ROUTING Egress L4~ L3 L2 42 Packet Receiving Path Lookup the ROUTING table to identify where the packet is headed
  • 43. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack DEVICE DRIVER UPPER LAYER Ingress PROTO HANDLER ROUTING FORWARDING OUTPUT INPUT NEIGH ROUTING Egress L4~ L3 L2 43 Packet Receiving Path Lookup the ROUTING table to identify where the packet is headed $ route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 _gateway 0.0.0.0 UG 101 0 0 eth0 192.168.0.0 0.0.0.0 255.255.255.0 U 101 0 0 eth0 192.168.0.1 192.168.0.2 255.255.255.255 UGH 0 0 0 veth21 192.168.0.4 192.168.0.3 255.255.255.255 UGH 0 0 0 veth23 _gateway 0.0.0.0 255.255.255.255 UH 101 0 0 eth0
  • 44. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack DEVICE DRIVER UPPER LAYER Ingress PROTO HANDLER ROUTING FORWARDING OUTPUT INPUT NEIGH ROUTING Egress L4~ L3 L2 44 Packet Receiving Path Preprocess the packet before calling L4 function
  • 45. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack DEVICE DRIVER UPPER LAYER Ingress PROTO HANDLER ROUTING FORWARDING OUTPUT INPUT NEIGH ROUTING Egress L4~ L3 L2 45 Packet Receiving Path Hand over processed packet to upper layer
  • 46. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack DEVICE DRIVER UPPER LAYER Ingress PROTO HANDLER ROUTING FORWARDING OUTPUT INPUT NEIGH ROUTING Egress L4~ L3 L2 46 Packet Receiving Path
  • 47. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack Packet Kernel Linux Kernel Network Stack Packet NIC Network Hardware 47 Packet Forwarding Path NIC Network Hardware
  • 48. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack DEVICE DRIVER UPPER LAYER Ingress PROTO HANDLER ROUTING FORWARDING OUTPUT INPUT NEIGH ROUTING Egress L4~ L3 L2 48 Packet Forwarding Path Lookup the ROUTING table to identify where the packet is headed
  • 49. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack DEVICE DRIVER UPPER LAYER Ingress PROTO HANDLER ROUTING FORWARDING OUTPUT INPUT NEIGH ROUTING Egress L4~ L3 L2 49 Packet Forwarding Path Lookup the ROUTING table to identify where the packet is headed $ route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 _gateway 0.0.0.0 UG 101 0 0 eth0 192.168.0.0 0.0.0.0 255.255.255.0 U 101 0 0 eth0 192.168.0.1 192.168.0.2 255.255.255.255 UGH 0 0 0 veth21 192.168.0.4 192.168.0.3 255.255.255.255 UGH 0 0 0 veth23 _gateway 0.0.0.0 255.255.255.255 UH 101 0 0 eth0
  • 50. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack DEVICE DRIVER UPPER LAYER Ingress PROTO HANDLER ROUTING FORWARDING OUTPUT INPUT NEIGH ROUTING Egress L4~ L3 L2 50 Packet Forwarding Path If forwarding is required, send to corresponding interface
  • 51. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack DEVICE DRIVER UPPER LAYER Ingress PROTO HANDLER ROUTING FORWARDING OUTPUT INPUT NEIGH ROUTING Egress L4~ L3 L2 51 Packet Forwarding Path Determine the MAC address of the destination to send
  • 52. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack DEVICE DRIVER UPPER LAYER Ingress PROTO HANDLER ROUTING FORWARDING OUTPUT INPUT NEIGH ROUTING Egress L4~ L3 L2 52 Packet Forwarding Path Send the packet to device driver function
  • 53. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack DEVICE DRIVER UPPER LAYER Ingress PROTO HANDLER ROUTING FORWARDING OUTPUT INPUT NEIGH ROUTING Egress L4~ L3 L2 53 Packet Forwarding Path Transmit packet through the network interface
  • 54. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack DEVICE DRIVER UPPER LAYER Ingress PROTO HANDLER ROUTING FORWARDING OUTPUT INPUT NEIGH ROUTING Egress L4~ L3 L2 54 Packet Forwarding Path
  • 55. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack Userspace Program Userspace Software Kernel Linux Kernel Network Stack Packet 📦 NIC Network Hardware 55 Packet Sending Path
  • 56. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack DEVICE DRIVER UPPER LAYER Ingress PROTO HANDLER ROUTING FORWARDING OUTPUT INPUT NEIGH ROUTING Egress L4~ L3 L2 56 Packet Sending Path Packet handed over from upper layer
  • 57. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack DEVICE DRIVER UPPER LAYER Ingress PROTO HANDLER ROUTING FORWARDING OUTPUT INPUT NEIGH ROUTING Egress L4~ L3 L2 57 Packet Sending Path Check the ROUTING table to see which interface to send packet
  • 58. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack DEVICE DRIVER UPPER LAYER Ingress PROTO HANDLER ROUTING FORWARDING OUTPUT INPUT NEIGH ROUTING Egress L4~ L3 L2 58 Packet Sending Path Preprocess the packet for the transmission (ex. fragmentation)
  • 59. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack DEVICE DRIVER UPPER LAYER Ingress PROTO HANDLER ROUTING FORWARDING OUTPUT INPUT NEIGH ROUTING Egress L4~ L3 L2 59 Packet Sending Path Determine the MAC address of the destination to send
  • 60. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack DEVICE DRIVER UPPER LAYER Ingress PROTO HANDLER ROUTING FORWARDING OUTPUT INPUT NEIGH ROUTING Egress L4~ L3 L2 60 Packet Sending Path Send the packet to device driver function
  • 61. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack DEVICE DRIVER UPPER LAYER Ingress PROTO HANDLER ROUTING FORWARDING OUTPUT INPUT NEIGH ROUTING Egress L4~ L3 L2 61 Packet Sending Path Transmit packet through the network interface
  • 62. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack DEVICE DRIVER UPPER LAYER Ingress PROTO HANDLER ROUTING FORWARDING OUTPUT INPUT NEIGH ROUTING Egress L4~ L3 L2 62 Packet Sending Path
  • 63. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack ① Receiving Path ② Forwarding Path ③ Sending Path 🖥️ 🖥️ 🖥️ 63 Packet Path
  • 64. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 64 Linux Kernel Networking Stack Packet Receiving Packet Sending Packet Forwarding Packet Filtering Packet Mangling Packet Tunneling Routing NAT TCP HSR UDP AMT
  • 65. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 65 Packet Processing Packet Receiving Packet Sending Packet Forwarding Packet Filtering Packet Mangling Packet Tunneling Routing NAT TCP HSR UDP AMT
  • 66. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 66 Network Protocol Packet Receiving Packet Sending Packet Forwarding Packet Filtering Packet Mangling Packet Tunneling Routing NAT TCP HSR UDP AMT
  • 67. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 2 Kernel Ecosystem 67
  • 68. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 68 Linux Kernel The core of the Linux Operating System Interface that connects computer hardware to processes Linux Kernel mascot Tux
  • 69. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 69 Linux Kernel Development The largest open-source project involving developers worldwide https://www.semanticscholar.org/paper/Perpetual-development%3A-A-model-of-the-Linux-kernel- Feitelson/eb7cf446e983e98c1400c8181949f038caf0c8a8/figure/1 Development is done in units called Patch
  • 70. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack v5.15 v5.16 v5.16-rc1 v5.16-rc2 … v5.16-rc7 Stable (v5.15) LTS Release new kernel released in every 10-11 weeks (2 months), stable kernel released once a week Kernel Release 70 Stable (v5.16) LTS Release Mainline Kernel Release Candidate (RC) Stable Long-term
  • 71. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack v5.15 v5.16 Kernel Release - 1. Mainline Kernel 71 - released every 9 to 10 weeks - New features introduced, major bug fix patches Mainline Kernel
  • 72. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack - Switch to stable mode after mainline kernel release - Bug fixes & mainline kernel backporting Stable (v5.15) Kernel Release - 2. Stable 72 Stable (v5.16) Stable v5.15 v5.16
  • 73. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack LTS Release Kernel Release - 3. LTS Release 73 LTS Release v5.15 v5.16 - provides a critical bug fix among the stable release versions LTS Release
  • 74. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack v5.15 v5.16 v5.16-rc1 v5.16-rc2 … v5.16-rc7 Kernel Release - 4. Release Candidate (RC) 74 Release Candidate (RC) Commit - "pre-release" of Mainline kernel - For testing new features - This release must be compiled from source - Usually, released up to rc7
  • 75. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 75 Linux Kernel Release Cycle v5.15 v5.16 5.15 mainline kernel version release
  • 76. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 76 Linux Kernel Release Cycle v5.15 v5.16 Stable (v5.15) 5.15 mainline kernel version release 5.15 Stable release
  • 77. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 77 Linux Kernel Release Cycle v5.15 v5.16 Stable (v5.15) LTS Release 5.15 mainline kernel version release 5.15 Stable release 5.15 LTS release
  • 78. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 78 Linux Kernel Release Cycle v5.15 v5.16 Stable (v5.15) LTS Release 5.15 mainline kernel version release 5.15 Stable release 5.15 LTS release
  • 79. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 79 Linux Kernel Release Cycle v5.15 v5.16 Stable (v5.15) LTS Release v5.16-rc1 5.15 mainline kernel version release v5.16-rc1 5.15 Stable release 5.15 LTS release
  • 80. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 80 Linux Kernel Release Cycle v5.15 v5.16 Stable (v5.15) LTS Release v5.16-rc1 5.15 mainline kernel version release v5.16-rc1 v5.16-rc2 v5.16-rc2 5.15 Stable release 5.15 LTS release
  • 81. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 81 Linux Kernel Release Cycle v5.15 v5.16 Stable (v5.15) LTS Release v5.16-rc1 5.15 mainline kernel version release v5.16-rc1 v5.16-rc2 … v5.16-rc2 . . . 5.15 Stable release 5.15 LTS release
  • 82. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 82 Linux Kernel Release Cycle v5.15 v5.16 Stable (v5.15) LTS Release v5.16-rc1 5.15 mainline kernel version release v5.16-rc1 v5.16-rc2 … v5.16-rc2 . . . 5.15 Stable release 5.15 LTS release v5.16-rc6
  • 83. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 83 Linux Kernel Release Cycle v5.15 v5.16 Stable (v5.15) LTS Release v5.16-rc1 5.15 mainline kernel version release v5.16-rc1 v5.16-rc2 … v5.16-rc7 v5.16-rc2 . . . v5.16-rc7 5.15 Stable release 5.15 LTS release v5.16-rc6
  • 84. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 84 Linux Kernel Release Cycle http://vger.kernel.org/~davem/net-next.html
  • 85. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack Merge window 85 Linux Kernel Release Cycle v5.15 v5.16 Stable (v5.15) LTS Release v5.16-rc1 5.15 mainline kernel version release v5.16-rc1 v5.16-rc2 … v5.16-rc7 v5.16-rc2 . . . v5.16-rc7 Merge window 5.15 Stable release 5.15 LTS release v5.16-rc6
  • 86. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack Merge window 86 Linux Kernel Release Cycle v5.15 v5.16 Stable (v5.15) LTS Release v5.16-rc1 5.15 mainline kernel version release v5.16-rc1 v5.16-rc2 … v5.16-rc7 v5.16-rc2 . . . v5.16-rc7 Merge window v5.16-rc6 * Merge window (2 weeks) - Linux Torvalds receives a pull of code from the maintainer of subsystem and adds it together - New version of the kernel is released after merge window - After period ends, the kernel is developed every two weeks. Naming convention: <mainline kernel version name>-rc-<rc version name>
  • 87. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack Merge window 87 Linux Kernel Release Cycle v5.15 v5.16 Stable (v5.15) LTS Release v5.16-rc1 5.15 mainline kernel version release v5.16-rc1 v5.16-rc2 … v5.16-rc7 v5.16-rc2 . . . v5.16-rc7 Merge window 5.16 mainline kernel version release 5.15 Stable release 5.15 LTS release v5.16-rc6
  • 88. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 88 Linux Kernel Release Cycle http://vger.kernel.org/~davem/net-next.html
  • 89. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack Merge window 89 Linux Kernel Release Cycle v5.15 v5.16 Stable (v5.15) LTS Release v5.16-rc1 5.15 mainline kernel version release v5.16-rc1 v5.16-rc2 … v5.16-rc7 v5.16-rc2 . . . v5.16-rc7 Merge window 5.16 mainline kernel version release Stable (v5.16) 5.15 Stable release 5.15 LTS release 5.16 Stable release v5.16-rc6
  • 90. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack Merge window 90 Linux Kernel Release Cycle v5.15 v5.16 Stable (v5.15) LTS Release v5.16-rc1 5.15 mainline kernel version release v5.16-rc1 v5.16-rc2 … v5.16-rc7 v5.16-rc2 . . . v5.16-rc7 Merge window 5.16 mainline kernel version release Stable (v5.16) LTS Release 5.15 Stable release 5.15 LTS release 5.16 Stable release 5.16 LTS release v5.16-rc6
  • 91. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 91 Linux Kernel Subsystem Inside the kernel there are numerous subsystems, http://www.MakeLinux.net/kernel/diagram 5.16 mainline kernel version release
  • 92. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 92 Linux Kernel Subsystem Inside the kernel there are numerous subsystems, Features developed by each subsystem are combined to be released as the mainline kernel http://www.MakeLinux.net/kernel/diagram 5.16 mainline kernel version release
  • 93. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 93 Linux Kernel Subsystem Subsystems are developed in each directory of the source code. http://www.MakeLinux.net/kernel/diagram linux $ tree -d -L 1 . ├── arch ├── block ├── certs ├── crypto ├── Documentation ├── drivers ├── fs ├── include ├── init ├── ipc ├── kernel ├── lib ├── LICENSES ├── mm ├── net ├── samples ├── scripts ├── security ├── sound ├── tools ├── usr └── virt
  • 94. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 94 Linux Kernel Subsystem Network subsystem are developed in net directory of the source code. http://www.MakeLinux.net/kernel/diagram linux $ tree -d -L 1 . ├── arch ├── block => block device subsystem ├── certs ├── crypto ├── Documentation ├── drivers => driver subsystem ├── fs => file system subsystem ├── include ├── init ├── ipc => IPC subsystem ├── kernel ├── lib ├── LICENSES ├── mm => memory management subsystem ├── net => network subsystem ├── samples ├── scripts ├── security ├── sound ├── tools ├── usr └── virt
  • 95. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 95 Kernel Tree https://git.kernel.org/ kernel code is managed by several major subsystem git repositories, which is called the Kernel Tree
  • 96. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 96 Kernel Tree Mainline Kernel tree - Managed by Linus Torvalds - Mainline kernel tree & RC release source code * https://www.devcurmudgeon.com/images/mainline-lts-ltsi-genivi-20131025.pdf#page=18
  • 97. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 97 Kernel Tree Mainline Kernel tree - Managed by Linus Torvalds - Mainline kernel tree & RC release source code Stable Kernel tree - Managed by Greg Kroah-Hartman - stable release branches source code * https://www.devcurmudgeon.com/images/mainline-lts-ltsi-genivi-20131025.pdf#page=18
  • 98. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 98 Kernel Tree * https://www.devcurmudgeon.com/images/mainline-lts-ltsi-genivi-20131025.pdf#page=18 Mainline Kernel tree - Managed by Linus Torvalds - Mainline kernel tree & RC release source code Stable Kernel tree - Managed by Greg Kroah-Hartman - stable release branches source code linux-next tree - Managed by Stephen Rothwell - Subsystem changes are periodically reflected - Integrated testing of the code is conducted - After testing, pull request is performed with mainline kernel tree
  • 99. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 99 Linux Kernel Tree Hierarchy Developer Developer net-next Developer Developer driver-core Developer Developer cgroup linux Major subsystems have independent tree
  • 100. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 100 Linux Kernel Tree Hierarchy Developer Developer Maintainer Developer Developer Maintainer Developer Developer Maintainer Torvalds Each subsystem tree is managed by "Maintainer" netdev/net-next.git torvalds/linux.git gregkh/driver-core.git tj/cgroup.git
  • 101. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 101 Linux Kernel Tree Hierarchy These maintainers manage the tree for each subsystem, and there are two trees in each subsystem Developer Developer Maintainer Torvalds netdev/net-next.git Mainline Kernel Tree Developer Developer Maintainer Greg netdev/net.git Stable Kernel Tree Networking Subsystem
  • 102. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 102 Networking Subsystem Tree Developer Developer Maintainer Developer Developer Maintainer Developer Developer Maintainer Greg netdev/net.git git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git stable/linux.git netdev/net.git : netdev Stable Tree Allow only release version of bug fix patch
  • 103. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 103 Networking Subsystem Tree Developer Developer Maintainer Developer Developer Maintainer Developer Developer Maintainer Torvalds netdev/net-next.git torvalds/linux.git git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git netdev/net-next.git : netdev Mainline Tree Feature Enhancement, Bug-Fix tree
  • 104. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 104 Subsystem Tree $ cat MAINTAINERS | grep -A 30 'NETWORKING [GENERAL]' NETWORKING [GENERAL] M: "David S. Miller" <davem@davemloft.net> M: Eric Dumazet <edumazet@google.com> M: Jakub Kicinski <kuba@kernel.org> M: Paolo Abeni <pabeni@redhat.com> L: netdev@vger.kernel.org S: Maintained Q: https://patchwork.kernel.org/project/netdevbpf/list/ B: mailto:netdev@vger.kernel.org T: git git://git.kernel.org/.../netdev/net.git T: git git://git.kernel.org/.../netdev/net-next.git F: Documentation/networking/ F: Documentation/process/maintainer-netdev.rst F: include/linux/in.h F: include/linux/net.h F: include/linux/netdevice.h F: include/net/ F: include/uapi/linux/in.h F: include/uapi/linux/net.h F: include/uapi/linux/net_namespace.h F: include/uapi/linux/netdevice.h F: lib/net_utils.c F: lib/random32.c F: net/ F: tools/testing/selftests/net/ Developer Developer Maintainer Developer Developer Maintainer Developer Developer Maintainer Torvalds netdev/net.git
  • 105. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 105 Mailing List Each subsystem has a mailing list, where contributors submit and discuss patches. $ cat MAINTAINERS | grep -A 30 'NETWORKING [GENERAL]' NETWORKING [GENERAL] M: "David S. Miller" <davem@davemloft.net> M: Eric Dumazet <edumazet@google.com> M: Jakub Kicinski <kuba@kernel.org> M: Paolo Abeni <pabeni@redhat.com> L: netdev@vger.kernel.org S: Maintained http://vger.kernel.org/vger-lists.html
  • 106. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 106 Patch Contributing units in the kernel
  • 107. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 107 Patch From 0199215216978b612d4e8be11e878b87bc643033 Mon Sep 17 00:00:00 2001 From: Juhee Kang <claudiajkang@gmail.com> Date: Sun, 10 Oct 2021 13:03:29 +0900 Subject: [PATCH, net-next] mlxsw: spectrum: use netif_is_macsec() instead of open code Open code which is dev->priv_flags & IFF_MACSEC has already defined as netif_is_macsec(). So use netif_is_macsec() instead of open code. This patch doesn't change logic. Signed-off-by: Juhee Kang <claudiajkang@gmail.com> --- include/linux/netdevice.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 15f4a658e436..0723c1314ea2 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -5237,7 +5237,7 @@ static inline void netif_keep_dst(struct net_device *dev) static inline bool netif_reduces_vlan_mtu(struct net_device *dev) { /* TODO: reserve and use an additional IFF bit, if we get more users */ - return dev->priv_flags & IFF_MACSEC; + return netif_is_macsec(dev); } extern struct pernet_operations __net_initdata loopback_net_ops; -- 2.34.1 $ git format-patch -1 --subject-prefix="PATCH, net-next" Contributing units in the kernel Developers make a patch of development
  • 108. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack Contributing units in the kernel Developers make a patch of development and submit it to the mailing list by email 108 Patch $ git format-patch -1 --subject-prefix="PATCH, net-next" $ git send-patch --cc “Network Maintainer <example@email.com>“ --to “Network Mailing List <list@email.com>” *.patch
  • 109. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 109 Kernel Development Process Developer L: netdev patch 📧 📜 [PATCH net-next] mlxsw: spectrum: use netif_is_macsec() instead of open code Open code which is dev->priv_flags & IFF_MACSEC has already defined as netif_is_macsec(). So use netif_is_macsec() instead of open code. This patch doesn't change logic. Signed-off-by: Juhee Kang <claudiajkang@gmail.com> Contributor create patches $ git format-patch -1 --subject-prefix="PATCH, net-next"
  • 110. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 110 Kernel Development Process Developer L: netdev 📧 📜 [PATCH net-next] mlxsw: spectrum: use netif_is_macsec() instead of open code Open code which is dev->priv_flags & IFF_MACSEC has already defined as netif_is_macsec(). So use netif_is_macsec() instead of open code. This patch doesn't change logic. Signed-off-by: Juhee Kang <claudiajkang@gmail.com> Contributor sends patches to the mailing list. $ git send-patch --cc “Network Maintainer <example@email.com>“ --to “Network Mailing List <list@email.com>” *.patch
  • 111. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 111 Kernel Development Process Developer L: netdev patch 📧 📜 From mailing list, review and discussion is conducted. [PATCH net-next] mlxsw: spectrum: use netif_is_macsec() instead of open code Open code which is dev->priv_flags & IFF_MACSEC has already defined as netif_is_macsec(). So use netif_is_macsec() instead of open code. This patch doesn't change logic. Signed-off-by: Juhee Kang <claudiajkang@gmail.com>
  • 112. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 112 Kernel Development Process Developer L: netdev patch 📧 📜 Once the patch has been accepted, an email will be sent informing that it was reflected in the subsystem [PATCH net-next] mlxsw: spectrum: use netif_is_macsec() instead of open code Open code which is dev->priv_flags & IFF_MACSEC has already defined as netif_is_macsec(). So use netif_is_macsec() instead of open code. This patch doesn't change logic. Signed-off-by: Juhee Kang <claudiajkang@gmail.com> Maintainer 📧 Re: [PATCH net-next] mlxsw: spectrum: use netif_is_macsec() instead of open ode Hello: This series was applied to netdev/net-next.git (master) by David S. Miller <davem@davemloft.net>:
  • 113. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 113 Kernel Development Process Developer Maintainer Torvalds netdev/net-next.git Patch is reflected in net-next git tree 📧 📜
  • 114. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 114 Kernel Development Process Developer Developer Maintainer Torvalds netdev/net-next.git 📧 📜 📜 📜 Maintainer will Send Pull Request to Parent Tree torvalds/linux.git
  • 115. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 115 Kernel Development Process Developer Developer Maintainer Developer Developer Maintainer Developer Developer Maintainer Torvalds netdev/net-next.git Pull Requests are sent from various subsystems to the parent tree 📧 📜 📜 📜 📧 📜 📜 📜 gregkh/driver-core.git tj/cgroup.git torvalds/linux.git
  • 116. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 116 Kernel Development Process Developer Developer Maintainer Developer Developer Maintainer Developer Developer Maintainer Torvalds netdev/net-next.git Code combined to release as new version of kernel 📧 📜 📜 📜 📧 📜 📜 📜 gregkh/driver-core.git tj/cgroup.git torvalds/linux.git Mainline Kernel Release Candidate (RC)
  • 117. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack ① Documentation ② Bug-Fix ③ Feature Enhancement ④ etc.. 117 Linux Kernel Contribution
  • 118. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 118 1. Documentation Improve the documentation - add undocumented or elaborate details
  • 119. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 119 2. Bug Fix Fixing Bugs - fix code to work as expected
  • 120. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack Adding a new feature - for improved usability 120 3. Feature Enhancement
  • 121. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack Enhance feature - performance improvement 121 3. Feature Enhancement
  • 122. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack Now let's do Contributions to Linux Kernel 122
  • 123. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 3 Step by Step Kernel Contribution 123
  • 124. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack In this scenario, suppose we fix a bug. 124 Kernel Patch in Action
  • 125. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 125 Discover a Bug An error occurred while running the kernel test script. $ cd samples/bpf $ make -j $ ./tracex7 sh: 1: Syntax error: word unexpected (expecting ")")
  • 126. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 126 Configure Environment: kernel development Fedora Debian OpenSUSE Ubuntu Prepare Linux in VM
  • 127. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 127 Configure Environment: kernel development # apt-get install build-essential vim git cscope libncurses-dev libssl-dev bison flex bison # systemctl enable serial-getty@ttyS0.service # systemctl start serial-getty@ttyS0.service # systemctl daemon-reload # vim /etc/default/grub # update-grub2 Install development packages on Linux VM
  • 128. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 128 Configure Environment: kernel development Configure Linux for a debugging # apt-get install build-essential vim git cscope libncurses-dev libssl-dev bison flex bison # systemctl enable serial-getty@ttyS0.service # systemctl start serial-getty@ttyS0.service # systemctl daemon-reload # vim /etc/default/grub # update-grub2
  • 129. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 129 Configure Environment: get kernel source $ git clone https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git $ cd net-next $ git checkout -f main
  • 130. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 130 Reproduce Bug: find the cause $ cd samples/bpf $ make -j $ ./tracex7 sh: 1: Syntax error: word unexpected (expecting ")") Maybe Kernel test script has a Bug. An error occurred while running the kernel test script.
  • 131. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 131 Reproduce Bug: find the cause An error occurred while running the kernel test script. $ cd samples/bpf $ make -j $ ./tracex7 sh: 1: Syntax error: word unexpected (expecting ")") # vim tracex7_user.c Problem caused by failure to check argument at runtime
  • 132. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 132 Fix source code: resolve problem diff --git a/samples/bpf/test_override_return.sh b/samples/bpf/test_override_return.sh index e68b9ee6814b8b..35db26f736b9d9 100755 --- a/samples/bpf/test_override_return.sh +++ b/samples/bpf/test_override_return.sh @@ -1,5 +1,6 @@ #!/bin/bash +rm -r tmpmnt rm -f testfile.img dd if=/dev/zero of=testfile.img bs=1M seek=1000 count=1 DEVICE=$(losetup --show -f testfile.img) diff --git a/samples/bpf/tracex7_user.c b/samples/bpf/tracex7_user.c index fdcd6580dd736a..8be7ce18d3ba05 100644 --- a/samples/bpf/tracex7_user.c +++ b/samples/bpf/tracex7_user.c @@ -14,6 +14,11 @@ int main(int argc, char **argv) int ret = 0; FILE *f; + if (!argv[1]) { + fprintf(stderr, "ERROR: Run with the btrfs device argument!n"); + return 0; + } + snprintf(filename, sizeof(filename), "%s_kern.o", argv[0]); $ git diff
  • 133. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 133 Write a commit message After modifying the source code, create a commit with detailed message $ git commit -s
  • 134. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 134 Write a commit message Having a trouble with writing commit message? Check previous commit log. $ git log -- samples/bpf/tracex7_user.c commit 2bf3e2ef425bc2a164f10b554b7db6a8b4090ef4 samples: bpf: include bpf/bpf.h instead of local libbpf.h There are two files in the tree called libbpf.h which is becoming problematic. Most samples don't actually need the local libbpf.h they simply include it to get to bpf/bpf.h. Include bpf/bpf.h directly instead. . . . commit 965de87e54b803223bff703ea6b2a76c056695ae Author: Josef Bacik <jbacik@fb.com> Date: Mon Dec 11 11:36:49 2017 -0500 samples/bpf: add a test for bpf_override_return < change file name >
  • 135. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 135 Write a commit message samples: bpf: Fix tracex7 error raised on the missing argument The current behavior of 'tracex7' doesn't consist with other bpf samples tracex{1..6}. Other samples do not require any argument to run with, but tracex7 should be run with btrfs device argument. (it should be executed with test_override_return.sh) Currently, tracex7 doesn't have any description about how to run this program and raises an unexpected error. And this result might be confusing since users might not have a hunch about how to run this program. . . . In order to fix this error, this commit adds logic to report a message and exit when running this program with a missing argument. Additionally in test_override_return.sh, there is a problem with multiple directory(tmpmnt) creation. So in this commit adds a line with removing the directory with every execution. Signed-off-by: Juhee Kang <claudiajkang@gmail.com> Write commit message in detail.
  • 136. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 136 Write a commit message samples: bpf: Fix tracex7 error raised on the missing argument The current behavior of 'tracex7' doesn't consist with other bpf samples tracex{1..6}. Other samples do not require any argument to run with, but tracex7 should be run with btrfs device argument. (it should be executed with test_override_return.sh) Currently, tracex7 doesn't have any description about how to run this program and raises an unexpected error. And this result might be confusing since users might not have a hunch about how to run this program. // Current behavior # ./tracex7 sh: 1: Syntax error: word unexpected (expecting ")") // Fixed behavior # ./tracex7 ERROR: Run with the btrfs device argument! In order to fix this error, this commit adds logic to report a message and exit when running this program with a missing argument. Additionally in test_override_return.sh, there is a problem with multiple directory(tmpmnt) creation. So in this commit adds a line with removing the directory with every execution. Signed-off-by: Juhee Kang <claudiajkang@gmail.com> Commit description - elaborate detail - 72 characters per line If necessary, describe how to reproduce (for detailed explanation) Commit Tag - Add Signed-off-by Tag Commit Header - less than 50 characters
  • 137. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 137 Other Commit Tags 1) Signed-off-by understood the licensing policy, agree to submit commit 2) Acked-by maintainer reviewed the patch and decided to approve the patch 3) Reviewed-by Reviewer or another developer reviewed the code for the patch 4) Tested-by Reviewer or other developer tested for changes to the patch 5) Reported-by / Suggested-by Tags left to indicate who found the bug or suggested the feature 6) Fixes Tags that track bugs(commit) that this patch fixes mlxsw: spectrum: use netif_is_macsec() instead of open code === Commit Body === Signed-off-by: Juhee Kang <claudiajkang@gmail.com> Commit Tag Detail samples: bpf: Fix tracex7 error raised on the missing argument === Commit Body === Acked-by: Yonghong Song <yhs@fb.com> amt: Use BIT macros instead of open codes === Commit Body === Reviewed-by: Taehee Yoo <ap420073@gmail.com> Tested-by: Taehee Yoo <ap420073@gmail.com> net: hsr: fix hsr build error when lockdep is not enabled === Commit Body === Reported-by: Eric Dumazet <eric.dumazet@gmail.com> bpf_glue: include errno.h === Commit Body === Fixes: ac4e0913beb1 (“bpf: Export bpf syscall wrapper”)
  • 138. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 138 Configure Environment: prepare to send patch send patches with git-email # apt-get install git-email $ git config --global sendemail.smtpencryption tls $ git config --global sendemail.smtpserver <mailserver> $ git config --global sendemail.smtpuser <email> $ git config --global sendemail.smtpserverport 587 $ git config --global sendemail.smtppass <password> Configure smtp account with git config ex) gmail smtp
  • 139. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 139 Create patch and check format $ git format-patch -1 --subject-prefix=“PATCH, bpf-next“ total: 0 errors, 0 warnings, 0 checks, 17 lines checked 0001-*.patch has no obvious style problems and is ready for submission.
  • 140. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 140 Create patch and check format $ git format-patch -1 --subject-prefix=“PATCH, bpf-next“ <Add kernel tree to mail prefix> total: 0 errors, 0 warnings, 0 checks, 17 lines checked 0001-*.patch has no obvious style problems and is ready for submission. <commit count>
  • 141. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 141 Create patch and check format $ git format-patch -1 --subject-prefix=“PATCH, bpf-next“ 0001-samples-bpf-Fix-tracex7-error-raised-on-the-missing-.patch total: 0 errors, 0 warnings, 0 checks, 17 lines checked 0001-*.patch has no obvious style problems and is ready for submission. <Add kernel tree to mail prefix> <commit count>
  • 142. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 142 Create patch and check format $ git format-patch -1 --subject-prefix=“PATCH, bpf-next“ 0001-samples-bpf-Fix-tracex7-error-raised-on-the-missing-.patch $ apt-get install codespell python-ply python-git $ ./scripts/checkpatch.pl --strict --codespell 0001-*.patch total: 0 errors, 0 warnings, 0 checks, 17 lines checked 0001-*.patch has no obvious style problems and is ready for submission. <created patch file here>
  • 143. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 143 Create patch and check format $ git format-patch -1 --subject-prefix=“PATCH, bpf-next“ 0001-samples-bpf-Fix-tracex7-error-raised-on-the-missing-.patch $ apt-get install codespell python-ply python-git $ ./scripts/checkpatch.pl --strict --codespell 0001-*.patch total: 0 errors, 0 warnings, 0 checks, 17 lines checked 0001-*.patch has no obvious style problems and is ready for submission. < Good to go! >
  • 144. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 144 Find patch mail recipients and send $ ./scripts/get_maintainer.pl –-no-multiline -–no-rolestats 0001-*.patch Alexei Starovoitov <ast@kernel.org>, Daniel Borkmann <daniel@iogearbox.net>, Andrii Nakryiko <andrii@kernel.org>, netdev@vger.kernel.org, bpf@vger.kernel.org $ git send-email --to=“maintainer mail” --to=“mailing list mail” 0001-*.patch Send this email? ([y]es|[n]o|[q]uit|[a]ll): [...] Result: OK <created patch file here> Find maintainers &mailing lists
  • 145. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 145 Find patch mail recipients and send $ ./scripts/get_maintainer.pl –-no-multiline -–no-rolestats 0001-*.patch Alexei Starovoitov <ast@kernel.org>, Daniel Borkmann <daniel@iogearbox.net>, Andrii Nakryiko <andrii@kernel.org>, netdev@vger.kernel.org, bpf@vger.kernel.org $ git send-email --to=“maintainer mail” --to=“mailing list mail” 0001-*.patch Send this email? ([y]es|[n]o|[q]uit|[a]ll): [...] Result: OK Find maintainers &mailing lists
  • 146. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 146 Find patch mail recipients and send $ ./scripts/get_maintainer.pl –-no-multiline -–no-rolestats 0001-*.patch Alexei Starovoitov <ast@kernel.org>, Daniel Borkmann <daniel@iogearbox.net>, Andrii Nakryiko <andrii@kernel.org>, netdev@vger.kernel.org, bpf@vger.kernel.org $ git send-email --to=“maintainer mail” --to=“mailing list mail” 0001-*.patch Send this email? ([y]es|[n]o|[q]uit|[a]ll): Y [...] Result: OK Send mail
  • 147. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 147 Make sure mail has been sent You can check the patch through Gmail
  • 148. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 148 Make sure mail has been sent https://patchwork.kernel.org/project/netdevbpf/list You can check the patch through Patchwork as well (Patchwork : Discussions and development of subsystem View patches.)
  • 149. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 149 Check for review From: Andrii Nakryiko <andrii.nakryiko@gmail.com> To: Juhee Kang <claudiajkang@gmail.com> Cc: Daniel Borkmann <daniel@iogearbox.net>, Alexei Starovoitov <ast@kernel.org>, Andrii Nakryiko <andrii@kernel.org>, Networking <netdev@vger.kernel.org>, bpf <bpf@vger.kernel.org> Subject: Re: [bpf-next 1/2] samples: bpf: Fix tracex7 error raised on the missing argument On Sat, Jul 24, 2021 at 8:21 AM Juhee Kang <claudiajkang@gmail.com> wrote: [...] > diff --git a/samples/bpf/test_override_return.sh b/samples/bpf/test_override_return.sh > index e68b9ee6814b..6480b55502c7 100755 > --- a/samples/bpf/test_override_return.sh > +++ b/samples/bpf/test_override_return.sh > @@ -1,5 +1,6 @@ > #!/bin/bash > > +rm -rf tmpmnt Do we need -rf or -r would do? [...] > -- > 2.27.0
  • 150. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 150 Reply to review From: Juhee Kang <claudiajkang@gmail.com> To: Andrii Nakryiko <andrii.nakryiko@gmail.com> Cc: Daniel Borkmann <daniel@iogearbox.net>, Alexei Starovoitov <ast@kernel.org>, Andrii Nakryiko <andrii@kernel.org>, Networking <netdev@vger.kernel.org>, bpf <bpf@vger.kernel.org> Subject: Re: [bpf-next 1/2] samples: bpf: Fix tracex7 error raised on the missing argument On Tue, Jul 27, 2021 at 5:08 AM Andrii Nakryiko <andrii.nakryiko@gmail.com> wrote: > On Sat, Jul 24, 2021 at 8:21 AM Juhee Kang <claudiajkang@gmail.com> wrote: [...] > > +rm -rf tmpmnt > Do we need -rf or -r would do? It works properly using only -r. Thanks for pointing it out! I will stick to this method. I will send the next version as soon as possible. [...] > > 2.27.0
  • 151. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 151 Modify Code and create second Patch $ git format-patch -1 –v2 --subject-prefix=“PATCH, bpf-next“ v2-0001-samples-bpf-Fix-tracex7-error-raised-on-the-missing-.patch $ ./scripts/checkpatch.pl --strict --codespell v2-0001-*.patch total: 0 errors, 0 warnings, 0 checks, 17 lines checked v2-0001-*.patch has no obvious style problems and is ready for submission. < Specify version of the patch >
  • 152. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 152 Find patch mail recipients and send $ ./scripts/get_maintainer.pl –-no-multiline -–no-rolestats v2-0001-*.patch Alexei Starovoitov <ast@kernel.org>, Daniel Borkmann <daniel@iogearbox.net>, Andrii Nakryiko <andrii@kernel.org>, netdev@vger.kernel.org, bpf@vger.kernel.org $ git send-email --to=“maintainer mail” --to=“mailing list mail” v2-0001-*.patch Send this email? ([y]es|[n]o|[q]uit|[a]ll): Y [...] Result: OK Send mail
  • 153. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 153 Patch accept From: patchwork-bot+netdevbpf <patchwork-bot+netdevbpf@kernel.org> To: Juhee Kang <claudiajkang@gmail.com> Subject: Re: [bpf-next v2 1/2] samples: bpf: Fix tracex7 error raised on the missing argument Hello: This series was applied to bpf/bpf-next.git (refs/heads/master): On Tue, 27 Jul 2021 04:10:55 +0000 you wrote: > The current behavior of 'tracex7' doesn't consist with other bpf samples > tracex{1..6}. Other samples do not require any argument to run with, but > tracex7 should be run with btrfs device argument. (it should be executed > with test_override_return.sh) > [...] Here is the summary with links: - [bpf-next,v2,1/2] samples: bpf: Fix tracex7 error raised on the missing argument https://git.kernel.org/bpf/bpf-next/c/7d07006f0592 - [bpf-next,v2,2/2] samples: bpf: Add the omitted xdp samples to .gitignore https://git.kernel.org/bpf/bpf-next/c/05e9b4f60d31 You are awesome, thank you! You can also check it through Gmail
  • 154. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 154 Patch accept https://patchwork.kernel.org/project/netdevbpf/list If the patch is reflected, the state about the patch in patchwork changes to accept.
  • 155. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack This was a quick guide to Linux kernel contribution 155
  • 156. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack 156 Need help with kernel patching? Participate in the kernel-related Contribution program
  • 157. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack Hope you've overcome the barriers to kernel contribution! 158
  • 158. UbuCon Asia 2022 | Breaking Down the Entry Barriers on Linux Kernel Networking Stack Q&A