[comp.protocols.tcp-ip] Checksum in FEP

RHX@CORNELLC.CCS.CORNELL.EDU (Dick Cogger) (04/07/88)

    Probably, the following suggestion has been discussed in the past,
but I haven't seen a reference:  Why not offload JUST the IP and TCP
checksumming to a Front End Processor (or controller board)?
   Doing so would require code operating at a lower layer to "peek" at
fields deeper in the packet, and protocol layer-bigots may object, but
it should work.
   For incoming packets, if the lap-type is IP (or the SNAP, etc.) then
checksum the header-- if bad drop the packet.  If the IP-type is TCP,
checksum the packet; if bad drop it.  In general, this is what the
higher layer in the host is going to do anyway.  If you trust the
channel or dualported memory used to get the packet from the controller
board, you could then rely on getting only good (in terms of checksums)
packets.
    For outgoing packets, the controller could make the same sort of
tests and calculate and fill in checksums only if the host had left them
as zero.
    In both cases, the host code could (re)do the checksumming if it
wanted to.  In any case, the programming interface to the host would
not be complicated (tcp, udp socket clients; multiple boards, etc.), but
a major source of host overhead would be offloaded.  Of course, the
fast host processor might still be able to execute the checksum faster
than a slow controller board.

Dick Cogger
RHX@CornellC.ccs.cornell.edu