RFC 2643

Cabletron's SecureFast VLAN Operational Model

๐Ÿ“… published August 1999, from ietf

RFC 2643 ๐Ÿ“„ Cabletron's SecureFast VLAN Operational Model Version 1.8 ๐Ÿ’–

okay bestie, this is RFC 2643 and it's an Informational doc, so it's not a standard, just info for the Internet community ๐ŸŽ€ It was written by D. Ruffen, T. Len and J. Yanacek from Cabletron Systems Incorporated, and it's dated August 1999. The title block doesn't list anything it obsoletes or updates, so it doesn't replace or change any other RFC โœจ

Status of this Memo ๐ŸŒธ

This memo provides information for the Internet community. It does not specify an Internet standard of any kind. Distribution of this memo is unlimited.

Copyright (C) The Internet Society (1999). All Rights Reserved.

Abstract ๐Ÿฆ‹

Okay so Cabletron's SecureFast VLAN (SFVLAN) product is a distributed, connection-oriented switching protocol that forwards data packets fast at the MAC layer ๐Ÿ”ฅ It uses the concept of virtual LANs (VLANs) to decide whether call connection requests are valid, and to scope the broadcast of certain flooded messages. It's giving precision, periodt ๐Ÿ’…

Table of Contents ๐Ÿ“š

   1. Introduction.............................................  3
      1.1 Data Conventions.....................................  3
      1.2 Definitions of Commonly Used Terms...................  4
   2. SFVLAN Overview..........................................  6
      2.1 Features.............................................  7
      2.2 VLAN Principles......................................  8
          2.2.1 Default, Base and Inherited VLANs..............  8
          2.2.2 VLAN Configuration Modes.......................  8
                2.2.2.1 Endstations............................  8
                2.2.2.2 Ports..................................  9
                2.2.2.3 Order of Precedence....................  9
          2.2.3 Ports with Multiple VLAN Membership............ 10
      2.3 Tag/Length/Value Method of Addressing................ 10
      2.4 Architectural Overview............................... 11
   3. Base Services............................................ 13
   4. Call Processing.......................................... 14
      4.1 Directory Service Center............................. 14
          4.1.1 Local Add Server............................... 15
          4.1.2 Inverse Resolve Server......................... 15
          4.1.3 Local Delete Server............................ 18
      4.2 Topology Service Center.............................. 18
          4.2.1 Neighbor Discovery Server...................... 18
          4.2.2 Spanning Tree Server........................... 18
                4.2.2.1 Creating and Maintaining
                                   the Spanning Tree........... 19
                4.2.2.2 Remote Blocking........................ 19
          4.2.3 Link State Server.............................. 20
      4.3 Resolve Service Center............................... 21
          4.3.1 Table Server................................... 22
          4.3.2 Local Server................................... 22
          4.3.3 Subnet Server.................................. 22
          4.3.4 Interswitch Resolve Server..................... 22
          4.3.5 Unresolvable Server............................ 23
          4.3.6 Block Server................................... 23
      4.4 Policy Service Center................................ 24
          4.4.1 Unicast Rules Server........................... 24
      4.5 Connect Service Center............................... 25
          4.5.1 Local Server................................... 25
          4.5.2 Link State Server.............................. 25
          4.5.3 Directory Server............................... 26
      4.6 Filter Service Center................................ 26
      4.7 Path Service Center.................................. 26
          4.7.1 Link State Server.............................. 26
          4.7.2 Spanning Tree Server........................... 27
      4.8 Flood Service Center................................. 27
          4.8.1 Tag-Based Flood Server......................... 27
   5. Monitoring Call Connections.............................. 27
      5.1 Definitions.......................................... 27
      5.2 Tapping a Connection................................. 28
          5.2.1 Types of Tap Connections....................... 28
          5.2.2 Locating the Probe and Establishing
                                   the Tap Connection.......... 29
          5.2.3 Status Field................................... 30
      5.3 Untapping a Connection............................... 31
   6. Interswitch Message Protocol (ISMP)...................... 32
      6.1 General Packet Structure............................. 32
          6.1.1 Frame Header................................... 32
          6.1.2 ISMP Packet Header............................. 33
                6.1.2.1 Version 2.............................. 33
                6.1.2.2 Version 3.............................. 34
          6.1.3 ISMP Message Body.............................. 35
      6.2 Interswitch BPDU Message............................. 35
      6.3 Interswitch Remote Blocking Message.................. 36
      6.4 Interswitch Resolve Message.......................... 37
          6.4.1 Prior to Version 1.8........................... 37
          6.4.2 Version 1.8.................................... 41

      6.5 Interswitch New User Message......................... 46
      6.6 Interswitch Tag-Based Flood Message.................. 49
          6.6.1 Prior to Version 1.8........................... 49
          6.6.2 Version 1.8.................................... 52
      6.7 Interswitch Tap/Untap Message........................ 55
   7. Security Considerations.................................. 58
   8. References............................................... 58
   9. Authors' Addresses....................................... 59
   10. Full Copyright Statement................................ 60

1. Introduction โœจ

This memo is going out to the Internet community so people can react to the proposals in it ๐Ÿ’ฌ The specification discussed here might not be directly relevant to the research problems of the Internet, but researchers and implementers may still find it interesting ๐Ÿงš

1.1 Data Conventions ๐Ÿ”ข

The way this memo describes and pictures data follows the standards of Internet Protocol documentation [RFC1700]. Specifically:

  • The convention in Internet Protocol documentation is to express numbers in decimal and to picture data in "big-endian" order. Fields are described left to right, with the most significant octet on the left and the least significant octet on the right.
  • The order of transmission of the header and data described in this document is resolved to the octet level. Whenever a diagram shows a group of octets, the order of transmission of those octets is the normal order in which they are read in English.
  • Whenever an octet represents a numeric quantity, the left most bit in the diagram is the high order or most significant bit. That is, the bit labeled 0 is the most significant bit.
  • Similarly, whenever a multi-octet field represents a numeric quantity, the left most bit of the whole field is the most significant bit. When a multi-octet quantity is transmitted, the most significant octet is transmitted first. ๐Ÿซถ

1.2. Definitions of Commonly Used Terms ๐Ÿ“–

okay so this is the glossary bestie ๐Ÿ’… these are the terms that have a specific meaning for the SFVLAN product, and they pop up all over the text, so let's get them locked in โœจ

Switch ID

A 10-octet value that uniquely identifies an SFVLAN switch within the switch fabric ๐Ÿ“ It's the 6-octet base MAC address of the switch, followed by 4 octets of zeroes.

Network link

The physical connection between two switches ๐Ÿ”— A network link is associated with a network interface (or port) of a switch.

Network port

An interface on a switch that attaches to another switch ๐Ÿงš

Access port

An interface on a switch that attaches to a user endstation ๐Ÿ’–

Port ID

A 10-octet value that uniquely identifies an interface of a switch ๐ŸŽ€ It's the 6-octet base MAC address of the switch, followed by the 4-octet local port number of the interface.

Neighboring switches

Two switches attached to a common (network) link ๐Ÿ‘ฏโ€โ™€๏ธ

Call connection

A mapping of user traffic through a switch ๐Ÿฆ‹ It correlates the source and destination address pair specified within the packet to an inport and outport pair on the switch.

Call connection path

A set of 0 to 7 network links over which user traffic travels between the source and destination endstations ๐Ÿ›ค๏ธ Call connection paths are selected from a list of alternate equal cost paths calculated by the VLS protocol [IDvlsp], and they're chosen to load balance traffic across the fabric. it's giving efficiency ๐Ÿ˜ญโœจ

Ingress switch

The owner switch of the source endstation of a call connection ๐Ÿšช That means the source endstation is attached to one of the local access ports of the switch.

Egress switch

The owner switch of the destination endstation of a call connection ๐Ÿ That means the destination endstation is attached to one of the local access ports of the switch.

Intermediate switches

Any switch along the call connection path on which user traffic enters and leaves over network links ๐ŸŒธ Note that the following types of connections have no intermediate switches:

  • Call connections between source and destination endstations that are attached to the same switch. That is, the ingress switch is the same as the egress switch. Note also that the path for this type of connection consists of 0 network links.
  • Call connections where the ingress and egress switches are physical neighbors connected by a single network link. The path for this type of connection consists of a single network link.

InterSwitch Message protocol (ISMP)

The protocol used for interswitch communication between SFVLAN switches ๐Ÿ’ฌ

Undirected messages

Messages that are (potentially) sent to all SFVLAN switches in the switch fabric. That is, they are not directed to any particular switch ๐Ÿ“ฃ ISMP messages with a message type of 5, 7 or 8 are undirected messages.

Switch flood path

The path used to send undirected messages throughout the switch fabric ๐ŸŒŠ The switch flood path is formed using a spanning tree algorithm that provides a single path through the switch fabric that guarantees loop-free delivery to every other SFVLAN switch in the fabric. no loops, no drama ๐ŸŒˆ

Upstream Neighbor

That switch attached to the inport of the switch flood path. That is, the switch from which undirected messages are received ๐Ÿ‘€ Note that each switch receiving an undirected message has, at most, one upstream neighbor, and the originator of any undirected ISMP message has no upstream neighbors.

Downstream Neighbors

Those switches attached to all outports of the switch flood path except the port on which the undirected message was received ๐Ÿซถ Note that for each undirected message some number of switches have no downstream neighbors.

Virtual LAN (VLAN) identifier

A VLAN is a logical grouping of ports and endstations such that all ports and endstations in the VLAN appear to be on the same physical (or extended) LAN segment, even though they may be geographically separated ๐Ÿ—บ๏ธโœจ

A VLAN identifier consists of a variable-length string of octets. The first octet in the string contains the number of octets in the remainder of the string, which is the actual VLAN identifier value. A VLAN identifier can be from 1 to 16 octets long ๐Ÿ’œ

VLAN policy

Each VLAN has an assigned policy value used to determine whether a particular call connection can be established. SFVLAN recognizes two policy values: Open and Secure ๐Ÿ”


2. SFVLAN Overview ๐ŸŒท

Cabletron's SecureFast VLAN (SFVLAN) product implements a distributed connection-oriented switching protocol that provides fast forwarding of data packets at the MAC layer. it's the speed queen ๐ŸŽ๏ธ๐Ÿ’จ

2.1. Features โœจ

Within a connection-oriented switching network, user traffic is routed through the switch fabric based on the source and destination address (SA/DA) pair found in the arriving packet ๐Ÿ“ฆ For each SA/DA pair encountered by a switch, a "connection" is programmed into the switch hardware. This connection maps the SA/DA pair and the port on which the packet was received to a specific outport over which the packet is to be forwarded. So once a connection has been established, all packets with a particular SA/DA pair arriving on a particular inport are automatically forwarded by the switch hardware out the specified outport. set it and forget it, iconic ๐Ÿ‘‘

A distributed switching environment requires that each switch be capable of processing all aspects of the call processing and switching functionality. Thus, each switch must synchronize its various databases with all other switches in the fabric or be capable of querying other switches for information it does not have locally ๐Ÿง 

SFVLAN accomplishes the above objectives by providing the following features:

  • A virtual directory of the entire switch fabric ๐Ÿ“š
  • Call processing for IP, IPX and MAC protocols ๐Ÿ“ž
  • Automatic call connection, based on VLAN policy ๐Ÿค–
  • Automatic call rerouting around failed switches and links ๐Ÿ”„

In addition, SFVLAN optimizes traffic flow across the switch fabric by providing the following features:

  • Broadcast interception and address resolution at the ingress port ๐Ÿ›‘
  • Broadcast scoping, restricting the flooding of broadcast packets to only those ports that belong to the same VLAN as the packet source ๐ŸŽฏ
  • A single loop-free path (spanning tree) used for the flooding of undirected interswitch control messages. Only switches running the SFVLAN switching protocol are included in this spanning tree calculation. That is, traditional bridges or routers configured for bridging are not included ๐ŸŒณ
  • Interception of both service and route advertisements with readvertisement sourced from the MAC address of the original advertiser ๐Ÿ“ข

2.2. VLAN Principles ๐ŸŽ€

Each SFVLAN switch port, along with its attached endstations, belongs to one or more virtual LANs (VLANs). A VLAN is a logical grouping of ports and endstations such that all ports and endstations in the VLAN appear to be on the same physical (or extended) LAN segment, even though they may be geographically separated ๐ŸŒˆ

VLAN assignments are used to determine the validity of call connection requests and to scope the broadcast of certain flooded messages ๐Ÿ’…

2.2.1. Default, Base and Inherited VLANs ๐Ÿ 

Each port is explicitly assigned to a default VLAN. At start-up, the default VLAN to which all ports are assigned is the base VLAN: a permanent, non-deletable VLAN to which all ports belong at all times ๐Ÿงฑ

The network administrator can change the default VLAN of a port from the base VLAN to any other unique VLAN by using a management application known here as the VLAN Manager ๐Ÿ› ๏ธ A port's default VLAN is persistent. That is, it is preserved across a switch reset ๐Ÿ’พ

When an endstation attaches to a port for the first time, it inherits the default VLAN of the port ๐Ÿงณ Using the VLAN Manager, the network administrator can reassign an endstation to another VLAN.

Note: When all ports and all endstations belong to the base VLAN, the switch fabric behaves like an 802.1D bridging system. ๐Ÿ™ˆ

2.2.2. VLAN Configuration Modes ๐ŸŽ›๏ธ

For both ports and endstations, there are a variety of VLAN configuration types, or modes ๐Ÿฆ‹

2.2.2.1. Endstations ๐Ÿ’ป

For endstations, there are two VLAN configuration modes: inherited and static.

  • Inherited: An inherited endstation becomes a member of its port's default VLAN. ๐ŸŒฑ
  • Static: A static port becomes a member of the VLAN to which it has been assigned by the VLAN Manager. ๐Ÿ“Œ

The default configuration mode for an endstation is inherited.

2.2.2.2. Ports ๐Ÿ”Œ

For ports, there are two VLAN configuration modes: normal and locked.

  • Normal: All inherited endstations on a normal port become members of the port's default VLAN. All static endstations are members of the VLAN to which they were mapped by the VLAN Manager.

If the VLAN Manager reassigns the default VLAN of a normal port, the VLAN(s) for the attached endstations may or may not change, depending on the VLAN configuration mode of each endstation. All inherited endstations will become members of the new default VLAN. All others will retain membership in their previously mapped VLANs. ๐Ÿ”

  • Locked: All endstations attached to a locked port can be members only of the port's default VLAN.

If the VLAN Manager reconfigures a normal port to be a locked port, all endstations attached to the port become members of the port's default VLAN, regardless of any previous VLAN membership. ๐Ÿ”’

The default configuration mode for ports is normal.

2.2.2.3. Order of Precedence ๐Ÿ‘‘

On a normal port, static VLAN membership prevails over inherited membership.

On a locked port, default VLAN membership prevails over any static VLAN membership.

If a statically assigned endstation moves from a locked port back to a normal port, the endstation's static VLAN membership must be preserved ๐Ÿซถ

2.2.3. Ports with Multiple VLAN Membership ๐ŸŒธ

A port can belong to multiple VLANs, based on the VLAN membership of its attached endstations ๐Ÿงฉ

For example, consider a port with three endstations, a default VLAN of "blue" and the following endstation VLAN assignments:

  • One of the endstations is statically assigned to VLAN "red."
  • Another endstation is statically assigned to VLAN "green."
  • The third endstation inherits the default VLAN of "blue."

In this instance, the port is explicitly a member of VLAN "blue." But note that it is also implicitly a member of VLAN "red" and VLAN "green." Any tag-based flooding (Section 4.8) directed to any one of the three VLANs ("red," "green," or "blue") will be forwarded out the port ๐ŸŒˆ๐Ÿ’–

2.3 Tag/Length/Value Method of Addressing โœจ

okay so bestie, "address" is lowkey the most slippery word in networking ๐Ÿซ  because every protocol has its own idea of what an address looks like. Ethernet (physical layer) addresses are six octets long, while IP (network layer) addresses are only four octets long. Not the same vibe at all ๐Ÿ’…

To keep all those protocol-specific address flavours straight, a bunch of the SFVLAN software modules write addresses in a format called Tag/Length/Value (TLV). It's a variable-length construct and it looks like this ๐ŸŽ€

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                              Tag                              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Value length  |                                               |
   +-+-+-+-+-+-+-+-+                                               +
   |                          Address value                        |
   :                                                               :
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Tag

This 4-octet field tells you what kind of address is inside the structure ๐Ÿฆ‹ Right now these address types are supported:

     Tag name        Value    Address type

     aoMacDx         1        DX ethernet dst/src/type
     aoIpxSap        2        Sap
     aoIpxRIP        3        RIP
     aoInstYP        4        YP (YP name and version)
     aoInstUDP       5        UDP (Port #)
     aoIpxIpx        6        Ipx
     aoInetIP        7        IP (Net address)
     aoInetRPC       8        RPC (Program #)
     aoInetRIP       9        INET RIP
     aoMacDXMcast    10       Multicast unknown type
     aoAtDDP         11       AppleTalk DDP
     aoEmpty         12       (no address type specified)
     aoVlan          13       VLAN identifier
     aoHostName      14       Host name
     aoNetBiosName   15       NetBIOS name
     aoNBT           16       NetBIOS on TCP name
     aoInetIPMask    17       IP Subnet Mask
     aoIpxSap8022    18       Sap 8022 type service
     aoIpxSapSnap    19       Sap Snap type service
     aoIpxSapEnet    20       Sap Enet type service
     aoDHCPXID       21       DHCP Transaction ID
     aoIpMcastRx     22       IP class D receiver
     aoIpMcastTx     23       IP class D sender
     aoIpxRip8022    24       Ipx Rip 8022 type service
     aoIpxRipSnap    25       Ipx Rip type service
     aoIpxRipEnet    26       Ipx Rip Enet service
     aoATM           27       ATM
     aoATMELAN       28       ATM LAN Emulation Name

Value length

This 1-octet field holds the length of the address value ๐Ÿ“ What it means depends on the address type and the actual value. ngl it's giving precision ๐Ÿ™ˆ

Address value

This variable-length field holds the address value itself ๐Ÿ’œ Its length is whatever gets stored in the Value length field.

2.4 Architectural Overview ๐ŸŒธ

okay now for the big picture ๐Ÿงš The SFVLAN software runs on the switch CPU and is made up of the following elements, which you can see in Figure 1:

  • The SFVLAN base services handle the traffic that the switch hardware intercepts. We'll get into the base services in Section 3.
   +------------------------------------------------------+
   |                                              +-----+ |
   |                         +------------+       |  I  | |
   |                         |  CALL TAP  <--(8)-->  N  | |
   |                         +------------+       |  T  | |
   |                                              |  E  | |
   |      +-----------+      +------------+       |  R  | |
   |      |   PATH    |      |  TOPOLOGY  |       |  S  | |
   |      |           |      |            |       |  W  | |
   |      | Lnk state <------>  Lnk state <--(3)-->  I  | | Flood path
   |      |           |      |            |       |  T  <----(5,7,8)-->
   |      | Span tree <------>  Span tree <--(4)-->  C  | |
   |      +--^--------+      |            |       |  H  | |
   |         |               |  Discovery <--(2)-->     | |
   |         |               +------------+       |  M  | |
   |         |                                    |  E  | |
   |  +------^--+            +--------+           |  S  | |
   |  | CONNECT >---------+--> FILTER |           |  S  | |
   |  +--^------+         |  +--------+           |  A  | |  specific
   |     |                |                       |  G  | | netwrk lnks
   |     |       +--------^-+     +-------+       |  E  <----(2,3,4)-->
   |     +-------<  POLICY  |     | FLOOD >--(7)-->     | |
   |             +------^---+     +-^-----+       |  P  | |
   |                    |           |             |  R  | |
   | +-----------+    +-^-----------V-+           |  O  | |
   | | DIRECTORY <---->    RESOLVE    <------(5)-->  T  | |
   | +-----^-----+    +---^-----------+           |  O  | |
   |       |              |                       |  C  | |
   |       |    +---------^-----------+           |  O  | |
   |       +----<    Base Services    |           |  L  | |
   |            +-----^---------------+           +-----+ |
   +------------------|-----------------------------------+
    Switch CPU        |
                      | Host control port
                +-----O----------------+
                |     ^ no cnx         |
      Layer 2   |     |                |
     ---------->O-----+--------------->O----------->
      SA/DA pr  |          known cnx   |
                +----------------------+
                 Switch hardware


                   Figure 1:  SFVLAN Architectural Overview
  • Eight call processing service centers that provide the essential services needed to process call connections ๐Ÿ’… We'll cover those in Section 4.
  • A Call Tap module that supports monitoring of call connections ๐Ÿ‘€ It gets its own spotlight in Section 5.
  • The InterSwitch Message Protocol (ISMP) that gives you a consistent way to encapsulate and transmit control messages exchanged between SFVLAN switches. (Note that ISMP is not a discrete software module. Instead, its functionality is distributed among those service centers and software modules that need to communicate with other switches in the fabric.) The Interswitch Message Protocol and the formats of the individual interswitch messages are described in Section 6 ๐Ÿ”ฅ

3. Base Services ๐Ÿฆ‹

The SFVLAN base services are the middlemen between the switch hardware and the SFVLAN service centers running on the switch CPU ๐Ÿ’– Figure 2 shows that relationship. It's basically a copy of the bottom part of Figure 1.

            |    Directory       Resolve                   |
            |        ^              ^                      |
            |        |              |                      |
            |        |    +---------^-----------+          |
            |        +----<    Base Services    |          |
            |             +-----^---------------+          |
            +-------------------|--------------------------+
             Switch CPU         |
                                | Host control port
                          +-----O----------------+
                          |     ^ no cnx         |
                Layer 2   |     |                |
               ---------->O-----+--------------->O----------->
                SA/DA pr  |          known cnx   |
                          +----------------------+
                           Switch hardware


                        Figure 2:  Base Services

During normal operation, data packets that arrive at any local switch port get checked in the switch hardware ๐Ÿ‘€ If the packet's source and destination address (SA/DA) pair matches a known connection, the hardware just forwards the packet out the outport that the connection specifies. Easy peasy ๐Ÿ“

If the SA/DA pair doesn't match any known connection, the hardware diverts the packet to the host control port, where the SFVLAN base services scoop it up ๐Ÿงš The base services then generate a structure called a state box, which tracks how far the call connection request has gotten as it moves through the call processing service centers.

After creating the call's state box, the base services check whether the call is a duplicate of one that's already being processed ๐Ÿ™ˆ If it isn't, they issue a request to the Directory Service Center (Section 4.1) to add the call's source address to the local Node and Alias Tables. Then the base services hand the call off to the Resolve Service Center (Section 4.3) for further processing โœจ

4. Call Processing ๐Ÿ’…

Call connection processing is handled by a set of eight service centers, and each one has one or more servers ๐ŸŽ€ The servers inside a service center get called in a particular sequence. Each server writes the results of its processing into the call connection request state box, then passes the state box along to the next server in line ๐Ÿซถ

In the sections that follow, servers are listed in the order in which they're called ๐Ÿ“‹

4.1 Directory Service Center ๐Ÿ“–

The Directory Service Center is in charge of cataloging the MAC addresses and alias information for both local and remote endstations ๐Ÿ’œ That information lives in two tables: the Node Table and the Alias Table.

  • The Node Table holds the MAC addresses of endstations attached to the local switch. It also holds a cache of remote endstations detected by the Resolve Service Center (Section 4.3). Every entry in the Node Table has one or more matching entries in the Alias Table.
  • The Alias Table holds protocol alias information for each endstation. An endstation alias can be a network address (like an IP or IPX address), a VLAN identifier, or any other protocol identifier. Since every endstation belongs to at least one VLAN (the default VLAN for the port), there's always at least one entry in the Alias Table for each entry in the Node Table ๐ŸŒˆ
Note: The Node and Alias Tables must remain synchronized. That is, when an endstation's final alias is removed from the Alias Table, the endstation entry is removed from the Node Table.

Quick flex: the whole collection of Node Tables and Alias Tables across all switches is called the "virtual" directory of the switch fabric ๐Ÿ‘‘ And the virtual directory holds the address mappings of every known endstation in the fabric. Iconic ๐Ÿ˜ญ

4.1.1 Local Add Server ๐ŸŒธ

The Directory Local Add server adds entries to the local Node or Alias Tables ๐Ÿงš The base services (Section 3) call it to add a local endstation, and the Interswitch Resolve server (Section 4.3.4) calls it to add an endstation it discovered on a remote switch ๐Ÿฆ‹

4.1.2 Inverse Resolve Server โœจ

okay so the Directory Inverse Resolve server gets invoked whenever a brand new endstation shows up on the local switch ๐Ÿ’… (aka when the Local Add server was successful in adding it ๐Ÿซถ). It has two jobs:

  • It fills up the Node and Alias Tables with local entries during switch initialization ๐ŸŒธ
  • It processes a new endstation discovered after the fabric topology has converged to a stable state โœจ

In both cases the processing is identical, no cap ๐Ÿ’–

When a new endstation is detected on one of the switch's local ports, the Inverse Resolve server sends an Interswitch New User request message (Section 6.5) over the switch flood path to all other switches in the fabric ๐Ÿฆ‹. The point of this request is two-fold:

  • It informs the other switches of the new endstation address. Any entries for that endstation in the local databases of other switches should be dealt with appropriately ๐Ÿ™ˆ
  • It requests information about any static VLAN(s) the endstation has been assigned to ๐ŸŽ€

bestie, when a switch receives an Interswitch New User request message from one of its upstream neighbors, it first forwards the message to all its downstream neighbors. No actual processing or VLAN resolution is attempted until the message reaches the end of the switch flood path and begins its trip back along the return path ๐Ÿงš. This ensures every switch in the fabric gets notified of the new user and has synced its databases. iconic ๐Ÿ‘‘

If a switch receives an Interswitch New User request message but has no downstream neighbors, it does the following:

  • If the endstation was previously connected to one of the switch's local ports, the switch formulates an Interswitch New User Response message by loading the VLAN identifier(s) of the static VLAN(s) the endstation was assigned to, along with its own MAC address. (VLAN identifiers are stored in Tag/Length/Value (TLV) format. See Section 2.3. ๐Ÿงฉ) The switch then sets the message status field to NewUserAck and returns the message to its upstream (requesting) neighbor.

Otherwise, the switch sets the status field to NewUserUnknown and returns the message to its upstream neighbor.

  • The switch then deletes the endstation from its local database, as well as any entries associated with the endstation in its connection table. bye bye, endstation ๐Ÿ‘‹

When a switch forwards an Interswitch New User request message to its downstream neighbors, it keeps track of how many requests it has sent out and does not respond back to its upstream neighbor until all requests have been responded to. the waiting game is real ๐Ÿ•ฐ๏ธ

  • As each response is received, the switch checks the status field of the message. If the status is NewUserAck, the switch retains the information in that response. When all requests have been responded to, the switch returns the NewUserAck response to its upstream neighbor. ๐Ÿ’œ
  • If all the Interswitch New User Request messages have been responded to with a status of NewUserUnknown, the switch checks to see if the endstation was previously connected to one of its local ports. If so, the switch formulates an Interswitch New User Response message by loading the VLAN identifier(s) of the static VLAN(s) the endstation was assigned to, along with its own MAC address. The switch then sets the message status field to NewUserAck and returns the message to its upstream (requesting) neighbor.

Otherwise, the switch sets the status field to NewUserUnknown and returns the message to its upstream neighbor.

  • The switch then deletes the endstation from its local database, as well as any entries associated with the endstation in its connection table. ๐Ÿงน

When the originating switch has received responses to all the Interswitch New User Request messages it sent, it does the following:

  • If it has received a response message with a status of NewUserAck, it loads the new VLAN information into its local database. ๐ŸŽ‰
  • If all responses have been received with a status of NewUserUnknown, the originating switch assumes the endstation was not previously connected anywhere in the network and assigns it to a VLAN according to the VLAN membership rules and order of precedence. fresh start, era unlocked ๐ŸŒˆ

If any Interswitch New User Request message has not been responded to within a certain predetermined time (currently 5 seconds), the originating switch recalculates the switch flood path and resends the Interswitch New User Request message. โฐ


4.1.3 Local Delete Server ๐Ÿ—‘๏ธ

The Directory Local Delete server removes entries (both local and remote) from the local Node and Alias Tables. It gets invoked when an endstation, previously known to be attached to one switch, has been moved and discovered on another switch. ๐Ÿšš

Also, remote entries are cached and get purged from the tables on a first-in/first-out basis as space is needed in the cache. FIFO era, literally ๐Ÿ’…


4.2 Topology Service Center ๐Ÿ—บ๏ธ

The Topology Service Center is responsible for maintaining three databases relating to the topology of the switch fabric:

  • The topology table of SFVLAN switches that are physical neighbors to the local switch.
  • The spanning tree that defines the loop-free switch flood path used for transmitting undirected interswitch messages.
  • The directed graph that is used to calculate the best path(s) for call connections.

4.2.1 Neighbor Discovery Server ๐Ÿ‘ฏ

The Topology Neighbor Discovery server uses Interswitch Keepalive messages to detect the switch's neighbors and establish the topology of the switching fabric. Interswitch Keepalive messages are exchanged in accordance with Cabletron's VlanHello protocol, described in detail in [IDhello]. ๐Ÿฆ‹

4.2.2 Spanning Tree Server ๐ŸŒณ

The Topology Spanning Tree server is invoked by the Topology Neighbor Discovery server when a neighboring SFVLAN switch is either discovered or lost. In other words, it kicks in when the operational status of a network link changes. โšก

The Spanning Tree server exchanges interswitch messages with neighboring SFVLAN switches to calculate the switch flood path over which undirected interswitch messages are sent. There are two parts to this process:

  • Creating and maintaining the spanning tree
  • Remote blocking

4.2.2.1 Creating and Maintaining the Spanning Tree ๐ŸŒฒ

In a network with redundant network links, a packet traveling between switches can potentially get caught in an infinite loop, which is an intolerable situation in a networking environment ๐Ÿ˜ญ. However, it is possible to reduce a network topology to a single configuration (known as a spanning tree) such that there is, at most, one path between any two switches. slay the loops ๐Ÿ”

Within the SFVLAN product, the spanning tree is created and maintained using the Spanning Tree Algorithm defined by the IEEE 802.1d standard.

Note: A detailed discussion of this algorithm is beyond the scope of this document. See [IEEE] for more information. ๐Ÿ“š

To implement the Spanning Tree Algorithm, SFVLAN switches exchange Interswitch BPDU messages (Section 6.2) containing encapsulated IEEE-compliant 802.2 Bridge Protocol Data Units (BPDUs). There are two types of BPDUs:

  • Configuration (CFG) BPDUs are exchanged during the switch discovery process, following the receipt of an Interswitch Keepalive message. They are used to create the initial the spanning tree. ๐ŸŒฑ
  • Topology Change Notification (TCN) BPDUs are exchanged when changes in the network topology are detected. They are used to redefine the spanning tree to reflect the current topology. ๐Ÿ”„

See [IEEE] for detailed descriptions of these BPDUs.

4.2.2.2 Remote Blocking ๐Ÿšง

After the spanning tree has been computed, each network port on an SFVLAN switch will be in one of two states:

  • Forwarding. A port in the Forwarding state will be used to transmit all ISMP messages. โœ…
  • Blocking. A port in the Blocking state will not be used to forward undirected ISMP messages. Blocking the rebroadcast of these messages on selected ports prevents message duplication arising from multiple paths that exist in the network topology. Note that all other types of ISMP message will be transmitted. ๐Ÿ›‘
Note: The IEEE 802.1d standard specifies other port states used during the initial creation of the spanning tree. These states are not relevant to the discussion here.

Note that although a port in the Blocking state will not forward undirected ISMP messages, it may still receive them. Any such message received will ultimately be discarded, but at the cost of CPU time necessary to process the packet. wasteful, but that's the tea โ˜•

To prevent the transmission of undirected messages to a port, the port's owner switch can set remote blocking on the link by sending an Interswitch Remote Blocking message (Section 6.3) out over the port. This notifies the switch on the other end of the link that undirected messages should not be sent over the link, regardless of the state of the sending port. ๐Ÿ™…โ€โ™€๏ธ

Each SFVLAN switch sends an Interswitch Remote Blocking message out over all its blocked network ports every 5 seconds. A flag within the message indicates whether remote blocking should be turned on or off over the link. ๐Ÿšฆ

The Topology Link State server is invoked by any process that detects a change in the state of the network links of the local switch. These changes include (but are not limited to) changes in operational or administrative status of the link, path "cost" or bandwidth. ๐Ÿ“Š

The Link State server runs Cabletron's Virtual LAN Link State (VLS) protocol, which exchanges interswitch messages with neighboring SFVLAN switches to calculate the set of best paths between the local switch and all other switches in the fabric. (The VLS protocol is described in detail in [IDvlsp].) ๐Ÿง 

The Link State server also notifies the Connect Service Center (Section 4.5) of any remote links that have failed, which means current connections may need to be torn down. ๐Ÿ’”

4.3 Resolve Service Center โœจ

Okay bestie, the Resolve Service Center is the one in charge of figuring out where broadcast data packets (like an IP ARP packet ๐Ÿ‘€) should actually go. It turns that destination into a unicast MAC address so the call connection can get mapped ๐Ÿฆ‹. The main move here is that it tries to resolve those broadcasts right at the access port of the ingress switch. Main character energy ๐Ÿ’…

Address resolution goes like this:

  1. First, the switch tries to resolve the address from its own local databases by calling these servers:
    • The Table server tries to resolve the address from the Resolve Table (Section 4.3.1).
    • Next, the Local server tries to resolve it from the Node and Alias Tables (Section 4.3.2).
    • If the address isn't in those tables but it is an IP address, the Resolve Subnet server (Section 4.3.3) gets called too.
  2. If it still can't be resolved locally, the Interswitch Resolve server (Section 4.3.4) goes into the "virtual directory" by sending an Interswitch Resolve request message out over the switch flood path ๐ŸŒธ
  3. If the address can't be resolved either locally or through an Interswitch Resolve message (aka the destination endstation is unknown to every switch, maybe because it never sent a packet to its switch ๐Ÿ™ˆ), these steps happen:
    • The Unresolvable server (Section 4.3.5) gets called to record the unresolved packet.
    • The Block server (Section 4.3.6) gets called to decide whether the address should be added to the Block Table.
    • The Flood Service Center (Section 4.8) gets called to broadcast the packet to other SFVLAN switches using a tag-based flooding mechanism.

4.3.1 Table Server

The Resolve Table server maintains the Resolve Table, which holds a collection of addresses that might not be resolvable in the normal fashion ๐Ÿงš. This table typically contains things like the addresses of "quiet" devices that don't send data packets, or special mappings of IP addresses behind a router. Entries can be added to or deleted from the Resolve Table through an external management application.

4.3.2 Local Server

The Resolve Local server checks the Node and Alias Tables maintained by the Directory Service Center (Section 4.1) to see if it can resolve the address ๐Ÿ’œ

4.3.3 Subnet Server

If the address to be resolved is an IP address but can't be resolved through the standard processing described above, the Resolve Subnet server applies the subnet mask to the IP address and then does a lookup in the Resolve Table ๐ŸŒˆ

4.3.4 Interswitch Resolve Server

If the address can't be resolved locally, the Interswitch Resolve server accesses the "virtual directory" by sending an Interswitch Resolve request message (Section 6.4) out over the switch flood path. The Interswitch Resolve request message contains the destination address exactly as it was received within the packet, along with a list of requested addressing information ๐ŸŽ€

When a switch receives an Interswitch Resolve request message from one of its upstream neighbors, it checks whether the destination endstation is connected to one of its local access ports. If it is, the switch formulates an Interswitch Resolve response message by filling in the requested address information, along with its own MAC address. It then sets the message status field to ResolveAck and returns the message to its upstream (requesting) neighbor โœจ

If the receiving switch can't resolve the address, it forwards the Interswitch Resolve request message to its downstream neighbors. If the switch has no downstream neighbors, it sets the message status field to Unknown and returns the message to its upstream (requesting) neighbor ๐Ÿซถ

When a switch forwards an Interswitch Resolve request message to its downstream neighbors, it keeps track of how many requests it has sent out and how many it has received back. It will only respond to its upstream (requesting) neighbor when one of these conditions happens:

  • It receives any response with a status of ResolveAck
  • All downstream neighbors have responded with a status of Unknown

Any Interswitch Resolve request message that isn't responded to within a certain predetermined time (currently 5 seconds) is assumed to have a response status of Unknown โฐ

When the Interswitch Resolve server receives a successful Interswitch Resolve response message, it records the resolved address information in the remote cache of its local directory, so it can be used to resolve later packets for the same endstation. Note that this process results in each switch building its own unique copy of the virtual directory, containing only the endstation addresses it's interested in ๐Ÿฆ‹

4.3.5 Unresolvable Server

The Unresolvable server is called when a packet's destination address can't be resolved. It records the packet in a table, which can then be examined to figure out which endstations are generating unresolvable traffic ๐Ÿ”

Also, if a particular destination is repeatedly seen to be unresolvable, the server calls the Block server (Section 4.3.6) to determine whether the address should be blocked ๐Ÿšซ

4.3.6 Block Server

The Resolve Block server is called when a particular destination has been repeatedly seen to be unresolvable. This typically happens when, without the packet source knowing, the destination endstation is either not currently available or no longer exists ๐Ÿ‘ป

If the Block server determines that the unresolved address has exceeded a configurable request threshold, the address is added to the server's Block Table. Interswitch Resolve request messages for addresses listed in the Block Table are sent less frequently, which cuts down on the amount of Interswitch Resolve traffic throughout the fabric ๐Ÿ“‰

If an address listed in the Block Table is later successfully resolved by an Interswitch Resolve request message, the address gets removed from the table ๐Ÿฅณ

4.4 Policy Service Center ๐Ÿ’œ

Once the destination address of the call packet has been resolved, the Policy Service Center gets called to decide whether the requested call connection is valid. It does this based on the VLAN policy of the source and destination VLANs ๐Ÿ‘‘

4.4.1 Unicast Rules Server

The Policy Unicast Rules server recognizes two VLAN policy values: Open or Secure. The default policy for all VLANs is Open ๐ŸŒธ

The policy value gets used like this when figuring out whether a requested call connection is valid:

  • If the VLAN policy of either the source or the destination can't be determined, the Filter Service Center is called to establish a filter (i.e., blocked) for the SA/DA pair ๐Ÿ™…
  • If the source and destination endstations belong to the same VLAN, the connection is permitted regardless of the VLAN policy โœ…
  • If the source and destination endstations belong to different VLANs, but both VLANs are running with an Open policy, the connection is permitted, which provides cut-through switching between different VLAN(s) โšก
  • If the source and destination endstations belong to different VLANs and one or both of the VLANs are running with a Secure policy, the Flood Service Center (Section 4.8) is called to broadcast the packet to other SFVLAN switches that have ports or endstations belonging to the same VLAN as the packet source ๐Ÿ”’

Note that if any of the VLANs the source or destination belongs to has a Secure policy, then the policy used in the algorithm above is Secure ๐Ÿ›ก๏ธ

4.5 Connect Service Center ๐ŸŽ€

Once the Policy Service Center (Section 4.4) has determined that a requested call connection is valid, the Connect Service Center is called to set up the connection. Note that connectivity between two endstations in the fabric is established on a switch-by-switch basis as the call moves through the fabric toward its destination. No synchronization is needed between switches to set up an end-to-end connection ๐Ÿงต

The Connect Service Center maintains a Connection Table with information about all connections currently active on the switch's local ports ๐Ÿ“‹

Connections get removed from the Connection Table when one of the endstations is moved to a new switch (Section 4.1.2), or when the Topology Link State server (Section 4.2.3) tells the Connect Service Center that a network link has failed. Otherwise, connections aren't automatically aged out or removed from the Connection Table until a certain percentage threshold (HiMark) of table capacity is reached and resources are needed. At that point, some number of connections (typically 100) get aged out and removed all at once ๐Ÿงน

4.5.1 Local Server

If the destination endstation lives on the local switch, the Connect Local server establishes a connection between the source and destination ports ๐Ÿ . Note that if the source and destination both reside on the same physical port, a filter connection is established by calling the Filter Service Center (Section 4.6) ๐Ÿ™ƒ

The Connect Link State server gets called if the destination endstation of the proposed connection doesn't reside on the local switch ๐Ÿ—บ๏ธ

The server executes a call to the Path Link State server (Section 4.7.1), which returns up to three "best" paths of equal cost from the local switch to the destination switch. If more than one path comes back, the server chooses the path that provides the best load balancing of user traffic across the fabric โš–๏ธ

4.5.3 Directory Server

The Connect Directory server gets called if the Connect Link State server is unable to provide a path for some reason ๐Ÿคทโ€โ™€๏ธ

The server examines the local directory to figure out which switch the destination endstation resides on. If the port of access to the destination switch is known, a connection is established using that port as the outport of the connection ๐Ÿ“

4.6 Filter Service Center ๐Ÿšซ

The Filter Service Center is responsible for establishing filtered connections. It gets called by the Connect Local server (Section 4.5.1) if the source and destination endstations reside on the same physical port, and by the Policy Service Center (Section 4.4) if the VLAN of either the source or destination is indeterminate ๐Ÿ™ˆ

A filter connection is programmed into the switch hardware with no specified outport. In other words, the connection is programmed to discard any traffic for that SA/DA pair ๐Ÿ—‘๏ธ

4.7 Path Service Center ๐Ÿ›ค๏ธ

The Path Service Center is responsible for determining the path from a source to a destination ๐Ÿงญ

The Path Link State server is called by the Connect Link State server (Section 4.5.2) to return up to three best paths of equal cost between a source and destination pair of endstations. These best paths are calculated by the Topology Link State server (Section 4.2.3) ๐Ÿงฎ

The Path Link State server is also called by the Connect Service Center to return a complete source-to-destination path, made up of a list of individual switch port names. A switch port name consists of the switch base MAC address and a port instance relative to the switch ๐Ÿท๏ธ

4.7.2 Spanning Tree Server

The Path Spanning Tree server is called by any server that needs to forward an undirected message out over the switch flood path. The server returns a port mask indicating which local ports are currently enabled as outports of the switch flood path. The switch flood path is calculated by the Topology Spanning Tree server (Section 4.2.2) ๐ŸŒณ

4.8 Flood Service Center ๐ŸŒธ

Okay so, if the Resolve Service Center (Section 4.3) can't figure out where a packet's destination address goes ๐Ÿ˜ญ, it calls in the Flood Service Center to broadcast the unresolved packet. Backup plan, but make it iconic ๐Ÿ’…

4.8.1 Tag-Based Flood Server ๐Ÿฆ‹

The Tag-Based Flood server wraps the unresolved packet up in an Interswitch Tag-Based Flood message (Section 6.6) ๐ŸŽ€. It also includes a list of Virtual LAN identifiers that say which VLANs the source endstation belongs to. Then the message goes zooming out over the switch flood path to all the other switches in the fabric ๐Ÿš€

When a switch gets an Interswitch Tag-Based Flood message, it checks the encapsulated header to see which VLAN(s) the packet should go to. If any of its local access ports belong to one or more of those VLANs, it strips off the tag-based header and forwards the original packet out the right access port(s). Main character energy for the packet โœจ

The switch also forwards the entire encapsulated packet along the switch flood path to its downstream neighboring switches, if any ๐Ÿ’–


5. Monitoring Call Connections ๐Ÿ‘€

Okay, this part is giving surveillance vibes ๐Ÿ•ต๏ธโ€โ™€๏ธ The SecureFast VLAN product lets you monitor user traffic moving between two endstations by setting up a call tap on the connection between them. You can watch traffic in one or both directions along the connection path. Not creepy, just thorough ๐Ÿซถ

5.1 Definitions ๐Ÿ“š

In addition to the terms defined in Section 1.2, these terms show up in the call tap process.

Originating Switch

The originating switch is the switch that requests the call tap. Any switch along a call connection path may request a tap on that call connection. ๐Ÿ’…

Probe

The tap probe is the device that receives a copy of the call connection data. The probe is attached to a port on the probe switch. ๐Ÿ”

Probe Switch

The probe switch (also known as the terminating switch) is the switch the probe is attached to. The probe switch can be anywhere in the topology ๐ŸŒ

5.2 Tapping a Connection ๐ŸŽ€

A request to tap a call connection between two endstations can start on any switch along the call connection path: the ingress switch, the egress switch, or any of the intermediate switches. The call connection has to already be established before a call tap request can be issued. The probe device can be attached to any switch in the topology. Flexible, bestie ๐Ÿงš

5.2.1 Types of Tap Connections ๐ŸŒˆ

A call tap gets enabled by setting up an auxiliary tap connection tied to the call being monitored. Since the tap has to start on a switch somewhere along the call connection path, the tap connection path passes through one or more of the switches along the call path. BUT since the probe switch can be anywhere in the switch fabric, the tap path and the call path might split apart at some point ๐Ÿ™ˆ

So on each switch along the tap path, the tap connection gets set up in one of three ways:

  • The existing call connection is used with no modification. ๐ŸŒธ When both the call path and tap path pass through the switch, and the inport and outports of both connections are identical, the switch uses the existing call connection to route the tap. Efficient and iconic ๐Ÿ‘‘
  • The existing call connection is modified. When both the call path and tap path pass through the switch, but the call path outport is different from the tap path outport, the switch enables an extra outport in one or both directions of the call connection, depending on the direction of the tap. This happens under two conditions:
    • If the switch is also the probe switch, an extra outport is enabled to the probe.
    • If the switch is the point where the call path and the tap path diverge, an extra outport is enabled to the downstream neighbor on the leg of the switch flood path where the probe switch is located.
  • A new connection is established. ๐Ÿง If the call path does not pass through the switch (because the tap path has diverged from the call path), a completely new connection is established for the tap. Fresh start, no drama ๐Ÿ’œ

5.2.2 Locating the Probe and Establishing the Tap Connection ๐Ÿ”Ž

To set up a call tap, the originating switch formats an Interswitch Tap request message (Section 6.7) and sends it out over the switch flood path to all other switches in the topology.

Note:

If the originating switch is also the probe switch, no Interswitch Tap request message is necessary. โœจ

As the Interswitch Tap request message travels along the switch flood path, each switch that receives it checks whether it's the probe switch and does the following:

  • If the switch is the probe switch, it establishes the tap connection by either setting up a new connection or modifying the call connection, as appropriate (see Section 5.2.1). Then it reformats the Tap request message into a Tap response message with a status indicating that the probe has been found, and sends it back to its upstream neighbor ๐ŸŽ‰
  • If the switch is not the probe switch, it forwards the Tap request message to all its downstream neighbors (if any) ๐Ÿƒโ€โ™€๏ธ
  • If the switch is not the probe switch and has no downstream neighbors, it reformats the Tap request message into a Tap response message with a status indicating that the probe is not located on that leg of the switch flood path. Then it sends the response back to its upstream neighbor ๐Ÿ™…โ€โ™€๏ธ

When a switch forwards an Interswitch Tap request message to its downstream neighbors, it keeps track of how many requests it has sent out ๐Ÿ“

  • If a response comes back with a status indicating that the probe switch is located somewhere downstream, the switch establishes the appropriate type of tap connection (see Section 5.2.1). Then it formats a Tap response message with a status indicating that the probe has been found and passes it to its upstream neighbor ๐Ÿฅณ
  • If no responses come back with a status indicating that the probe switch is located downstream, the switch formats a Tap response message with a status indicating that the probe has not been found and passes it to its upstream neighbor ๐Ÿ’€

5.2.3 Status Field ๐Ÿท๏ธ

The status field of the Interswitch Tap request/response message holds info about the state of the tap. Some of these status values are transient and only track the progress of the tap request. Other status values get stored in the tap table of each switch along the tap path, for use when the tap is torn down. The possible status values are:

  • StatusUnassigned. This is the initial status of the Interswitch Tap request message. ๐ŸŒฑ
  • OutportDecisionUnknown. The tap request is still moving downstream along the switch flood path. The probe switch had not been found yet. ๐Ÿค”
  • ProbeNotFound. The probe switch is not located on this leg of the switch flood path. ๐Ÿ™ƒ
  • DisableOutport. The probe switch is located on this leg of the switch flood path, and the switch had to either modify the call connection or establish a new connection to implement the tap (see Section 5.2.1). When the tap is torn down, the switch will have to disable any extra outports that were enabled for the tap. Clean up after yourself, periodt ๐Ÿงน
  • KeepOutport. The probe switch is located on this leg of the switch flood path, and the switch was able to route the tap over the existing call path (see Section 5.2.1). Any ports used for the tap will stay enabled when the tap is torn down. ๐Ÿฆ‹

5.3 Untapping a Connection ๐Ÿ”“

A request to untap a call connection has to be issued on the tap originating switch, meaning the same switch that issued the tap request ๐ŸŽฏ

To untap a call connection, the originating switch sends an Interswitch Untap request message (Section 6.7) out over the switch flood path to all other switches in the topology. It goes over the switch flood path instead of the tap connection path so that every switch that knows about the tap gets properly notified, even if the switch topology has changed since the tap was set up ๐Ÿ›ฐ๏ธ

When a switch receives an Interswitch Untap request message, it checks whether it's handling a tap for the specified call connection. If it is, the switch disables the tap connection like this:

  • If a new connection was added for the tap, the connection is deleted from the connection table. ๐Ÿ—‘๏ธ
  • If additional outports were enabled on the call connection, they are disabled. ๐Ÿ”’

Then the switch forwards the Interswitch Untap request message to its downstream neighbor (if any). If the switch has no downstream neighbors, it formats an untap response and sends it back to its upstream neighbor ๐Ÿ“จ

When a switch forwards an Interswitch Untap request message to its downstream neighbors, it keeps track of how many requests it has sent out. It doesn't respond to its upstream neighbor until all untap requests have been answered. Once all the responses are in, the switch handles any final cleanup for the tap and then sends a single Interswitch Untap response message to its upstream neighbor. Everyone's accounted for, no loose ends ๐ŸŽ€


6. Interswitch Message Protocol (ISMP) ๐Ÿ’Œ

The InterSwitch Message protocol (ISMP) gives switches one consistent way to encapsulate and transmit the messages they exchange, so they can create and maintain the databases and provide the other control services and functionality the SFVLAN product needs ๐Ÿง โœจ

6.1 General Packet Structure ๐Ÿ“ฆ

ISMP packets are of variable length and have the following general structure:

  • Frame header
  • ISMP packet header
  • ISMP message body

Each of these packet segments gets its own breakdown in the following subsections ๐Ÿซถ

6.1.1 Frame Header ๐ŸŽ€

okay so every ISMP packet gets wrapped in an IEEE 802-compliant frame, and this is the header that does the wrapping ๐Ÿ“ฆโœจ

       0                   1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   00 |                                                               |
      +      Destination address      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   04 |                               |                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+        Source address         +
   08 |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   12 |             Type              |                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
   16 |                                                               |
      +                                                               +
      :                                                               :

Destination address ๐Ÿ’Œ This 6-octet field holds the Media Access Control (MAC) address of the multicast channel that every switch in the fabric listens on for ISMP packets. Unless something says otherwise, this field holds the multicast address of the control channel where all the switches in the fabric receive ISMP packets, which is 01-00-1D-00-00-00. the main character here is the multicast address, bestie ๐Ÿ’œ

Source address ๐Ÿฆ‹ Unless noted otherwise, this 6-octet field holds the physical (MAC) address of the switch that sent the ISMP packet. so you always know who's talking ๐Ÿ—ฃ๏ธ

Type ๐Ÿงš This 2-octet field tells you what kind of data is inside the frame. Unless noted otherwise, the type field of ISMP packets is 0x81FD โœจ

6.1.2 ISMP Packet Header ๐ŸŒธ

there are two versions of the ISMP packet header floating around in the SecureFast VLAN product, so let's look at both ๐Ÿ‘€

6.1.2.1 Version 2 ๐Ÿ’…

the version 2 ISMP packet header is 6 octets long, and it's giving layered ๐ŸŽ‚

       0                   1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   00 |///////////////////////////////////////////////////////////////|
      ://////// Frame header /////////////////////////////////////////:
      +//////// (14 octets)  /////////+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   12 |///////////////////////////////|            Version            |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   16 |       ISMP message type       |        Sequence number        |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   20 |                                                               |
      +                                                               +
      :                                                               :

Frame header ๐ŸŽ€ This 14-octet field holds the frame header from Section 6.1.1.

Version ๐Ÿ“ This 2-octet field has the version number of the InterSwitch Message Protocol that this ISMP packet follows. This document describes ISMP Version 2.0 ๐Ÿ’–

ISMP message type ๐Ÿ’œ This 2-octet field has a value that tells you which kind of ISMP message is in the message body. Here's the lineup of every ISMP message, with its message type and the section of this document that explains it in detail:

   Message Name                       Type    Description

   Interswitch Link State message        3    See note below
   Interswitch BPDU message              4    Section 6.2
   Interswitch Remote Blocking message   4    Section 6.3
   Interswitch Resolve message           5    Section 6.4
   Interswitch New User message          5    Section 6.5
   Interswitch Tag-Based Flood message   7    Section 6.6
   Interswitch Tap/Untap message         8    Section 6.7

Note: ๐Ÿ™ˆ The Link State messages used by the VLS Protocol aren't described in this document. if you want the full tea on those, check out [IDvlsp] ๐Ÿซถ

Sequence number ๐Ÿ”ฅ This 2-octet field has an internally generated sequence number that the various protocol handlers use to keep messages in sync internally โœจ

6.1.2.2 Version 3 ๐Ÿฆ‹

the version 3 ISMP packet header is only used by the Interswitch Keepalive message. that message isn't described in this document, so if you're curious, go check out [IDhello] for the full version 3 header details ๐Ÿงš

6.1.3 ISMP Message Body ๐ŸŒˆ

the ISMP message body is a variable-length field that holds the actual data of the ISMP message. its length and content depend on whatever value is in the message type field, so the type field is basically the boss here ๐Ÿ‘‘

check the following sections for the exact format of each message type ๐Ÿ’…

6.2 Interswitch BPDU Message ๐ŸŒธ

the Interswitch BPDU message is made of a variable number of octets, and it looks like this ๐Ÿ“

       0                   1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   00 |                                                               |
      +                         Frame header /                        +
      :                   ISMP packet header (type 4)                 :
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   20 |            Version            |            Opcode             |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   24 |          Message flags        |                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
   28 |                                                               |
      :                          BPDU packet                          :
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Frame header/ISMP packet header ๐ŸŽ€ This 20-octet field holds the frame header and the ISMP packet header together ๐Ÿซถ

Version ๐Ÿ’– This 2-octet field has the version number of the message type. This document describes ISMP message type 4, version 1 โœจ

Opcode ๐Ÿงš This 2-octet field has the operation type of the message. For an Interswitch BPDU message, the value should be 1 ๐ŸŒธ

Message flags ๐ŸŒ™ This 2-octet field isn't used right now. it's reserved for future use, so it's just waiting for its moment ๐Ÿฆ‹

BPDU packet ๐Ÿ’œ This variable-length field holds an IEEE-compliant 802.2 Bridge Protocol Data Unit. for a deep dive into what goes in here, see [IEEE] ๐Ÿ“š

6.3 Interswitch Remote Blocking Message ๐Ÿ”ฅ

the Interswitch Remote Blocking message is 30 octets long, and here's the layout ๐Ÿ‘€

       0                   1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   00 |                                                               |
      +                         Frame header /                        +
      :                   ISMP packet header (type 4)                 :
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   20 |            Version            |           Opcode              |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   24 |          Message flags        |        Blocking flag ...      |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   28 |       ... Blocking flag       |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Frame header/ISMP packet header ๐ŸŽ€ This 20-octet field holds the frame header and the ISMP packet header together ๐Ÿ’œ

Version ๐Ÿ“ This 2-octet field has the version number of the message type. This document describes ISMP message type 4, version 1 โœจ

Opcode ๐Ÿฆ‹ This 2-octet field has the operation type of the message. the valid values are:

   2   Enable/disable remote blocking
   3   Acknowledge previously received Remote Blocking message

Message flags ๐ŸŒธ This 2-octet field isn't used right now. it's reserved for future use ๐ŸŒ™

Blocking flag ๐Ÿ”ฅ This 4-octet field has a flag showing the state of remote blocking on the link where the message came in. A value of 1 means remote blocking is on, and no undirected ISMP messages should be sent over the link. A value of 0 means remote blocking is off. This flag doesn't matter if the operation type (Opcode) of the message is 3 ๐Ÿงš

6.4 Interswitch Resolve Message ๐Ÿ’–

there are two versions of the Interswitch Resolve message used by the SecureFast VLAN product, so let's get into them ๐Ÿซถ

6.4.1. Prior to Version 1.8 ๐Ÿ’–

okay bestie so the Interswitch Resolve message that SFVLAN used before version 1.8 is variable-length ๐ŸŽ€ here's the layout:

        0                   1                   2                   3
        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    00 |                                                               |
       +                         Frame header /                        +
       :                   ISMP packet header (type 5)                 :
       |                                                               |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    20 |           Version             |            Opcode             |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    24 |            Status             |           Call Tag            |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    28 |                                                               |
       +     Source MAC of packet      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    32 |                               |                               |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+     Originating switch MAC    +
    36 |                                                               |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    40 |                                                               |
       +       Owner switch MAC        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    44 |                               |                               |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
    48 |                                                               |
       :                   Known destination address                   :
       |                                                               |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     n |     Count     |                                               |
       +-+-+-+-+-+-+-+-+                                               +
   n+4 |                         Resolve list                          |
       :                                                               :
       |                                                               |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

          n = 46 + length of known address TLV

okay so in the message descriptions, the originating switch is the one that issued the original Interswitch Resolve request โœจ the owner switch is the one the destination endstation is attached to ๐Ÿฆ‹ and the responding switch is either the owner switch, or a switch at the end of the switch flood path that doesn't own the endstation but still sends an Interswitch Resolve response because it has no downstream neighbors ๐Ÿ’…

ngl the one exception is the resolve list, which has a different size and format in a Resolve response message ๐Ÿ™ˆ otherwise every field is allocated by the originating switch, and unless noted below, it's also written by the originating switch ๐Ÿซถ

Frame header/ISMP packet header ๐ŸŒธ

This is a 20-octet field that holds the frame header and the ISMP packet header, so it's giving full packet vibes ๐Ÿงš

Version ๐Ÿ’œ

This is a 2-octet field with the version number of the message type. This document describes ISMP message type 5, version 1 ๐ŸŽ€

Opcode ๐Ÿ”ฅ

This is a 2-octet field with the operation code of the message. The valid values are:

   1    The message is a Resolve request.
   2    The message is a Resolve response.
   3    (unused in Resolve messages)
   4    (unused in Resolve messages)

the originating switch writes 1 here, and the responding switch writes 2 โœจ

Status ๐Ÿ‘‘

This is a 2-octet field with the status of a Resolve response message. The valid values are:

   0    The Resolve request succeeded (ResolveAck).
   1    (unused)
   2    The Resolve request failed (Unknown).

the responding switch is the one that writes this field ๐Ÿ’…

Call tag ๐Ÿฆ‹

This is a 2-octet field with the call tag of the endstation packet this Resolve request is issued for. The call tag is a 16-bit value, generated by the originating switch, that uniquely identifies the packet ๐ŸŒˆ

Source MAC of packet ๐Ÿ“

This is a 6-octet field with the physical (MAC) address of the endstation that originated the packet identified by the call tag ๐Ÿ’–

Originating switch MAC ๐Ÿงš

This is a 6-octet field with the physical (MAC) address of the switch that issued the original Resolve request ๐Ÿซถ

Owner switch MAC ๐Ÿ”ฅ

This is a 6-octet field with the physical (MAC) address of the switch the destination endstation is attached to, aka the switch that was able to resolve the requested addressing information. The owner switch writes this field ๐Ÿ‘‘

bestie, if the status of the response is Unknown, this field is irrelevant ๐Ÿ’€

Known destination address ๐ŸŒธ

This is a variable-length field with the known attribute of the destination endstation address. The address is stored in Tag/Length/Value format (see Section 2.3) โœจ

Count ๐Ÿ’œ

This is a 1-octet field with the number of address attributes requested or returned. It's the number of items in the resolve list ๐ŸŽ€

Resolve list ๐ŸŒˆ

This is a variable-length field with a list of the address attributes either requested by the originating switch or returned by the owner switch. In a Resolve request message, this list only has the tags of the requested address attributes (see Section 2.3). A Resolve response message with a status of ResolveAck, though, contains the full TLV of each resolved address attribute ๐Ÿ˜ญ The number of entries in the list is specified in the count field ๐Ÿฆ‹

in an Interswitch Resolve response message, this field is irrelevant if the status of the response is Unknown ๐Ÿ’…

6.4.2 Version 1.8 โœจ

okay so the Interswitch Resolve message used by SFVLAN version 1.8 is made of a variable number of octets ๐Ÿงฉ, and it's laid out like this:

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00 |                                                               |
   +                         Frame header /                        +
   :                   ISMP packet header (type 5)                 :
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
20 |           Version             |            Opcode             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
24 |            Status             |           Call Tag            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
28 |                                                               |
   +     Source MAC of packet      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
32 |                               |                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+     Originating switch MAC    +
36 |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
40 |                                                               |
   +       Owner switch MAC        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
44 |                               |                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
48 |                                                               |
   :                   Known destination address                   :
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 n |     Count     |                                               |
   +-+-+-+-+-+-+-+-+                                               +
n+4 |                         Resolve list                          |
   :                                                               :
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
n1 |                                                               |
   +    Actual dest switch MAC     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                               |                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+     Downlink chassis MAC      +
n1+8 |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
n1+12 |                                                               |
   +      Actual chassis MAC       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                               |                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
n1+20 |                                                               |
   +                          Domain name                          +
   :                                                               :
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        n = 46 + length of known address TLV
        n1 = n + length of Resolve list

In the field descriptions below, the word "originating" ๐Ÿฃ means the switch that sent the original Interswitch Resolve request. "Owner" ๐Ÿ‘‘ means the switch the destination endstation is plugged into. And "responding" ๐Ÿ“ฃ means either the owner switch, or a switch at the very end of the switch flood path that doesn't own the endstation but still sends back an Interswitch Resolve response because it has no downstream neighbors.

bestie, here's the vibe: everything in this message is set by the originating switch ๐Ÿ™Œ, and it writes everything unless I say otherwise. The exceptions are the resolve list (which is a different size and format in a Resolve response) and the last four fields after it ๐Ÿค.

Frame header/ISMP packet header ๐ŸŽ€

This is a 20-octet field, and it holds the frame header and the ISMP packet header together. Iconic ๐Ÿ’…

Version ๐ŸŒธ

This is a 2-octet field with the version number of the message type. This section describes version 3 of the Interswitch Resolve message. (yes, even though the heading says 1.8 ๐Ÿ™ˆ)

Opcode ๐Ÿฆ‹

This is a 2-octet field with the operation code of the message. The valid values are:

1    The message is a Resolve request.
2    The message is a Resolve response.
3    (unused in Resolve messages)
4    (unused in Resolve messages)

The originating switch writes a value of 1 here, and the responding switch writes a value of 2. ๐ŸŽฏ

Status ๐Ÿ“

This is a 2-octet field with the status of a Resolve response message. The valid values are:

0    The Resolve request succeeded (ResolveAck).
1    (unused)
2    The Resolve request failed (Unknown).

The responding switch writes this one ๐Ÿ’œ.

Call tag ๐Ÿงš

This is a 2-octet field with the call tag of the endstation packet that this Resolve request is being issued for. The call tag is a 16-bit value, generated by the originating switch, that uniquely identifies the packet. Main character energy ๐Ÿ‘‘โœจ

Source MAC of packet ๐Ÿซถ

This is a 6-octet field with the physical (MAC) address of the endstation that originated the packet identified by the call tag. ๐Ÿ’–

Originating switch MAC ๐ŸŒˆ

This is a 6-octet field with the physical (MAC) address of the switch that sent the original Resolve request. ๐Ÿ”ฅ

Owner switch MAC ๐Ÿฆ‹

This is a 6-octet field with the physical (MAC) address of the switch the destination endstation is attached to. In other words, it's the switch that was able to resolve the requested addressing information. The owner switch is the one that writes this field ๐Ÿ™Œ.

If the status of the response is Unknown, this field doesn't matter at all ๐Ÿ’€.

Known destination address ๐ŸŒธ

This is a variable-length field with the known attribute of the destination endstation address. The address is stored in Tag/Length/Value format ๐Ÿงฉ.

Count ๐Ÿ“

This is a 1-octet field with the number of address attributes requested or returned. It's the number of items in the resolve list โœจ.

Resolve list ๐Ÿ’…

This is a variable-length field with a list of the address attributes. The originating switch either requested them, or the owner switch returned them. Here's the tea โ˜•: in a Resolve request, the list only has the tags of the requested address attributes. But a Resolve response with a status of ResolveAck has the full TLV of each resolved address attribute ๐ŸŽ€. The number of entries is in the count field.

In an Interswitch Resolve response, this field doesn't matter if the status is Unknown ๐Ÿ™ˆ.

Actual destination switch MAC ๐ŸŒˆ

This is a 6-octet field with the physical (MAC) address of the actual switch inside the chassis that the endstation is attached to. If the status of the response is Unknown, this field doesn't matter ๐Ÿ’œ.

Downlink chassis MAC ๐Ÿงš

This is a 6-octet field with the physical (MAC) address of the downlink chassis. If the status of the response is Unknown, this field doesn't matter either ๐Ÿซถ.

Actual chassis MAC ๐Ÿฆ‹

This is a 6-octet field with the physical (MAC) address of the uplink chassis. Again, if the status of the response is Unknown, this field doesn't matter ๐ŸŒธ.

Domain name ๐Ÿ‘‘

This is a 16-octet field with the ASCII name of the domain. If the status of the response is Unknown, this field doesn't matter. (the Unknown status really said "not meโ€ฆ" for all of these ๐Ÿ’€๐Ÿซ )

6.5 Interswitch New User Message โœจ

okay bestie, this one is the Interswitch New User message ๐Ÿ’– It's a variable number of octets, and the layout is giving whole architecture energy:

       0                   1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   00 |                                                               |
      +                         Frame header /                        +
      :                   ISMP packet header (type 5)                 :
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   20 |           Version             |            Opcode             |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   24 |            Status             |           Call Tag            |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   28 |                                                               |
      +     Source MAC of packet      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   32 |                               |                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+     Originating switch MAC    +
   36 |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   40 |                                                               |
      +   Previous owner switch MAC   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   44 |                               |                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
   48 |                                                               :
      :                    MAC address of new user                    +
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   70 |     Count     |                                               |
      +-+-+-+-+-+-+-+-+                                               +
   74 |                          Resolve list                         |
      :                                                               :
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Now the cast ๐ŸŽญ In the field descriptions, the "originating" switch is the one that issued the original Interswitch New User request ๐Ÿ“จ. The "previous owner" switch is the switch the endstation was attached to before ๐Ÿ . And the "responding" switch is either the previous owner switch, or a switch at the end of the switch flood path that did not own the endstation but still sends an Interswitch New User response because it has no downstream neighbors ๐Ÿงš

Also, every field is allocated by the originating switch, and unless noted otherwise, it's written by the originating switch too. The only exception is the resolve list ๐Ÿซถ

Frame header/ISMP packet header

This 20-octet field holds the frame header and the ISMP packet header ๐Ÿ“ฆ

Version

This 2-octet field holds the version number of the message type. This document describes ISMP message type 5, version 1 ๐ŸŒธ

Opcode

This 2-octet field holds the operation code of the message ๐Ÿ”ฅ The valid values are:

   1    (unused in a New User message)
   2    (unused in a New User message)
   3    The message is a New User request.
   4    The message is a New User response.

The originating switch writes a value of 3 here, and the responding switch writes a value of 4 ๐Ÿ’…

Status

This 2-octet field holds the status of a New User response message. The valid values are:

   0    VLAN resolution successful (NewUserAck)
   1    (unused)
   2    VLAN resolution unsuccessful (NewUserUnknown)

The responding switch writes this field ๐Ÿ‘‘

Call tag

This 2-octet field holds the call tag of the endstation packet that this New User request was issued for ๐Ÿฆ‹ The call tag is a 16-bit value, generated by the originating switch, that uniquely identifies the packet that made the switch flag the endstation as a new user ๐Ÿ”

Source MAC of packet

This 6-octet field holds the physical (MAC) address of the endstation that originated the packet identified by the call tag ๐Ÿ“

Originating switch MAC

This 6-octet field holds the physical (MAC) address of the switch that issued the original New User request ๐Ÿ’œ

Previous owner switch MAC

This 6-octet field holds the physical (MAC) address of the switch the endstation was previously attached to. That's the switch that was able to resolve the VLAN information ๐Ÿง  The previous owner switch writes this field.

If the status of the response is Unknown, this field is irrelevant ๐Ÿ™ˆ

MAC address of new user

This 24-octet field holds the physical (MAC) address of the new user endstation, stored in Tag/Length/Value format ๐ŸŽ€

Count

This 1-octet field holds the number of VLAN identifiers returned. That's the same as the number of items in the resolve list ๐ŸŒˆ The previous owner switch writes this field.

If the status of the response is Unknown, this field and the resolve list are irrelevant ๐Ÿ’€

Resolve list

This variable-length field holds a list of the VLAN identifiers of all static VLANs that the endstation belongs to, stored in Tag/Length/Value format (see Section 2.3) โœจ The number of entries in the list is given in the count field. The previous owner switch writes this list ๐Ÿซถ

If the status of the response is Unknown, this field is irrelevant ๐Ÿ˜ญ

6.6 Interswitch Tag-Based Flood Message ๐ŸŒธ

okay so there are two versions of the Interswitch Tag-Based Flood message, and both are used by the SecureFast VLAN product ๐Ÿ’…

6.6.1 Prior to Version 1.8

The Interswitch Tag-Based Flood message used by SFVLAN before version 1.8 is a variable number of octets ๐Ÿงš Here's the layout:

       0                   1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   00 |                                                               |
      +                         Frame header /                        +
      :                   ISMP packet header (type 7)                 :
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   20 |           Version             |            Opcode             |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   24 |            Status             |           Call Tag            |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   28 |                                                               |
      +     Source MAC of packet      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   32 |                               |                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+     Originating switch MAC    +
   36 |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   40 |     Count     |                                               |
      +-+-+-+-+-+-+-+-+                                               +
   44 |                           VLAN list                           |
      :                                                               :
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    n |                                                               |
      +                                                               +
      :                        Original packet                        :
      +                                                               +
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

         n = 41 + length of VLAN list

Frame header/ISMP packet header

This 20-octet field holds the frame header and the ISMP packet header ๐Ÿ“ฆ

Version

This 2-octet field holds the version number of the message type. This document describes ISMP message type 7, version 1 ๐Ÿฆ‹

Opcode

This 2-octet field holds the operation code of the message. The value here should be 1, which means the message is a flood request ๐Ÿ”ฅ

Status

This 2-octet field is currently unused ๐Ÿ’ค It's reserved for future use ๐Ÿ”ฎ

Call tag

This 2-octet field holds the call tag of the endstation packet that's encapsulated inside this tag-based flood message ๐ŸŽ€ The call tag is a 16-bit value, generated by the originating switch, that uniquely identifies the packet ๐Ÿ”

Source MAC of packet

This 6-octet field holds the physical (MAC) address of the endstation that originated the packet identified by the call tag ๐Ÿ“

Originating switch MAC

This 6-octet field holds the physical (MAC) address of the switch that issued the original tag-based flooded message ๐Ÿ’œ

Count

This 1-octet field holds the number of VLAN identifiers included in the VLAN list ๐ŸŒˆ

VLAN list

This variable-length field holds a list of the VLAN identifiers of all VLANs that the source endstation belongs to ๐Ÿซถ Each entry in this list has the following format:

       0                   1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      | Value length  |                                               |
      +-+-+-+-+-+-+-+-+                                               +
      |                        VLAN identifier value                  |
      :                                                               :
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

The 1-octet value length field holds the length of the VLAN identifier. VLAN identifiers can be from 1 to 16 characters long ๐Ÿง

Original packet

This variable-length field holds the original packet, exactly as it was sent by the source endstation ๐ŸŒŸ

6.6.2 Version 1.8

okay so SFVLAN version 1.8 has its own take on the Interswitch Tag-Based Flood message ๐Ÿฆ‹ it's made of a variable number of octets, and it looks like this:

Note: SFVLAN version 1.8 also recognizes the Interswitch Tag-Based Flood message as described in Section 6.6.1. ๐Ÿ’…
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00  |                                                               |
    +                         Frame header /                        +
    :                   ISMP packet header (type 7)                 :
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
20  |       VLAN identifier         |           Version             |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
24  |           Opcode              |            Status             |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
28  |          Call tag             |                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+     Source MAC of packet      +
32  |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
36  |                                                               |
    +    Originating switch MAC     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
40  |                               |     Count     |               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+               +
44  |                                                               |
    :                           VLAN list                           :
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
n   |                                                               |
    +                                                               +
    :                        Original packet                        :
    +                                                               +
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

        n = 41 + length of VLAN list

Frame header/ISMP packet header

This 20-octet field holds the frame header and the ISMP packet header, so it's doing a lot! โœจ

  • The frame header source address is 02-00-1D-00-xx-yy, where xx-yy is a value that the VLAN Manager application sets to tag the frame header with the VLAN identifier. This value ranges from 2 to 4095. For example, a value of 100 would be set as 00-64. ๐ŸŒธ
  • The frame header type field is 0x81FF. Note that this differs from all other ISMP messages. ๐Ÿ‘‘

VLAN identifier

This 2-octet field contains the VLAN identifier of the packet source. ๐ŸŽ€

Version

This 2-octet field contains the version number of the message type. This section describes version 2 of the Interswitch Tag-Based Flood message. ๐Ÿงš

Opcode

This 2-octet field contains the operation code of the message. Valid values are as follows: ๐Ÿ’–

1  The message is a flood request.  The original packet is
   complete within this message.

2  The message is a fragmented flood request.  The first portion
   of the original packet is contained in this message.

3  The message is a fragmented flood request.  The second portion
   of the original packet is contained in this message.

Status

This 2-octet field is currently unused. It is reserved for future use. ๐Ÿ“

Call tag

This 2-octet field contains the call tag of the endstation packet encapsulated within this tag-based flood message. The call tag is a 16-bit value (generated by the originating switch) that uniquely identifies the packet. ๐Ÿ”ฅ

Source MAC of packet

This 6-octet field contains the physical (MAC) address of the endstation that originated the packet identified by the call tag. ๐Ÿ’œ

Originating switch MAC

This 6-octet field contains the physical (MAC) address of the switch that issued the original tag-based flooded message. ๐ŸŒˆ

Count

This 1-octet field contains the number of VLAN identifiers included in the VLAN list. ๐Ÿฆ‹

VLAN list

This variable-length field contains a list of the VLAN identifiers of all VLANs to which the source endstation belongs. Each entry in this list has the following format: ๐ŸŒธ

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Value length  |                                               |
   +-+-+-+-+-+-+-+-+                                               +
   |                        VLAN identifier value                  |
   :                                                               :
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

The 1-octet value length field contains the length of the VLAN identifier. VLAN identifiers can be from 1 to 16 characters long. ๐Ÿซถ

Original packet

This variable-length field contains the original packet as sent by the source endstation. ๐Ÿ’…


6.7 Interswitch Tap/Untap Message

The Interswitch Tap/Untap message is also a variable-length vibe, made of octets like this: ๐Ÿ”ฅ

     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00  |                                                               |
    +                         Frame header /                        +
    :                   ISMP packet header (type 8)                 :
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
20  |            Version            |            Opcode             |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
24  |             Status            |          Error code           |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
28  |           Header type        |         Header length         |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
32  |            Direction          |                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+       Probe switch MAC        +
36  |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
40  |                           Probe port                          |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
44  |                                                               |
    +                                                               +
48  |                           (Reserved)                          |
    +                                                               +
52  |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
56  |                                                               |
    +                                                               +
    |                             Header                            |
    +                                                               +
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Frame header/ISMP packet header

This 20-octet field holds the frame header and the ISMP packet header. ๐Ÿงš

Version

This 2-octet field contains the version number of the message type. This document describes ISMP message type 8, version 1. ๐ŸŒธ

Opcode

This 2-octet field contains the operation type of the message. Valid values are as follows: ๐Ÿ’–

1  The message is a Tap request.
2  The message is a Tap response.
3  The message is an Untap request.
4  The message is an Untap response.

Status

This 2-octet field contains the current status of the tap request. Valid values are as follows: ๐Ÿฆ‹

1  Switch must disable outport on untap. (DisableOutport)
2  Switch must keep outports on untap. (KeepOutport)
3  Probe not found this leg of spanning tree. (ProbeNotFound)
4  Still searching for probe switch. (OutportDecisionUnknown)
5  Unassigned. (StatusUnassigned)
6  (reserved)
7  (reserved)
8  (reserved)
9  (reserved)

See Section 5.2.3 for details on the use of this field. ๐Ÿ‘‘

Error code

This 2-octet field contains the response message error code of the requested operation. Valid values are as follows: ๐Ÿ“

1  Operation successful. (NoError)
2  No response heard from downstream neighbor. (Timeout)
3  Port does not exist on probe switch. (BadPort)
4  Message invalid. (InvalidMessage)
5  Version number invalid. (IncompatibleVersions)

Header type

This 2-octet field contains the type of information contained in the header field. Currently, valid values are as follows: ๐ŸŒˆ

1  (reserved)
2  Header contains destination and source endstation MAC addresses.

Header length

This 2-octet field contains the length of the header field. Currently, this field always contains a value of 12. ๐Ÿ”ฅ

Direction

This 2-octet field contains a value indicating the type of tap. Valid values are as follows: ๐Ÿ’œ

1  (reserved)
2  Tap is bi-directional and data should be captured flowing in
   either direction over the connection.
3  Tap is uni-directional and data should be captured only when it
   flows from the source to the destination.

Probe switch MAC

This 6-octet field contains the physical (MAC) address of the switch to which the probe is attached. โœจ

Probe port

This 4-octet field contains the logical port number (on the probe switch) to which the probe is attached. ๐ŸŽ€

Reserved

These 12 octets are reserved. ๐Ÿซถ

Header

This variable-length field contains the header that identifies the connection being tapped. The length of the header is stored in the length field. ๐Ÿฆ‹

Currently, this field is 12 octets long and contains the 6-octet physical address of the connection's destination endstation, followed by the 6-octet physical address of the connection's source endstation, as shown below: ๐Ÿ’…

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +    Destination MAC address    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                               |                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+      Source MAC address       +
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

7. Security Considerations โœจ

okay so bestie, this section is short but it's giving SERIOUS vibes ๐Ÿ”๐Ÿ’…. Requested call connections get established or denied based on the VLAN policy of the source and destination addresses that are specified within the packet ๐Ÿฆ‹. If you want the full scoop on how that works, go check out Section 4.4.1 ๐ŸŽ€ it goes into it in detail.

8. References ๐Ÿ“š

[RFC1700]

Reynolds, J. and J. Postel, "Assigned Numbers", STD 2, RFC 1700, October 1994. ๐Ÿ’œ

[IEEE]

"IEEE Standard 802.1d -- 1990" ๐ŸŒธ

[IDvlsp]

Kane, L., "Cabletron's VLS Protocol Specification", RFC 2642, August 1999. ๐Ÿงš

[IDhello]

Hamilton, D. and D. Ruffen, "Cabletron's VlanHello Protocol Specification", RFC 2641, August 1999. ๐Ÿซถ

9. Authors' Addresses ๐ŸŽ€

Dave Ruffen Cabletron Systems, Inc. Post Office Box 5005 Rochester, NH 03866-5005

Phone: (603) 332-9400 EMail: ruffen@ctron.com


Ted Len Cabletron Systems, Inc. Post Office Box 5005 Rochester, NH 03866-5005

Phone: (603) 332-9400 EMail: len@ctron.com


Judy Yanacek Cabletron Systems, Inc. Post Office Box 5005 Rochester, NH 03866-5005

Phone: (603) 332-9400 EMail: jyanacek@ctron.com

Copyright (C) The Internet Society (1999). All Rights Reserved.

This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English.

The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns.

This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. ๐Ÿ’–

Acknowledgement

Funding for the RFC Editor function is currently provided by the Internet Society. โœจ

๐Ÿ“ฆ where this page comes from