MTU가 1500에서 9000으로 변경된 이유

MTU가 1500에서 9000으로 변경된 이유

/var/log/message파일 에서 흥미로운 것을 발견했습니다.

Mar  9 07:08:32 linux54 kernel: ixgbe 0000:0b:00.1 en3j87: changing MTU from 1500 to 9000

인터페이스 카드를 볼 수 있습니다. en3j87이 1500 MTU에서 9000으로 변경되었습니다.

이게 정상인가요?

Mar  9 07:07:33 linux54 dbus-daemon: dbus[1153]: [system] Successfully activated service 'org.freedesktop.problems'
Mar  9 07:08:30 linux54 kernel: ixgbe 0000:0b:00.1: registered PHC device on en3j87
Mar  9 07:08:30 linux54 kernel: IPv6: ADDRCONF(NETDEV_UP): en3j87: link is not ready
Mar  9 07:08:31 linux54 kernel: ixgbe 0000:0b:00.1 en3j87: detected SFP+: 5
Mar  9 07:08:31 linux54 kernel: ixgbe 0000:0b:00.1 en3j87: NIC Link is Up 10 Gbps, Flow Control: RX/TX
Mar  9 07:08:31 linux54 kernel: IPv6: ADDRCONF(NETDEV_CHANGE): en3j87: link becomes ready
Mar  9 07:08:32 linux54 kernel: ixgbe 0000:0b:00.1: removed PHC on en3j87
Mar  9 07:08:32 linux54 kernel: ixgbe 0000:0b:00.1 en3j87: changing MTU from 1500 to 9000
Mar  9 07:08:32 linux54 kernel: ixgbe 0000:0b:00.1: registered PHC device on en3j87
Mar  9 07:08:32 linux54 kernel: IPv6: ADDRCONF(NETDEV_UP): en3j87: link is not ready
Mar  9 07:08:32 linux54 kernel: team0: Port device en3j87 added
Mar  9 07:08:32 linux54 kernel: ixgbe 0000:0b:00.1 en3j87: detected SFP+: 5
Mar  9 07:08:33 linux54 kernel: ixgbe 0000:0b:00.1 en3j87: NIC Link is Up 10 Gbps, Flow Control: RX/TX
Mar  9 07:08:33 linux54 kernel: IPv6: ADDRCONF(NETDEV_CHANGE): en3j87: link becomes ready

답변1

이는 인터페이스가 점보 프레임을 사용하도록 구성되었음을 의미합니다. 연결이 양호하면 걱정할 필요가 없으며 더 높은 처리량을 얻을 수 있습니다. (유효한 경우 인터페이스에 연결된 네트워크 장치도 점보 프레임으로 구성되었음을 의미합니다.)

인터페이스는 1500바이트의 레거시 MTU로 시작하고 필요한 경우 네트워크 설정에 따라 9000으로 재구성됩니다(RHEL에서 인터페이스 구성에 지정된 경우 MTU=9000). 표시되는 로그 메시지는 완전히 정상입니다.

답변2

메시지는 네트워크 모듈( )에만 해당되며 ixgbe완전히 정상입니다(문제 없음). 모듈의 소스코드를 보면,ixgbe_main.c6719행에서 MTU 변경이 발생할 때마다 드라이버가 이를 알리는 것을 알 수 있습니다. 컨텍스트 코드 조각:

static int ixgbe_change_mtu(struct net_device *netdev, int new_mtu)
{
    struct ixgbe_adapter *adapter = netdev_priv(netdev);

    if (adapter->xdp_prog) {
        int new_frame_size = new_mtu + ETH_HLEN + ETH_FCS_LEN +
                     VLAN_HLEN;
        int i;

        for (i = 0; i < adapter->num_rx_queues; i++) {
            struct ixgbe_ring *ring = adapter->rx_ring[i];

            if (new_frame_size > ixgbe_rx_bufsz(ring)) {
                e_warn(probe, "Requested MTU size is not supported with XDP\n");
                return -EINVAL;
            }
        }
    }

    /*
     * For 82599EB we cannot allow legacy VFs to enable their receive
     * paths when MTU greater than 1500 is configured.  So display a
     * warning that legacy VFs will be disabled.
     */
    if ((adapter->flags & IXGBE_FLAG_SRIOV_ENABLED) &&
        (adapter->hw.mac.type == ixgbe_mac_82599EB) &&
        (new_mtu > ETH_DATA_LEN))
        e_warn(probe, "Setting MTU > 1500 will disable legacy VFs\n");

    e_info(probe, "changing MTU from %d to %d\n", netdev->mtu, new_mtu);

    /* must set new MTU before calling down or up */
    netdev->mtu = new_mtu;

    if (netif_running(netdev))
        ixgbe_reinit_locked(adapter);

    return 0;
}

MTU가 변경되었다는 알림을 받아야 하는 특정 줄은 다음과 같습니다.

e_info(probe, "changing MTU from %d to %d\n", netdev->mtu, new_mtu);

관련 정보