Subject: Q: Adjacency synchronzation live-lock?

From: "Georg Kullgren" <[email-masked]>
Date: Mon, 25 Jun 2001 18:25:56 +0200

Hi,

I've been looking at the Adjacency protocol and have question regarding
synchronization.

As I understand it both switch and controller will try to synchronize
by sending SYN.

If both switch and controller start to send a SYN at the same time,
they will both answer with a SYNACK but with different instance numbers.

When the SYNACK is received the C check will fail on both sides and 
a RSTACK will be sent by both switch and controller.

Switch and controller will start over with a new SYN.

The result can be that switch and controller fail to synchronize.
This will only occur if both switch and controller send their messages
at the same time. It's very unlikely that the timing will be this bad
for any longer period of time, BUT there is a small risk here.

Have I missed something?

My suggestion for resolving this is to add a random delay before sending
a SYN in the "Reset the link" procedure in chapter 11.2, draft 8.

Any opinions?

Regards
/Georg

-- 
------------------------------------------------------------------------
Georg Kullgren            Nortel Networks AB    [email-masked]
System Architect          S:t Eriksgatan 115 A  Tel:   +46-8-50 88 36 18
Routing Architecture Lab  SE-113 85 Stockholm   Mobile: +46-703-14 36 18
                          Sweden                Fax:   +46-8-50 88 35 01

---

From: "Georg Kullgren" <[email-masked]>
Date: Wed, 27 Jun 2001 12:16:11 +0200

Hi,

The question I had about a possible live-lock in the adjacency protocol
due to a timing problem should not have been asked. There was no problem... 
There seems to be a problem with the State Tables and the 
boolean operators though...

The controller sends a SYN with pType 0 saying that it wants
a currently unspecified partition id.

The switch responds with a SYNACK with pType 2 assigning a partition id.

The State Table specify that we have to run the C operator on the SYNACK.

Cut from draft 8:

       C    The Receiver Instance, Receiver Port, Receiver Name and
            Receiver Partition ID fields in the incoming message
            match the values of the Sender Instance, Sender Port,
            Sender Name and Sender Partition ID currently sent in
            outgoing SYN, SYNACK, and ACK messages.

Since the partition ID doesn't match we should send a RSTACK according
to the state table.

The B and C operators should specify that the partition ID field only 
has to match previously sent messages with pType set to 2 (assigned).

Regards
/Georg