Skip to content

parc-ccnx-archive/CCNxz

Repository files navigation

CCNxz

Compressed CCNx uses TLV-aware compression to reduce the overhead of TL encoding. It also learns common TLV tuples (like keyid or public keys) and compresses them.

This is experimental code related to a compressed TLV encoding. Please see the included presentation ccnxz-slides.pdf (also available at ICNRG) for details on the compression scheme.

TXT to Binary

xxd -r -g 1 -c 8 infile outfile

Examples:

xxd -r -g 1 -c 8 examples/tiny_interest.txt tiny_interest.bin
./ccnxz.py tiny_interest.bin
xxd -g 1 -c 8 compressed

Simple Testing

The ccnxz.py script will run the (de)compressor on a file. The input file should be one packet in wire format. The output will be the (de)compressed wireformat.

./ccnxz [-d] input output

-d means to decompress input to output

Live testing

Client A -- [Metis A --] ccnxz_relay A -- ccnxz_channel -- ccnxz_relay B [-- Metis B] -- Client B
  • Clients A and B are CCNx applications of your choice. We include a simple traffic generator.
  • Metis is the standard CCNx forwarder. It needs to run in UDP mode. If your client applications speak UDP directly, then Metis is not needed.
  • ccnxz_relay is a UDP relay to (de)compress CCNx packets
  • ccnxz_channel is a channel emulator to add bit error rate and delay. It is optional.

ccnxz_relay is configured with a local port and the UDP socket addresses of its two peers. Lets assume everything is going to run on localhost, and we'll skip Metis for now and assume client A and B speak UDP directly.

  • Client A (or Metis A): port 10000
  • ccnxz_relay A: port 10001
  • ccnxz_channel: port 10002
  • ccnxz_relay B: port 10003
  • Client B (or Metis B): port 10004

Example

You would then use these commands:

# make a 100 MB file.bin, you could substitute other files here
mkdir files
dd if=/dev/random of=files/file.bin bs=1000000 count=100

# Start a server, relay chain, channel emulator, and client
ccnxz_gen     -p 10000 --server --prefix lci:/ccnxz --directory files
ccnxz_relay   -p 10001 --peers 127.0.0.1:10000 127.0.0.1:10002
ccnxz_channel -p 10002 --peers 127.0.0.1:10001 127.0.0.1:10003 --ber 10E-4 --delay 0.1
ccnxz_relay   -p 10003 --peers 127.0.0.1:10002 127.0.0.1:10004
ccnxz_gen     -p 10004 --client --name lci:/ccnxz/files/file.bins --peer 127.0.0.1:10003

Then start up your two applications on port 10000 and 10004.

About

Experimental compression encoding for CCNx

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages