wiki:Proto/aArchitecture/MFPacket
close Warning: Can't synchronize with repository "(default)" ("(default)" is not readable or not a Git repository.). Look in the Trac log for more information.

Format

The following is the bitwise structure for a MobilityFirst packet:

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 Bit
0             1               2               3                 Octet 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   Version   |           Service Type        |  Protocol     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|        Payload Offset       |         Reserved              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                        Payload Size                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                                                             ~
|                        Source GUID                          |
~                                                             ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                        Source NA                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                                                             ~
|                        Destination GUID                     |
~                                                             ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                        Destination NA                       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                                                             ~
|                        Extension Header(s)                  |
~                                                             ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                                                             ~
|                        Payload                              |
~                                                             ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • Version - MobilityFirst network protocol version encoded as major.minor (4-bits each)
  • Service type - Encodes requested processing or delivery service(s); MSB of '1' indicates presence of one or more extension headers following the fixed header fields.
  • Protocol - Upper protocol identifier
  • Payload Offset - Offset after any variable length extension headers
  • Reserved - TODO to include hop count, checksum and other efficient/reliable routing enablers
  • Payload Size - data length in bytes
  • Source GUID - Source endpoint identifier; normally a 160-bit crypo-hash of the full GUID
  • Source NA - Topological address of attachment point of source EP. Optional, can be blank.
  • Destination GUID - Destination endpoint identifier; same format as src GUID
  • Destination NA - latest resolved address for destination EP; could be blank if unresolved.
  • Extension Headers - Used to encode non-basic SIDs and any parameters required in service handling
  • Payload - Data portion of the packet

Service Type (ST)

The table below lists the 16-bit values designated for 'basic' services in MobilityFirst network protocol. It is not expected that each network element support all of these services, and may either choose to ignore unsupported services (when makes sense) or report back a failure to packet originator.

Network service ST value Description
Default 0x0000 Unicast, block data transfer, temporary hold under poor downstream path conditions, dynamic NA resolution, late-binding
Multicast 0x0001
Anycast 0x0002
MultiHoming 0x0004
GUID-routing 0x0008 Flat routing, no GNRS resolution
Stream 0x0010
Real time 0x0020
Delay Tolerant 0x0040
Acknowledge on Store 0x0080
Acknowledge on Delivery 0x0100
Content Request 0x0200
Content Response 0x0400
Compute Layer Processing 0x0800
Source Routing 0x1000
Endpoint Broadcast 0x2000 broadcast of data blocks at the destination
Future 0x4000
Extended Services 0x8000

SIDs for services not included in the basic set above are accommodated as extended services with SID pattern of 0x8xxx. The services can be requested by adding extension headers under the particular SID.


Extension Headers

The following is the common format for extension headers:

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 Bit
0             1               2               3                 Octet 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|        Service Type         |          Next Header          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                                                             ~
|                 Service Arguments (optional)                |
~                                                             ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • Service Type - Encodes requested processing or delivery service(s); Here the MSB of '1' indicates indicates an extended service.
  • Next Header - Offset to next header or '0' when this is the last extension header.
  • Service Parameters - Parameters encoded in a format defined by particular service

Multihome Delivery Extension Header

The extension header to support additional locators for delivery to multi-homed endpoints is shown below:

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 Bit
0             1               2               3                 Octet 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|       Service Type          |          Next Header          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|       Multihome Options     | Src. NA Count | Dest. NA Count|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                                                             ~
|                         Source NA(s)                        |
~                                                             ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                                                             ~
|                         Destination NA(s)                   |
~                                                             ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • Multihome Options - TBD
  • Src. NA Count / Dest. NA Count - Number locator entries for source and (followed by) destination endpoints; maximum of 256 entries for each
  • Source NA / Destination NA - Route-able addresses for EPs; Source NAs may be populated by source, while the destination NAs be populated as a result of GNRS resolution

Compute Layer Service Extension Header

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 Bit
0             1               2               3                 Octet 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|        Service Type         |          Next Header          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                                                             ~
|                   Compute Service GUID                      |
~                                                             ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|       Arguments Count       |         Results Count         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                                                             ~
|                   Compute Service Arguments                 |
~                                                             ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                                                             ~
|                   Compute Service Results                   |
~                                                             ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

  • Compute Service GUID - GUID of the compute plane service to be invoked on the payload
  • Arguments/Results Count - number of arguments and number of results (post processing) to and from the processing of the payload. This is besides any changes to the payload itself. TBD - if the payload changes in some way (e.g., size, checksum) the results should indicate these changes so stack layers may take it into consideration when validating the payload.
  • Compute Service Arguments - arguments in TLV, for instance, with pre-defined types and length for each argument expected by the compute service.
  • Compute Service Results - results encoded in TLV, for instance, with pre-defined types well known to the routing layer. These results may chiefly help the routing/transport layers to understand changes to the payload
Last modified 9 years ago Last modified on Nov 30, 2014, 4:34:52 AM
Note: See TracWiki for help on using the wiki.