Some time ago, I put forward a proposal to this list for a way to measure
lag and types of lag.  I called this "AsLL," or "Asymmetric Link Latency."
The idea is that you add an accurate timestamp to PING in the server->server
exchange.  When an AsLL-enabled server receives this PING, it'll return a
PONG containing the original timestamp and the time difference with its
own clock that was measured and its own timestamp.  To complete an AsLL
exchange, the first server sends back another PONG containing the second
server's timestamp and the measured RTT.  These AsLL PING/PONGs are
differentiated from each other and from the "standard" exchange by the
number of arguments being sent.

Implementing this feature will first require adding appropriate data
elements to the link description structures and providing a way to query
that data.  As part of this, we may wish to provide a new command that
can return the current sendq for a link as well as the one-way link
latency and RTT--the advantage of adding (yet another) new command is that
we can leverage the priority queue mechanism to enable the command and its
reply to run ahead of the lag.

If you look at ircd/m_ping.c, you'll note this comment:

/*
 * Extension notes
 *
 * <Vek> bleep:  here's the change you make to PING:
 * <Vek> F TOK_PING F G 7777777777.7777777
 * <Vek> then optional parameter for further enhancement
 * <Vek> G TOK_PONG G F 7777777777.7777777 0.1734637
 */

This is a starting point.  It's up to you to figure out what the new
exchange is going to look at.  A driving priority is to ensure that this
will not prevent existing servers that do *not* implement this feature
from properly detecting and replying to normal pings, and that servers that
do implement this feature will not croak or ignore a PONG.  If you make
this change relative to u2.10.11, you must test carefully to make sure that
no new bugs are introduced, and particularly that u2.10.10 and u2.10.11
interoperability is preserved.

As before, write to this list if you're interested in pursuing this.  If
multiple people are interested in helping out, I encourage you to work
together, particularly if one of you is more experienced than the other--
teaching new people the way around the ircu source code is one of the
things I'm going for here :)
-- 
Kevin L. Mitchell <[EMAIL PROTECTED]>

Reply via email to