2つのLinux仮想マシンがありますVirtualBox 7.0
。
- マシン1:
CentOS 6
Linuxカーネルの使用2.6.32-754
- マシン2:
CentOS 8
Linuxカーネルの使用4.18.0-448
マシン1のすべてのネットワークインターフェイスサポートしていないマシン2のすべてのネットワークインターフェイスでサポートされているTXタイムスタンプ。
ループバックインターフェイスを考えてみましょう。
出力sudo ethtool -T lo
マシン1:
Time stamping parameters for lo:
Capabilities:
software-receive (SOF_TIMESTAMPING_RX_SOFTWARE)
software-system-clock (SOF_TIMESTAMPING_SOFTWARE)
PTP Hardware Clock: none
Hardware Transmit Timestamp Modes: none
Hardware Receive Filter Modes: none
マシン2:
Time stamping parameters for lo:
Capabilities:
software-transmit
software-receive
software-system-clock
PTP Hardware Clock: none
Hardware Transmit Timestamp Modes: none
Hardware Receive Filter Modes: none
マシン1がTXタイムスタンプをサポートしていない理由は不明です。これは、このカーネルで利用できる必要があるためです。文書
ここでは、ループバックインタフェースはVirtualBox実装の詳細に依存しないと予想しているため、意図的に確認しています。
CentOS6(実際にはすべてのOSで)のTXタイムスタンプを有効にするためにシステムで明示的に設定する必要があるものがあるかどうかを知っていますか?
答え1
私はこれがドライバの書き方に関連していると思います。たとえば、カーネルソースコードには、v4.18
次のコードを含むループバックインターフェイス用のドライバが含まれています。
static int loopback_get_ts_info(struct net_device *netdev,
struct ethtool_ts_info *ts_info)
{
ts_info->so_timestamping = SOF_TIMESTAMPING_TX_SOFTWARE |
SOF_TIMESTAMPING_RX_SOFTWARE |
SOF_TIMESTAMPING_SOFTWARE;
ts_info->phc_index = -1;
return 0;
};
したがって、これはこのバージョンのループバックインターフェイスドライバがTXタイムスタンプをサポートしていることを意味します。
ただし、カーネルバージョンをたとえばに切り替えると、明らかにv3.10
ループバックドライバはTXタイムスタンプ(SOF_TIMESTAMPING_TX_SOFTWARE
)をサポートしません。