Hello,

Can you please provide details about your setup, configuration, traffic flow 
and interfaces you are using?

-br
Mohsin

From: <vpp-dev@lists.fd.io> on behalf of "jiangxiaom...@outlook.com" 
<jiangxiaom...@outlook.com>
Date: Wednesday, January 15, 2020 at 3:01 AM
To: "vpp-dev@lists.fd.io" <vpp-dev@lists.fd.io>
Subject: [vpp-dev] vnet_gso_header_offset_parser error if vlib_buffer_t without 
ethernet_header_t

vlib_buffer_t has no ethernet_header_t,  vnet_gso_header_offset_parser  will 
failed.
I think if vlib_buffer_t valid l2 header, vnet_gso_header_offset_parser  should 
skip ethernet_header_t parse.
Below is the VPP crash message:

0: /home/dev/code/net-base/build/vpp/src/vnet/ip/ip.h:205 
(ip_calculate_l4_checksum) assertion `ip_header_size' fails

Program received signal SIGABRT, Aborted.
0x00007ffff4a1d337 in __GI_raise (sig=sig@entry=6) at 
../nptl/sysdeps/unix/sysv/linux/raise.c:55
55    return INLINE_SYSCALL (tgkill, 3, pid, selftid, sig);
(gdb) bt
#0  0x00007ffff4a1d337 in __GI_raise (sig=sig@entry=6) at 
../nptl/sysdeps/unix/sysv/linux/raise.c:55
#1  0x00007ffff4a1ea28 in __GI_abort () at abort.c:90
#2  0x0000000000407458 in os_panic () at 
/home/dev/code/net-base/build/vpp/src/vpp/vnet/main.c:355
#3  0x00007ffff5864d1f in debugger () at 
/home/dev/code/net-base/build/vpp/src/vppinfra/error.c:84
#4  0x00007ffff58650ee in _clib_error (how_to_die=2, function_name=0x0, 
line_number=0, fmt=0x7ffff76abc88 "%s:%d (%s) assertion `%s' fails") at 
/home/dev/code/net-base/build/vpp/src/vppinfra/error.c:143
#5  0x00007ffff6ed5472 in ip_calculate_l4_checksum (vm=0x7ffff66aa640 
<vlib_global_main>, p0=0x103fdada00, sum0=189151184350281389, 
payload_length=2560, iph=0x103fdadb5e "", ip_header_size=0, l4h=0x0) at 
/home/dev/code/net-base/build/vpp/src/vnet/ip/ip.h:205
#6  0x00007ffff6edd92f in ip4_tcp_udp_compute_checksum (vm=0x7ffff66aa640 
<vlib_global_main>, p0=0x103fdada00, ip0=0x103fdadb5e) at 
/home/dev/code/net-base/build/vpp/src/vnet/ip/ip4_forward.c:1328
#7  0x00007ffff6ca5772 in calc_checksums (vm=0x7ffff66aa640 <vlib_global_main>, 
b=0x103fdada00) at 
/home/dev/code/net-base/build/vpp/src/vnet/interface_output.c:189
#8  0x00007ffff6ca64fc in vnet_interface_output_node_inline (vm=0x7ffff66aa640 
<vlib_global_main>, node=0x7fffd71a3cc0, frame=0x7fffd7936b40, 
vnm=0x7ffff7b6a9c0 <vnet_main>, hi=0x7fffd78848c0, do_tx_offloads=1) at 
/home/dev/code/net-base/build/vpp/src/vnet/interface_output.c:450
#9  0x00007ffff6ca67ff in vnet_interface_output_node (vm=0x7ffff66aa640 
<vlib_global_main>, node=0x7fffd71a3cc0, frame=0x7fffd7936b40) at 
/home/dev/code/net-base/build/vpp/src/vnet/interface_output.c:542
#10 0x00007ffff6408776 in dispatch_node (vm=0x7ffff66aa640 <vlib_global_main>, 
node=0x7fffd71a3cc0, type=VLIB_NODE_TYPE_INTERNAL, 
dispatch_state=VLIB_NODE_STATE_POLLING, frame=0x7fffd7936b40, 
last_time_stamp=64570511102008) at 
/home/dev/code/net-base/build/vpp/src/vlib/main.c:1208
#11 0x00007ffff6408f37 in dispatch_pending_node (vm=0x7ffff66aa640 
<vlib_global_main>, pending_frame_index=2, last_time_stamp=64570511102008) at 
/home/dev/code/net-base/build/vpp/src/vlib/main.c:1376
#12 0x00007ffff640ab9a in vlib_main_or_worker_loop (vm=0x7ffff66aa640 
<vlib_global_main>, is_main=1) at 
/home/dev/code/net-base/build/vpp/src/vlib/main.c:1833
#13 0x00007ffff640b3df in vlib_main_loop (vm=0x7ffff66aa640 <vlib_global_main>) 
at /home/dev/code/net-base/build/vpp/src/vlib/main.c:1934
#14 0x00007ffff640c0a7 in vlib_main (vm=0x7ffff66aa640 <vlib_global_main>, 
input=0x7fffd6c8afb0) at /home/dev/code/net-base/build/vpp/src/vlib/main.c:2151
#15 0x00007ffff6471bdc in thread0 (arg=140737327572544) at 
/home/dev/code/net-base/build/vpp/src/vlib/unix/main.c:650
#16 0x00007ffff5884ef4 in clib_calljmp () at 
/home/dev/code/net-base/build/vpp/src/vppinfra/longjmp.S:123
#17 0x00007fffffffd070 in ?? ()
#18 0x00007ffff6472152 in vlib_unix_main (argc=181, argv=0x700fa0) at 
/home/dev/code/net-base/build/vpp/src/vlib/unix/main.c:720
#19 0x0000000000406dcc in main (argc=181, argv=0x700fa0) at 
/home/dev/code/net-base/build/vpp/src/vpp/vnet/main.c:280
(gdb) up 7
(gdb) l
194   else if (is_ip6)
195     {
196       int bogus;
197       ip6_header_t *ip6;
198
199       ip6 =
200     (ip6_header_t *) (vlib_buffer_get_current (b) + gho.l3_hdr_offset);
201       if (b->flags & VNET_BUFFER_F_OFFLOAD_TCP_CKSUM)
202     {
203       th->checksum = 0;
(gdb)
204       th->checksum =
205         ip6_tcp_udp_icmp_compute_checksum (vm, b, ip6, &bogus);
206     }
207       else if (b->flags & VNET_BUFFER_F_OFFLOAD_UDP_CKSUM)
208     {
209       uh->checksum = 0;
210       uh->checksum =
211         ip6_tcp_udp_icmp_compute_checksum (vm, b, ip6, &bogus);
212     }
213     }
(gdb)
214   b->flags &= ~VNET_BUFFER_F_OFFLOAD_TCP_CKSUM;
215   b->flags &= ~VNET_BUFFER_F_OFFLOAD_UDP_CKSUM;
216   b->flags &= ~VNET_BUFFER_F_OFFLOAD_IP_CKSUM;
217 }
218
219 static_always_inline uword
220 vnet_interface_output_node_inline (vlib_main_t * vm,
221                    vlib_node_runtime_t * node,
222                    vlib_frame_t * frame,
223                    vnet_main_t * vnm,
(gdb) print b[0]
$20 = {{cacheline0 = 0x103fdada00 "P", current_data = 80, current_length = 60, 
flags = 23265280, flow_id = 0, ref_count = 1 '\001', buffer_pool_index = 0 
'\000', error = 0, next_buffer = 0, {current_config_index = 0, punt_reason = 
0}, opaque = {0, 3, 5242880, 100, 0, 3, 0, 0, 0, 0}, template_end = 
0x103fdada40 "", cacheline1 = 0x103fdada40 "", trace_handle = 0, 
total_length_not_including_first_buffer = 0, opaque2 = {0 <repeats 14 times>}, 
cacheline2 = 0x103fdada80 "", pre_data = '\000' <repeats 127 times>, data = 
0x103fdadb00 ""}, as_u8x16 = {{80, 0, 60, 0, 0, 0, 99, 1, 0, 0, 0, 0, 1, 0, 0, 
0}, {0 <repeats 12 times>, 3, 0, 0, 0}, {0, 0, 80, 0, 100, 0, 0, 0, 0, 0, 0, 0, 
3, 0, 0, 0}, {0 <repeats 16 times>}}}
(gdb) x /60xb b->data+80
0x103fdadb50:   0x45    0x00    0x00    0x3c    0x00    0x00    0x40    0x00
0x103fdadb58:   0xff    0x06    0x00    0x00    0x0a    0x00    0x00    0x02
0x103fdadb60:   0x0a    0x00    0x00    0x01    0x68    0x47    0x0f    0xa0
0x103fdadb68:   0xff    0xff    0xad    0x5e    0x00    0x00    0x00    0x00
0x103fdadb70:   0xa0    0x02    0x10    0x00    0x00    0x00    0x00    0x00
0x103fdadb78:   0x02    0x04    0x05    0xb4    0x03    0x03    0x0a    0x04
0x103fdadb80:   0x02    0x08    0x0a    0x01    0x34    0xdc    0x83    0x00
0x103fdadb88:   0x00    0x00    0x00    0x00
(gdb) print gho
$21 = {l2_hdr_offset = 80, l3_hdr_offset = 14, l4_hdr_offset = 14, l4_hdr_sz = 
0, outer_l2_hdr_offset = 0, outer_l3_hdr_offset = 0, outer_l4_hdr_offset = 0}
(gdb) print b->flags&VNET_BUFFER_F_L2_HDR_OFFSET_VALID
$22 = 0
(gdb) print b->flags&VNET_BUFFER_F_L3_HDR_OFFSET_VALID
$23 = 131072
(gdb) print b->flags&VNET_BUFFER_F_L4_HDR_OFFSET_VALID
$24 = 65536
(gdb) x /20xb ip4
0x103fdadb5e:   0x00    0x02    0x0a    0x00    0x00    0x01    0x68    0x47
0x103fdadb66:   0x0f    0xa0    0xff    0xff    0xad    0x5e    0x00    0x00
0x103fdadb6e:   0x00    0x00    0xa0    0x02
(gdb) x /20xb th
0x103fdadb5e:   0x00    0x02    0x0a    0x00    0x00    0x01    0x68    0x47
0x103fdadb66:   0x0f    0xa0    0xff    0xff    0xad    0x5e    0x00    0x00
0x103fdadb6e:   0x00    0x00    0xa0    0x02
(gdb) print ((ip4_header_t *)(b->data+80))[0]
$25 = {{ip_version_and_header_length = 69 'E', tos = IP_DSCP_CS0, length = 
15360, fragment_id = 0, flags_and_fragment_offset = 64, ttl = 255 '\377', 
protocol = 6 '\006', checksum = 0, {{src_address = {data = "\n\000\000\002", 
data_u32 = 33554442, as_u8 = "\n\000\000\002", as_u16 = {10, 512}, as_u32 = 
33554442}, dst_address = {data = "\n\000\000\001", data_u32 = 16777226, as_u8 = 
"\n\000\000\001", as_u16 = {10, 256}, as_u32 = 16777226}}, address_pair = {src 
= {data = "\n\000\000\002", data_u32 = 33554442, as_u8 = "\n\000\000\002", 
as_u16 = {10, 512}, as_u32 = 33554442}, dst = {data = "\n\000\000\001", 
data_u32 = 16777226, as_u8 = "\n\000\000\001", as_u16 = {10, 256}, as_u32 = 
16777226}}}}, {checksum_data_64 = {18014399516115013, 144115231025530623}, 
checksum_data_64_32 = {16777226}}, {checksum_data_32 = {1006633029, 4194304, 
1791, 33554442, 16777226}}}
(gdb)
at /home/dev/code/net-base/build/vpp/src/vlib/unix/main.c:650
#16 0x00007ffff5884ef4 in clib_calljmp () at 
/home/dev/code/net-base/build/vpp/src/vppinfra/longjmp.S:123
#17 0x00007fffffffd070 in ?? ()
#18 0x00007ffff6472152 in vlib_unix_main (argc=181, argv=0x700fa0) at 
/home/dev/code/net-base/build/vpp/src/vlib/unix/main.c:720
#19 0x0000000000406dcc in main (argc=181, argv=0x700fa0) at 
/home/dev/code/net-base/build/vpp/src/vpp/vnet/main.c:280
(gdb) l
194   else if (is_ip6)
195     {
196       int bogus;
197       ip6_header_t *ip6;
198
199       ip6 =
200     (ip6_header_t *) (vlib_buffer_get_current (b) + gho.l3_hdr_offset);
201       if (b->flags & VNET_BUFFER_F_OFFLOAD_TCP_CKSUM)
202     {
203       th->checksum = 0;
(gdb)
204       th->checksum =
205         ip6_tcp_udp_icmp_compute_checksum (vm, b, ip6, &bogus);
206     }
207       else if (b->flags & VNET_BUFFER_F_OFFLOAD_UDP_CKSUM)
208     {
209       uh->checksum = 0;
210       uh->checksum =
211         ip6_tcp_udp_icmp_compute_checksum (vm, b, ip6, &bogus);
212     }
213     }
(gdb)
214   b->flags &= ~VNET_BUFFER_F_OFFLOAD_TCP_CKSUM;
215   b->flags &= ~VNET_BUFFER_F_OFFLOAD_UDP_CKSUM;
216   b->flags &= ~VNET_BUFFER_F_OFFLOAD_IP_CKSUM;
217 }
218
219 static_always_inline uword
220 vnet_interface_output_node_inline (vlib_main_t * vm,
221                    vlib_node_runtime_t * node,
222                    vlib_frame_t * frame,
223                    vnet_main_t * vnm,
(gdb) print b[0]
$20 = {{cacheline0 = 0x103fdada00 "P", current_data = 80, current_length = 60, 
flags = 23265280, flow_id = 0, ref_count = 1 '\001', buffer_pool_index = 0 
'\000', error = 0, next_buffer = 0, {current_config_index = 0, punt_reason = 
0}, opaque = {0, 3, 5242880, 100, 0, 3, 0, 0, 0, 0}, template_end = 
0x103fdada40 "", cacheline1 = 0x103fdada40 "", trace_handle = 0, 
total_length_not_including_first_buffer = 0, opaque2 = {0 <repeats 14 times>}, 
cacheline2 = 0x103fdada80 "", pre_data = '\000' <repeats 127 times>, data = 
0x103fdadb00 ""}, as_u8x16 = {{80, 0, 60, 0, 0, 0, 99, 1, 0, 0, 0, 0, 1, 0, 0, 
0}, {0 <repeats 12 times>, 3, 0, 0, 0}, {0, 0, 80, 0, 100, 0, 0, 0, 0, 0, 0, 0, 
3, 0, 0, 0}, {0 <repeats 16 times>}}}
(gdb) x /140xb b->data
0x103fdadb00:   0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x103fdadb08:   0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x103fdadb10:   0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x103fdadb18:   0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x103fdadb20:   0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x103fdadb28:   0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x103fdadb30:   0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x103fdadb38:   0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x103fdadb40:   0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x103fdadb48:   0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x103fdadb50:   0x45    0x00    0x00    0x3c    0x00    0x00    0x40    0x00
0x103fdadb58:   0xff    0x06    0x00    0x00    0x0a    0x00    0x00    0x02
0x103fdadb60:   0x0a    0x00    0x00    0x01    0x68    0x47    0x0f    0xa0
0x103fdadb68:   0xff    0xff    0xad    0x5e    0x00    0x00    0x00    0x00
0x103fdadb70:   0xa0    0x02    0x10    0x00    0x00    0x00    0x00    0x00
0x103fdadb78:   0x02    0x04    0x05    0xb4    0x03    0x03    0x0a    0x04
0x103fdadb80:   0x02    0x08    0x0a    0x01    0x34    0xdc    0x83    0x00
0x103fdadb88:   0x00    0x00    0x00    0x00
(gdb) x /60xb b->data+80
0x103fdadb50:   0x45    0x00    0x00    0x3c    0x00    0x00    0x40    0x00
0x103fdadb58:   0xff    0x06    0x00    0x00    0x0a    0x00    0x00    0x02
0x103fdadb60:   0x0a    0x00    0x00    0x01    0x68    0x47    0x0f    0xa0
0x103fdadb68:   0xff    0xff    0xad    0x5e    0x00    0x00    0x00    0x00
0x103fdadb70:   0xa0    0x02    0x10    0x00    0x00    0x00    0x00    0x00
0x103fdadb78:   0x02    0x04    0x05    0xb4    0x03    0x03    0x0a    0x04
0x103fdadb80:   0x02    0x08    0x0a    0x01    0x34    0xdc    0x83    0x00
0x103fdadb88:   0x00    0x00    0x00    0x00
(gdb) print gho
$21 = {l2_hdr_offset = 80, l3_hdr_offset = 14, l4_hdr_offset = 14, l4_hdr_sz = 
0, outer_l2_hdr_offset = 0, outer_l3_hdr_offset = 0, outer_l4_hdr_offset = 0}
(gdb) print b->flags&VNET_BUFFER_F_L2_HDR_OFFSET_VALID
$22 = 0
(gdb) print b->flags&VNET_BUFFER_F_L3_HDR_OFFSET_VALID
$23 = 131072
(gdb) print b->flags&VNET_BUFFER_F_L4_HDR_OFFSET_VALID
$24 = 65536
(gdb) x /20xb ip4
0x103fdadb5e:   0x00    0x02    0x0a    0x00    0x00    0x01    0x68    0x47
0x103fdadb66:   0x0f    0xa0    0xff    0xff    0xad    0x5e    0x00    0x00
0x103fdadb6e:   0x00    0x00    0xa0    0x02
(gdb) x /20xb th
0x103fdadb5e:   0x00    0x02    0x0a    0x00    0x00    0x01    0x68    0x47
0x103fdadb66:   0x0f    0xa0    0xff    0xff    0xad    0x5e    0x00    0x00
0x103fdadb6e:   0x00    0x00    0xa0    0x02
(gdb) print ((ip4_header_t *)(b->data+80))[0]
$25 = {{ip_version_and_header_length = 69 'E', tos = IP_DSCP_CS0, length = 
15360, fragment_id = 0, flags_and_fragment_offset = 64, ttl = 255 '\377', 
protocol = 6 '\006', checksum = 0, {{src_address = {data = "\n\000\000\002", 
data_u32 = 33554442, as_u8 = "\n\000\000\002", as_u16 = {10, 512}, as_u32 = 
33554442}, dst_address = {data = "\n\000\000\001", data_u32 = 16777226, as_u8 = 
"\n\000\000\001", as_u16 = {10, 256}, as_u32 = 16777226}}, address_pair = {src 
= {data = "\n\000\000\002", data_u32 = 33554442, as_u8 = "\n\000\000\002", 
as_u16 = {10, 512}, as_u32 = 33554442}, dst = {data = "\n\000\000\001", 
data_u32 = 16777226, as_u8 = "\n\000\000\001", as_u16 = {10, 256}, as_u32 = 
16777226}}}}, {checksum_data_64 = {18014399516115013, 144115231025530623}, 
checksum_data_64_32 = {16777226}}, {checksum_data_32 = {1006633029, 4194304, 
1791, 33554442, 16777226}}}
(gdb)

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.

View/Reply Online (#15187): https://lists.fd.io/g/vpp-dev/message/15187
Mute This Topic: https://lists.fd.io/mt/69709611/21656
Group Owner: vpp-dev+ow...@lists.fd.io
Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to