[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: CRC-16 or CRC-32



Arne Lie wrote:
-----Original Message-----
From: linux-ppp-owner@xxxxxxxxxxxxxxx [mailto:linux-ppp-
owner@xxxxxxxxxxxxxxx] On Behalf Of Milan P. Stanic
Sent: 20. april 2010 17:10
To: linux-ppp@xxxxxxxxxxxxxxx
Subject: Re: CRC-16 or CRC-32

On Tue, 2010-04-20 at 16:49, Jan Just Keijser wrote:
Arne Lie wrote:
Hm, my observations are that if there are bit errors introduced in
the PPP frame, the "ifconfig ppp0" will count such packets in the
"error" tab. From this I anticipated that the PPP stack included CRC
checking of its payload. By CRC-16 I mean 2 byte CRC, CRC-32 4 byte.
Our customer wants 4 byte CRC. From RFC2823 I see both are mentioned.
The question is, how does one select either? Perhaps it is not
configurable via pppd?
RFC2823 is about PPP SDL on SONET/SDH ; AFAIK the pppd code does not
support this *at all* so I am not surprised that I did not find any
references to CRCs in the headers...

So the short answer to your question would be: no, PPP v2.4.5 does
not support CRC-16 or CRC-32.
In Linu CRC is done in kernel ppp driver not the ppp daemon.
ZLIB compression uses crc-32, AFAIR.
[Arne::] Milan, thanks for your information. Yes, the CRC is done in the kernel part of PPP. My question was how, of possible, one could select CRC-16 or CRC-32 to be activated using options when starting pppd (in a similar manner as one is able to select compression algorithm). In http://fixunix.com/ppp/62264-hdlc-like-framing.html James Carson says that the Solaris implementation of pppd make it possible to negotiate to CRC-32. I read your answer this way: by choosing the deflate compression algorithm, which I believe is using ZLIB, then we *are* using the CRC-32 since it defaults to this.
/Arne
ah I've learned something myself here :)

unpacked the linux sources (2.6.28 which I had at hand) and checked the ppp module code:

ppp_async includes some CRC support BUT it only supports 'crc_ccitt_byte' which is a 16bit CRC. The problem now is, which CRC32 needs to be suppported? according to
 http://en.wikipedia.org/wiki/Cyclic_redundancy_check

"there are three polynomials reported for CRC-12, thirteen conflicting definitions of CRC-16, and six of CRC-32"

the second problem is: if you want to add CRC32 support then you'd have to get it into the linux kernel . that will take *quite* some time (unless you can live with patched linux kernels).

cheers,

JJK / Jan Just Keijser

--
To unsubscribe from this list: send the line "unsubscribe linux-ppp" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Linux Audio Users]     [Hams]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Photo]     [Yosemite Photos]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Linux Resources]     [Fedora Users]

Powered by Linux