Git Product home page Git Product logo

linux-gre-keepalive's Introduction

linux-gre-keepalive

This eBPF program adds high-performance reply-only GRE keepalive support for Linux kernel.

Build Status

Note: If you don't want to install anything and don't care about some potential security problems, just enable the following 2 options to get native GRE keepalive support on Linux:

sysctl net.ipv4.conf.default.accept_local=1
sysctl net.ipv4.conf.all.accept_local=1

Compatiblity

Protocol Linux name XDP Executable Tested Vendors Comments
GRE gre keepalive_gre.o Cisco, MikroTik
GRE6 ip6gre keepalive_gre6.o MikroTik

Usage

Simply load the correct XDP executable on the tunnel interface you just created. For example, assume you have set up the GRE tunnel as gre0, to enable GRE keepalive:

ip link set dev gre0 xdp object build/keepalive_gre.o

To disable it without removing the tunnel interface:

ip link set dev gre0 xdp off

Loading an executable on other types of interfaces is considered an undefined behavior.

Caveats

GRE on Cisco IOS XE

On Cisco IOS XE, you must explicitly configure an ip address or an ipv6 address to make the GRE tunnel actually send something. If you don't configure IP addresses, debug tunnel keepalive will still show keepalive packets being sent, but the other end won't receive anything. A valid configuration example:

interface Tunnel10
 ip address 10.0.0.1 255.255.255.0
 keepalive 1 2
 tunnel source GigabitEthernet1
 tunnel destination your.other.end.ip.address
 tunnel mode gre ip

GRE6 (ip6gre) keepalive support

GRE6 keepalive is not supported by:

MikroTik RouterOS implements their own GRE IPv6 keepalive with inner GRE header's proto field set to 0x86dd. This have been implemented by us.

Building

Assume we are on a Debian 10.

sudo apt install build-essential clang llvm libelf-dev gcc-multilib linux-headers-$(dpkg --print-architecture)
make all

Debugging

View compiled bytecode:

llvm-objdump -S build/keepalive_gre.o

Enabling debugging output:

#define DEBUG
#define DEBUG_PRINT_HEADER_SIZE 32

Then view debug output after enabling it by:

cat /sys/kernel/debug/tracing/trace_pipe

References

Here's a list of awesome articles and projects I found useful:

linux-gre-keepalive's People

Contributors

jamesits avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

linux-gre-keepalive's Issues

Failed to simulate the keepalive packet

Thank you for your code!
Actually, i encountered a question about gre proto.
I use scapy to simulate the keepalive packet.

###[ IP ]###
  version   = 4
  ihl       = None
  tos       = 0x0
  len       = None
  id        = 1
  flags     =
  frag      = 0
  ttl       = 64
  proto     = gre
  chksum    = None
  src       = 192.168.122.219
  dst       = 192.168.122.105
  \options   \
###[ GRE ]###
     chksum_present= 0
     routing_present= 0
     key_present= 0
     seqnum_present= 0
     strict_route_source= 0
     recursion_control= 0
     flags     = 0
     version   = 0
     proto     = IPv4
###[ IP ]###
        version   = 4
        ihl       = None
        tos       = 0x0
        len       = None
        id        = 1
        flags     =
        frag      = 0
        ttl       = 64
        proto     = gre
        chksum    = None
        src       = 192.168.122.105
        dst       = 192.168.122.219
        \options   \
###[ GRE ]###
           chksum_present= 0
           routing_present= 0
           key_present= 0
           seqnum_present= 0
           strict_route_source= 0
           recursion_control= 0
           flags     = 0
           version   = 0
           proto     = 0x0
###[ Raw ]###
              load      = 'Keepalive Request for gre test'

But when debugging i found it with wrong proto.

          <idle>-0       [002] d.s.1 590924.419672: bpf_trace_printk: New packet

          <idle>-0       [002] dNs.1 590924.419691: bpf_trace_printk: Packet header dump:

          <idle>-0       [002] dNs.1 590924.419692: bpf_trace_printk: #0: 45

          <idle>-0       [002] dNs.1 590924.419692: bpf_trace_printk: #1: 0

          <idle>-0       [002] dNs.1 590924.419692: bpf_trace_printk: #2: 0

          <idle>-0       [002] dNs.1 590924.419693: bpf_trace_printk: #3: 36

          <idle>-0       [002] dNs.1 590924.419693: bpf_trace_printk: #4: 0

          <idle>-0       [002] dNs.1 590924.419693: bpf_trace_printk: #5: 1

          <idle>-0       [002] dNs.1 590924.419693: bpf_trace_printk: #6: 0

          <idle>-0       [002] dNs.1 590924.419694: bpf_trace_printk: #7: 0

          <idle>-0       [002] dNs.1 590924.419694: bpf_trace_printk: #8: 40

          <idle>-0       [002] dNs.1 590924.419694: bpf_trace_printk: #9: 2f

          <idle>-0       [002] dNs.1 590924.419695: bpf_trace_printk: #10: 4

          <idle>-0       [002] dNs.1 590924.419695: bpf_trace_printk: #11: 3

          <idle>-0       [002] dNs.1 590924.419695: bpf_trace_printk: #12: c0

          <idle>-0       [002] dNs.1 590924.419695: bpf_trace_printk: #13: a8

          <idle>-0       [002] dNs.1 590924.419696: bpf_trace_printk: #14: 7a

          <idle>-0       [002] dNs.1 590924.419696: bpf_trace_printk: #15: 69

          <idle>-0       [002] dNs.1 590924.419696: bpf_trace_printk: #16: c0

          <idle>-0       [002] dNs.1 590924.419696: bpf_trace_printk: #17: a8

          <idle>-0       [002] dNs.1 590924.419697: bpf_trace_printk: #18: 7a

          <idle>-0       [002] dNs.1 590924.419697: bpf_trace_printk: #19: db

          <idle>-0       [002] dNs.1 590924.419697: bpf_trace_printk: #20: 0

          <idle>-0       [002] dNs.1 590924.419697: bpf_trace_printk: #21: 0

          <idle>-0       [002] dNs.1 590924.419698: bpf_trace_printk: #22: 0

          <idle>-0       [002] dNs.1 590924.419698: bpf_trace_printk: #23: 0

          <idle>-0       [002] dNs.1 590924.419698: bpf_trace_printk: #24: 4b

          <idle>-0       [002] dNs.1 590924.419698: bpf_trace_printk: #25: 65

          <idle>-0       [002] dNs.1 590924.419699: bpf_trace_printk: #26: 65

          <idle>-0       [002] dNs.1 590924.419699: bpf_trace_printk: #27: 70

          <idle>-0       [002] dNs.1 590924.419699: bpf_trace_printk: #28: 61

          <idle>-0       [002] dNs.1 590924.419699: bpf_trace_printk: #29: 6c

          <idle>-0       [002] dNs.1 590924.419700: bpf_trace_printk: #30: 69

          <idle>-0       [002] dNs.1 590924.419700: bpf_trace_printk: #31: 76

          <idle>-0       [002] dNs.1 590924.419700: bpf_trace_printk: Outer GRE flags=0x0 proto=0

          <idle>-0       [002] dNs.1 590924.419701: bpf_trace_printk: Outer GRE bpf_htons=0x8 proto=0

          <idle>-0       [002] dNs.1 590924.419702: bpf_trace_printk: Inner GRE dataptr=144793918 proto=44 data_end=144793948

Could you help with this problem?

Why is the XDP_TX packet dropped by the kernel?

Jamesits 你好,我又来了:)

测试环境:
debian11

iproute2/oldstable,now 5.10.0-4 amd64 [installed,automatic]

root@debian11:~# cat /boot/config-5.10.0-25-cloud-amd64 |grep BTF
CONFIG_DEBUG_INFO_BTF=y

root@debian11:~# ip -V
ip utility, iproute2-5.9.0, libbpf 0.3.0

gre tunnel config:
local ip:172.19.92.248
remote ip:172.19.100.254

1.//bpftool prog traclog的结果(libbpf测试过0.0.8的版本,1.2.0的版本,情况一样)
处理in的数据包 ,然后截取head后,xdp_tx 。

      <idle>-0       [001] d.s. 69839.759732: bpf_trace_printk: New packet

      <idle>-0       [001] dNs. 69839.759767: bpf_trace_printk: Packet header dump:

      <idle>-0       [001] dNs. 69839.759770: bpf_trace_printk: #0: 45

      <idle>-0       [001] dNs. 69839.759771: bpf_trace_printk: #1: c0

      <idle>-0       [001] dNs. 69839.759772: bpf_trace_printk: #2: 0

      <idle>-0       [001] dNs. 69839.759773: bpf_trace_printk: #3: 30

      <idle>-0       [001] dNs. 69839.759774: bpf_trace_printk: #4: a

      <idle>-0       [001] dNs. 69839.759775: bpf_trace_printk: #5: 1f

      <idle>-0       [001] dNs. 69839.759775: bpf_trace_printk: #6: 0

      <idle>-0       [001] dNs. 69839.759776: bpf_trace_printk: #7: 0

      <idle>-0       [001] dNs. 69839.759777: bpf_trace_printk: #8: ff

      <idle>-0       [001] dNs. 69839.759778: bpf_trace_printk: #9: 2f

      <idle>-0       [001] dNs. 69839.759779: bpf_trace_printk: #10: 96

      <idle>-0       [001] dNs. 69839.759780: bpf_trace_printk: #11: a2

      <idle>-0       [001] dNs. 69839.759781: bpf_trace_printk: #12: ac

      <idle>-0       [001] dNs. 69839.759782: bpf_trace_printk: #13: 13

      <idle>-0       [001] dNs. 69839.759782: bpf_trace_printk: #14: 64

      <idle>-0       [001] dNs. 69839.759783: bpf_trace_printk: #15: fe

      <idle>-0       [001] dNs. 69839.759784: bpf_trace_printk: #16: ac

      <idle>-0       [001] dNs. 69839.759785: bpf_trace_printk: #17: 13

      <idle>-0       [001] dNs. 69839.759786: bpf_trace_printk: #18: 5c

      <idle>-0       [001] dNs. 69839.759786: bpf_trace_printk: #19: f8

      <idle>-0       [001] dNs. 69839.759787: bpf_trace_printk: #20: 0

      <idle>-0       [001] dNs. 69839.759788: bpf_trace_printk: #21: 0

      <idle>-0       [001] dNs. 69839.759789: bpf_trace_printk: #22: 8

      <idle>-0       [001] dNs. 69839.759789: bpf_trace_printk: #23: 0

      <idle>-0       [001] dNs. 69839.759790: bpf_trace_printk: #24: 45

      <idle>-0       [001] dNs. 69839.759791: bpf_trace_printk: #25: c0

      <idle>-0       [001] dNs. 69839.759792: bpf_trace_printk: #26: 0

      <idle>-0       [001] dNs. 69839.759793: bpf_trace_printk: #27: 18

      <idle>-0       [001] dNs. 69839.759793: bpf_trace_printk: #28: a

      <idle>-0       [001] dNs. 69839.759794: bpf_trace_printk: #29: 1e

      <idle>-0       [001] dNs. 69839.759795: bpf_trace_printk: #30: 0

      <idle>-0       [001] dNs. 69839.759796: bpf_trace_printk: #31: 0

      <idle>-0       [001] dNs. 69839.759797: bpf_trace_printk: Outer GRE flags=0x0 proto=8

      <idle>-0       [001] dNs. 69839.759799: bpf_trace_printk: IPv4 packet_size=0x14, proto=0x2f

      <idle>-0       [001] dNs. 69839.759800: bpf_trace_printk: Inner is GRE4, proto=0

      <idle>-0       [001] dNs. 69839.759801: bpf_trace_printk: GRE4 keepalive received!

但是。
#xdp_tx的包,有问题,导致gre2卡的dropped队列增加。

gre2: flags=209<UP,POINTOPOINT,RUNNING,NOARP> mtu 1476
inet 6.6.6.2 netmask 255.255.255.0 destination 6.6.6.2
inet6 fe80::5efe:ac13:5cf8 prefixlen 64 scopeid 0x20
unspec AC-13-5C-F8-00-00-00-55-00-00-00-00-00-00-00-00 txqueuelen 1000 (UNSPEC)
RX packets 13839 bytes 332136 (324.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 36 bytes 2240 (2.1 KiB)
TX errors 0 dropped 9457 overruns 0 carrier 0 collisions 0

3.通过nettrace 对核心丢包,进行分析,如下

//[69535.293726] [enqueue_to_backlog ] ether protocol: 44051

***************** ffff88fec0aeb900 ***************
[69535.293595] [__netif_receive_skb_core] GRE: 172.19.100.254 -> 172.19.92.248
[69535.293618] [ip_rcv_core ] GRE: 172.19.100.254 -> 172.19.92.248
[69535.293631] [ip_route_input_slow ] GRE: 172.19.100.254 -> 172.19.92.248
[69535.293661] [fib_validate_source ] GRE: 172.19.100.254 -> 172.19.92.248
[69535.293674] [ip_local_deliver ] GRE: 172.19.100.254 -> 172.19.92.248
[69535.293684] [ip_local_deliver_finish] GRE: 172.19.100.254 -> 172.19.92.248
[69535.293726] [enqueue_to_backlog ] ether protocol: 44051
[69535.293740] [__netif_receive_skb_core] ether protocol: 44051
[69535.293754] [netif_receive_generic_xdp] ether protocol: 44051
[69535.293904] [kfree_skb ] ether protocol: 44051

***************** ffff88fec0aeb900 ***************

xdpdump 抓包的数据如下:

XDP_TX的是
异常数据?

这里type是ac 13(十进制的44051)

0000 45 c0 00 30 aa f4 00 00 ff 2f f5 cc ac 13 64 fe
0010 ac 13 5c f8 00 00 08 00 45 c0 00 18 aa f3 00 00
0020 ff 2f f5 e5 ac 13 5c f8 ac 13 64 fe 00 00 00 00

5.问题:为什么
if (bpf_xdp_adjust_head(ctx, (int)(cutoff_pos - data_start))) return -1;
action = XDP_TX;
拆解head后的包,是异常包。
导致kernel处理的时候,作为异常包给直接drop了。

gre keepalive while faking Zscaler ZIA for Velocloud SD-WAN edge

Hi, thanks for the repo and i found nice usage of it.
Needed small hack to get it to work, and i don't fully understand why that hack was needed, and if could be considered to be a bug, feature or something else :)
Hope you can have a look.
Needed to uncomment saddr/daddr check to make it work for me like below:

		if (
			inner_grehdr -> proto != 0
			// || inner_iphdr -> saddr != outer_iphdr -> daddr
			// || inner_iphdr -> daddr != outer_iphdr -> saddr
			) goto out;

Concept: using my ubuntu laptop to fake Zscale/ZIA gre endpoint for Velocloud(VMWare) sdwan aplliance.
set-up script to add ip-aliasses on the NIC and configure 2 gre tunnels on it (with both endpoint both on velocloud edge):

IF="enp0s25"

EDGEIP="192.168.1.64"
LOCALIP_1="192.168.1.65"
LOCALIP_2="192.168.1.67"

GRETUNNELIP_1="172.22.74.137/30"		#Router IP/Mask (VCO tunnel), not Internetal ZEN IP/mask
GRETUNNELIP_2="172.22.74.141/30"		#Router IP/Mask (VCO tunnel), not Internetal ZEN IP/mask

# setup tunnel endpoint IP's for GRE (IP alias)
ip addr add ${LOCALIP_1} dev ${IF} label ${IF}:gre1
ip addr add ${LOCALIP_2} dev ${IF} label ${IF}:gre2

# Setup GRE1
ip tunnel add gre1 mode gre local ${LOCALIP_1} remote ${EDGEIP} ttl 255
ip addr add ${GRETUNNELIP_1} peer 172.22.74.138 dev gre1
ip link set gre1 up

# Set up GRE2
ip tunnel add gre2 mode gre local ${LOCALIP_2} remote ${EDGEIP} ttl 255
ip addr add ${GRETUNNELIP_2} peer 172.22.74.142 dev gre2
ip link set gre2 up

# Adjust firewall (apart form GRE itself)
iptables -I INPUT -i gre1 -j ACCEPT
iptables -I INPUT -i gre2 -j ACCEPT
iptables -I FORWARD -j ACCEPT

# as recommended:
sysctl net.ipv4.conf.default.accept_local=1
sysctl net.ipv4.conf.all.accept_local=1

# Load eBpf gre-keepalive responder
ip link set dev gre1 xdp object build/keepalive_gre.o

Screenshot of received and captured keepalive request;
Screenshot_2021-11-23_22-19-39-gre-keepalive-request

As written above needed to disable the daddr/saddr check to make it work for me.
During compile i enabled debug by defining DEBUG and DEBUG_PRINT_HEADER_SIZE 32

added a bit more printing regarding saddr and daddr just before sadd/daddr check:

#ifdef DEBUG
                bpf_printk("Inner is GRE4, proto=%x\n", inner_grehdr->proto);
                bpf_printk("inner_iphdr -> saddr=%pI4\n", inner_iphdr->saddr);
                bpf_printk("outer_iphdr -> daddr=%pI4\n", outer_iphdr->daddr);
                bpf_printk("inner_iphdr -> daddr=%pI4\n", inner_iphdr->daddr);
                bpf_printk("outer_iphdr -> saddr=%pI4\n", outer_iphdr->saddr);

                bpf_printk("inner_iphdr -> saddr=%x\n", inner_iphdr->saddr);
                bpf_printk("outer_iphdr -> daddr=%x\n", outer_iphdr->daddr);
                bpf_printk("inner_iphdr -> daddr=%x\n", inner_iphdr->daddr);
                bpf_printk("outer_iphdr -> saddr=%x\n", outer_iphdr->saddr);

                bpf_printk("inner_iphdr -> saddr != outer_iphdr -> daddr: %d\n",
                           inner_iphdr->saddr != outer_iphdr->daddr);
                bpf_printk("inner_iphdr -> daddr != outer_iphdr -> saddr: %d\n",
                           inner_iphdr->daddr != outer_iphdr->saddr);

#endif

and

# cat /sys/kernel/debug/tracing/trace_pipe
          <idle>-0       [005] d.s. 50908.482595: bpf_trace_printk: New packet

          <idle>-0       [005] d.s. 50908.482598: bpf_trace_printk: Packet header dump:

          <idle>-0       [005] d.s. 50908.482601: bpf_trace_printk: #0: 45

          <idle>-0       [005] d.s. 50908.482602: bpf_trace_printk: #1: 0

          <idle>-0       [005] d.s. 50908.482603: bpf_trace_printk: #2: 0

          <idle>-0       [005] d.s. 50908.482603: bpf_trace_printk: #3: 30

          <idle>-0       [005] d.s. 50908.482604: bpf_trace_printk: #4: 2c

          <idle>-0       [005] d.s. 50908.482605: bpf_trace_printk: #5: a8

          <idle>-0       [005] d.s. 50908.482605: bpf_trace_printk: #6: 0

          <idle>-0       [005] d.s. 50908.482606: bpf_trace_printk: #7: 0

          <idle>-0       [005] d.s. 50908.482607: bpf_trace_printk: #8: 3f

          <idle>-0       [005] d.s. 50908.482608: bpf_trace_printk: #9: 2f

          <idle>-0       [005] d.s. 50908.482609: bpf_trace_printk: #10: cb

          <idle>-0       [005] d.s. 50908.482609: bpf_trace_printk: #11: 25

          <idle>-0       [005] d.s. 50908.482610: bpf_trace_printk: #12: c0

          <idle>-0       [005] d.s. 50908.482611: bpf_trace_printk: #13: a8

          <idle>-0       [005] d.s. 50908.482612: bpf_trace_printk: #14: 1

          <idle>-0       [005] d.s. 50908.482612: bpf_trace_printk: #15: 40

          <idle>-0       [005] d.s. 50908.482613: bpf_trace_printk: #16: c0

          <idle>-0       [005] d.s. 50908.482614: bpf_trace_printk: #17: a8

          <idle>-0       [005] d.s. 50908.482615: bpf_trace_printk: #18: 1

          <idle>-0       [005] d.s. 50908.482615: bpf_trace_printk: #19: 41

          <idle>-0       [005] d.s. 50908.482616: bpf_trace_printk: #20: 0

          <idle>-0       [005] d.s. 50908.482617: bpf_trace_printk: #21: 0

          <idle>-0       [005] d.s. 50908.482617: bpf_trace_printk: #22: 8

          <idle>-0       [005] d.s. 50908.482618: bpf_trace_printk: #23: 0

          <idle>-0       [005] d.s. 50908.482619: bpf_trace_printk: #24: 45

          <idle>-0       [005] d.s. 50908.482619: bpf_trace_printk: #25: 0

          <idle>-0       [005] d.s. 50908.482620: bpf_trace_printk: #26: 0

          <idle>-0       [005] d.s. 50908.482621: bpf_trace_printk: #27: 18

          <idle>-0       [005] d.s. 50908.482621: bpf_trace_printk: #28: 2c

          <idle>-0       [005] d.s. 50908.482622: bpf_trace_printk: #29: a7

          <idle>-0       [005] d.s. 50908.482623: bpf_trace_printk: #30: 0

          <idle>-0       [005] d.s. 50908.482624: bpf_trace_printk: #31: 0

          <idle>-0       [005] d.s. 50908.482625: bpf_trace_printk: Outer GRE flags=0x0 proto=8

          <idle>-0       [005] d.s. 50908.482626: bpf_trace_printk: IPv4 packet_size=0x14, proto=0x2f

          <idle>-0       [005] d.s. 50908.482627: bpf_trace_printk: Inner is GRE4, proto=0

          <idle>-0       [005] d.s. 50908.482632: bpf_trace_printk: inner_iphdr -> saddr=0.0.0.0

          <idle>-0       [005] d.s. 50908.482633: bpf_trace_printk: outer_iphdr -> daddr=0.0.0.0

          <idle>-0       [005] d.s. 50908.482634: bpf_trace_printk: inner_iphdr -> daddr=0.0.0.0

          <idle>-0       [005] d.s. 50908.482635: bpf_trace_printk: outer_iphdr -> saddr=0.0.0.0

          <idle>-0       [005] d.s. 50908.482636: bpf_trace_printk: inner_iphdr -> saddr=8a4a16ac

          <idle>-0       [005] d.s. 50908.482637: bpf_trace_printk: outer_iphdr -> daddr=4101a8c0

          <idle>-0       [005] d.s. 50908.482638: bpf_trace_printk: inner_iphdr -> daddr=894a16ac

          <idle>-0       [005] d.s. 50908.482639: bpf_trace_printk: outer_iphdr -> saddr=4001a8c0

          <idle>-0       [005] d.s. 50908.482640: bpf_trace_printk: inner_iphdr -> saddr != outer_iphdr -> daddr: 1

          <idle>-0       [005] d.s. 50908.482642: bpf_trace_printk: inner_iphdr -> daddr != outer_iphdr -> saddr: 1

          <idle>-0       [005] d.s. 50908.482642: bpf_trace_printk: GRE4 keepalive received!


looks like the '%pI4' always prints a '0.0.0.0', although the inner/outer daddr/saddr seem to contain actual values (but not identical).

Could you shed some light on it please?
Is the disabling the right thing to do in this case?

Note configured Zscaler GRE tunnels on cisco devices, so suggestion is that velocloud edges might tried to be compatible with that.

Regards,

support PVE kernel ?

Hello,

I use your module with Debian 10 and it works perfectly.
Today, i have installed a Debian 11 with PVE kernel (Proxmox 7)

Kernel installed:

pve-headers-5.15.39-1-pve - Proxmox Kernel Headers
pve-kernel-5.15.39-1-pve - Proxmox Kernel Image

My Mikrotik does not receive reply to keepalive packets and shut the tunnel.
The log:

         <idle>-0       [007] d.s.1 19491.207150: bpf_trace_printk: New packet

          <idle>-0       [007] d.s.1 19491.207153: bpf_trace_printk: Packet size too small, dump failed

          <idle>-0       [007] d.s.1 19497.112120: bpf_trace_printk: New packet

          <idle>-0       [007] d.s.1 19497.112121: bpf_trace_printk: Packet header dump:

          <idle>-0       [007] d.s.1 19497.112122: bpf_trace_printk: #0: 45

          <idle>-0       [007] d.s.1 19497.112122: bpf_trace_printk: #1: 0

          <idle>-0       [007] d.s.1 19497.112123: bpf_trace_printk: #2: 0

          <idle>-0       [007] d.s.1 19497.112123: bpf_trace_printk: #3: 54

          <idle>-0       [007] d.s.1 19497.112123: bpf_trace_printk: #4: 9f

          <idle>-0       [007] d.s.1 19497.112123: bpf_trace_printk: #5: d0

          <idle>-0       [007] d.s.1 19497.112123: bpf_trace_printk: #6: 0

          <idle>-0       [007] d.s.1 19497.112124: bpf_trace_printk: #7: 0

          <idle>-0       [007] d.s.1 19497.112124: bpf_trace_printk: #8: 3f

          <idle>-0       [007] d.s.1 19497.112124: bpf_trace_printk: #9: 1

          <idle>-0       [007] d.s.1 19497.112125: bpf_trace_printk: #10: c6

          <idle>-0       [007] d.s.1 19497.112125: bpf_trace_printk: #11: 91

          <idle>-0       [007] d.s.1 19497.112125: bpf_trace_printk: #12: a

          <idle>-0       [007] d.s.1 19497.112125: bpf_trace_printk: #13: 1

          <idle>-0       [007] d.s.1 19497.112126: bpf_trace_printk: #14: 0

          <idle>-0       [007] d.s.1 19497.112126: bpf_trace_printk: #15: 1

          <idle>-0       [007] d.s.1 19497.112126: bpf_trace_printk: #16: a

          <idle>-0       [007] d.s.1 19497.112126: bpf_trace_printk: #17: 14

          <idle>-0       [007] d.s.1 19497.112127: bpf_trace_printk: #18: 1

          <idle>-0       [007] d.s.1 19497.112127: bpf_trace_printk: #19: 32

          <idle>-0       [007] d.s.1 19497.112127: bpf_trace_printk: #20: 0

          <idle>-0       [007] d.s.1 19497.112127: bpf_trace_printk: #21: 0

          <idle>-0       [007] d.s.1 19497.112127: bpf_trace_printk: #22: 22

          <idle>-0       [007] d.s.1 19497.112128: bpf_trace_printk: #23: 3e

          <idle>-0       [007] d.s.1 19497.112128: bpf_trace_printk: #24: e7

          <idle>-0       [007] d.s.1 19497.112128: bpf_trace_printk: #25: 32

          <idle>-0       [007] d.s.1 19497.112128: bpf_trace_printk: #26: 0

          <idle>-0       [007] d.s.1 19497.112129: bpf_trace_printk: #27: 3

          <idle>-0       [007] d.s.1 19497.112129: bpf_trace_printk: #28: 71

          <idle>-0       [007] d.s.1 19497.112129: bpf_trace_printk: #29: f3

          <idle>-0       [007] d.s.1 19497.112129: bpf_trace_printk: #30: de

          <idle>-0       [007] d.s.1 19497.112129: bpf_trace_printk: #31: 62

          <idle>-0       [007] d.s.1 19497.112130: bpf_trace_printk: Outer GRE flags=0x0 proto=3e22

          <idle>-0       [007] d.s.1 19497.112131: bpf_trace_printk: Unknown proto 3e22 inside GRE
          <idle>-0       [007] d.s.1 19498.113709: bpf_trace_printk: New packet

          <idle>-0       [007] d.s.1 19498.113710: bpf_trace_printk: Packet header dump:

          <idle>-0       [007] d.s.1 19498.113711: bpf_trace_printk: #0: 45

          <idle>-0       [007] d.s.1 19498.113711: bpf_trace_printk: #1: 0

          <idle>-0       [007] d.s.1 19498.113711: bpf_trace_printk: #2: 0

          <idle>-0       [007] d.s.1 19498.113711: bpf_trace_printk: #3: 54

          <idle>-0       [007] d.s.1 19498.113712: bpf_trace_printk: #4: 9f

          <idle>-0       [007] d.s.1 19498.113712: bpf_trace_printk: #5: d1

          <idle>-0       [007] d.s.1 19498.113712: bpf_trace_printk: #6: 0

          <idle>-0       [007] d.s.1 19498.113712: bpf_trace_printk: #7: 0

          <idle>-0       [007] d.s.1 19498.113713: bpf_trace_printk: #8: 3f

          <idle>-0       [007] d.s.1 19498.113713: bpf_trace_printk: #9: 1

          <idle>-0       [007] d.s.1 19498.113713: bpf_trace_printk: #10: c6

          <idle>-0       [007] d.s.1 19498.113714: bpf_trace_printk: #11: 90

          <idle>-0       [007] d.s.1 19498.113714: bpf_trace_printk: #12: a

          <idle>-0       [007] d.s.1 19498.113714: bpf_trace_printk: #13: 1

          <idle>-0       [007] d.s.1 19498.113714: bpf_trace_printk: #14: 0

          <idle>-0       [007] d.s.1 19498.113715: bpf_trace_printk: #15: 1

          <idle>-0       [007] d.s.1 19498.113715: bpf_trace_printk: #16: a

          <idle>-0       [007] d.s.1 19498.113715: bpf_trace_printk: #17: 14

          <idle>-0       [007] d.s.1 19498.113715: bpf_trace_printk: #18: 1

          <idle>-0       [007] d.s.1 19498.113716: bpf_trace_printk: #19: 32

          <idle>-0       [007] d.s.1 19498.113716: bpf_trace_printk: #20: 0

          <idle>-0       [007] d.s.1 19498.113716: bpf_trace_printk: #21: 0

          <idle>-0       [007] d.s.1 19498.113716: bpf_trace_printk: #22: bc

          <idle>-0       [007] d.s.1 19498.113716: bpf_trace_printk: #23: 36

          <idle>-0       [007] d.s.1 19498.113717: bpf_trace_printk: #24: e7

          <idle>-0       [007] d.s.1 19498.113717: bpf_trace_printk: #25: 32

          <idle>-0       [007] d.s.1 19498.113717: bpf_trace_printk: #26: 0

          <idle>-0       [007] d.s.1 19498.113717: bpf_trace_printk: #27: 4

          <idle>-0       [007] d.s.1 19498.113718: bpf_trace_printk: #28: 72

          <idle>-0       [007] d.s.1 19498.113718: bpf_trace_printk: #29: f3

          <idle>-0       [007] d.s.1 19498.113718: bpf_trace_printk: #30: de

          <idle>-0       [007] d.s.1 19498.113718: bpf_trace_printk: #31: 62

          <idle>-0       [007] d.s.1 19498.113719: bpf_trace_printk: Outer GRE flags=0x0 proto=36bc

          <idle>-0       [007] d.s.1 19498.113719: bpf_trace_printk: Unknown proto 36bc inside GRE
          <idle>-0       [007] d.s.1 19507.207046: bpf_trace_printk: New packet

          <idle>-0       [007] d.s.1 19507.207059: bpf_trace_printk: Packet size too small, dump failed

          <idle>-0       [007] d.s.1 19517.206954: bpf_trace_printk: New packet

          <idle>-0       [007] d.s.1 19517.206968: bpf_trace_printk: Packet size too small, dump failed

Thank for your help.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.