Summary

  • RFC 2174 combined distance-vector unicast routing with one virtual-source spanning tree for broadcast and multicast in a small MAPOS switch cluster.
  • Because MAPOS frames had no source address and no TTL, a transient loop could neither identify its origin nor expire itself; SSP therefore withheld forwarding while the fabric converged.
  • A route entry, selected VSS, marked bitmap bit or metric below 16 described local control-plane state. None was a receipt for safe forwarding or end-node delivery.

Thirty seconds of deliberate silence

A new route had appeared. The next-hop port was known. The switch could even see that the newly learned destination had the smallest switch number in the table and should therefore become the Virtual Source Switch. Yet RFC 2174 did not tell the switch to begin broadcasting at once.

It told the switch to start a timer.

For a downstream port, the default forward delay was thirty seconds: three full-update intervals. During that period the port’s place in the broadcast tree could be recorded, but broadcast and multicast forwarding through it remained prohibited. The distinction is easy to lose when routing software is represented as a single green state. SSP made it explicit. Learning was one event. Permission to forward was another.

This separation mattered because the frame itself could not repair a premature decision. MAPOS version 1 used an eight-bit destination address, but no source-address field. A switch receiving a broadcast could not reconstruct the actual origin and run a normal reverse-path test against it. The frame also had no TTL. If two switches temporarily disagreed and created a forwarding loop, the frame carried no counter that would eventually destroy it.

The safe act was therefore not always to forward faster. Sometimes it was to wait until the information on which forwarding depended had had time to propagate.

One invented source for every broadcast

SSP solved the missing source address by introducing Virtual Reverse Path Broadcast. Instead of treating every real sender as a separate root, the protocol assumed that all broadcast and multicast frames came from beneath one virtual source. The VSS was the reachable switch with the smallest switch number.

Every switch could identify that root by inspecting its own unicast table. It then found the shortest reverse path toward the VSS and classified ports around that path. A non-root switch had one upstream port and could have zero or more downstream ports. The VSS had no upstream port. The result was one spanning tree at a time for the entire MAPOS segment.

This was an economical construction. It reused the unicast table to build the broadcast tree, and it avoided maintaining a different tree for every possible sender. It was also a local inference. There was no separate election transaction in which every switch signed the same result. Each participant selected the smallest reachable switch from the routes it currently believed.

That word—currently—does the work. During a topology change, two switches could temporarily possess different valid-looking tables. One could have learned the new VSS while another still retained the old path. The VSS number was therefore not proof of simultaneous agreement. It was an input to a convergence procedure.

The bitmap was a plan, not an outcome

RFC 2174 represented broadcast and multicast forwarding as a bitmap. Each bit corresponded to a port. A marked bit meant that a frame should be forwarded to an end node or toward an upstream or downstream switch. If no bit was marked, the frame was silently discarded.

The bitmap compressed a complex topology into a small operational surface. It did not record what happened after the decision. A one did not show that the link transmitted, that the neighbouring switch received the frame, that its own tree agreed, or that an end node accepted the payload. A zero could mean that no valid path existed, that a relation expired, that a new root invalidated the table, or that forwarding was still deliberately withheld.

The protocol filled those bits from several kinds of evidence. A node address request told the local switch that a node was attached. The next hop toward the VSS identified the upstream port. A poisoned-reverse advertisement from another switch indicated that the advertising switch lay downstream. Each observation had a different source and lifetime.

When a new downstream appeared, the bit and its forward-delay timer began together, but usable forwarding waited for the timer to expire. Continued poisoned-reverse updates refreshed a separate port-expiration timer. If those updates stopped for thirty seconds, the bit was cleared. If an ordinary update arrived from what had been a downstream, the switch was expected to clear the bit immediately because that neighbour had selected another path or another VSS.

The same visible bit could therefore move through several states: candidate, delayed, active, refreshed, invalidated and cleared. A dashboard that shows only the final Boolean erases the protocol’s most important temporal distinction.

Four clocks, four claims

SSP’s unicast side borrowed the discipline of distance-vector routing. Every ten seconds by default, each switch sent a complete routing table to adjacent switches. A received metric was increased by the link cost, usually one, and a smaller metric won. Local failure, a newly unreachable route or an increased metric could trigger an immediate update rather than waiting for the next full interval.

But an update sent was not convergence completed. RFC 1058’s RIP analysis had already explained why distance-vector systems can preserve stale beliefs and count toward infinity. Poisoned reverse and triggered updates reduce that risk; they do not create a global commit.

RFC 2174 gave each route an expiration clock. If the current neighbour failed to refresh it for thirty seconds, or advertised metric 16, the route became unreachable. It was then retained for another thirty-second garbage-collection interval so that the bad news could still be advertised before the entry disappeared. The broadcast side had its own forward-delay and port-expiration clocks.

Those timers did not mean the same thing. Route expiration said that one local belief had aged beyond use. Garbage collection said the belief had remained long enough to communicate its invalidity. Forward delay said a newly discovered relation was not yet authorized for broadcast forwarding. Port expiration said the downstream evidence had stopped arriving. Treating all four as generic “timeout” events would collapse the reason for each state transition.

What the RFC did not prove

RFC 2174 was Informational, not the product of an IETF working group and not standards track. It assumed a small switch population. It did not report a deployment census, measured convergence, interoperability rates or a real broadcast storm. Security issues were not discussed.

The implementation section adds an especially useful limit. A bidirectional-looking port could become a half-way connection: receiving still worked while transmission failed. The switch might continue to hear routing updates even though its outgoing frames disappeared into a black hole. SONET/SDH overhead feedback could help detect that asymmetry, but the memo warned that some services did not preserve the needed path overhead.

This means even a refreshed route and unexpired port timer were not end-to-end proof. They showed that certain control information arrived on the receive side. They did not show that the reverse channel carried data, that the neighbour forwarded it, or that the application obtained it.

RFC 2174’s historical importance lies in the boundary it drew. The protocol did not equate knowledge with permission. It inserted a state between them and made waiting an affirmative safety operation. A route could be correct enough to store and still too new to trust with a broadcast.

Sources

  1. RFC 1058 — Routing Information Protocol
  2. RFC 2171 — MAPOS Version 1
  3. RFC 2173 — Node Switch Protocol
  4. RFC 2174 — Switch-Switch Protocol
  5. RFC 2176 — IPv4 over MAPOS Version 1