diff options
author | Steve McIntyre <steve.mcintyre@linaro.org> | 2015-08-06 15:08:27 +0100 |
---|---|---|
committer | Steve McIntyre <steve.mcintyre@linaro.org> | 2015-08-06 15:08:27 +0100 |
commit | 7f1493472746d22725ef25688692cb6107c770ec (patch) | |
tree | 9adc170bfa734c341dd1780398c262b4633173cb | |
parent | 9951b1c423aff08df7bc9afbeb624df61f7b866f (diff) |
Added README to describe the issues with port numbering
Change-Id: Ie57a0f46a8f9f0811b3c8b6d091418f24c5da847
-rw-r--r-- | README.port-numbering | 147 |
1 files changed, 147 insertions, 0 deletions
diff --git a/README.port-numbering b/README.port-numbering new file mode 100644 index 0000000..721f5ad --- /dev/null +++ b/README.port-numbering @@ -0,0 +1,147 @@ +Port numbering and naming in VLANd +================================== + +This is a far more complex subject than it should be, and it may cause +problems for end users depending on their usage models. This is +particularly likely for those users with Cisco Catalyst 3750 switches +configured with extra internal modules for extra copper/fibre ports. + +Terminology +=========== + +For consistency, throughout this document and within VLANd two terms +are used to identify switch ports: + + * a PORT NAME is the (typically) alphanumeric identifier for a switch + port *in software*, i.e. when using the CLI to manage a + switch. Common naming styles vary significantly here; examples from + the VLANd test rack in Linaro's lab include "Gi1/0/6", "Gi1/1/4", + "Te1/1/2", "fa24", "gi3", "1/0/23" + + * a PORT NUMBER is the (typically) numeric identifier for a switch + port that is labelled visibly on the switch somewhere, typically + next to the port or a group of ports. Not all switches limit + themselves to numeric labels, though. The same examples from our + test rack are described as "6", "G4/Te2", "24", "G3", "23G", "23T" + +These example include some of the problems - try and match tnem up! + +The problem +=========== + +On all of the switch models that we currently support, there is a +disconnect between the port names and the associated port numbers. The +port names are not directly shown to the user on any of our switches, +which is not a good start. + +To a human operator, it is likely not very difficult to perform the +mapping from one scheme to the other in most cases. However, multiple +cases exist where it is difficult to map reliably from one identifier +to the other in software without needing extensive manual +configuration. For our VLAN control to be useful, we need to be able +to identify ports in a recognisable way for our users who have +connected devices to their network. + +In the examples above, I showed 6 identifiers in each list but they +only correspond to 5 physical ports on the switches! + +Problem 1: Disjoint port numbers +-------------------------------- + +On our Cisco SF300, there are two sets of ports: 48 10/100M RJ45 ports +and a further four 1G RJ45 ports. They're labelled externally as ports +1-48 and G1-G4; internally the names are fa1-fa48 and +gi1-gi4. Thankfully, this particular case isn't too hard to deal +with. The SG300 we have (which works with the same driver) simply has +52 ports labelled 1-52 and named gi1-gi52. + +Problem 2: Single physical ports with multiple possible port names +------------------------------------------------------------------ + +On our Cisco Catalyst 3750-X 24P, most of this is easy. It has 24 1G +ports, labelled 1 to 24 on the front panel. The port name "Gi/1/0/6" +corresponds to "6". However, we also have an extra SFP module fitted +that exposes 4 extra 1G interfaces (labelled G1 to G4). However, +there's more complication yet: G2 and G4 are dual-personality ports +and can also work as 10G ports when appropriate SFP+ modules are +inserted. These 1G and 10G ports are named differently in software +depending on which speed is in use: + + G1 -> Gi1/1/1 + G2/Te1 -> Gi1/1/2 OR Te1/1/1 + G3 -> Gi1/1/3 + G4/Te2 -> Gi1/1/4 OR Te1/1/2 + +Our Catalyst 3750 also has an extra 10/100M port on the back as a +management port; VLANd explicitly ignores this port. Various other +models in the 3750 range can come in a whole range of different +configurations with 10/100M, 1G and 10G ports and it's very difficult +to identify naming and numbering schemes for all of these without +physical access to all of them. + +Problem 3: Multiple physical ports which map to the same port name +------------------------------------------------------------------ + +Our Netgear M7300-24XF (aka XSM7224S) has 24 10G SFP+ ports and a +further 4 10G RJ45 ports. Those 4 copper ports replace the last 4 of +the SFP+ ports in a "combo" arrengement - if an SFP module is +inserted, the RJ45 port is disabled. Thus, on this switch we have the +following port numbers and port names: + + 1 -> 1/0/1 + ... + 20 -> 1/0/2 + 21F/21T -> 1/0/21 + ... + 24F/24T -> 1/0/24 + +This combo approach is also used on the TP-Link TL-SG2216; it has 16 +1G RJ45 ports and 2 1G SFP ports which over-ride them: + + 1 -> Gi1/0/1 + ... + 14 -> Gi1/0/14 + 15/15F -> Gi1/0/15 + 16/16F -> Gi1/0/16 + +These show the opposite problem to the Catalyst 3750 - if a user +connects to port 16 on the TP-Link, that at least will show up as one +consistent name in the CLI. However, should we be looking for port +number 16 or 16F when talking to the user? + +A (partial) solution in VLANd 0.4 onwards +========================================= + +Hopefully the above descriptions will make it clear that this is a +hard problem to solve 100% reliably. However, it's a problem that must +at least partially be solved as end-users supplying port numbers +cannot be expected to know the port names that are used internally by +the switches but not exposed externally. Yet port names must be used +internally for all the interactions with the switches directly - this +is the only way that the software can work. + +So, port numbers have been added as an extra column in the port +database. New APIs and methods have been added to do lookups by port +number as alternatives to lookups by port name, to make things easier +for end users. When adding ports using the admin interface, a port +number is now required too. + +The backend of the auto_import_switch admin command (the recommended +way to add switches) will attempt to automatically allocate sensible +port numbers as it probes switches and finds new ports. The algorithm +chosen here for assigning port numbers is the simplest one that might +work for most of the switches and configurations that we +have. *Numeric* port numbers (i.e. without any prefix or suffix +letters) will be assigned to port names simply in the order that the +port names are listed via a switch's CLI, starting with "1". For +almost all our supported switches, this should make sense for a user +when trying to supply port numbers. However, *BE AWARE* of the +possbility that your port numbers may not always match the port +numbers written on your switch in some cases (e.g. the Cisco Catalyst +3750 as described above). + +If this port number to port name mapping algorithm proves not to be +sufficient, future releases of VLANd may include options in the config +file to provide exact mappings. We'd prefer not to have to do this due +to the admin overhead it will impose (and the attendant possibility of +errors). |