<div dir="ltr"><div class="gmail_default" style=""><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">Hi,</font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif"><br></font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">I would like to propose a couple of modifications to pcap-ng</font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">specification based on the rationale stated below.</font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif"><br></font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">Regards,</font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif"><br></font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">Serge</font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif"><br></font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif"><b><br></b></font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif"><b>Rationale</b></font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">   When working with very chatty protocols (e.g. financial market data)</font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">   it's important to reduce the overhead introduced by the file format</font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">   in order to conserve the overall file size (which for some financial</font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">   exchanges is measured in tens to hundreds of gigabytes per day).</font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">   </font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">   This proposal introduces the format that extends the option</font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">   definition to be able to store values in place of the option length</font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">   field, therefore reducing the size of the option code/value pair to</font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">   four octets.</font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">   </font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">   Additionally all values except for the timestamp are moved from the</font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">   fixed portion of the block into options.</font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">   </font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">   The Options are placed before the packet data, so that some</font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">   characteristics of the packet's data can be learned from options</font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">   before reading the packet data (e.g. compression type, captured</font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">   length).  If there are no options defined, there will be just one</font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">   'opt_endofopt' option entry.</font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">   </font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif"><b>3.5 Options</b></font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">   Proposed extention to Options includes a special option value setting</font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">   the highest bit of the "Option Code" to 1 and leaving remaining 7 bits</font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">   of space for 127 possible option codes.  The remaining 24 bits will be</font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">   used for storing the option's value:</font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif"><br></font></div><div class="gmail_default" style=""><font face="monospace, monospace">    0                   1                   2                   3</font></div><div class="gmail_default" style=""><font face="monospace, monospace">    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1</font></div><div class="gmail_default" style=""><font face="monospace, monospace">   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</font></div><div class="gmail_default" style=""><font face="monospace, monospace">   |1| Option Code |                  Option Value                 |</font></div><div class="gmail_default" style=""><font face="monospace, monospace">   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</font></div><div class="gmail_default" style=""><font face="monospace, monospace">   </font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">   This layout saves 4 bytes for options with compact values, such as</font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">   the ones described in the following packet block.</font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif"><br></font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif"><br></font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif"><b>5.1 Alternative Packet Block</b></font></div><div class="gmail_default" style=""><font face="monospace, monospace">    0                   1                   2                   3</font></div><div class="gmail_default" style=""><font face="monospace, monospace">    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1</font></div><div class="gmail_default" style=""><font face="monospace, monospace">   +---------------------------------------------------------------+</font></div><div class="gmail_default" style=""><font face="monospace, monospace"> 0 |                    Block Type = 0x00000010                    |</font></div><div class="gmail_default" style=""><font face="monospace, monospace">   +---------------------------------------------------------------+</font></div><div class="gmail_default" style=""><font face="monospace, monospace"> 4 |                      Block Total Length                       |</font></div><div class="gmail_default" style=""><font face="monospace, monospace">   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</font></div><div class="gmail_default" style=""><font face="monospace, monospace"> 8 |                        Timestamp (High)                       |</font></div><div class="gmail_default" style=""><font face="monospace, monospace">   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</font></div><div class="gmail_default" style=""><font face="monospace, monospace">12 |                        Timestamp (Low)                        |</font></div><div class="gmail_default" style=""><font face="monospace, monospace">   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</font></div><div class="gmail_default" style=""><font face="monospace, monospace">16 /                                                               /</font></div><div class="gmail_default" style=""><font face="monospace, monospace">   /                      Options (variable)                       /</font></div><div class="gmail_default" style=""><font face="monospace, monospace">   /                                                               /</font></div><div class="gmail_default" style=""><font face="monospace, monospace">   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</font></div><div class="gmail_default" style=""><font face="monospace, monospace">   /                                                               /</font></div><div class="gmail_default" style=""><font face="monospace, monospace">   /                          Packet Data                          /</font></div><div class="gmail_default" style=""><font face="monospace, monospace">   /              variable length, padded to 32 bits               /</font></div><div class="gmail_default" style=""><font face="monospace, monospace">   /                                                               /</font></div><div class="gmail_default" style=""><font face="monospace, monospace">   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</font></div><div class="gmail_default" style=""><font face="monospace, monospace">   |                      Block Total Length                       |</font></div><div class="gmail_default" style=""><font face="monospace, monospace">   +---------------------------------------------------------------+</font></div><div class="gmail_default" style=""><font face="monospace, monospace">   </font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">   Captured Packet Length  -  Length of the packet </font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">   </font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">   </font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">Options:</font></div><div class="gmail_default" style=""><font face="monospace, monospace">   Name          Code  Length  Multiple?  Description</font></div><div class="gmail_default" style=""><font face="monospace, monospace">   apb_opt_size  0x81  -       no         Total byte size of options</font></div><div class="gmail_default" style=""><font face="monospace, monospace">   apb_capt_len  0x82  -       no         Packet's Captured Length</font></div><div class="gmail_default" style=""><font face="monospace, monospace">   apb_orig_len  0x83  -       no         Packet's Original Length</font></div><div class="gmail_default" style=""><font face="monospace, monospace">   apt_flags     0x84  -       no         Alternative Packet Block Flags</font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif"><br></font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">Alternative Packet Block Flags:</font></div><div class="gmail_default" style=""><font face="monospace, monospace">   Bits     Description</font></div><div class="gmail_default" style=""><font face="monospace, monospace">   0-1      Direction</font></div><div class="gmail_default" style=""><font face="monospace, monospace">                00 = unspecified</font></div><div class="gmail_default" style=""><font face="monospace, monospace">                01 = inbound packet</font></div><div class="gmail_default" style=""><font face="monospace, monospace">                10 = outbound packet</font></div><div class="gmail_default" style=""><font face="monospace, monospace">   2-3<span class="" style="white-space:pre">   </span>    Reception type</font></div><div class="gmail_default" style=""><font face="monospace, monospace">                00 = unspecified</font></div><div class="gmail_default" style=""><font face="monospace, monospace">                01 = unicast</font></div><div class="gmail_default" style=""><font face="monospace, monospace">                10 = multicast</font></div><div class="gmail_default" style=""><font face="monospace, monospace">                11 = broadcast</font></div><div class="gmail_default" style=""><font face="monospace, monospace">   4-11     Compression type</font></div><div class="gmail_default" style=""><font face="monospace, monospace">                0  = uncompressed</font></div><div class="gmail_default" style=""><font face="monospace, monospace">                1  = lzw</font></div><div class="gmail_default" style=""><font face="monospace, monospace">                2  = gzip</font></div><div class="gmail_default" style=""><font face="monospace, monospace">                3  = bzip2</font></div><div class="gmail_default" style=""><font face="monospace, monospace">                4  = zip</font></div><div class="gmail_default" style=""><font face="monospace, monospace">                5  = 7z</font></div><div class="gmail_default" style=""><font face="monospace, monospace">                6  = lzo</font></div><div class="gmail_default" style=""><font face="monospace, monospace">                7  = ucl</font></div><div class="gmail_default" style=""><font face="monospace, monospace">                8  = snappy</font></div><div class="gmail_default" style=""><font face="monospace, monospace">                ...</font></div><div class="gmail_default" style=""><font face="monospace, monospace">   12-19    Reserved</font></div></div></div>