Re: Question on PE Checksum

Thomas Dreibholz <[email protected]> Fri, 22 Jul 2005 12:36:07 +0200
Newsgroups gmane.ietf.rserpool
Message-ID <[email protected]>
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Dear Michael, Walter,

see my comments in-line.

> the question is not if it is available in a programming language, but
> if it is available on all processors the protocol runs on.
> And that point is what I'm not sure about. And I'm not talking
> about about servers or workstations, but processors used in embedded
> devices and so on.

What devices and CPUs do you imagine? The checksum computation is only part of 
ENRP, i.e. only registrars have to do it. I think that running a registrar 
may be a job for routers. Having a look at the hardware of a Cisco 2500 
router (http://www.cisco.com/warp/public/63/arch_2500_5750.shtml) - which is 
a quite low-end device - the CPU is a Motorola 68030 32-bit CPU with 20 or 25 
MHz. This CPU generation - although about 15 years old - will have no 
problems with the 32-bit checksum example code Walter mentioned 
(http://www.csee.usf.edu/~christen/tools/check32.c).


> The other point is that people do have some highly optimized code
> for the 16 bit stuff, but not for the 32 bit stuff. But they can build
> it if the processor supports 64 bit integer arithmetic.

Well, the 32 bit example code Walter mentioned 
(http://www.csee.usf.edu/~christen/tools/check32.c) has to check for an 
overflow every 4 bytes + for up to 3 remaining bytes. But the important 
question is: Does this really add significant runtime to a registrar 
implementation?

1. The checksum computation code for a full PE entry is invoked only when a PE 
is registered via ASAP_REGISTRATION or added from a peer by ENRP_UPDATE. When 
the PE is deregistered or its information is updated, the checksum may be 
computed incrementally. I do not assume that there are thousands of 
registrations per second - even in very large pools. That is, full checksum 
computations occur rarely.

2. The checksum is not computed over a "large" amount of bytes. Section 3.11.2 
of ENRP-12 defines that it is computed over PH and PE ID (4 bytes). I assume 
that the length of a realistic PH is may be up to 128 bytes. That is, when a 
checksum has to be computed, it is computed over "a few bytes" only.

In summary, full checksum computation occurs rarely and is not very expensive 
on realistic CPUs. If a device running a registrar already has 
performance problems with computing the checksum, it will have orders of 
magnitude more problems maintaining SCTP associations, handling ASAP/ENRP 
communications and managing the handlespace.


The real question is: Is it useful to decrease the probability of having an 
undetected handlespace inconsistency from 1/65536 to 1/(2^32) by using the 
32-bit checksum instead of the 16-bit one? The problem of an inconsistency is 
that a registrar may wrongly assume the existence or non-existence of PEs. 
That is, PUs get non-existing PE entries (PEs already deregistered but the 
registrar still has them in its handlespace copy) or PUs will not get an 
appropriate PE entry (PEs are registered but the registrar does not know). 

The impact of such inconsistencies of course depends on the application, but 
it could possibly be severe. Therefore, it is IMHO useful to choose the better 
32-bit algorithm until someone either proves that (1) the impact of 
handlespace inconsistencies is in any case unproblematic or (2) there are 
realistic devices on which the checksum computation becomes a bottleneck.


Best regards
- -- 
=======================================================================
 Dipl.-Inform. Thomas Dreibholz

 University of Essen,                            Room ES210
 Inst. for Experimental Mathematics              Ellernstraße 29
 Computer Networking Technology Group            D-45326 Essen/Germany
- -----------------------------------------------------------------------
 E-Mail:     [email protected]
 Homepage:   http://www.exp-math.uni-essen.de/~dreibh
=======================================================================
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)

iD8DBQFC4Mwd32BbsHYPLWURApnaAJ41OxpD1Yz6O12m6RNVkSYWvHsiWwCeIw9a
HvCZEHp4bsmRNvQCSBBsNGs=
=IlON
-----END PGP SIGNATURE-----