Thanks Steven for helping out.
I will look into SoC plugin initialization from bonding perspective.

-----Original Message-----
From: Steven Luong (sluong) <[email protected]>
Sent: 23 May 2021 01:38
To: [email protected]; [email protected]
Subject: Re: [vpp-dev] vnet bonding crashes - need some suggestions to
narrow down

I set up the same bonding with dot1q and subinterface configuration as
given, but using tap interface to connect to Linux instead. It works just
fine. I believe the crash was due to using a custom plugin which is cloned
from VPP DPDK plugin to handle the Octeon-tx2 SoC. When bonding gets the
buffer from the custom plugin, many of the necessary fields were not
set/initialized which resulted a crash in calling vnet_feature_next. I
believe the bug is in the custom plugin, not bonding.

Steven

On 5/17/21, 2:20 AM, "[email protected] on behalf of Vikas Aggarwal via
lists.fd.io" <[email protected] on behalf of
[email protected]> wrote:

    Hello vpp list/experts,
    Need some suggestion  to understand following  vnet bonding crash when I
    try to ping outside from linux.
    Configuration: Linux <==> loopback-ports <==> vpp bridge <==> To outside
    Note: No crash happens if  I  eliminate vnet bonding  from steps below.
    VPP CLI steps:
    ============
    Summary: Add outbound physical ports eth6 & eth7 into bonding. Create
    sub-interfaces with tag 2003, 2001. Create access mode on local-linux
    facing interfaces. Add all into L2 bridge.
    vpp#  create bond mode active-backup
    vpp#  bond add BondEthernet0 eth6
    vpp#  bond add BondEthernet0 eth7
    vpp#  set int state eth6  up
    vpp#  set int state eth7  up
    vpp#  set int state  BondEthernet0 up
    vpp#  create sub-interfaces BondEthernet0 2001
    vpp#  set int state BondEthernet0.2001 up
    vpp#  create sub-interfaces BondEthernet0 2003
    vpp#  set int state BondEthernet0.2003 up
    vpp#  set int l2 bridge  BondEthernet0.2001  100
    vpp#  set int state lbk0  up  #A loopback port between linux and VPP
    vpp#  set int l2 bridge  lbk0  100
    vpp#  set int l2 bridge  BondEthernet0.2003  100
    vpp#  set int state lbk2  up  #Another loopback port between linux and
VPP
    vpp#  set int l2 bridge  lbk2  100
    vpp#  set interface l2 tag-rewrite lbk0 push dot1q 2003
    vpp#  set interface l2 tag-rewrite  lbk2 push dot1q 2001
    VPP crash dump once tried to ping out from linux.
    ========================================
    (gdb)
    #0  0x0000ffffa04b2184 in raise () from /lib64/libc.so.6

    #1  0x0000ffffa04b3228 in abort () from /lib64/libc.so.6

    #2  0x0000000000407f40 in os_panic ()
        at arm64-soc-sdk-home/src/output/build/vpp/src/vpp/vnet/main.c:355

    #3  0x0000ffffa0903950 in debugger ()
        at arm64-soc-sdk-home/src/output/build/vpp/src/vppinfra/error.c:84

    #4  0x0000ffffa0903cf8 in _clib_error (how_to_die=2, function_name=0x0,
    line_number=0,
        fmt=0xffffa12e6c20 "%s:%d (%s) assertion `%s' fails")
        at arm64-soc-sdk-home/src/output/build/vpp/src/vppinfra/error.c:143

    #5  0x0000ffffa0c06c08 in vnet_get_config_data (cm=0xffff6278a670,
    config_index=0xfffb415af614, next_index=0xffff638aee14,
        n_data_bytes=0) at
    arm64-soc-sdk-home/src/output/build/vpp/src/vnet/config.h:129

    #6  0x0000ffffa0c07128 in vnet_feature_next_with_data
    (next0=0xffff638aee14, b0=0xfffb415af600, n_data_bytes=0)
        at
    arm64-soc-sdk-home/src/output/build/vpp/src/vnet/feature/feature.h:296

    #7  0x0000ffffa0c07150 in vnet_feature_next (next0=0xffff638aee14,
    b0=0xfffb415af600)
        at
    arm64-soc-sdk-home/src/output/build/vpp/src/vnet/feature/feature.h:304

    #8  0x0000ffffa0c07c1c in bond_update_next (vm=0xffff628ed580,
    node=0xffff62e46280, last_slave_sw_if_index=0xffff638aee0c,
        slave_sw_if_index=3, bond_sw_if_index=0xffff638aee10,
    b=0xfffb415af600, next_index=0xffff638aee14, error=0xffff638aee08)
        at
arm64-soc-sdk-home/src/output/build/vpp/src/vnet/bonding/node.c:180

    #9  0x0000ffffa0c08570 in bond_input_node_fn_arm64soc
(vm=0xffff628ed580,
    node=0xffff62e46280, frame=0xffff62f07300)
        at
arm64-soc-sdk-home/src/output/build/vpp/src/vnet/bonding/node.c:342

    #10 0x0000ffffa0a46834 in dispatch_node (vm=0xffff628ed580,
    node=0xffff62e46280, type=VLIB_NODE_TYPE_INTERNAL,
        dispatch_state=VLIB_NODE_STATE_POLLING, frame=0xffff62f07300,
    last_time_stamp=104222198360858)
        at arm64-soc-sdk-home/src/output/build/vpp/src/vlib/main.c:1205

    #11 0x0000ffffa0a46fc4 in dispatch_pending_node (vm=0xffff628ed580,
    pending_frame_index=0, last_time_stamp=104222198360858)
        at arm64-soc-sdk-home/src/output/build/vpp/src/vlib/main.c:1373

    #12 0x0000ffffa0a489dc in vlib_main_or_worker_loop (vm=0xffff628ed580,
    is_main=0)
        at arm64-soc-sdk-home/src/output/build/vpp/src/vlib/main.c:1835

    #13 0x0000ffffa0a491b8 in vlib_worker_loop (vm=0xffff628ed580)
        at arm64-soc-sdk-home/src/output/build/vpp/src/vlib/main.c:1942

    #14 0x0000ffffa0a6c2cc in vlib_worker_thread_fn (arg=0xffff6062bc00)
        at arm64-soc-sdk-home/src/output/build/vpp/src/vlib/threads.c:1751

    #15 0x0000ffffa0914458 in clib_calljmp () from
    /lib64/libvppinfra.so.19.08.1

    Backtrace stopped: not enough registers or memory available to unwind
    further
    (gdb)

    Thank You & appreciate your help
    - Vikas Aggarwal
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#19441): https://lists.fd.io/g/vpp-dev/message/19441
Mute This Topic: https://lists.fd.io/mt/82882476/21656
Group Owner: [email protected]
Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub [[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to