インターフェースのパラメータを変更したり、光トランシーバーの情報を所得するのに便利なethtoolですが。2025/04/07版6.14でもCMIS formatを採用しているQSFP-DD/QSFP112に関する情報表示に誤りがありましたので、修正パッチを作りました(つくります)。
QSFP-DDはHOST側が8 lane、 QSFP112は4 laneの違いがありますが。光側のDDMのlane数は伝送モードによって異なります。400G DR4で運用している場合は両方とも4 laneのDDM情報が表示されるのが正しい。
CMISではbreakout等の複数の"media interface"が記述できます。しかし、今どの組み合わせで使われているかはトランシーバーは認識していないためにethtoolでもそれに応じて表示様式を変える事はできません。
"cmis.c"
#define CMIS_CHANNELS_PER_BANK 8 cmis_show_dom cmis_show_dom_chan_lvl_monitors cmis_show_dom_chan_lvl_rx_power cmis_show_dom_chan_lvl_tx_bias_bank cmis_show_dom_chan_lvl_rx_power_bank cmis_show_dom_chan_lvl_tx_power_bank cmis_show_dom_chan_lvl_flag for (i = 0; i < CMIS_CHANNELS_PER_BANK; i++)
2024/06/09発行の Rev 4.12対応。
"module-common.h"
#define MODULE_ID_SFP_PLUS_CMIS 0x20
#define MODULE_ID_LAST MODULE_ID_SFP_PLUS_CMIS
"netlink/module-eeprom.c" eeprom_parse()
case MODULE_ID_SFP_PLUS_CMIS: | |
return cmis_show_all_nl(ctx); |
module_show_identifier
case MODULE_ID_SFP_PLUS_CMIS: | |
strncpy(id_description, | |
"SFP+ and later with Common Management Interface Specification (CMIS)", | |
SFF_MAX_DESC_LEN); | |
break; |
"ethtool.c"
eeprom_dump_hex
ethtoolはNetlink経由で情報の所得をします。
server等のCPU配下に直接network interfaceが管理されているLinuxのシステムではほぼ、上記Netlinkが使用できethtoolも問題なく動作します。イーサネットスイッチはnetwork interfaceがファブリックチップの配下にあるために状況が異なります。
オープンなNOSの代表格である、SONiCの場合。
value | module type | lane count |
0x1e | QSFP+ | 4 |
0x1f | SFP-DD | 2 |
0x20 | SFP+ | 1 |
0x21 | OSFP-XD | 16 |
0x22 | ELSP | |
0x23 | CDFP(x4 PCIe) | 4 |
0x24 | CDFP(x8 PCIe) | 8 |
0x25 | CDFP(x16 PCIe) | 16 |
QSFP28 100G DR/FR1/LR1/BE1は、一波長ですが4 lane分表示が行われます。これも修正したいところです。