|
From: | Jan Ulvesten |
Subject: | [lwip-users] PPP bug related to VJ |
Date: | Fri, 23 Dec 2005 18:51:55 +0100 |
Hi It appears to be a problem related to VJ header compression
in PPP? The TCP unsent/unacked queue is
assumed to be uncompressed at the transport layer, but vj_compress_tcp()
called from pppifOutput() works directly on the TCP payload
which includes the segments tcp-header (seg->tcp_hdr). This isn’t a problem as long as the
segment isn’t retransmitted. A TCP retransmission causes undefined behavior, in my test
setup I observed that absolutely all TCP flags were set in a transmitted frame.
The connection was off course closed. In other tests I’ve seen that the
TCP checksum have been modified. Another issue that I’ve seen is that the VJ
compression does not implement the alignment rules. The payload pointer of pb may be odd after the call to vj_compress_tcp() Since VJ reduces the header size from 40 bytes (IP+TCP) to
around 8 bytes I would really like to use VJ, especially when using PPP on low bitrates. I’m not sure how to solve this. For now I just make a
copy of the first pbuf in the chain (assuming that this
pbuf contains both TCP and IP header) and then restores the original pbuf after
the compressed buffer has been used. Anyone who has the same experience? Jan Ulvesten Senior Software Engineer |
[Prev in Thread] | Current Thread | [Next in Thread] |