modprobe가 ifb 장치를 로드할 수 없습니다.

modprobe가 ifb 장치를 로드할 수 없습니다.

veth 쌍을 확인하고 ifb 장치를 설정하는 스크립트가 있는데 매번 해당 특정 veth 쌍에 대한 무료 ifb 장치를 찾을 수 없다는 메시지가 나타납니다.

무엇이 문제일까요? modprobe기본적으로 두 개를 생성하는 명령을 실행하려고 해도 ifb동일한 오류가 발생합니다.

#return 0 if the ifb is free

check_ifb() 
{
    local installed=`nl-qdisc-list -d $1`
    [ -n "$installed" ] && return 1

    return 0
}

setup_ifb() 
{

    for ifb in `ifconfig -a -s|egrep ^ifb|cut -d ' ' -f1`
    do
        check_ifb "$ifb" || continue
        IFB="$ifb"
        break
    done

    if [ -z "IFB" ]
    then
        echo "Unable to find a free ifb device for $vifname"
        exit -1
    fi

    ip link set dev "IFB" up
    
    if [ $? -ne 0 ]
    then
        echo ip link set dev "IFB" up failed
        exit -1
    fi
}

답변1

기본적으로 두 가지가 있습니다.IFB로딩 시 인터페이스 생성IFB커널 모듈. 이것은 더 이상 사용되지 않는 이유입니다. 둘 다 마찬가지입니다.가짜로딩 시 인터페이스 생성가짜커널 모듈. 이러한 인터페이스는 초기 네트워크 네임스페이스에 생성됩니다. 예를 들어 시스템이 컨테이너 내부에 있거나 (초기 아님) 네트워크 네임스페이스일 경우에는IFB인터페이스는 여기에 있습니다.

모듈을 로드하지 않고 다음을 얻을 것으로 예상됩니다.IFB상호 작용. 이 작업을 반대로 수행합니다.만들다하나IFB필요한 경우 인터페이스와 커널 모듈이 로드됩니다. ifconfig이제 더 이상 사용되지 않는 Linux 도구에 의존하지 마세요 .

예:

ip link add name newifbdev type ifb
ip link set dev newifbdev up

너 이제 하나 갖고 있어IFBnewifbdev호출되어 사용 가능한 인터페이스TC 거울데이터 팩.

이 작업은 한 번에 수행될 수도 있습니다.사용자예를 들어 네임스페이스는 로 시작 unshare -U -r -n하지만 수동으로 로드할 수는 없습니다.IFB해당 사용자 네임스페이스의 커널 모듈입니다. 아직 로드되지 않은 경우 모듈은 인터페이스를 생성하여 간접적으로 로드됩니다. 기본 설정을 사용하면 두 개의 추가 ifb 인터페이스도 초기 네임스페이스에 부작용으로 나타납니다.

관련 정보