mirror of
https://github.com/netbox-community/netbox.git
synced 2026-01-11 21:10:29 +01:00
Tracing cables which fork into multiple paths #2163
Closed
opened 2025-12-29 17:22:50 +01:00 by adam
·
14 comments
No Branch/Tag Specified
main
update-changelog-comments-docs
feature-removal-issue-type
20911-dropdown
20239-plugin-menu-classes-mutable-state
21097-graphql-id-lookups
feature
fix_module_substitution
20923-dcim-templates
20044-elevation-stuck-lightmode
feature-ip-prefix-link
v4.5-beta1-release
20068-import-moduletype-attrs
20766-fix-german-translation-code-literals
20378-del-script
7604-filter-modifiers-v3
circuit-swap
12318-case-insensitive-uniqueness
20637-improve-device-q-filter
20660-script-load
19724-graphql
20614-update-ruff
14884-script
02496-max-page
19720-macaddress-interface-generic-relation
19408-circuit-terminations-export-templates
20203-openapi-check
fix-19669-api-image-download
7604-filter-modifiers
19275-fixes-interface-bulk-edit
fix-17794-get_field_value_return_list
11507-show-aggregate-and-rir-on-api
9583-add_column_specific_search_field_to_tables
v4.5.0
v4.4.10
v4.4.9
v4.5.0-beta1
v4.4.8
v4.4.7
v4.4.6
v4.4.5
v4.4.4
v4.4.3
v4.4.2
v4.4.1
v4.4.0
v4.3.7
v4.4.0-beta1
v4.3.6
v4.3.5
v4.3.4
v4.3.3
v4.3.2
v4.3.1
v4.3.0
v4.2.9
v4.3.0-beta2
v4.2.8
v4.3.0-beta1
v4.2.7
v4.2.6
v4.2.5
v4.2.4
v4.2.3
v4.2.2
v4.2.1
v4.2.0
v4.1.11
v4.1.10
v4.1.9
v4.1.8
v4.2-beta1
v4.1.7
v4.1.6
v4.1.5
v4.1.4
v4.1.3
v4.1.2
v4.1.1
v4.1.0
v4.0.11
v4.0.10
v4.0.9
v4.1-beta1
v4.0.8
v4.0.7
v4.0.6
v4.0.5
v4.0.3
v4.0.2
v4.0.1
v4.0.0
v3.7.8
v3.7.7
v4.0-beta2
v3.7.6
v3.7.5
v4.0-beta1
v3.7.4
v3.7.3
v3.7.2
v3.7.1
v3.7.0
v3.6.9
v3.6.8
v3.6.7
v3.7-beta1
v3.6.6
v3.6.5
v3.6.4
v3.6.3
v3.6.2
v3.6.1
v3.6.0
v3.5.9
v3.6-beta2
v3.5.8
v3.6-beta1
v3.5.7
v3.5.6
v3.5.5
v3.5.4
v3.5.3
v3.5.2
v3.5.1
v3.5.0
v3.4.10
v3.4.9
v3.5-beta2
v3.4.8
v3.5-beta1
v3.4.7
v3.4.6
v3.4.5
v3.4.4
v3.4.3
v3.4.2
v3.4.1
v3.4.0
v3.3.10
v3.3.9
v3.4-beta1
v3.3.8
v3.3.7
v3.3.6
v3.3.5
v3.3.4
v3.3.3
v3.3.2
v3.3.1
v3.3.0
v3.2.9
v3.2.8
v3.3-beta2
v3.2.7
v3.3-beta1
v3.2.6
v3.2.5
v3.2.4
v3.2.3
v3.2.2
v3.2.1
v3.2.0
v3.1.11
v3.1.10
v3.2-beta2
v3.1.9
v3.2-beta1
v3.1.8
v3.1.7
v3.1.6
v3.1.5
v3.1.4
v3.1.3
v3.1.2
v3.1.1
v3.1.0
v3.0.12
v3.0.11
v3.0.10
v3.1-beta1
v3.0.9
v3.0.8
v3.0.7
v3.0.6
v3.0.5
v3.0.4
v3.0.3
v3.0.2
v3.0.1
v3.0.0
v2.11.12
v3.0-beta2
v2.11.11
v2.11.10
v3.0-beta1
v2.11.9
v2.11.8
v2.11.7
v2.11.6
v2.11.5
v2.11.4
v2.11.3
v2.11.2
v2.11.1
v2.11.0
v2.10.10
v2.10.9
v2.11-beta1
v2.10.8
v2.10.7
v2.10.6
v2.10.5
v2.10.4
v2.10.3
v2.10.2
v2.10.1
v2.10.0
v2.9.11
v2.10-beta2
v2.9.10
v2.10-beta1
v2.9.9
v2.9.8
v2.9.7
v2.9.6
v2.9.5
v2.9.4
v2.9.3
v2.9.2
v2.9.1
v2.9.0
v2.9-beta2
v2.8.9
v2.9-beta1
v2.8.8
v2.8.7
v2.8.6
v2.8.5
v2.8.4
v2.8.3
v2.8.2
v2.8.1
v2.8.0
v2.7.12
v2.7.11
v2.7.10
v2.7.9
v2.7.8
v2.7.7
v2.7.6
v2.7.5
v2.7.4
v2.7.3
v2.7.2
v2.7.1
v2.7.0
v2.6.12
v2.6.11
v2.6.10
v2.6.9
v2.7-beta1
Solcon-2020-01-06
v2.6.8
v2.6.7
v2.6.6
v2.6.5
v2.6.4
v2.6.3
v2.6.2
v2.6.1
v2.6.0
v2.5.13
v2.5.12
v2.6-beta1
v2.5.11
v2.5.10
v2.5.9
v2.5.8
v2.5.7
v2.5.6
v2.5.5
v2.5.4
v2.5.3
v2.5.2
v2.5.1
v2.5.0
v2.4.9
v2.5-beta2
v2.4.8
v2.5-beta1
v2.4.7
v2.4.6
v2.4.5
v2.4.4
v2.4.3
v2.4.2
v2.4.1
v2.4.0
v2.3.7
v2.4-beta1
v2.3.6
v2.3.5
v2.3.4
v2.3.3
v2.3.2
v2.3.1
v2.3.0
v2.2.10
v2.3-beta2
v2.2.9
v2.3-beta1
v2.2.8
v2.2.7
v2.2.6
v2.2.5
v2.2.4
v2.2.3
v2.2.2
v2.2.1
v2.2.0
v2.1.6
v2.2-beta2
v2.1.5
v2.2-beta1
v2.1.4
v2.1.3
v2.1.2
v2.1.1
v2.1.0
v2.0.10
v2.1-beta1
v2.0.9
v2.0.8
v2.0.7
v2.0.6
v2.0.5
v2.0.4
v2.0.3
v2.0.2
v2.0.1
v2.0.0
v2.0-beta3
v1.9.6
v1.9.5
v2.0-beta2
v1.9.4-r1
v1.9.3
v2.0-beta1
v1.9.2
v1.9.1
v1.9.0-r1
v1.8.4
v1.8.3
v1.8.2
v1.8.1
v1.8.0
v1.7.3
v1.7.2-r1
v1.7.1
v1.7.0
v1.6.3
v1.6.2-r1
v1.6.1-r1
1.6.1
v1.6.0
v1.5.2
v1.5.1
v1.5.0
v1.4.2
v1.4.1
v1.4.0
v1.3.2
v1.3.1
v1.3.0
v1.2.2
v1.2.1
v1.2.0
v1.1.0
v1.0.7-r1
v1.0.7
v1.0.6
v1.0.5
v1.0.4
v1.0.3-r1
v1.0.3
1.0.0
Labels
Clear labels
beta
breaking change
complexity: high
complexity: low
complexity: medium
needs milestone
netbox
pending closure
plugin candidate
pull-request
severity: high
severity: low
severity: medium
status: accepted
status: backlog
status: blocked
status: duplicate
status: needs owner
status: needs triage
status: revisions needed
status: under review
topic: GraphQL
topic: Internationalization
topic: OpenAPI
topic: UI/UX
topic: cabling
topic: event rules
topic: htmx navigation
topic: industrialization
topic: migrations
topic: plugins
topic: scripts
topic: templating
topic: testing
type: bug
type: deprecation
type: documentation
type: feature
type: housekeeping
type: translation
Mirrored from GitHub Pull Request
Milestone
No items
No Milestone
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: starred/netbox#2163
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @candlerb on GitHub (Nov 30, 2018).
Environment
Proposed Functionality
The cable tracing function is linear. It's also quite smart, in that if you traverse an N:1 front-port to rear-port, and then go via rear-port to front-port on another device, it comes out again at the right offset.
However it won't trace multiple paths from single rear to multiple front ports, which may be necessary if no front-to-rear traversal has already taken place.
Use Case
Here is an example: it's when you want to convert a duplex LC connector into two separate simplex LSH fibre paths, because your fibre patching infrastructure is simplex.
You can model it like this, albeit somewhat painfully:
Wire it up like this:
This works, but when you trace from sw1's SFP port, it only shows one of the fibre paths being traversed (the first one).
A full trace would have graphviz-like output, and could show a path splitting into multiple subpaths and then joining back together again.
A similar use case could be made for tracing from a QSFP+ port to four SFP+ ports on a break-out cable. (The fact that a QSFP+ port may itself appear as four logical "interfaces" in a device, despite being one physical port, complicates modelling further)
Database Changes
None. The code which traverses connections would change.
External Dependencies
graphviz or similar library. There is some existing graphviz usage in Netbox which shells out to the command-line dot utility. However it would probably be better to use viz.js (graphviz compiled into Javascript)
Alternative options
The use case given is a frig, because the "adapter" device does not really exist.
It would be better to model a cable with more than two connectors: an LC connector at one end, and two LSH connectors at the other end. That's what you'd have in the real world.
But (a) this is substantial database change; I expect it would require "cable types" and allowing connections with multiple endpoints; and (b) the tracing functionality described here would still be required.
@brianatlarge commented on GitHub (Dec 10, 2018):
I think this is the same issue I was running into. Say I have a fiber patch panel with 12 LC connectors on the front and a 24 bundled fiber patched into the back.
Since the current design only allows multiple front connectors to be mapped to single rear connectors via the position option, the only way to map each strand of the fiber bundle is to reverse the functions of the front and rear panels.
So for example, I’d have to create 12 rear ports with position of 2, but in the real world this would be the front of the panel. Then I’d have 24 front ports mapped to the 12 rear ports. This will allow me to map each of the 24 fiber strands.
This isn’t a solution I’d want to roll out in a production environment, so I’m interested in seeing how this problem will be addressed in the future.
@dnyt84 commented on GitHub (Dec 13, 2018):
Not sure what SFP's you are using but majority of my SFP's are Duplex. So when running into a Fiber Patch Panel that has 6 x LC Connectors my Duplex Cable from my SFP should use 2 Ports (Port 1 and 2 for example)
but then we also have BIDI SFP's that only use 1 Cable ... :/
@brianatlarge commented on GitHub (Dec 13, 2018):
I use duplex LC connections from my switches to the patch panel. Between each patch panel, there is usually a bundle of 24 fiber strands patched in. I'd like to be able to track the complete path from each switch.
So for example, the connection from the switch to the front patch panel would be tracked by a single duplex cable. Each cable from the rear of one patch panel to the rear of the other would be tracked by two cables. Then from the front of the other patch panel to the other switch would be tracked by a single duplex cable.
@candlerb commented on GitHub (Dec 14, 2018):
The problem is that the cable connects to the end device, and this has an interface. An interface can have a type (like SFP or SFP+) but accepts only one connection / cable.
Since Netbox doesn't model SFPs, one end of the fibre "cable" plugs directly into the "SFP" port.
You are saying that you want to model the duplex cable as two separate fibre cables, which is reasonable, but the SFP port only accepts one cable. Hence right now, a "duplex fibre cable" is the only realistic option.
I suppose Netbox could be changed so that an SFP interface has two legs, but that wouldn't be right all the time (e.g. when using a copper SFP or a bidi SFP).
ATM, the only way I can see to model the SFP would be as a "device" in its own right, with one rear port and two front ports, much as the "adapt" interfaces I showed earlier were.
@ljb2of3 commented on GitHub (Dec 14, 2018):
My campus is complicated, but I assume many others are too. All our switches use Duplex LC SFPs, but we do have a handful of BiDi SFPs, and will be adding more due to fiber constraints. Modeling individual fibers seems important.
The complication comes when the connectors change. Duplex LC SFPs have to be plugged into a pair of single ST or SC connectors on the patch panels in many buildings. To make it more complicated those pairs of ST or SC connectors on one patch panel terminate as a duplex LC connector on the remote patch panel, so connectors and paring of the fibers change often. To make things more fun there's at least one patch panel where the installer messed it up, so a duplex LC pair on one end terminates in two completely different LC pairs on the other side, so LC port 1 on the A side is on terminated on one fiber in LC port 1 and one fiber of LC port 13.
However, for the bulk of our fiber connections, we treat the duplex LC connections as a single unit, and they're labeled as such. In keeping with Netbox's "80% solution" design goal, treating duplex connections as a single unit will work for me. In patch panels with simplex ST or SC connectors, I'm just going to label them in pairs with the same label as the duplex LC from the remote end. In the case of using two BiDi connections over one LC duplex, I plan to just create a dummy set of front and rear ports for that specific use case labeled <front_port.b> and <rear_port.b> and then patch the second connection across that.
Of course, if an easy solution to tracking individual strands is added to Netbox, I'll happily use that. Mapping out all our fiber is one of my spring projects, so the release of 2.5 came at a perfect time.
@tb-killa commented on GitHub (Jan 27, 2019):
At our company we use only St ports per lwl patch panel (24 or 48). As normally you would use one sfp from switch and then use the cable with two st ports to the panel. As this would be easy if you could map them direct to the patch panel port but as the st ports is a single Fibre Strand you could connect them as it would be possible (Strand A (red) to p1 and Strand B (black) to p2 or p3 because maybe p2 is broken).
It would be great if the usable interfaces (only sfp and sfp+) would be allowed to map two cables on interface-side.
As this is a normal situation there should be some generic solution in netbox.
@ragzilla commented on GitHub (Feb 7, 2019):
Running into @tb-killa's issue myself, except with LC panels, modeling Rear/Front Port per fiber to allow for single fiber routes. Ideally for us there needs to be some way to have a single Cable object connect to an Interface on the A side, and 2 separate Front or Rear ports (maybe identified as Tx/Rx) on the B side.
@tb-killa commented on GitHub (Feb 7, 2019):
I see that there starts a great discussion on:
https://groups.google.com/forum/?nomobile=true#!topic/netbox-discuss/eOdaKIhJbnw
Lets move our ideas to this discussions.
@jameswhite4684 commented on GitHub (Mar 20, 2019):
Yes, I am also having to run into this issue as well :( Still trying to decide how to precede.
@Pelt10 commented on GitHub (Apr 24, 2019):
Any news about this issue ?
@GaetanF commented on GitHub (Sep 3, 2019):
Hello,
Do you some news about this issue ?
A latest commit a32d185 won't permit anymore to connect a cable between two devices that don't have the same number of positions.
Example: CWDM Mutiplexer connected to a DWDM Mutiplexer or a duplex fiber on patch panel side are connected to two different devices on the other side of the fiber using simplex mode.
A recent issue #3467 based on the same topic have been closed without solution.
Thanks
@steffann commented on GitHub (Oct 29, 2019):
The issues mentioned here are basically resolved as a side effect of PR #3585. It has been closed however because more discussion is needed on the architecture. The use cases described in #3633 would cover the issues in this report as well.
@jeremystretch commented on GitHub (Jul 24, 2020):
@steffann Can you take another look at this given the recent work on cabling? It might not be needed anymore.
@steffann commented on GitHub (Jul 24, 2020):
@jeremystretch has fixed the original issue in
29707cd496As far as I can see the other issues mentioned here have also been fixed in the mean time. If there is still something wrong please open a separate issue.