On Sun, 07 Sep 2003 21:53:34 +0200, Peter Graf wrote:

> Thierry wrote:
> 
> >Yes, this I know, thanks... I'm perfectly aware of the fragmentation and of
> >out of order receipt of TCP packets... That doesn't change the fact you could
> >use the fast interrupt to store as many TCP packet as needed (i.e. when they
> >come in), into a buffer (organized as a linked list of recieved packets),
> >then to transfer the whole lot of packets to the higher level layers of the
> >TCP/IP stack at once and every 1/50th of second...
> 
> Obviously correct but useless. Try to understand that the problem in your 
> approach is latency and can not be solved by buffering, no matter how 
> efficient buffering is implemented.

>From the computer sending packets to a Qx0, the latency would just be seen
as a longer route... When you ping a computer on Internet, you have to
wait a variable amount of time for the reply, depending on how many routers
must be crossed, on how long are the wires (for trans-oceanic links, or worst
for satellite links, it's far than neglectable), and how fast and/or busy is
the receiver...

If the topographic design of the network between a PC and a Q60 should lead
to, say, a 200ms delay in the reply, then the TCP/IP implementation on the
Q60 would simply add a 20ms latency to this number, but in the end, the
sender should still receive its ACKs between 200 and 220ms after the packets
are sent...

Of course, this supposes that the acknowledgement is -actually- done every
20ms in the Q60, which is -NOT- the case if it's done at the job level (jobs
are elected or not, depending on their cumulated priority and are therefore
-NOT- running each 20ms unless they are alone in memory)...

The code for reassembling the fragmented packets and acknowledging them
must be implemented either as a frame interrupt, or (if frame interrupts
are still too slow for your taste), by using a polled routine triggered
by the Q60 fast interrupt (the one used by the sound system).

The struture for the whole TCP/IP stack would then be:

1.- IP packets fetching from the I/F and buffering:
    - External interrupt handler (best), or fast interrupt polling loop.
2.- IP packets reassembling and acknowledging:
    - polled task: fast interrupt handler (best) or frame interrupt.
3.- TCP/IP high level protocols:
    - High priority (127) job.

How does this sound ?

Thierry.

Reply via email to