Subject: Re: [dna] Pseudocode for Simple DNA (Providing text to resolve issue #10)

From: "JinHyeock Choi" <[email-masked]>
Date: Wed, 8 Oct 2008 02:16:35 +0900

> Hi Folks,
>
>  I propose to add the following text to a new section called
> "Pseudocode for Simple DNA" to resolve issue #10. The pseudocode is written
> in an imaginary language and any resemblance to real programming languages
> is unintentional.
>
>
> 6.  Pseudocode for Simple DNA
>
>       /* Link up indication received on INTERFACE */
>       /* Start Simple DNA process */
>
>       /* Mark All Addresses as deprecated */
>       Configured_Address_List=Get_Address_List(INTERFACE);
>       foreach Configured_Address in Configured_Address_List
>       {
>         if (Get_Address_State(Configured_Address)!=AS_TENTATIVE)
>         {
>           Set_Address_State(Configured_Address,AS_DEPRECATED);
>         }
>       }
>
>       /* Mark all routers' NC entries as STALE to speed up */
>       /* acquisition of new router if link change has occurred */
>       foreach Router_Address in DEFAULT_ROUTER_LIST
>       {
>         NCEntry=Get_Neighbor_Cache_Entry(Router_Address);
>         Set_Neighbor_Cache_Entry_State(NCEntry,NCS_STALE);
>       }
>
>       /* Thread A : Send Router Solicitation */
>       RS_Target_Address=FF02::2;
>       RS_Source_Address=Get_Any_Link_Local_Address(INTERFACE);
>       Send_Router_Solicitation(RS_Source_Address,RS_Target_Address);
>
>       /* Thread B : Send Neighbor Solicitation(s) */
>       Previously_Known_Router_List=Get_Router_List_from_SDAT();
>       NS_Source_Address=Get_Any_Link_Local_Address(INTERFACE);
>
>       foreach Router_Address in Previously_Known_Router_List
>       {
>         if (Get_Any_Valid_Address_from_SDAT(Router_Address))
>         {
>           Send_Neighbor_Solicitation(NS_Source_Address,Router_Address);
>         }
>       }
>
>       /* Thread C : Response collection */
>
>       /* Received Router Advertisement processing */
>       /* Only for RAs received as response to DNA RSs */
>
>       L3_Source=Get_L3_Source(RECEIVED_MESSAGE);
>       L2_Source=Get_L2_Source(RECEIVED_MESSAGE);
>       SDAT_Entry_List=Get_Entries_from_SDAT_L2L3(L3_Source,L2_Source));
>       foreach SDAT_Entry in SDAT_Entry_List
>       {
>         if (Exists_PIO(RECEIVED_MESSAGE,Get_Prefix(SDAT_Entry)))
>         {
>           /* Address is operable. Configure on Interface */
>           /* Rejoin solicited-node multicast group for address */
>         }
>         else
>         {
>           /* If address is configured on interface, remove it */
>           /* This could be because of a NA arriving before RA */
>         }
>       }
>
>       /* Mark router as reachable */
>       NCEntry=Get_Neighbor_Cache_Entry(L3_Source);
>       if (NCEntry is not NULL)
>       {
>         Set_Neighbor_Cache_Entry_State(NCEntry,NCS_REACHABLE);
>       }
>       else
>       {
>         Create_Neighbor_Cache_Entry(L3_Source,NCS_REACHABLE);
>       }
>
>       /* Ignore further NAs from this router */
>       Add_Router_to_NA_Ignore_List(L3_Source);
>
>
>       /* Received Neighbor Advertisement processing */
>       /* Only for NAs received as response to DNA NSs */
>
>       L3_Source=Get_L3_Source(RECEIVED_MESSAGE);
>       L2_Source=Get_L2_Source(RECEIVED_MESSAGE);
>
>       if (Is_Router_on_NA_Ignore_List(L3_Source)) {
>         /* Ignore message and wait for next message */
>         continue;
>       }
>
>       SDAT_Entry_List=Get_Entries_from_SDAT_L2L3(L3_Source,L2_Source));
>
>       foreach SDAT_Entry in SDAT_Entry_List
>       {
>           /* Address is operable. Configure on Interface */
>       }
>
>
> If you have any issues with this text, please respond to this mail on list.

thanks for your works. I'm struggling to decipher the codes.

Before making further comments, I'd like to ask one clarifying question.

When does DNA procedure stop?

What if NA arrives before RA?
Upon an NA's arrival,
does DNA procedure stop or keep waiting for an RA's arrival?

best regards

JinHyeock
_______________________________________________
dna mailing list
[email-masked]
https://www.ietf.org/mailman/listinfo/dna

---

From: "JinHyeock Choi" <[email-masked]>
Date: Wed, 8 Oct 2008 02:16:35 +0900

best regards

JinHyeock

---

From: Suresh Krishnan <[email-masked]>
Date: Tue, 07 Oct 2008 13:49:05 -0400

Hi Jin,

> does DNA procedure stop or keep waiting for an RA's arrival?

No. The simple DNA procedure does not stop, but it STARTS USING the 
address as described in the following pseudocode in the NA processing.

If an RA arrives later from the SAME ROUTER, which has none of the 
prefixes, the simple DNA host unconfigures the addresses as described in 
the following pseudocode in the RA processing.

Thanks
Suresh

---

From: Suresh Krishnan <[email-masked]>
Date: Tue, 07 Oct 2008 13:49:05 -0400

Hi Jin,

Thanks
Suresh

---

From: "JinHyeock Choi" <[email-masked]>
Date: Wed, 8 Oct 2008 23:59:50 +0900

Suresh

> No. The simple DNA procedure does not stop,

Does the simple DNA procedure never stop? Does it keep operating on and on?

JinHyeock

---

From: "JinHyeock Choi" <[email-masked]>
Date: Wed, 8 Oct 2008 23:59:50 +0900

Suresh

JinHyeock

---

From: Suresh Krishnan <[email-masked]>
Date: Wed, 08 Oct 2008 15:37:21 -0400

Hi Jin,

> Does the simple DNA procedure never stop? Does it keep operating on and on?

The DNA procedure completes when all of the probes it sent (NSs and RS) 
are either responded to or timed out.

Thanks
Suresh

---

From: Suresh Krishnan <[email-masked]>
Date: Wed, 08 Oct 2008 15:37:21 -0400

Hi Jin,

Thanks
Suresh