1 Tech Topic: Link State Paul Bowden Program Manager Exchange Server Product Unit
2 What do we have today? GWART Consolidated map of the Organization Costs associated with connectors Updated on a schedule What’s missing from the GWART? Downstream link intelligence Intelligent routing Loop free routing Dynamic updates
3 Link State Background Algorithm developed by “Dijkstra” in 1959 Used in OSPF at the network layer In use on the Internet today Exchange 2000’s implementation In memory database held on all 2000 servers Immediate propagation of new link data Master for each Routing Group
4 RG Master The RID for the Routing Group Only one master per Routing Group Can be manually set through Sys. Man. Responsibilities Incrementing the major routing version Propagating new data to member servers
5 RG Members Responsibilities for bridgeheads Telling the master about link failures Acting upon new information from other Routing Groups Telling other members about new external information when the master is down
6 Protocol Communication Inside the Routing Group All servers listen on port 3044 (691 for RC1+) Plain text information update Between Routing Groups RGC = X-LINK2STATE SMTP command verb X.400 = Dummy message with link state payload New link information is published immediately to the entire Organization For scheduled connections, the broadcast is dropped Link state messages do not appear in queues
7 Looking at Link State NETMON Good for understanding at a low-level Plain text Tools -> Monitors View basic status information Web Management Like Tools -> Monitors (PT-SHOWCASE) WinRoute Admin tool for troubleshooting (PT-SHOWCASE)
8 What causes a state change? Member OR Master initiated Link UP or link DOWN Master initiated Changing the cost on a connector Changing Address Spaces Adding/removing connectors Master gets a notification from the AD when changes are made in Routing Group configuration System Manager only updates AD
9 In-memory database Not persisted to disk Reboot and learn Contains RG GUIDs, Connector GUIDs, Costs Address Spaces, Bridgehead GUIDs, and link state (UP/DOWN) Connector definition and configuration is held in the Active Directory (Configuration NC) Size of database 32 bytes for every server, connector and Routing Group in the Organization Example: 250 Routing Groups = 8Kb 150 Exchange Servers = 4.8Kb 800 Connectors = 25.6Kb 38.4Kb total
10 Simple Scenario RGC Member RG Master Routing Group Connector RG1 RG2 RG1 = 5 RG2 = A RG1 = 5 RG2 = A Cost: 10 Link State Update: RG2 to RG3 Link DOWN RG1 = 5 RG2 = B RG1 = 5 RG2 = A RG1 = 5 RG2 = A RG1 = 5 RG2 = A RG1 = 5 RG2 = A Link State Update: RG2 to RG3 Link DOWN RG1 = 5 RG2 = B RG1 = 5 RG2 = B RG1 = 5 RG2 = B Link State Update: RG2 to RG3 Link DOWN RG1 = 5 RG2 = B Link State Update: RG2 to RG3 Link DOWN RG1 = 5 RG2 = B Link State Update: RG2 to RG3 Link DOWN RG3 X
11 What does it look like? Port 3044/691 Netmon trace Bytes remaining GUID of connector affected GUID of bridgehead that noticed change Status of connection B D { } F 43 4F 4E 4E VS_CONN.7fe12ef ee8f1654dbc d7f7d1.c380ab f7b7bff438efb F 57 4E cf8b9.DOWN
12 What does it look like? Link State query (check knowledge) Port C7 33 D C7 33 3B V...3;e..E F D 0D 9D 3A D B2 86 A B7 F8 F !.....C$.....cP DB E9 AE D 4C 49 4E 4B B.....X-LINK2STA C E 4B 3D 7B 30 TE.LAST.CHUNK={ D 20 4D 55 4C c8}.MULTI.( B D 1.2).({ } F DIGEST_QUERY.3a f a82a4ba ec7fca5efe25ce.f A fe1b2771c B b9d2877e43ca12c C B D { }.DIG D F EST_QUERY.3af E a82a4ba5ec7f F ca5efe25ce.f7fe b2771c065317b9d e43ca12c..) D 0A..
13 Master Down Scenario #1 RGC Member RG Master Routing Group Connector RG1 RG2 RG1 = 5 RG2 = A RG1 = 5 RG2 = A Cost: 10 Link State Update: RG2 to RG3 Link DOWN RG1 = 5 RG2 = A RG1 = 5 RG2 = A RG1 = 5 RG2 = A RG1 = 5 RG2 = A X RG3 X
14 Master Down – Local change RG Master is the only one that can increment the version number of the local Routing Group Re-broadcast of this new information is not possible Changed member drops the broadcast
15 Master Down Scenario #2 RGC Member RG Master Routing Group Connector RG1 RG2 RG1 = 5 RG2 = A RG1 = 5 RG2 = A Cost: 10 Link State Update: RG2 to RG3 Link DOWN RG1 = 5 RG2 = B RG1 = 5 RG2 = A RG1 = 5 RG2 = A RG1 = 5 RG2 = A RG1 = 5 RG2 = A Link State Update: RG2 to RG3 Link DOWN RG1 = 5 RG2 = B RG1 = 5 RG2 = B RG1 = 5 RG2 = B Link State Update: RG2 to RG3 Link DOWN RG1 = 5 RG2 = B Link State Update: RG2 to RG3 Link DOWN Link State Update: RG2 to RG3 Link DOWN X RG3 X
16 Master Down – Remote change Members can act upon information received from other Routing Groups Members can update each other with new remote information as they perform a link state swap for every SMTP session
17 Complex Routing Walkthrough RG1 RG2 RG5 RG3 RG4 Member RG Master X Link Down Routing Group Connector Link Down X Infinite Cost? Wait in queue Glitch Retry Open Poll Link Down Glitch Retry New messages wait here
18 Multiple Bridgehead Scenario RGC RG1 RG2 X BH1 BH2 RG2 to RG1 BH1: CONN_AVAIL BH2: CONN_AVAIL State: STATE UP GetNextHop = BH1 RG2 to RG1 BH1: CONN_NOT_AVAIL BH2: CONN_AVAIL State: STATE UP X GetNextHop = BH2 RG2 to RG1 BH1: CONN_NOT_AVAIL BH2: CONN_NOT_AVAIL State: STATE UP RG2 to RG1 BH1: CONN_NOT_AVAIL BH2: CONN_NOT_AVAIL State: STATE DOWN State Down
19Caveats New information is broadcast everywhere and immediately EDK-based connectors are always UP
20