Thanks for reply,

I'll try to explain situation in more detail. It's simple but still a little bit challenging.

When you create a new EIGRP neighbor adjacency, you need to do this sequence:

Router A                              Router B
      (just booted)                        (up and running)

      (1)---------------->
          HELLO (multicast)             <----------------    (2)
           Seq=0, Ack=0               HELLO (multicast)
                                      Seq=0, Ack=0

                                         <----------------   (3)
                                      UPDATE (unicast)
                                      Seq=10, Ack=0, INIT
      (4)---------------->            UPDATE 11 is queued
           UPDATE (unicast)
           Seq=100, Ack=10, INIT      <----------------   (5)
                                      UPDATE (unicast)
                                      Seq=11, Ack=100, EOT
(6)--------------->
           ACK (unicast)
           Seq=0, Ack=11


Our sequence works correctly and reliably, but still I want to optimize it to achieve state above. In Quagga, we send UPDATE INIT with Ack 0 immediately, after hearing new hello on the interface. First INIT should be acknowledged in another INIT from other side (not in general Ack packet), otherwise we cannot proceed in sequence. Second, remaining INIT is then acknowledged in EOT UPDATE(step 5 in above diagram) . This is optimal sequence from RFC.

In Quagga<->Cisco, we both send UPDATE INIT with Ack 0 to each other and then wait for INIT Ack from other side. Cisco waits 2 seconds of retransmission timer and sends the same INIT, but now with Ack correctly set to Sequence No. of my INIT. Then I can continue to EOT packet and ack his UPDATE INIT. This introduces a little delay and sometimes 1 or more not needed packets sent.

In Cisco<->Cisco environment you will never see this. Especially in 15.x version, where it works just like in RFC. They always somehow decide, who should start with INIT process. Only starting router sends UPDATE INIT with Ack 0. Not both like in our situation. No retransmissions, only fast, optimized process without any not needed packets.

I remember from a meeting with Cisco's EIGRP developers, they've mentioned something like random little delay before first INIT, which ensures that one of the routers will go first and second can send his optimized INIT with Ack. Now I would like to try something similar. To delay sending of the first INIT UPDATE and if in a meanwhile I receive INIT from other side, I would Acknowledge it in my delayed packet.

Hope it is sufficient and understandable explanation. I will appreciate any help, or hint. Thanks in advance.

Best regards
Jan Janovic

On 15.01.2015 00:58, Donald Sharp wrote:
Why would you need to delay packet sending in EIGRP by a random amount?

Typically one stops another threads execution through an agreed upon communication method. I'm not aware of a command to use to remotely suspend another thread without using the agreed upon communication method.

In any event before any specific recommendations about what can be done, it would be nice to have a more detailed description of the problem that you are facing.

donald

On Wed, Jan 14, 2015 at 3:40 PM, Jan Janovic <[email protected] <mailto:[email protected]>> wrote:

    Hello community!

    Is it possible to somehow pause specific thread in Quagga for
    several miliseconds while not affecting work of other threads?
    They would continue their jobs. I'm just thinking loudly. Maybe
    it's stupid consideration.

    I need to address one situation in our new EIGRP daemon, when it
    would be best to delay packet sending for a little, but random
    amount of time...and then decide what next. It's possible that in
    a meanwhile, when thread is stopped, we will receive another
    specific packet and the next step in previous stopped thread will
    be slightly different.

    I can provide you with more specific information if needed.

    Thanks for info.

    Best regards
    Jan Janovic

    _______________________________________________
    Quagga-dev mailing list
    [email protected] <mailto:[email protected]>
    https://lists.quagga.net/mailman/listinfo/quagga-dev



_______________________________________________
Quagga-dev mailing list
[email protected]
https://lists.quagga.net/mailman/listinfo/quagga-dev

Reply via email to