Wenn ich einen disabled Port reaktiviere, begibt er sich sofort in den Listening Status

Haben Sie schon einmal einen disabled Port enabled und dabei die Zeit gemessen bis z.B. ein Ping erfolgreich durchlief? Und haben Sie dabei verwundert festgestellt daß dies um die 30 Sekunden dauert? Sind sie dann auch zum Schluß gekommen daß der so beobachtete Port den Listening und Learning State durchläuft, aber den Blocking State überspringt? Wenn ja, trösten Sie sich; Sie sind nicht der Erste der sich täuscht!

Definierte Übergänge

Port State ChangesDie einzelnen Port States und ihre Übergänge (Port State Changes) sind genau definiert. Es ist ausgeschlossen daß vom Disabled direkt in den Listening State gewechselt wird. Wie ist dann aber die gemessene Zeit erklärbar? Dazu muss man sich diese Definitionen näher ansehen.

RTFC

Es ist unerheblich ob ein Port per Kommando enabled oder mittels Neustart initialisiert wird, denn die Prozedur enable_port() ruft die Prozedur initialize_port() auf. Dort werden im wesentlichen folgende Schritte durchgeführt:

  1. Die become_designated_port() Procedure (8.6.10.3) wird ausgeführt. Dem Port werden hierbei Werte für Root Bridge, Pfadkosten u.a. übergeben.
  2. Der Port Status wird auf Blocking gesetzt und diverse Timer werden gestoppt
  3. Die port_state_selection() Procedure wird aufgerufen. Da anfänglich der Port als designated definiert wurde folgt nun die
  4. make_forward() Procedure, welche den Port in den Listening State versetzt.

Synopsis

Der Port durchläuft den Blocking State, bevor er in den Listening State tritt. Allerdings dauert das nur so lange bis die Funktion make_forward() ausgeführt wird.