TencentOS-kernel/drivers
Daniel Borkmann 13dc0ea1ed bpf: Add redirect_peer helper
Add an efficient ingress to ingress netns switch that can be used out of tc BPF
programs in order to redirect traffic from host ns ingress into a container
veth device ingress without having to go via CPU backlog queue [0]. For local
containers this can also be utilized and path via CPU backlog queue only needs
to be taken once, not twice. On a high level this borrows from ipvlan which does
similar switch in __netif_receive_skb_core() and then iterates via another_round.
This helps to reduce latency for mentioned use cases.

Pod to remote pod with redirect(), TCP_RR [1]:

  # percpu_netperf 10.217.1.33
          RT_LATENCY:         122.450         (per CPU:         122.666         122.401         122.333         122.401 )
        MEAN_LATENCY:         121.210         (per CPU:         121.100         121.260         121.320         121.160 )
      STDDEV_LATENCY:         120.040         (per CPU:         119.420         119.910         125.460         115.370 )
         MIN_LATENCY:          46.500         (per CPU:          47.000          47.000          47.000          45.000 )
         P50_LATENCY:         118.500         (per CPU:         118.000         119.000         118.000         119.000 )
         P90_LATENCY:         127.500         (per CPU:         127.000         128.000         127.000         128.000 )
         P99_LATENCY:         130.750         (per CPU:         131.000         131.000         129.000         132.000 )

    TRANSACTION_RATE:       32666.400         (per CPU:        8152.200        8169.842        8174.439        8169.897 )

Pod to remote pod with redirect_peer(), TCP_RR:

  # percpu_netperf 10.217.1.33
          RT_LATENCY:          44.449         (per CPU:          43.767          43.127          45.279          45.622 )
        MEAN_LATENCY:          45.065         (per CPU:          44.030          45.530          45.190          45.510 )
      STDDEV_LATENCY:          84.823         (per CPU:          66.770          97.290          84.380          90.850 )
         MIN_LATENCY:          33.500         (per CPU:          33.000          33.000          34.000          34.000 )
         P50_LATENCY:          43.250         (per CPU:          43.000          43.000          43.000          44.000 )
         P90_LATENCY:          46.750         (per CPU:          46.000          47.000          47.000          47.000 )
         P99_LATENCY:          52.750         (per CPU:          51.000          54.000          53.000          53.000 )

    TRANSACTION_RATE:       90039.500         (per CPU:       22848.186       23187.089       22085.077       21919.130 )

  [0] https://linuxplumbersconf.org/event/7/contributions/674/attachments/568/1002/plumbers_2020_cilium_load_balancer.pdf
  [1] https://github.com/borkmann/netperf_scripts/blob/master/percpu_netperf

Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/bpf/20201010234006.7075-3-daniel@iogearbox.net
2022-08-30 11:33:35 +08:00
..
accessibility
acpi ACPI: CPPC: Replace cppc_attr with kobj_attribute 2021-05-20 16:07:49 +08:00
amba amba: Fix resource leak for drivers without .remove 2021-04-12 12:52:26 +08:00
android binder: add flag to clear buffer on txn complete 2021-03-16 16:43:28 +08:00
ata ata: libahci_platform: fix IRQ check 2021-05-20 16:07:53 +08:00
atm atm: idt77252: fix null-ptr-dereference 2021-04-12 12:53:23 +08:00
auxdisplay auxdisplay: ht16k33: Fix refresh rate handling 2021-04-12 12:52:25 +08:00
base Add sysfs attribute to hide disk devices 2022-07-25 16:24:47 +08:00
bcma
block drivers/block/null_blk/main: Fix a double free in null_init. 2021-05-20 16:07:55 +08:00
bluetooth Bluetooth: hci_h5: Set HCI_QUIRK_SIMULTANEOUS_DISCOVERY for btrtl 2021-04-12 12:52:46 +08:00
bus bus: qcom: Put child node before return 2021-05-20 16:07:47 +08:00
cdrom
char ttyprintk: Add TTY hangup callback. 2021-05-20 16:07:51 +08:00
clk clk: uniphier: Fix potential infinite loop 2021-05-20 16:07:53 +08:00
clocksource clocksource/drivers/mxs_timer: Add missing semicolon when DEBUG is defined 2021-04-12 12:52:24 +08:00
connector
counter counter: stm32-timer-cnt: fix ceiling miss-alignment with reload register 2021-05-20 16:06:54 +08:00
cpufreq cpufreq: armada-37xx: Fix determining base CPU frequency 2021-05-20 16:07:50 +08:00
cpuidle Intel: cpuidle: Allow idle states to be disabled by default 2021-04-25 14:31:12 +08:00
crypto crypto: qat - Fix a double free in adf_create_ring 2021-05-20 16:07:49 +08:00
dax device-dax/core: Fix memory leak when rmmod dax.ko 2021-03-16 16:43:45 +08:00
dca
devfreq PM / devfreq: Use more accurate returned new_freq as resume_freq 2021-05-20 16:07:49 +08:00
dio
dma dmaengine: dw: Make it dependent to HAS_IOMEM 2021-05-20 16:07:08 +08:00
dma-buf dmabuf: fix use-after-free of dmabuf's file->f_inode 2021-04-12 12:51:14 +08:00
edac EDAC/amd64: Drop some family checks for newer systems 2021-09-23 19:21:36 +08:00
eisa
extcon extcon: arizona: Fix various races on driver unbind 2021-05-20 16:07:27 +08:00
firewire firewire: nosy: Fix a use-after-free bug in nosy_ioctl() 2021-05-20 16:06:50 +08:00
firmware firmware: qcom-scm: Fix QCOM_SCM configuration 2021-05-20 16:07:51 +08:00
fpga
fsi
gnss
gpio gpio: omap: Save and restore sysconfig 2021-05-20 16:07:14 +08:00
gpu drm/i915/gvt: Fix error code in intel_gvt_init_device() 2021-05-20 16:07:58 +08:00
greybus
hid HID: plantronics: Workaround for double volume key presses 2021-05-20 16:07:55 +08:00
hsi HSI: core: fix resource leaks in hsi_add_client_from_dt() 2021-05-20 16:07:54 +08:00
hv Drivers: hv: vmbus: Increase wait time for VMbus unload 2021-05-20 16:07:51 +08:00
hwmon hwmon: (pwm-fan) Ensure that calculation doesn't discard big period values 2021-04-12 12:51:24 +08:00
hwspinlock
hwtracing intel_th: pci: Add Alder Lake-M support 2021-05-20 16:07:34 +08:00
i2c ampere/i2c: designware: Issue abort if the bus got stuck during a transfer 2021-07-12 08:57:22 +00:00
i3c Revert "i3c master: fix missing destroy_workqueue() on error in i3c_master_register" 2021-05-20 16:07:44 +08:00
ide scsi: ide: Do not set the RQF_PREEMPT flag for sense requests 2021-04-12 12:51:06 +08:00
idle Intel: intel_idle: Customize IceLake server support 2021-04-25 14:31:16 +08:00
iio iio:accel:adis16201: Fix wrong axis assignment that prevents loading 2021-05-20 16:07:40 +08:00
infiniband RDMA/bnxt_re: Fix a double free in bnxt_qplib_alloc_res 2021-05-20 16:08:01 +08:00
input Input: ili210x - add missing negation for touch indication on ili210x 2021-05-20 16:07:34 +08:00
interconnect interconnect: core: fix error return code of icc_link_destroy() 2021-05-20 16:07:05 +08:00
iommu iommu/amd: Fix performance counter initialization 2021-04-12 12:53:03 +08:00
ipack
irqchip irqchip: phytium2500: fixed interrupts are concentrated in one cpu 2021-10-19 08:40:52 +00:00
isdn mISDN: fix crash in fritzpci 2021-05-20 16:06:52 +08:00
leds ampere/led: Add Altra LED driver 2021-07-12 08:57:22 +00:00
lightnvm lightnvm: fix memory leak when submit fails 2021-04-12 12:51:39 +08:00
macintosh
mailbox mailbox: avoid timer start from callback 2021-03-16 16:38:59 +08:00
mcb
md md: Fix missing unused status line of /proc/mdstat 2021-05-20 16:07:41 +08:00
media bpf: Implement CAP_BPF 2022-08-30 11:33:26 +08:00
memory memory: pl353: fix mask of ECC page_size config register 2021-05-20 16:07:48 +08:00
memstick memstick: r592: Fix error return in r592_probe() 2021-03-16 16:43:02 +08:00
message scsi: mptfusion: Fix null pointer dereferences in mptscsih_remove() 2021-03-16 16:39:58 +08:00
mfd mfd: stm32-timers: Avoid clearing auto reload register 2021-05-20 16:07:54 +08:00
misc misc: vmw_vmci: explicitly initialize vmci_datagram payload 2021-05-20 16:07:40 +08:00
mmc mmc: sdhci-pci: Add PCI IDs for Intel LKF 2021-05-20 16:07:28 +08:00
mtd mtd: rawnand: gpmi: Fix a double free in gpmi_nand_init 2021-05-20 16:07:48 +08:00
mux
net bpf: Add redirect_peer helper 2022-08-30 11:33:35 +08:00
nfc nfc: pn533: prevent potential memory corruption 2021-05-20 16:07:56 +08:00
ntb NTB: hw: amd: fix an issue about leak system resources 2021-03-16 16:39:10 +08:00
nubus
nvdimm libnvdimm/region: Fix nvdimm_has_flush() to handle ND_REGION_ASYNC 2021-05-20 16:07:11 +08:00
nvme nvme-pci: initialize tagset numa value to the value of the ctrl 2021-08-18 07:22:38 +00:00
nvmem nvmem: core: skip child nodes not matching binding 2021-04-12 12:52:30 +08:00
of Revert "fdt: Properly handle "no-map" field in the memory region" 2021-05-20 16:08:02 +08:00
opp opp: Reduce the size of critical section in _opp_table_kref_release() 2021-03-16 16:40:41 +08:00
oprofile
parisc
parport
pci ampere/arm64: Work around Ampere Altra erratum #82288 PCIE_65 2021-07-12 08:57:22 +00:00
pcmcia
perf perf/arm_pmu_platform: Fix error handling 2021-05-20 16:07:24 +08:00
phy phy: marvell: ARMADA375_USBCLUSTER_PHY should not default to y, unconditionally 2021-05-20 16:07:47 +08:00
pinctrl pinctrl: lewisburg: Update number of pins in community 2021-05-20 16:07:14 +08:00
platform platform/x86: pmc_atom: Match all Beckhoff Automation baytrail boards with critclk_systems DMI table 2021-05-20 16:07:51 +08:00
pnp
power power: supply: s3c_adc_battery: fix possible use-after-free in s3c_adc_bat_remove() 2021-05-20 16:07:29 +08:00
powercap powercap: restrict energy meter to root access 2021-03-16 16:40:32 +08:00
pps
ps3 powerpc/ps3: use dma_mapping_error() 2021-03-16 16:43:15 +08:00
ptp
pwm pwm: rockchip: rockchip_pwm_probe(): Remove superfluous clk_unprepare() 2021-04-12 12:52:30 +08:00
rapidio rapidio: fix the missed put_device() for rio_mport_add_riodev 2021-03-16 16:38:59 +08:00
ras Intel: x86/mce: Fix all mce notifiers to update the mce->kflags bitmask 2021-04-25 14:31:15 +08:00
regulator regulator: bd9571mwv: Fix AVS and DVFS voltage range 2021-05-20 16:06:58 +08:00
remoteproc remoteproc: qcom: Fix potential NULL dereference in adsp_init_mmio() 2021-03-16 16:43:11 +08:00
reset
rpmsg rpmsg: glink: Use complete_all for open states 2021-03-16 16:39:50 +08:00
rtc rtc: s5m: select REGMAP_I2C 2021-04-12 12:52:24 +08:00
s390 s390/dasd: fix hanging IO request during DASD driver unbind 2021-04-12 12:53:06 +08:00
sbus
scsi Update LPFC driver from 12.4 to 12.8 2022-03-02 10:48:07 +08:00
sfi
sh
siox
slimbus slimbus: qcom-ngd-ctrl: Avoid sending power requests without QMI 2021-03-16 16:42:54 +08:00
soc soc: aspeed: fix a ternary sign expansion bug 2021-05-20 16:07:52 +08:00
soundwire soundwire: stream: fix memory leak in stream config error path 2021-05-20 16:07:48 +08:00
spi spi: fsl-lpspi: Fix PM reference leak in lpspi_prepare_xfer_hardware() 2021-05-20 16:07:50 +08:00
spmi spmi: spmi-pmic-arb: Fix hw_irq overflow 2021-04-12 12:52:39 +08:00
ssb
staging media: omap4iss: return error code when omap4iss_get() failed 2021-05-20 16:07:52 +08:00
target scsi: target: pscsi: Fix warning in pscsi_complete_cmd() 2021-05-20 16:07:27 +08:00
tc
tee tee: optee: do not check memref size on return from Secure World 2021-05-20 16:07:24 +08:00
thermal thermal/core: Add NULL pointer check before using cooling device stats 2021-05-20 16:06:47 +08:00
thunderbolt thunderbolt: Fix use-after-free in remove_unplugged_switch() 2021-03-16 16:42:03 +08:00
tty serial: core: return early on unsupported ioctls 2021-05-20 16:07:50 +08:00
uio uio: avoid to request_irq when the legacy irq is not connected 2021-03-16 16:43:58 +08:00
usb kabi: disable USB_STORAGE module namespace 2021-06-23 07:24:18 +00:00
vfio vfio/mdev: Do not allow a mdev_type to have a NULL parent pointer 2021-05-20 16:07:53 +08:00
vhost vhost: Fix vhost_vq_reset() 2021-05-20 16:06:46 +08:00
video fbdev: zero-fill colormap in fbcmap.c 2021-05-20 16:07:23 +08:00
virt virt: vbox: Do not use wait_event_interruptible when called from kernel context 2021-04-12 12:52:10 +08:00
virtio virtio_ring: Fix two use after free bugs 2021-03-16 16:43:19 +08:00
visorbus
vlynq
vme
w1 w1: mxc_w1: Fix timeout resolution problem leading to bus error 2021-03-16 16:39:58 +08:00
watchdog watchdog: mei_wdt: request stop on unregister 2021-04-12 12:52:38 +08:00
xen xen/events: fix setting irq affinity 2021-05-20 16:07:06 +08:00
zorro
Kconfig
Makefile