* Re: building eBPF
[not found] <20200425122225.GA455@gmail.com>
@ 2020-04-25 12:56 ` Jesper Dangaard Brouer
2020-04-25 16:16 ` David Ahern
` (2 more replies)
0 siblings, 3 replies; 8+ messages in thread
From: Jesper Dangaard Brouer @ 2020-04-25 12:56 UTC (permalink / raw)
To: Sowmini Varadhan; +Cc: brouer, xdp-newbies
Cc XDP-newbies, as I cannot scale by doing individual "support".
On Sat, 25 Apr 2020 08:22:25 -0400 Sowmini Varadhan <sowmini05@gmail.com> wrote:
> Hi Jesper,
>
> I am trying to get some basic eBPF examples up and running and I ran
> into the problem you describe at https://lkml.org/lkml/2020/2/19/433
Yes, building kernel bpf selftests requires latest LLVM, currently
works with LLVM-10.
> I dont want to deal with building my own llvm (looks like it needs
> more disk space than is available in my test mmachine, and I dont
> want to go hunting for space just yet) so do you have some suggestions
> on how I can work around this (maybe skip some of the advanced
> tests?
The kernel's samples/bpf/ should still builds with LLVM-9 (and lower).
Follow instructions in the README.rst file[1].
There are pre-build Debian and Ubuntu packages for LLVM-10 here:
https://apt.llvm.org/
> I am just trying to play with basic examples at this point)
I suggest you start with the XDP-tutorial[2], it (still) works with older
LLVM versions: [2] https://github.com/xdp-project/xdp-tutorial
[1] https://github.com/torvalds/linux/blob/master/samples/bpf/README.rst
--
Best regards,
Jesper Dangaard Brouer
MSc.CS, Principal Kernel Engineer at Red Hat
LinkedIn: http://www.linkedin.com/in/brouer
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: building eBPF
2020-04-25 12:56 ` building eBPF Jesper Dangaard Brouer
@ 2020-04-25 16:16 ` David Ahern
2020-04-25 16:34 ` Sowmini Varadhan
2020-04-27 0:20 ` Sowmini Varadhan
2 siblings, 0 replies; 8+ messages in thread
From: David Ahern @ 2020-04-25 16:16 UTC (permalink / raw)
To: Jesper Dangaard Brouer, Sowmini Varadhan; +Cc: xdp-newbies
On 4/25/20 6:56 AM, Jesper Dangaard Brouer wrote:
>> I am trying to get some basic eBPF examples up and running and I ran
>> into the problem you describe at https://lkml.org/lkml/2020/2/19/433
>
> Yes, building kernel bpf selftests requires latest LLVM, currently
> works with LLVM-10.
>
ubuntu 20.04 was just released, and it has llvm-10. I have been using it
to build and run the bpf selftests.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: building eBPF
2020-04-25 12:56 ` building eBPF Jesper Dangaard Brouer
2020-04-25 16:16 ` David Ahern
@ 2020-04-25 16:34 ` Sowmini Varadhan
2020-04-27 10:46 ` Toke Høiland-Jørgensen
2020-04-27 0:20 ` Sowmini Varadhan
2 siblings, 1 reply; 8+ messages in thread
From: Sowmini Varadhan @ 2020-04-25 16:34 UTC (permalink / raw)
To: Jesper Dangaard Brouer; +Cc: xdp-newbies
On (04/25/20 14:56), Jesper Dangaard Brouer wrote:
>
> The kernel's samples/bpf/ should still builds with LLVM-9 (and lower).
> Follow instructions in the README.rst file[1].
>
> There are pre-build Debian and Ubuntu packages for LLVM-10 here:
> https://apt.llvm.org/
thanks that helped me install llvm-10
However, after all my adventures, I end up with
# ls /usr/bin/llc*
/usr/bin/llc /usr/bin/llc-10 /usr/bin/llc-5.0 /usr/bin/llc-6.0 /usr/bin/llc-7
and the default points at 6.0 so I had to go and tweak Makefile
to use clang-10 and llc-10
After that, samples builds and runs (thanks for that hint!).
But not selftests. However, samples is good enough for my experiments,
for now.
> I suggest you start with the XDP-tutorial[2], it (still) works with older
> LLVM versions: [2] https://github.com/xdp-project/xdp-tutorial
will do.
--Sowmini
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: building eBPF
2020-04-25 12:56 ` building eBPF Jesper Dangaard Brouer
2020-04-25 16:16 ` David Ahern
2020-04-25 16:34 ` Sowmini Varadhan
@ 2020-04-27 0:20 ` Sowmini Varadhan
2020-04-27 10:03 ` Jesper Dangaard Brouer
2 siblings, 1 reply; 8+ messages in thread
From: Sowmini Varadhan @ 2020-04-27 0:20 UTC (permalink / raw)
To: xdp-newbies
[-- Attachment #1: Type: text/plain, Size: 994 bytes --]
With the latest iproute2 (built from master, 'ip -V' reports
iproute2-ss200330) when I try to run tc_l2_redirect.sh
I get errors like the following. What am I missing?
(full transcript of output from run is in the run.out attachment)
:
+ tc filter add dev ve2 ingress bpf da obj ./tc_l2_redirect_kern.o sec l2_to_iptun_ingress_forward
BTF debug data section '.BTF' rejected: Invalid argument (22)!
- Length: 3554
Verifier analysis:
magic: 0xeb9f
version: 1
flags: 0x0
hdr_len: 24
type_off: 0
type_len: 984
str_off: 984
str_len: 2546
btf_total_size: 3554
[1] PTR (anon) type_id=2
[2] STRUCT __sk_buff size=184 vlen=32
len type_id=3 bits_offset=0
pkt_type type_id=3 bits_offset=32
mark type_id=3 bits_offset=64
queue_mapping type_id=3 bits_offset=96
protocol type_id=3 bits_offset=128
vlan_present type_id=3 bits_offset=160
vlan_tci type_id=3 bits_offset=192
vlan_proto type_id=3 bits_offset=224
:
:
[-- Attachment #2: run.out --]
[-- Type: text/plain, Size: 11916 bytes --]
+ [[ -z '' ]]
+ TC=tc
+ [[ -z '' ]]
+ IP=ip
+ REDIRECT_USER=./tc_l2_redirect
+ REDIRECT_BPF=./tc_l2_redirect_kern.o
+ RP_FILTER=0
+ IPV6_FORWARDING=1
+ cleanup
+ set +e
+ [[ -z '' ]]
+ ip netns delete ns1
+ ip netns delete ns2
+ ip link del ve1
+ ip link del ve2
+ ip link del ipt
+ ip link del ip6t
+ sysctl -q -w net.ipv4.conf.all.rp_filter=0
+ sysctl -q -w net.ipv6.conf.all.forwarding=1
+ rm -f /sys/fs/bpf/tc/globals/tun_iface
+ [[ -z '' ]]
+ set -e
+ test_names='l2_to_ipip l2_to_ip6tnl'
+ test_dirs='ingress egress'
+ [[ 0 -ge 2 ]]
+ [[ 0 -ge 1 ]]
+ for t in $test_names
+ for d in $test_dirs
+ l2_to_ipip ingress
+ echo -n 'l2_to_ipip ingress: '
l2_to_ipip ingress: + local dir=ingress
+ config_common ipip
+ local tun_type=ipip
+ ip netns add ns1
+ ip netns add ns2
+ ip link add ve1 type veth peer name vens1
+ ip link add ve2 type veth peer name vens2
+ ip link set dev ve1 up
+ ip link set dev ve2 up
+ ip link set dev ve1 mtu 1500
+ ip link set dev ve2 mtu 1500
+ ip link set dev vens1 netns ns1
+ ip link set dev vens2 netns ns2
+ ip -n ns1 link set dev lo up
+ ip -n ns1 link set dev vens1 up
+ ip -n ns1 addr add 10.1.1.101/24 dev vens1
+ ip -n ns1 addr add 2401:db01::65/64 dev vens1 nodad
+ ip -n ns1 route add default via 10.1.1.1 dev vens1
+ ip -n ns1 route add default via 2401:db01::1 dev vens1
+ ip -n ns2 link set dev lo up
+ ip -n ns2 link set dev vens2 up
+ ip -n ns2 addr add 10.2.1.102/24 dev vens2
+ ip -n ns2 addr add 2401:db02::66/64 dev vens2 nodad
+ ip -n ns2 addr add 10.10.1.102 dev lo
+ ip -n ns2 addr add 2401:face::66/64 dev lo nodad
+ ip -n ns2 link add ipt2 type ipip local 10.2.1.102 remote 10.2.1.1
+ ip -n ns2 link add ip6t2 type ip6tnl mode any local 2401:db02::66 remote 2401:db02::1
+ ip -n ns2 link set dev ipt2 up
+ ip -n ns2 link set dev ip6t2 up
+ ip netns exec ns2 tc qdisc add dev vens2 clsact
+ ip netns exec ns2 tc filter add dev vens2 ingress bpf da obj ./tc_l2_redirect_kern.o sec drop_non_tun_vip
BTF debug data section '.BTF' rejected: Invalid argument (22)!
- Length: 3554
Verifier analysis:
magic: 0xeb9f
version: 1
flags: 0x0
hdr_len: 24
type_off: 0
type_len: 984
str_off: 984
str_len: 2546
btf_total_size: 3554
[1] PTR (anon) type_id=2
[2] STRUCT __sk_buff size=184 vlen=32
len type_id=3 bits_offset=0
pkt_type type_id=3 bits_offset=32
mark type_id=3 bits_offset=64
queue_mapping type_id=3 bits_offset=96
protocol type_id=3 bits_offset=128
vlan_present type_id=3 bits_offset=160
vlan_tci type_id=3 bits_offset=192
vlan_proto type_id=3 bits_offset=224
priority type_id=3 bits_offset=256
ingress_ifindex type_id=3 bits_offset=288
ifindex type_id=3 bits_offset=320
tc_index type_id=3 bits_offset=352
cb type_id=5 bits_offset=384
hash type_id=3 bits_offset=544
tc_classid type_id=3 bits_offset=576
data type_id=3 bits_offset=608
data_end type_id=3 bits_offset=640
napi_id type_id=3 bits_offset=672
family type_id=3 bits_offset=704
remote_ip4 type_id=3 bits_offset=736
local_ip4 type_id=3 bits_offset=768
remote_ip6 type_id=7 bits_offset=800
local_ip6 type_id=7 bits_offset=928
remote_port type_id=3 bits_offset=1056
local_port type_id=3 bits_offset=1088
data_meta type_id=3 bits_offset=1120
(anon) type_id=8 bits_offset=1152
tstamp type_id=10 bits_offset=1216
wire_len type_id=3 bits_offset=1280
gso_segs type_id=3 bits_offset=1312
(anon) type_id=12 bits_offset=1344
gso_size type_id=3 bits_offset=1408
[3] TYPEDEF __u32 type_id=4
[4] INT unsigned int size=4 bits_offset=0 nr_bits=32 encoding=(none)
[5] ARRAY (anon) type_id=3 index_type_id=6 nr_elems=5
[6] INT __ARRAY_SIZE_TYPE__ size=4 bits_offset=0 nr_bits=32 encoding=(none)
[7] ARRAY (anon) type_id=3 index_type_id=6 nr_elems=4
[8] UNION (anon) size=8 vlen=1
flow_keys type_id=9 bits_offset=0
[9] PTR (anon) type_id=30
[10] TYPEDEF __u64 type_id=11
[11] INT long long unsigned int size=8 bits_offset=0 nr_bits=64 encoding=(none)
[12] UNION (anon) size=8 vlen=1
sk type_id=13 bits_offset=0
[13] PTR (anon) type_id=31
[14] FUNC_PROTO (anon) return=15 args=(1 skb)
[15] INT int size=4 bits_offset=0 nr_bits=32 encoding=SIGNED
[16] FUNC _l2_to_iptun_ingress_forward type_id=14
[17] FUNC_PROTO (anon) return=15 args=(1 skb)
[18] FUNC _l2_to_iptun_ingress_redirect type_id=17
[19] FUNC_PROTO (anon) return=15 args=(1 skb)
[20] FUNC _l2_to_ip6tun_ingress_redirect type_id=19
[21] FUNC_PROTO (anon) return=15 args=(1 skb)
[22] FUNC _drop_non_tun_vip type_id=21
[23] STRUCT bpf_elf_map size=28 vlen=7
type type_id=3 bits_offset=0
size_key type_id=3 bits_offset=32
size_value type_id=3 bits_offset=64
max_elem type_id=3 bits_offset=96
flags type_id=3 bits_offset=128
id type_id=3 bits_offset=160
pinning type_id=3 bits_offset=192
[24] VAR tun_iface type_id=23 linkage=1
[25] INT char size=1 bits_offset=0 nr_bits=8 encoding=SIGNED
[26] ARRAY (anon) type_id=25 index_type_id=6 nr_elems=4
[27] VAR _license type_id=26 linkage=1
[28] DATASEC license size=0 vlen=1 size == 0
+ [[ ipip == \i\p\i\p ]]
+ ip -n ns2 route add 10.1.1.0/24 dev ipt2
+ ip netns exec ns2 sysctl -q -w net.ipv4.conf.all.rp_filter=0
+ ip netns exec ns2 sysctl -q -w net.ipv4.conf.ipt2.rp_filter=0
+ ip addr add 10.1.1.1/24 dev ve1
+ ip addr add 2401:db01::1/64 dev ve1 nodad
+ ip addr add 10.2.1.1/24 dev ve2
+ ip addr add 2401:db02::1/64 dev ve2 nodad
+ tc qdisc add dev ve2 clsact
+ tc filter add dev ve2 ingress bpf da obj ./tc_l2_redirect_kern.o sec l2_to_iptun_ingress_forward
BTF debug data section '.BTF' rejected: Invalid argument (22)!
- Length: 3554
Verifier analysis:
magic: 0xeb9f
version: 1
flags: 0x0
hdr_len: 24
type_off: 0
type_len: 984
str_off: 984
str_len: 2546
btf_total_size: 3554
[1] PTR (anon) type_id=2
[2] STRUCT __sk_buff size=184 vlen=32
len type_id=3 bits_offset=0
pkt_type type_id=3 bits_offset=32
mark type_id=3 bits_offset=64
queue_mapping type_id=3 bits_offset=96
protocol type_id=3 bits_offset=128
vlan_present type_id=3 bits_offset=160
vlan_tci type_id=3 bits_offset=192
vlan_proto type_id=3 bits_offset=224
priority type_id=3 bits_offset=256
ingress_ifindex type_id=3 bits_offset=288
ifindex type_id=3 bits_offset=320
tc_index type_id=3 bits_offset=352
cb type_id=5 bits_offset=384
hash type_id=3 bits_offset=544
tc_classid type_id=3 bits_offset=576
data type_id=3 bits_offset=608
data_end type_id=3 bits_offset=640
napi_id type_id=3 bits_offset=672
family type_id=3 bits_offset=704
remote_ip4 type_id=3 bits_offset=736
local_ip4 type_id=3 bits_offset=768
remote_ip6 type_id=7 bits_offset=800
local_ip6 type_id=7 bits_offset=928
remote_port type_id=3 bits_offset=1056
local_port type_id=3 bits_offset=1088
data_meta type_id=3 bits_offset=1120
(anon) type_id=8 bits_offset=1152
tstamp type_id=10 bits_offset=1216
wire_len type_id=3 bits_offset=1280
gso_segs type_id=3 bits_offset=1312
(anon) type_id=12 bits_offset=1344
gso_size type_id=3 bits_offset=1408
[3] TYPEDEF __u32 type_id=4
[4] INT unsigned int size=4 bits_offset=0 nr_bits=32 encoding=(none)
[5] ARRAY (anon) type_id=3 index_type_id=6 nr_elems=5
[6] INT __ARRAY_SIZE_TYPE__ size=4 bits_offset=0 nr_bits=32 encoding=(none)
[7] ARRAY (anon) type_id=3 index_type_id=6 nr_elems=4
[8] UNION (anon) size=8 vlen=1
flow_keys type_id=9 bits_offset=0
[9] PTR (anon) type_id=30
[10] TYPEDEF __u64 type_id=11
[11] INT long long unsigned int size=8 bits_offset=0 nr_bits=64 encoding=(none)
[12] UNION (anon) size=8 vlen=1
sk type_id=13 bits_offset=0
[13] PTR (anon) type_id=31
[14] FUNC_PROTO (anon) return=15 args=(1 skb)
[15] INT int size=4 bits_offset=0 nr_bits=32 encoding=SIGNED
[16] FUNC _l2_to_iptun_ingress_forward type_id=14
[17] FUNC_PROTO (anon) return=15 args=(1 skb)
[18] FUNC _l2_to_iptun_ingress_redirect type_id=17
[19] FUNC_PROTO (anon) return=15 args=(1 skb)
[20] FUNC _l2_to_ip6tun_ingress_redirect type_id=19
[21] FUNC_PROTO (anon) return=15 args=(1 skb)
[22] FUNC _drop_non_tun_vip type_id=21
[23] STRUCT bpf_elf_map size=28 vlen=7
type type_id=3 bits_offset=0
size_key type_id=3 bits_offset=32
size_value type_id=3 bits_offset=64
max_elem type_id=3 bits_offset=96
flags type_id=3 bits_offset=128
id type_id=3 bits_offset=160
pinning type_id=3 bits_offset=192
[24] VAR tun_iface type_id=23 linkage=1
[25] INT char size=1 bits_offset=0 nr_bits=8 encoding=SIGNED
[26] ARRAY (anon) type_id=25 index_type_id=6 nr_elems=4
[27] VAR _license type_id=26 linkage=1
[28] DATASEC license size=0 vlen=1 size == 0
+ sysctl -q -w net.ipv4.conf.all.rp_filter=0
+ sysctl -q -w net.ipv6.conf.all.forwarding=1
+ ip link add ipt type ipip external
+ ip link set dev ipt up
+ sysctl -q -w net.ipv4.conf.ipt.rp_filter=0
+ sysctl -q -w net.ipv4.conf.ipt.forwarding=1
+ [[ ingress == \e\g\r\e\s\s ]]
+ tc qdisc add dev ve1 clsact
+ tc filter add dev ve1 ingress bpf da obj ./tc_l2_redirect_kern.o sec l2_to_iptun_ingress_redirect
BTF debug data section '.BTF' rejected: Invalid argument (22)!
- Length: 3554
Verifier analysis:
magic: 0xeb9f
version: 1
flags: 0x0
hdr_len: 24
type_off: 0
type_len: 984
str_off: 984
str_len: 2546
btf_total_size: 3554
[1] PTR (anon) type_id=2
[2] STRUCT __sk_buff size=184 vlen=32
len type_id=3 bits_offset=0
pkt_type type_id=3 bits_offset=32
mark type_id=3 bits_offset=64
queue_mapping type_id=3 bits_offset=96
protocol type_id=3 bits_offset=128
vlan_present type_id=3 bits_offset=160
vlan_tci type_id=3 bits_offset=192
vlan_proto type_id=3 bits_offset=224
priority type_id=3 bits_offset=256
ingress_ifindex type_id=3 bits_offset=288
ifindex type_id=3 bits_offset=320
tc_index type_id=3 bits_offset=352
cb type_id=5 bits_offset=384
hash type_id=3 bits_offset=544
tc_classid type_id=3 bits_offset=576
data type_id=3 bits_offset=608
data_end type_id=3 bits_offset=640
napi_id type_id=3 bits_offset=672
family type_id=3 bits_offset=704
remote_ip4 type_id=3 bits_offset=736
local_ip4 type_id=3 bits_offset=768
remote_ip6 type_id=7 bits_offset=800
local_ip6 type_id=7 bits_offset=928
remote_port type_id=3 bits_offset=1056
local_port type_id=3 bits_offset=1088
data_meta type_id=3 bits_offset=1120
(anon) type_id=8 bits_offset=1152
tstamp type_id=10 bits_offset=1216
wire_len type_id=3 bits_offset=1280
gso_segs type_id=3 bits_offset=1312
(anon) type_id=12 bits_offset=1344
gso_size type_id=3 bits_offset=1408
[3] TYPEDEF __u32 type_id=4
[4] INT unsigned int size=4 bits_offset=0 nr_bits=32 encoding=(none)
[5] ARRAY (anon) type_id=3 index_type_id=6 nr_elems=5
[6] INT __ARRAY_SIZE_TYPE__ size=4 bits_offset=0 nr_bits=32 encoding=(none)
[7] ARRAY (anon) type_id=3 index_type_id=6 nr_elems=4
[8] UNION (anon) size=8 vlen=1
flow_keys type_id=9 bits_offset=0
[9] PTR (anon) type_id=30
[10] TYPEDEF __u64 type_id=11
[11] INT long long unsigned int size=8 bits_offset=0 nr_bits=64 encoding=(none)
[12] UNION (anon) size=8 vlen=1
sk type_id=13 bits_offset=0
[13] PTR (anon) type_id=31
[14] FUNC_PROTO (anon) return=15 args=(1 skb)
[15] INT int size=4 bits_offset=0 nr_bits=32 encoding=SIGNED
[16] FUNC _l2_to_iptun_ingress_forward type_id=14
[17] FUNC_PROTO (anon) return=15 args=(1 skb)
[18] FUNC _l2_to_iptun_ingress_redirect type_id=17
[19] FUNC_PROTO (anon) return=15 args=(1 skb)
[20] FUNC _l2_to_ip6tun_ingress_redirect type_id=19
[21] FUNC_PROTO (anon) return=15 args=(1 skb)
[22] FUNC _drop_non_tun_vip type_id=21
[23] STRUCT bpf_elf_map size=28 vlen=7
type type_id=3 bits_offset=0
size_key type_id=3 bits_offset=32
size_value type_id=3 bits_offset=64
max_elem type_id=3 bits_offset=96
flags type_id=3 bits_offset=128
id type_id=3 bits_offset=160
pinning type_id=3 bits_offset=192
[24] VAR tun_iface type_id=23 linkage=1
[25] INT char size=1 bits_offset=0 nr_bits=8 encoding=SIGNED
[26] ARRAY (anon) type_id=25 index_type_id=6 nr_elems=4
[27] VAR _license type_id=26 linkage=1
[28] DATASEC license size=0 vlen=1 size == 0
+ ./tc_l2_redirect -U /sys/fs/bpf/tc/globals/tun_iface -i 19
+ ip netns exec ns1 ping -c1 10.10.1.102
+ [[ ingress == \e\g\r\e\s\s ]]
+ echo bail
bail
+ exit 1
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: building eBPF
2020-04-27 0:20 ` Sowmini Varadhan
@ 2020-04-27 10:03 ` Jesper Dangaard Brouer
2020-04-27 10:49 ` Sowmini Varadhan
0 siblings, 1 reply; 8+ messages in thread
From: Jesper Dangaard Brouer @ 2020-04-27 10:03 UTC (permalink / raw)
To: Sowmini Varadhan
Cc: brouer, xdp-newbies, Stephen Hemminger, Toke Høiland-Jørgensen
On Sun, 26 Apr 2020 20:20:27 -0400
Sowmini Varadhan <sowmini05@gmail.com> wrote:
> With the latest iproute2 (built from master, 'ip -V' reports
> iproute2-ss200330) when I try to run tc_l2_redirect.sh
> I get errors like the following. What am I missing?
The iproute2 BPF-loader does not support BTF. I think upstream agrees
that it would be too much work to add (and maintain) it, so the current
plan[1] is to convert iproute2 to use libbpf instead.
Also notice that BPF-map layout is not compatible with libbpf. Thus,
yet another hint not to use iproute2 to load XDP programs. (Toke have
done some initial work with libbpf maps, that will allow us AFAIK to be
backward compatible when converting iproute2 to libbpf).
Why do you want to use 'tc' to load XDP?
The XDP-tutorial[2] shows how to use libbpf from your C-programs, and
XDP-tools[3] contains a xdp-loader that you can use instead.
[1] https://xdp-project.net/#Port-iproute2-to-libbpf
[2] https://github.com/xdp-project/xdp-tutorial
[3] https://github.com/xdp-project/xdp-tools/tree/master/xdp-loader
> (full transcript of output from run is in the run.out attachment)
>
> :
> + tc filter add dev ve2 ingress bpf da obj ./tc_l2_redirect_kern.o sec l2_to_iptun_ingress_forward
>
> BTF debug data section '.BTF' rejected: Invalid argument (22)!
> - Length: 3554
I actually think this is only a warning, and the program is actually
loaded...
--
Best regards,
Jesper Dangaard Brouer
MSc.CS, Principal Kernel Engineer at Red Hat
LinkedIn: http://www.linkedin.com/in/brouer
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: building eBPF
2020-04-25 16:34 ` Sowmini Varadhan
@ 2020-04-27 10:46 ` Toke Høiland-Jørgensen
0 siblings, 0 replies; 8+ messages in thread
From: Toke Høiland-Jørgensen @ 2020-04-27 10:46 UTC (permalink / raw)
To: Sowmini Varadhan, Jesper Dangaard Brouer; +Cc: xdp-newbies
Sowmini Varadhan <sowmini05@gmail.com> writes:
> On (04/25/20 14:56), Jesper Dangaard Brouer wrote:
>>
>> The kernel's samples/bpf/ should still builds with LLVM-9 (and lower).
>> Follow instructions in the README.rst file[1].
>>
>> There are pre-build Debian and Ubuntu packages for LLVM-10 here:
>> https://apt.llvm.org/
>
> thanks that helped me install llvm-10
>
> However, after all my adventures, I end up with
> # ls /usr/bin/llc*
> /usr/bin/llc /usr/bin/llc-10 /usr/bin/llc-5.0 /usr/bin/llc-6.0 /usr/bin/llc-7
> and the default points at 6.0 so I had to go and tweak Makefile
> to use clang-10 and llc-10
Note that you can just override them on the command line. E.g.,
make CLANG=clang-10 LLC=llc-10
-Toke
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: building eBPF
2020-04-27 10:03 ` Jesper Dangaard Brouer
@ 2020-04-27 10:49 ` Sowmini Varadhan
2020-04-27 12:08 ` Daniel Borkmann
0 siblings, 1 reply; 8+ messages in thread
From: Sowmini Varadhan @ 2020-04-27 10:49 UTC (permalink / raw)
To: Jesper Dangaard Brouer
Cc: xdp-newbies, Stephen Hemminger, Toke Høiland-Jørgensen
> The iproute2 BPF-loader does not support BTF. I think upstream agrees
> that it would be too much work to add (and maintain) it, so the current
> plan[1] is to convert iproute2 to use libbpf instead.
So I updated my iproute2 because I was initially getting an error like
" Error fixing up map structure, incompatible struct bpf_elf_map used?
Error fetching ELF ancillary data!
Unable to load program
"
with the native iproute2 binaries, and thought it may be due to
a header mismatch.
> Why do you want to use 'tc' to load XDP?
I was merely using the exsiting example in samples to try to understand
this. If the existing example is misleading, it should be removed.
> I actually think this is only a warning, and the program is actually
> loaded...
no I dont believe it is. if you insert a break in the script before
it gets to cleanup, and try
# ip netns exec ns2 bash
# tc filter show dev vens2
it will not show any loaded filters.
--Sowmini
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: building eBPF
2020-04-27 10:49 ` Sowmini Varadhan
@ 2020-04-27 12:08 ` Daniel Borkmann
0 siblings, 0 replies; 8+ messages in thread
From: Daniel Borkmann @ 2020-04-27 12:08 UTC (permalink / raw)
To: Sowmini Varadhan, Jesper Dangaard Brouer
Cc: xdp-newbies, Stephen Hemminger, Toke Høiland-Jørgensen
On 4/27/20 12:49 PM, Sowmini Varadhan wrote:
>
>> The iproute2 BPF-loader does not support BTF. I think upstream agrees
>> that it would be too much work to add (and maintain) it, so the current
>> plan[1] is to convert iproute2 to use libbpf instead.
Not true, iproute2 does(did) support BTF, but afaik later versions of clang/
llvm broke it so it would need to be fixed again [0]. Emission of BTF can be
removed as a workaround w/ omitting -g.
[0] https://git.kernel.org/pub/scm/network/iproute2/iproute2.git/commit/?id=f823f36012fb5ab4ddfca6ed4ff56188730f281e
> So I updated my iproute2 because I was initially getting an error like
>
> " Error fixing up map structure, incompatible struct bpf_elf_map used?
> Error fetching ELF ancillary data!
> Unable to load program
> "
> with the native iproute2 binaries, and thought it may be due to
> a header mismatch.
>
>> Why do you want to use 'tc' to load XDP?
>
> I was merely using the exsiting example in samples to try to understand
> this. If the existing example is misleading, it should be removed.
>
>> I actually think this is only a warning, and the program is actually
>> loaded...
>
> no I dont believe it is. if you insert a break in the script before
> it gets to cleanup, and try
>
> # ip netns exec ns2 bash
> # tc filter show dev vens2
>
> it will not show any loaded filters.
Check out https://cilium.readthedocs.io/en/latest/bpf/#iproute2 for XDP + iproute2
examples examples for where to check; but agree you might rather want to go with
libbpf's feature set overall.
> --Sowmini
>
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2020-04-27 12:08 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <20200425122225.GA455@gmail.com>
2020-04-25 12:56 ` building eBPF Jesper Dangaard Brouer
2020-04-25 16:16 ` David Ahern
2020-04-25 16:34 ` Sowmini Varadhan
2020-04-27 10:46 ` Toke Høiland-Jørgensen
2020-04-27 0:20 ` Sowmini Varadhan
2020-04-27 10:03 ` Jesper Dangaard Brouer
2020-04-27 10:49 ` Sowmini Varadhan
2020-04-27 12:08 ` Daniel Borkmann
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).