Author Topic: AstraWeb introduse header compression  (Read 3853 times)

Offline Phobos666

  • Contributor
  • ***
  • Posts: 2
AstraWeb introduse header compression
« on: January 09, 2009, 08:47:57 pm »
For news reader authors: To download compressed headers.

We have recently introduced two new commands at the server level which require news reader authors to implement in order to take advantage of the faster header downloads.
By extending the NNTP protocol and incorporating header compression directly into the server with support from news readers, you will not need to run any additional, complicated proxy style applications (accelerators). You won't need to worry about configuring proxies/accelerators to bypass firewalls.

Some advantages you will notice by using compressed headers:
- You download less data as it is all compressed. This is a big bonus for those with ISPs that have monthly data caps.
- Your downloads finish faster, giving a perceived header download speed increase between 5-15 times faster.



A number of members have asked us why we've only implemented header compression for Newsbin.
That is a bit misleading. Header compression is not specific to Newsbin. Newsbin happens to be the first to implement the necessary code to communicate with our servers to download compressed headers.
If you have a favorite news reader that is not Newsbin, please ask the author of that news reader to implement these simple NNTP extensions in order for you to also enjoy the benefits of faster header downloads.



The following is some informal specifications for implementing client side compressed headers. It is intended for news reader authors, or for other usenet companies to implement too.
Suggestions, corrections or additions are welcome.



============================================================

We are proposing two new commands as an extension to the NNTP protocol: XZVER and XZHDR as counterparts to XOVER and XHDR respectively.
These two new optional commands will appear in the list returned from the "HELP" command.


Request: XZVER [range]
Response:

224 compressed data follows
=ybegin line=128 size=-1

=yend crc=FFFFFFFF
.


Request: XZHDR header [range]
Response

221 compressed data follows
=ybegin line=128 size=-1

=yend crc=FFFFFFFF
.


Where [range] is in the standard article number range as per XOVER.
Notes:
- The multi-line responses conform to standard NNTP protocol with a single period "." on a line by itself.
- Line terminals are \r\n
- The actual XOVER / XHDR response is compressed with zlib, then yEnc encoded.
- The compression conforms with zlib's deflate() method and there is NO gzip done on it. ie. Just pure gzip'ed data with no extra padding info to make it gzip-file compliant.
- The yEnc spec requires that the "size" parameter in "=ybegin line=123 size=456" be present, but for efficiency and performance sake, the total size is not known ahead of time so it has been set to some arbitrary value that should be ignored. The yEnc CRC32 value should be sufficient to validate the payload. On top of that, zlib has builtin adler32 which is an alternate form of CRC32.


It is assumed that the implementation for XZVER be duplicated from XOVER, with two additional steps at the end, that being: yEnc decode the data, then zlib inflate the data.
============================================================

Would you integrate Header compression to Alt.Binz?

Offline Hecks

  • Contributor
  • ***
  • Posts: 2011
  • naughty cop
Re: AstraWeb introduse header compression
« Reply #1 on: January 09, 2009, 10:40:55 pm »
Good on Astra for trying to extend the NNTP protocol, about time someone tried ... and with yEnc encoding too. :)

BUT as Alt.Binz doesn't actually handle any headers at all, there'd be no point implementing it.  It never issues the XOVER or XHDR commands in the first place ...
« Last Edit: January 09, 2009, 10:46:20 pm by Hecks »