Add physical media types for transceiver interfaces #11596

Closed
opened 2025-12-29 21:47:22 +01:00 by adam · 5 comments
Owner

Originally created by @jeremystretch on GitHub (Sep 11, 2025).

Originally assigned to: @jeremystretch on GitHub.

NetBox version

v4.4.0

Feature type

New functionality

Proposed functionality

In an effort to support improved transceiver modeling, this FR proposes adding the following interface types. Each of these describes a copper or optical media type, typically provided by a pluggable transceiver (i.e. SFP).

10 Gbps Ethernet

  • 10GBase-ER (SMF)
  • 10GBase-LR (SMF)
  • 10GBase-LRM (SMF)
  • 10GBase-SR (MMF)
  • 10GBase-T (copper)
  • 10GBase-ZR (SMF)

25 Gbps Ethernet

  • 25GBase-CR (DAC)
  • 25GBase-ER (SMF)
  • 25GBase-LR (SMF)
  • 25GBase-SR (MMF)
  • 25GBase-T (copper)

40 Gbps Ethernet

  • 40GBase-CR4 (DAC)
  • 40GBase-ER4 (SMF)
  • 40GBase-FR4 (SMF)
  • 40GBase-LR4 (SMF)
  • 40GBase-SR4 (MMF)

50 Gbps Ethernet

  • 50GBase-CR (DAC)
  • 50GBase-ER (SMF)
  • 50GBase-FR (MMF)
  • 50GBase-LR (SMF)
  • 50GBase-SR (MMF)

100 Gbps Ethernet

  • 100GBase-CR1 (DAC)
  • 100GBase-CR2 (DAC)
  • 100GBase-CR4 (DAC)
  • 100GBase-CR10 (DAC)
  • 100GBase-DR (SMF)
  • 100GBase-FR1 (SMF)
  • 100GBase-ER4 (SMF)
  • 100GBase-LR1 (SMF)
  • 100GBase-LR4 (SMF)
  • 100GBase-SR1 (MMF)
  • 100GBase-SR1.2 (MMF)
  • 100GBase-SR2 (MMF)
  • 100GBase-SR4 (MMF)
  • 100GBase-SR10 (MMF)
  • 100GBase-ZR (SMF)

Use case

The introduction of these types will enable accurately modeling interfaces as child components of modules which represent pluggable transceivers.

Database changes

N/A

External dependencies

N/A

Originally created by @jeremystretch on GitHub (Sep 11, 2025). Originally assigned to: @jeremystretch on GitHub. ### NetBox version v4.4.0 ### Feature type New functionality ### Proposed functionality In an effort to support improved transceiver modeling, this FR proposes adding the following interface types. Each of these describes a copper or optical media type, typically provided by a pluggable transceiver (i.e. SFP). #### 10 Gbps Ethernet * 10GBase-ER (SMF) * 10GBase-LR (SMF) * 10GBase-LRM (SMF) * 10GBase-SR (MMF) * 10GBase-T (copper) * 10GBase-ZR (SMF) #### 25 Gbps Ethernet * 25GBase-CR (DAC) * 25GBase-ER (SMF) * 25GBase-LR (SMF) * 25GBase-SR (MMF) * 25GBase-T (copper) #### 40 Gbps Ethernet * 40GBase-CR4 (DAC) * 40GBase-ER4 (SMF) * 40GBase-FR4 (SMF) * 40GBase-LR4 (SMF) * 40GBase-SR4 (MMF) #### 50 Gbps Ethernet * 50GBase-CR (DAC) * 50GBase-ER (SMF) * 50GBase-FR (MMF) * 50GBase-LR (SMF) * 50GBase-SR (MMF) #### 100 Gbps Ethernet * 100GBase-CR1 (DAC) * 100GBase-CR2 (DAC) * 100GBase-CR4 (DAC) * 100GBase-CR10 (DAC) * 100GBase-DR (SMF) * 100GBase-FR1 (SMF) * 100GBase-ER4 (SMF) * 100GBase-LR1 (SMF) * 100GBase-LR4 (SMF) * 100GBase-SR1 (MMF) * 100GBase-SR1.2 (MMF) * 100GBase-SR2 (MMF) * 100GBase-SR4 (MMF) * 100GBase-SR10 (MMF) * 100GBase-ZR (SMF) ### Use case The introduction of these types will enable accurately modeling interfaces as child components of modules which represent pluggable transceivers. ### Database changes N/A ### External dependencies N/A
adam added the status: acceptedtype: featurecomplexity: low labels 2025-12-29 21:47:22 +01:00
adam closed this issue 2025-12-29 21:47:22 +01:00
Author
Owner

@sleepinggenius2 commented on GitHub (Sep 11, 2025):

Please add the following types as well:

100 Mbps Ethernet

  • 100Base-FX (MMF)
  • 100Base-TX (copper)

1 Gbps Ethernet

  • 1000Base-BX-D (SMF) # BiDi Downstream
  • 1000Base-BX-U (SMF) # BiDi Upstream
  • 1000Base-CWDM (SMF)
  • 1000Base-DWDM (SMF)
  • 1000Base-EX (SMF)
  • 1000Base-LX (MMF/SMF)
  • 1000Base-LX10 (MMF/SMF) # This is the standard, but it's usually listed as LX/LH
  • 1000Base-T (copper)
  • 1000Base-SX (MMF)
  • 1000Base-ZX (SMF)

10 Gbps Ethernet

  • 10GBase-BR-D (SMF) # BiDi Downstream - This is the standard, but it's usually listed as BX-D
  • 10GBase-BR-U (SMF) # BiDi Upstream - This is the standard, but it's usually listed as BX-U
  • 10GBase-DWDM (SMF)
  • 10GBase-SFP+Cu (DAC)

100 Gbps Ethernet

  • 100GBase-CWDM4 (SMF)
  • 100GBase-BR-D (SMF) # BiDi Downstream - IEEE 802.3dk Task Force proposing BR10, BR20, and BR40, so maybe this should be broken out? We already have BR40 used in production
  • 100GBase-BR-U (SMF) # BiDi Upstream - IEEE 802.3dk Task Force proposing BR10, BR20, and BR40, so maybe this should be broken out? We already have BR40 used in production
  • 100GBase-ZR4 (SMF) # 4-wavelength non-coherent vs 100GBase-ZR 1-wavelength coherent

400 Gbps Ethernet

  • 400GBase-CR4 (DAC)
  • 400GBase-FR4 (SMF)
  • 400GBase-SR4 (MMF)
  • OIF 400ZR (SMF) # MSA
  • OpenZR+ (SMF) # MSA
@sleepinggenius2 commented on GitHub (Sep 11, 2025): Please add the following types as well: **100 Mbps Ethernet** * 100Base-FX (MMF) * 100Base-TX (copper) **1 Gbps Ethernet** * 1000Base-BX-D (SMF) *# BiDi Downstream* * 1000Base-BX-U (SMF) *# BiDi Upstream* * 1000Base-CWDM (SMF) * 1000Base-DWDM (SMF) * 1000Base-EX (SMF) * 1000Base-LX (MMF/SMF) * 1000Base-LX10 (MMF/SMF) *# This is the standard, but it's usually listed as LX/LH* * 1000Base-T (copper) * 1000Base-SX (MMF) * 1000Base-ZX (SMF) **10 Gbps Ethernet** * 10GBase-BR-D (SMF) *# BiDi Downstream - This is the standard, but it's usually listed as BX-D* * 10GBase-BR-U (SMF) *# BiDi Upstream - This is the standard, but it's usually listed as BX-U* * 10GBase-DWDM (SMF) * 10GBase-SFP+Cu (DAC) **100 Gbps Ethernet** * 100GBase-CWDM4 (SMF) * 100GBase-BR-D (SMF) *# BiDi Downstream - IEEE 802.3dk Task Force proposing BR10, BR20, and BR40, so maybe this should be broken out? We already have BR40 used in production* * 100GBase-BR-U (SMF) *# BiDi Upstream - IEEE 802.3dk Task Force proposing BR10, BR20, and BR40, so maybe this should be broken out? We already have BR40 used in production* * 100GBase-ZR4 (SMF) *# 4-wavelength non-coherent vs 100GBase-ZR 1-wavelength coherent* **400 Gbps Ethernet** * 400GBase-CR4 (DAC) * 400GBase-FR4 (SMF) * 400GBase-SR4 (MMF) * OIF 400ZR (SMF) *# [MSA](https://www.oiforum.com/wp-content/uploads/OIF-400ZR-02.0.pdf)* * OpenZR+ (SMF) *# [MSA](https://openzrplus.org/resources/openzr-specifications-v-3-0/)*
Author
Owner

@agbcix commented on GitHub (Sep 12, 2025):

I definitely like the idea behind this -- I'd love to document the media interface. Yet I believe reality adds a bit more complexity. One may spend a few thoughts before implementing this.

Some questions popping up:

  • How to deal with different kinds of (fixed) wavelength xWDM optics? Add a frequency/wavelength field?
  • Looking at SFF-8024, the list of media interfaces is ever growing. Will all those be included?
  • What about "parallel" transceivers or physical breakout transceivers? E.g. sometimes called 40GBase-PLR4 to connect to 4x 10GBase-LR. Formally they have a 10GBase-LR media interface with 4 lanes. So add a media interface lane count field?
  • With 400G and up transceivers may support multiple media interfaces, selected by an application code (400GBase-LR4 or 4x 100GBase-LR1). The mapping of application codes to host/media interfaces are model specific (and may change with a transceiver firmware update). Several devices support selecting the application code. So should we include an application code field?
  • If we have multiple lanes, each lane may have a different wavelength.

Besides that, I am currently missing a few entries to the list (we are using those):

  • 100GBase-ER1
  • 400GBase-DR4
  • 400GBase-LR4
  • 400GBase-ER4
@agbcix commented on GitHub (Sep 12, 2025): I definitely like the idea behind this -- I'd love to document the media interface. Yet I believe reality adds a bit more complexity. One may spend a few thoughts before implementing this. Some questions popping up: - How to deal with different kinds of (fixed) wavelength xWDM optics? Add a frequency/wavelength field? - Looking at SFF-8024, the list of media interfaces is ever growing. Will all those be included? - What about "parallel" transceivers or physical breakout transceivers? E.g. sometimes called 40GBase-PLR4 to connect to 4x 10GBase-LR. Formally they have a 10GBase-LR media interface with 4 lanes. So add a media interface lane count field? - With 400G and up transceivers may support multiple media interfaces, selected by an application code (400GBase-LR4 or 4x 100GBase-LR1). The mapping of application codes to host/media interfaces are model specific (and may change with a transceiver firmware update). Several devices support selecting the application code. So should we include an application code field? - If we have multiple lanes, each lane may have a different wavelength. Besides that, I am currently missing a few entries to the list (we are using those): - 100GBase-ER1 - 400GBase-DR4 - 400GBase-LR4 - 400GBase-ER4
Author
Owner

@jeremystretch commented on GitHub (Sep 12, 2025):

I have added all the types through 800GE which I have been able to readily verify. Please submit a new FR(s) to propose any additional types.

@jeremystretch commented on GitHub (Sep 12, 2025): I have added all the types through 800GE which I have been able to readily verify. Please submit a new FR(s) to propose any additional types.
Author
Owner

@chris240189 commented on GitHub (Sep 18, 2025):

The way it has been implemented in v4.4.1 using those types makes you lose the information about the module type.
For example:

Setting an Interface to type "100GBase-LR1 (100GE)" could be either an SFP-DD or QSFP-28 so you no longer know, which cage size the pluggable has.

How can we model that?

@chris240189 commented on GitHub (Sep 18, 2025): The way it has been implemented in v4.4.1 using those types makes you lose the information about the module type. For example: Setting an Interface to type "100GBase-LR1 (100GE)" could be either an SFP-DD or QSFP-28 so you no longer know, which cage size the pluggable has. How can we model that?
Author
Owner

@sigprof commented on GitHub (Dec 7, 2025):

@chris240189 I think the proper solution is to implement some form of compatibility restrictions for modules and module bays — e.g., see #19731. The media type provided by the transceiver should not be used to encode the interface type of the transceiver itself.

@sigprof commented on GitHub (Dec 7, 2025): @chris240189 I think the proper solution is to implement some form of compatibility restrictions for modules and module bays — e.g., see #19731. The media type provided by the transceiver should not be used to encode the interface type of the transceiver itself.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/netbox#11596