.. _ndnSIM packet format:

ndnSIM packet format
====================

Basic field types
+++++++++++++++++

::

	uint8_t ::= 8-bit unsigned integer

	uint16_t ::= 16-bit unsigned integer

	uint32_t ::= 32-bit unsigned integer

	CHAR ::= 8-bit binary data

	Blob ::= Length CHAR{Length}

	Length ::= uint16_t

NDN Packet Type
+++++++++++++++

::

	Packet ::= Version 
		   PacketType
                   Length
		   (Interest | ContentObject)

        0                   1                   2                   3
        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
        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        |    Version    |   PacketType  |            Length             |
        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

For ccnb-encoding compatibility, ``Version`` / ``PacketType`` has two reserved values to denote ccnb-encoded packet:

Version 0x01, PacketType 0xD2 --- ccnb-encoded ``Interest`` packet
Version 0x04, PacketType 0x82 --- ccnb-encoded ``ContentObject`` packet


Version
~~~~~~~

::

	Version ::= uint8_t 

The current version of the packet format.  Right only value 0x80 is allowed.

PacketType
~~~~~~~~~~

::

	PacketType ::= uint8_t  

In the current version, two packet types are defined:

- ``Interest`` (``PacketType`` = 0)
- ``ContentObject`` (``PacketType`` = 1)

Any other value of PacketType is invalid and such a packet should be discarded.

Interest
++++++++

The objective of the new format is to optimize encoding/decoding operations.

::

	Interest ::= Nonce 
	     	     Scope
                     NackType
		     InterestLifetime 
	     	     Name 
	     	     Selectors 
	     	     Options

Minumum size of the Interest packet: 1 + 4 + 2 + 1 + (2 + 0) + (2 + 0) + (2 + 0) = 14

Maximum size of the Interest packet: 1 + 4 + 2 + 1 + (2 + 65535) + (2 + 65535) + (2 + 65535) = 196619

::

        0                   1                   2                   3
        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
        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        |                          Nonce                                |
        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        |     Scope     |   NackType    |      InterestLifetime         |
        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        |            Length             |                               |
	|-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               |
        ~                                                               ~
        ~                            Name                               ~
        |							        |	
        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        |            Length             |                               |
	|-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               |
        ~                                                               ~
        ~                          Selectors                            ~
        |							        |	
        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        |            Length             |                               |
	|-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               |
        ~                                                               ~
        ~                          Options                              ~
        |							        |	
        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


Nonce
~~~~~

::

	Nonce ::= uint32_t

NackType
~~~~~~~~

::

	NackType := uint8_t

Currently, ndnSIM defines following NackTypes:

- 0: NORMAL_INTEREST
- 10: NACK_LOOP
- 11: NACK_CONGESTION
- 12: NACK_GIVEUP_PIT

Values 128-255 are reserved for any application-specific and experimental purposes.


InterestLifetime
~~~~~~~~~~~~~~~~

::

	InterestLifetime := uint16_t 

Interest lifetime is specified in seconds.  Max value is about 18 hours.

Scope
~~~~~

::

	Scope ::= uint8_t 

Scope 0 prevents propagation beyond the local ccnd (even to other applications on the same host). Scope 1 limits propagation to the applications on the originating host. Scope 2 limits propagation to no further than the next host.

Name
~~~~

::

	Name ::= Length (NameComponent)*

	NameComponent ::= Blob


Selectors
~~~~~~~~~

::

	Selectors ::= Length (Selector)*

	Selector ::= MinSuffixComponents | MaxSuffixComponents | Publisher | Exclude | ChildSelector | AnswerOriginKind

All selectors are for now undefined

Options
~~~~~~~

::

	Options ::= Length (Option)*


.. .................................................................................................. ..
.. .................................................................................................. ..
.. .................................................................................................. ..
.. .................................................................................................. ..


ContentObject
+++++++++++++

::

	ContentObject ::= Name
                   	  Content
                          Signature

::

        0                   1                   2                   3
        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
        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        |            Length             |                               |
	|-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               |
        ~                                                               ~
        ~                             Name                              ~
        |							        |	
        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        |            Length             |                               |
	|-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               |
        ~                                                               ~
        ~                           Content                             ~
        |							        |	
        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        |            Length             |                               |
	|-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
        ~                                                               ~
        ~                           Signature                           ~
        |							        |	
        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


Signature
~~~~~~~~~

::

	Signature ::= Length 
		      SignatureType
		      <type-dependeds signature data>

Length specifies cumulative size of SignatureInfo and SignatureBits.  If SignatureType is not recognized, the received can either discard the packet or ignore the signature using Length field, specified combined length of SignatureType and SignatureType-dependent fields.

::

        0                   1                   2                   3
        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
        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        |           Length              |         SignatureType         |
	|-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        ~                                                               ~
        ~               <type-dependeds signature data>                 ~
        |							        |	
        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


SignatureType
^^^^^^^^^^^^^

::

	SignatureType ::= uint16_t

The current version specifies three type of signatures:

- 0x0000: empty signature
- 0x0001: SHA256 (not a real signature, but just a digest of the content)
- 0x0002: SHA256withRSA (real public-key signature based on SHA-256 digest)

Other values may be defined in future.

- Values greater or equal to 0xFF00 are for experimental purposes (e.g., for simulations)

<type-dependeds signature data>
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

+-------------------+---------------------------+
| SignatureType     |  SignatureData definition |
+===================+===========================+
| 0 (empty)         |  empty sequence           |
+-------------------+---------------------------+
| 1 (sha256)        |  CHAR{32}                 |
+-------------------+---------------------------+
| 2 (SHA256withRSA) |  CHAR{32} KeyLocator      |
+-------------------+---------------------------+

KeyLocator
^^^^^^^^^^

::

	KeyLocator ::= CertName
		       
	CertName ::= Name


Content
^^^^^^^

::

	Content ::= Length
		    ContentInfo
		    ContentData

Content length can be computed as:  Length - (1 - ContentInfo.Length)

::

        0                   1                   2                   3
        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
        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        |            Length             |       Length (content Info)   |
	|-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        |                           Timestamp                           |
	|-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        |           Freshness           |           Reserved            |
        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        |  Length (ContentInfoOptions)  |                               |
	|-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               |
        ~                                                               ~
        ~                       ContentInfoOptions                      ~
        |							        |	
        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        ~                                                               ~
        ~                         ContentData                           ~
        |							        |	
        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


ContentInfo
^^^^^^^^^^^

::

	ContentInfo ::= Length 
			Timestamp
			Freshness
			ContentOptions

Timestamp
~~~~~~~~~

::

	Timestamp ::= uint32_t

Timestamp specifies content generation time as Unix time timestamp (number of seconds since midnight 1/1/1970).

Freshness
~~~~~~~~~

::

	Freshness ::= uint16_t

Freshness specifies time in seconds (since Timestamp) for which the content is considered valid.  

Value 0xFFFF means that content is always valid.


ContentOptions
~~~~~~~~~~~~~~

::

	ContentOptions ::= Length
			   ContentOption*

	ContentOption ::= Type |
			  FinalBlockID


Not currently defined

