On 24/02/2014, at 9:33 PM, Henning Brauer wrote: > * Richard Procter <richard.n.proc...@gmail.com> [2014-01-25 20:41]: >> On 22/01/2014, at 7:19 PM, Henning Brauer wrote: >>> * Richard Procter <richard.n.proc...@gmail.com> [2014-01-22 06:44]: >>>> This fundamentally weakens its usefulness, though: a correct >>>> checksum now implies only that the payload likely matches >>>> what the last NAT router happened to have in its memory >>> huh? >>> we receive a packet with correct cksum -> NAT -> packet goes out with >>> correct cksum. >>> we receive a packet with broken cksum -> NAT -> we leave the cksum >>> alone, i. e. leave it broken. >> Christian said it better than me: routers may corrupt data >> and regenerating the checksum will hide it. > > if that happened we had much bigger problems than NAT.
By bigger problems do you mean obvious router stability issues? Suppose someone argued that as we'd have obvious stability issues if unprotected memory was unreliable, ECC memory is unnecessary. That argument is logically equivalent to what seems to be yours, that as we'd see obvious issues if routers were corrupting data, end-to-end checksums are unnecessary, but I don't buy it. We know that routers corrupt data. Right now my home firewall shows 30 TCP segments dropped for bad checksums. As checks at least as strong are used by every sane link-layer this virtually implies the dropped packets suffered router or end-point faults. Again, it's not just me saying it: "...checksums are used by higher layers to ensure that data was not corrupted in intermediate routers or by the sending or receiving host. The fact that checksums are typically the secondary level of protection has often led to suggestions that checksums are superfluous. Hard won experience, however, has shown that checksums are necessary. Software errors (such as buffer mismanagement) and even hardware errors (such as network adapters with poor DMA hardware that sometimes fail to fully DMA data) are surprisingly common [let alone memory faults! RP] and checksums have been very useful in protecting against such errors."[0] best, Richard. [0] Craig Partridge, Jim Hughes, and Jonathan Stone. 1995. Performance of checksums and CRCs over real data. SIGCOMM Comput. Commun. Rev. 25, 4 (October 1995), 68-76. DOI=10.1145/217391.217413 http://doi.acm.org/10.1145/217391.217413 page 1