What VLAN configurations are supported for kdump?

Solution Verified - Updated -

Environment

  • Red Hat Enterprise Linux 7.
  • Red Hat Enterprise Linux 8.
  • Red Hat Enterprise Linux 9.
  • kdump configured to dump vmcores to a remote target on a VLAN

Issue

  • What VLAN network configurations work with kdump?

Resolution

Red Hat Enterprise Linux 8 & 9.

  • Supported VLAN configurations for kdump on the local system

    • Single device
    • Bonds
    • Teams
  • Unsupported VLAN configurations for kdump on the local system

    • Bridges

Red Hat Enterprise Linux 7

  • Supported VLAN configurations for kdump on the local system

    • Single device
    • Bonds
  • Unsupported VLAN configurations for kdump on the local system

    • Bridges
    • Teams

Root Cause

Red Hat Enterprise Linux 9.

  • The source code for kdump (kexec-tools-2.0.23-9_1.el9_0.x86_64 at the time of writing) which checks the VLAN configuration on the local system is listed below, wherein kdump explicitly reports to the console that VLAN over a bridged device is unsupported:
kdump_setup_vlan() {
    local _netdev=$1
    local _phydev
    local _netmac
    local _kdumpdev

    _phydev="$(awk '/^Device:/{print $2}' /proc/net/vlan/"$_netdev")"
    _netmac="$(kdump_get_mac_addr "$_phydev")"

    #Just support vlan over bond and team
    if kdump_is_bridge "$_phydev"; then
        derror "Vlan over bridge is not supported!"          <-----
        exit 1
    elif kdump_is_bond "$_phydev"; then
        (kdump_setup_bond "$_phydev" "$(get_nmcli_connection_apath_by_ifname "$_phydev")") || exit 1
        echo " vlan=$(kdump_setup_ifname "$_netdev"):$_phydev" > "${initdir}/etc/cmdline.d/43vlan.conf"
    else
        _kdumpdev="$(kdump_setup_ifname "$_phydev")"
        echo " vlan=$(kdump_setup_ifname "$_netdev"):$_kdumpdev ifname=$_kdumpdev:$_netmac" > "${initdir}/etc/cmdline.d/43vlan.conf"
    fi
}

Red Hat Enterprise Linux 8

  • The source code for kdump (kexec-tools-2.0.20-46.el8_4.2.x86_64 at the time of writing) which checks the VLAN configuration on the local system is listed below, wherein kdump explicitly reports to the console that VLAN over a bridged device is unsupported:

    kdump_setup_vlan() {
        local _netdev=$1
        local _phydev="$(awk '/^Device:/{print $2}' /proc/net/vlan/"$_netdev")"
        local _netmac="$(kdump_get_mac_addr $_phydev)"
        local _kdumpdev
    
        #Just support vlan over bond and team
        if kdump_is_bridge "$_phydev"; then
            derror "Vlan over bridge is not supported!"            <-----
            exit 1
        elif kdump_is_bond "$_phydev"; then
            kdump_setup_bond "$_phydev"
            echo " vlan=$(kdump_setup_ifname $_netdev):$_phydev" > ${initdir}/etc/cmdline.d/43vlan.conf
        else
            _kdumpdev="$(kdump_setup_ifname $_phydev)"
            echo " vlan=$(kdump_setup_ifname $_netdev):$_kdumpdev ifname=$_kdumpdev:$_netmac" > ${initdir}/etc/cmdline.d/43vlan.conf
        fi
    }
    

Red Hat Enterprise Linux 7

  • The source code for kdump (kexec-tools-2.0.15-21.el7_6.3.x86_64 at the time of writing) which checks the VLAN configuration on the local system is listed below, wherein kdump explicitly reports to the console that VLAN over a bridged device or over a team is unsupported:

    kdump_setup_vlan() {
        local _netdev=$1
        local _phydev="$(awk '/^Device:/{print $2}' /proc/net/vlan/"$_netdev")"
        local _netmac="$(kdump_get_mac_addr $_phydev)"
        local _kdumpdev
    
        #Just support vlan over bond, it is not easy
        #to support all other complex setup
        if kdump_is_bridge "$_phydev"; then
            derror "Vlan over bridge is not supported!"        <---
            exit 1
        elif kdump_is_team "$_phydev"; then
            derror "Vlan over team is not supported!"           <---
            exit 1
        elif kdump_is_bond "$_phydev"; then
            kdump_setup_bond "$_phydev"
            echo " vlan=$_netdev:$_phydev" > ${initdir}/etc/cmdline.d/43vlan.conf
        else
            _kdumpdev="$(kdump_setup_ifname $_phydev)"
            echo " vlan=$_netdev:$_kdumpdev ifname=$_kdumpdev:$_netmac" > ${initdir}/etc/cmdline.d/43vlan.conf
        fi
    }
    

This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.

Comments