Hi,

The vpp core observed with the following trace, this seems to occur when a
mDNS ipv6 packet is getting handled in the mfib_forward_lookup. In the
mfib_lookup, access to  ip6_main.mfib_index_by_sw_if_index[sw_index]
results in assertion failure as  mfib_index_by_sw_if_index in not yet
initialized, note the sw_index is that of a loopback interface created and
added to the bridge domain. Note ipv6 is not explicitly enabled for this
loopback interface. The loopack interface vrf is set to default 0 using the
set_table api with is_ipv6 set as 0.  Earlier without interface set table
setting and enabling the dhcp client on the interface used to result in
assertion on ipv4_main.fib_index_by_sw_if_index ip4_lookup_inline
function.



My understanding so far regarding the issue is that the ip6 is enabled for
the “local0” interface using the ip6_sw_interface_enable_disable from
vnet_main_init unconditionally. This leads to the ip6-input feature
processing enabled. But note that case does not invoke a
ip6_add_del_address function for local0 , which would set up the fib and
mfib and invoke vec_validate for the mfib_index_by_sw_if_index that would
initialize the vector.


I am not able to find any code in ip6-input that would look up the
ip6_main.ip_enabled_by_sw_index[sw_index]  before passing the frame for
lookup.


 Is there any mechanism currently to handle the buffers only if the
interface interface has ipv6  enabled else drop stating  that ipv6 not
enabled on the interface ?


Should local0 interface explicitly enable ip4/ip6 implicitly or should this
be driven by some configuration ?


The device has two ethernet interface bound to the vpp by specifying the
pci-id in startup .conf, the ethernet interfaces are added to a
bridge-domain 1 and an additional loopback interface is added for l3.
please see the show interfaces and show bridge domain configuration below.


Please see the stack trace and other details below. Looking for valuable
inputs regarding this. Thanks in advance.


Thanks

Rupesh


(gdb) core-file vpp_main_core_6_20691
[New LWP 20691]
[New LWP 20693]
Core was generated by `/usr/bin/vpp -c /etc/vpp/startup.conf'.
Program terminated with signal SIGABRT, Aborted.
#0  0x0000003b00833bff in ?? ()
[Current thread is 1 (LWP 20691)]
(gdb) set solib-search-path lib:usr/lib
warning: Unable to find libthread_db matching inferior's thread library,
thread debugging will not be available.
(gdb) bt
#0  __GI_raise (sig=sig@entry=6) at
/usr/src/debug/glibc/2.26-r0/git/sysdeps/unix/sysv/linux/raise.c:51
#1  0x0000003b00834fe7 in __GI_abort () at
/usr/src/debug/glibc/2.26-r0/git/stdlib/abort.c:90
#2  0x00000000004077cb in os_exit (code=1) at
/home/rraghuvaran/cnwcl-jan19/poky/build/tmp/work/core2-64-poky-linux/vpp/19.01-r0/git/src/vpp/vnet/main.c:359
#3  0x0000003b032acbd9 in unix_signal_handler (signum=6, si=0x7f57ef5ff470,
uc=0x7f57ef5ff340)
    at
/home/rraghuvaran/cnwcl-jan19/poky/build/tmp/work/core2-64-poky-linux/vpp/19.01-r0/git/src/vlib/unix/main.c:156
#4  <signal handler called>
#5  __GI_raise (sig=sig@entry=6) at
/usr/src/debug/glibc/2.26-r0/git/sysdeps/unix/sysv/linux/raise.c:51
#6  0x0000003b00834fe7 in __GI_abort () at
/usr/src/debug/glibc/2.26-r0/git/stdlib/abort.c:90
#7  0x0000000000407786 in os_panic () at
/home/rraghuvaran/cnwcl-jan19/poky/build/tmp/work/core2-64-poky-linux/vpp/19.01-r0/git/src/vpp/vnet/main.c:335
#8  0x0000003b01c3a33d in debugger () at
/home/rraghuvaran/cnwcl-jan19/poky/build/tmp/work/core2-64-poky-linux/vpp/19.01-r0/git/src/vppinfra/error.c:84
#9  0x0000003b01c3a70c in _clib_error (how_to_die=2, function_name=0x0,
line_number=0, fmt=0x3b046d8bb0 "%s:%d (%s) assertion `%s' fails")
    at
/home/rraghuvaran/cnwcl-jan19/poky/build/tmp/work/core2-64-poky-linux/vpp/19.01-r0/git/src/vppinfra/error.c:143
#10 0x0000003b0442315e in mfib_forward_lookup (vm=0x3b034dc300
<vlib_global_main>, node=0x7f57ef1fef40, frame=0x7f57ef21a780, is_v4=0)
    at
/home/rraghuvaran/cnwcl-jan19/poky/build/tmp/work/core2-64-poky-linux/vpp/19.01-r0/git/src/vnet/mfib/mfib_forward.c:165
#11 0x0000003b04423405 in ip6_mfib_forward_lookup (vm=0x3b034dc300
<vlib_global_main>, node=0x7f57ef1fef40, frame=0x7f57ef21a780)
    at
/home/rraghuvaran/cnwcl-jan19/poky/build/tmp/work/core2-64-poky-linux/vpp/19.01-r0/git/src/vnet/mfib/mfib_forward.c:216
#12 0x0000003b03257314 in dispatch_node (vm=0x3b034dc300
<vlib_global_main>, node=0x7f57ef1fef40, type=VLIB_NODE_TYPE_INTERNAL,
    dispatch_state=VLIB_NODE_STATE_POLLING, frame=0x7f57ef21a780,
last_time_stamp=826527506884080)
    at
/home/rraghuvaran/cnwcl-jan19/poky/build/tmp/work/core2-64-poky-linux/vpp/19.01-r0/git/src/vlib/main.c:1201
#13 0x0000003b03257aac in dispatch_pending_node (vm=0x3b034dc300
<vlib_global_main>, pending_frame_index=7, last_time_stamp=826527506884080)
    at
/home/rraghuvaran/cnwcl-jan19/poky/build/tmp/work/core2-64-poky-linux/vpp/19.01-r0/git/src/vlib/main.c:1368
#14 0x0000003b0325944c in vlib_main_or_worker_loop (vm=0x3b034dc300
<vlib_global_main>, is_main=1)
    at
/home/rraghuvaran/cnwcl-jan19/poky/build/tmp/work/core2-64-poky-linux/vpp/19.01-r0/git/src/vlib/main.c:1793
#15 0x0000003b03259cfa in vlib_main_loop (vm=0x3b034dc300
<vlib_global_main>)
    at
/home/rraghuvaran/cnwcl-jan19/poky/build/tmp/work/core2-64-poky-linux/vpp/19.01-r0/git/src/vlib/main.c:1895
#16 0x0000003b0325a8b9 in vlib_main (vm=0x3b034dc300 <vlib_global_main>,
input=0x7f57ef5fffa0)
    at
/home/rraghuvaran/cnwcl-jan19/poky/build/tmp/work/core2-64-poky-linux/vpp/19.01-r0/git/src/vlib/main.c:2084
#17 0x0000003b032ae125 in thread0 (arg=253458498304)
    at
/home/rraghuvaran/cnwcl-jan19/poky/build/tmp/work/core2-64-poky-linux/vpp/19.01-r0/git/src/vlib/unix/main.c:606
#18 0x0000003b01c5a274 in clib_calljmp ()
    at
/home/rraghuvaran/cnwcl-jan19/poky/build/tmp/work/core2-64-poky-linux/vpp/19.01-r0/git/src/vppinfra/longjmp.S:123
#19 0x00007ffc9ad708e0 in ?? ()
#20 0x0000003b032ae5a0 in vlib_unix_main (argc=37, argv=0x90a4d0)
    at
/home/rraghuvaran/cnwcl-jan19/poky/build/tmp/work/core2-64-poky-linux/vpp/19.01-r0/git/src/vlib/unix/main.c:675
#21 0x00000000004072c6 in main (argc=37, argv=0x90a4d0)
    at
/home/rraghuvaran/cnwcl-jan19/poky/build/tmp/work/core2-64-poky-linux/vpp/19.01-r0/git/src/vpp/vnet/main.c:274
(gdb) frame 10
#10 0x0000003b0442315e in mfib_forward_lookup (vm=0x3b034dc300
<vlib_global_main>, node=0x7f57ef1fef40, frame=0x7f57ef21a780, is_v4=0)
    at
/home/rraghuvaran/cnwcl-jan19/poky/build/tmp/work/core2-64-poky-linux/vpp/19.01-r0/git/src/vnet/mfib/mfib_forward.c:165
165
 
/home/rraghuvaran/cnwcl-jan19/poky/build/tmp/work/core2-64-poky-linux/vpp/19.01-r0/git/src/vnet/mfib/mfib_forward.c:
No such file or directory.
(gdb) info locals
ip0 = 0x3b03254dd8 <vlib_node_runtime_update_stats+357>
mfei0 = 32599
p0 = 0x7f53eed90680
fib_index0 = 0
pi0 = 549914
n_left_from = 0
n_left_to_next = 255
from = 0x7f57ef21a794
to_next = 0x7f57ef21ac14
__FUNCTION__ = "mfib_forward_lookup"
(gdb) p/x (ethernet_header_t *)p0->data
$3 = 0x7f53eed90780
(gdb) p/x *(ethernet_header_t *)p0->data
$4 = {dst_address = {0x33, 0x33, 0x0, 0x0, 0x0, 0xfb}, src_address = {0xb4,
0x96, 0x91, 0x6, 0x35, 0x3}, type = 0xdd86}
(gdb)
$5 = {dst_address = {0x33, 0x33, 0x0, 0x0, 0x0, 0xfb}, src_address = {0xb4,
0x96, 0x91, 0x6, 0x35, 0x3}, type = 0xdd86}
(gdb) p/x *(ip6_header_t *)(p0->data+p0->current_data)
$6 = {ip_version_traffic_class_and_flow_label = 0x56070160, payload_length
= 0x3500, protocol = 0x11, hop_limit = 0xff, src_address = {as_u8 = {0xfe,
0x80,
      0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb6, 0x96, 0x91, 0xff, 0xfe, 0x6,
0x35, 0x3}, as_u16 = {0x80fe, 0x0, 0x0, 0x0, 0x96b6, 0xff91, 0x6fe, 0x335},
    as_u32 = {0x80fe, 0x0, 0xff9196b6, 0x33506fe}, as_u64 = {0x80fe,
0x33506feff9196b6}, as_uword = {0x80fe, 0x33506feff9196b6}}, dst_address =
{as_u8 = {
      0xff, 0x2, 0x0 <repeats 13 times>, 0xfb}, as_u16 = {0x2ff, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0xfb00}, as_u32 = {0x2ff, 0x0, 0x0, 0xfb000000}, as_u64
= {
      0x2ff, 0xfb00000000000000}, as_uword = {0x2ff, 0xfb00000000000000}}}
(gdb) p ip6_main->mfib_index_by_sw_if_index
$7 = (u32 *) 0x0
(gdb) p ip6_main->fib_index_by_sw_if_index
$8 = (u32 *) 0x7f57ef20f39c
(gdb) p ip6_main->fib_index_by_sw_if_index[0]
$9 = 0
(gdb) p ip6_main->ip_enabled_by_sw_if_index[0]
$10 = 1 '\001'
(gdb) p ip6_main->ip_enabled_by_sw_if_index[1]
$11 = 0 '\000'
(gdb) p ip6_main->ip_enabled_by_sw_if_index[5]
$12 = 186 '\272'
(gdb) p ip6_main
$13 = {ip6_table = {{ip6_hash = {buckets = 0x7f53aa7f0000, alloc_lock =
0x7f53aa870000, working_copies = 0x0, working_copy_lengths = 0x0,
saved_bucket = {{{
              offset = 0, lock = 0, linear_search = 0, log2_pages = 0,
refcnt = 0}, as_u64 = 0}}, nbuckets = 65536, log2_nbuckets = 16,
        name = 0x3b0461648f "ip6 FIB fwding table", freelists =
0x7f57eefeb02c, sh = {alloc_arena_next = 524608, alloc_arena_size =
33554432,
          alloc_lock_as_u64 = 0, buckets_as_u64 = 0, freelists_as_u64 = 0,
nbuckets = 0, ready = 0, pad = {0, 0}}, alloc_arena = 139997319462912,
        fmt_fn = 0x0}, non_empty_dst_address_length_bitmap =
0x7f57ef0d683c, prefix_lengths_in_search_order = 0x7f57eefd9adc "\n",
      dst_address_length_refcounts = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0
<repeats 118 times>}}, {ip6_hash = {buckets = 0x7f53a87f0000,
        alloc_lock = 0x7f53a8870000, working_copies = 0x0,
working_copy_lengths = 0x0, saved_bucket = {{{offset = 0, lock = 0,
linear_search = 0,
              log2_pages = 0, refcnt = 0}, as_u64 = 0}}, nbuckets = 65536,
log2_nbuckets = 16, name = 0x3b046164a4 "ip6 FIB non-fwding table",
        freelists = 0x7f57eefea3cc, sh = {alloc_arena_next = 524608,
alloc_arena_size = 33554432, alloc_lock_as_u64 = 0, buckets_as_u64 = 0,
          freelists_as_u64 = 0, nbuckets = 0, ready = 0, pad = {0, 0}},
alloc_arena = 139997285908480, fmt_fn = 0x0},
      non_empty_dst_address_length_bitmap = 0x7f57ef0d687c,
prefix_lengths_in_search_order = 0x7f57eefd970c "\n",
dst_address_length_refcounts = {1, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 1, 0 <repeats 118 times>}}}, ip6_mtable =
{ip6_mhash = {buckets = 0x7f53a67f0000, alloc_lock = 0x7f53a6870000,
      working_copies = 0x0, working_copy_lengths = 0x0, saved_bucket =
{{{offset = 0, lock = 0, linear_search = 0, log2_pages = 0, refcnt = 0},
          as_u64 = 0}}, nbuckets = 65536, log2_nbuckets = 16, name =
0x3b046164bd "ip6 mFIB table", freelists = 0x7f57eefbe90c, sh = {
        alloc_arena_next = 525312, alloc_arena_size = 33554432,
alloc_lock_as_u64 = 0, buckets_as_u64 = 0, freelists_as_u64 = 0, nbuckets =
0, ready = 0,
        pad = {0, 0}}, alloc_arena = 139997252354048, fmt_fn = 0x0},
non_empty_dst_address_length_bitmap = 0x7f57ef0d70ac,
    prefix_lengths_in_search_order = 0x7f57eefd309c,
dst_address_length_refcounts = {1, 0 <repeats 103 times>, 1, 0 <repeats 23
times>, 3,
      0 <repeats 128 times>}}, lookup_main = {if_address_pool = 0x0,
address_to_if_address_index = {key_vector_or_heap = 0x0,
      key_vector_free_indices = 0x0, key_tmps = 0x0, n_key_bytes = 20,
hash_seed = 0, hash = 0x7f57ef0ce16c, format_key = 0x0},
    if_address_pool_index_by_sw_if_index = 0x7f57ef20f3dc,
classify_table_index_by_sw_if_index = 0x0, mcast_feature_arc_index = 7 '\a',
    ucast_feature_arc_index = 8 '\b', output_feature_arc_index = 6 '\006',
fib_result_n_bytes = 8, fib_result_n_words = 0, is_ip6 = 1,
    format_address_and_length = 0x3b03d2a7eb
<format_ip6_address_and_length>,
    local_next_by_ip_protocol = '\001' <repeats 17 times>, "\002", '\001'
<repeats 26 times>,
"\004\001\001\006\001\001\001\001\001\001\001\001\001\001\003", '\001'
<repeats 56 times>, "\005", '\001' <repeats 140 times>,
    builtin_protocol_by_ip_protocol = '\002' <repeats 17 times>, "\000",
'\002' <repeats 40 times>, "\001", '\002' <repeats 197 times>},
  fibs = 0x7f57eeeeb2dc, v6_fibs = 0x7f57ef0d6780, mfibs = 0x7f57ef0c4900,
fib_masks = {{as_u8 = '\000' <repeats 15 times>, as_u16 = {0, 0, 0, 0, 0,
0, 0,
-----------snip---
      as_u8 = '\377' <repeats 15 times>, "\376", as_u16 = {65535, 65535,
65535, 65535, 65535, 65535, 65535, 65279}, as_u32 = {4294967295, 4294967295,
        4294967295, 4278190079}, as_u64 = {18446744073709551615,
18374686479671623679}, as_uword = {18446744073709551615,
18374686479671623679}}, {
---Type <return> to continue, or q <return> to quit---
      as_u8 = '\377' <repeats 16 times>, as_u16 = {65535, 65535, 65535,
65535, 65535, 65535, 65535, 65535}, as_u32 = {4294967295, 4294967295,
4294967295,
        4294967295}, as_u64 = {18446744073709551615, 18446744073709551615},
as_uword = {18446744073709551615, 18446744073709551615}}},
  fib_index_by_sw_if_index = 0x7f57ef20f39c, mfib_index_by_sw_if_index =
0x0, ip_enabled_by_sw_if_index = 0x7f57eefb1a8c "\001",
  fib_index_by_table_id = 0x7f57eeb5fd3c, mfib_index_by_table_id =
0x7f57eeff331c, interface_route_adj_index_by_sw_if_index = 0x0,
  add_del_interface_address_callbacks = 0x7f57ef0d618c,
table_bind_callbacks = 0x7f57eefea5ac, discover_neighbor_packet_template = {
    packet_data = 0x7f57ef0d74bc "`", min_n_buffers_each_alloc = 8, name =
0x0}, lookup_table_nbuckets = 65536, lookup_table_size = 33554432,
  flow_hash_seed = 3735928559, host_config = {ttl = 64 '@', pad =
"\000\000"}, hbh_enabled = 0 '\000', nd_throttle = {time = 0.001,
    bitmaps = 0x7f57ef1c9bcc, seeds = 0x7f57ef1cb59c, last_seed_change_time
= 0x7f57ef1c9c8c}}


DBGvpp# show ver
vpp v19.04-rc0~178-g6fef74a built by  on rraghuvaran-dev at Thu Feb 14
14:20:07 IST 2019
DBGvpp# show interface
              Name               Idx    State  MTU (L3/IP4/IP6/MPLS)
 Counter          Count
GigabitEthernet0/14/0             2      up          1500/0/0/0     rx
packets                  1706
                                                                    rx
bytes                  113473
                                                                    tx
packets                   673
                                                                    tx
bytes                   41215
                                                                    drops
                     1531

tx-error                       2
GigabitEthernet0/14/1             3     down         9000/0/0/0
GigabitEthernet0/14/2             4      up          1500/0/0/0
 tx-error                    2094
local0                            0     down          0/0/0/0       drops
                        1
loop1                             5      up          9000/0/0/0     rx
packets                  1706
                                                                    rx
bytes                   89589
                                                                    tx
packets                  1350
                                                                    tx
bytes                   83718
                                                                    drops
                     2098
                                                                    punt
                     127
                                                                    ip4
                      173
tuntap-0                          1      up           0/0/0/0       rx
packets                   627
                                                                    rx
bytes                   48233
                                                                    tx
packets                   127
                                                                    tx
bytes                   14755
                                                                    drops
                      558
                                                                    ip4
                      627
DBGvpp# show interface address
GigabitEthernet0/14/0 (up):
  L2 bridge bd-id 1 idx 1 shg 0
GigabitEthernet0/14/1 (dn):
GigabitEthernet0/14/2 (up):
  L2 bridge bd-id 1 idx 1 shg 0
local0 (dn):
loop1 (up):
  L2 bridge bd-id 1 idx 1 shg 0 bvi
  L3 192.168.10.128/24
tuntap-0 (up):
DBGvpp# show bridge-domain 1 detail
  BD-ID   Index   BSN  Age(min)  Learning  U-Forwrd   UU-Flood   Flooding
ARP-Term   BVI-Intf
    1       1      0     off        on        on       flood        on
 off       loop1

           Interface           If-idx ISN  SHG  BVI  TxFlood
VLAN-Tag-Rewrite
             loop1               5     1    0    *      *
 none
     GigabitEthernet0/14/2       4     1    0    -      *
 none
     GigabitEthernet0/14/0       2     1    0    -      *
 none
DBGvpp#

Following is the startup conf


unix {
    nodaemon
    log /tmp/vpp.log
    full-coredump
    cli-listen localhost:5002
}

api-segment {
   gid 0
}

tuntap {
    enable
}

api-trace {
  on
}
cpu {
        skip-cores 4
}
dpdk {
        dev 0000:00:14.0
        dev 0000:00:14.1
        dev 0000:00:14.2
}
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.

View/Reply Online (#12281): https://lists.fd.io/g/vpp-dev/message/12281
Mute This Topic: https://lists.fd.io/mt/29918187/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