vethペアを確認してifbデバイスを設定するスクリプトがあり、毎回その特定のvethペアの無料のifbデバイスが見つからないというメッセージが表示されます。
何が問題なのでしょうか?modprobe
デフォルトでは、2つを生成するコマンドを実行しようとすると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
基本的に2つあります。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そのユーザーネームスペースのカーネルモジュール。まだロードされていない場合、モジュールはインターフェイスを作成して間接的にロードされます。デフォルト設定では、2つの追加のifbインターフェイスも初期名前空間に副作用として表示されます。