File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / quagga / doc / appendix.texi
Revision 1.1.1.2 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Wed Nov 2 10:09:11 2016 UTC (7 years, 8 months ago) by misho
Branches: quagga, MAIN
CVS tags: v1_0_20160315, HEAD
quagga 1.0.20160315

    1: @node  Packet Binary Dump Format
    2: @appendix Packet Binary Dump Format
    3: 
    4:   Quagga can dump routing protocol packet into file with a binary format
    5: (@pxref{Dump BGP packets and table}).
    6: 
    7:   It seems to be better that we share the MRT's header format for
    8: backward compatibility with MRT's dump logs. We should also define the
    9: binary format excluding the header, because we must support both IP
   10: v4 and v6 addresses as socket addresses and / or routing entries.
   11: 
   12:   In the last meeting, we discussed to have a version field in the
   13: header. But Masaki told us that we can define new `type' value rather
   14: than having a `version' field, and it seems to be better because we
   15: don't need to change header format.
   16: 
   17:   Here is the common header format. This is same as that of MRT.
   18: 
   19: @example
   20: @group
   21: 0                   1                   2                   3
   22: 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
   23: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   24: |                              Time                             |
   25: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   26: |             Type              |            Subtype            |
   27: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   28: |                             Length                            |
   29: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   30: @end group
   31: @end example
   32: 
   33:   If `type' is PROTOCOL_BGP4MP_ET, the common header format will
   34: contain an additional microsecond field (RFC6396 2011).
   35: 
   36: @example
   37: @group
   38: 0                   1                   2                   3
   39: 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
   40: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   41: |                              Time                             |
   42: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   43: |             Type              |            Subtype            |
   44: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   45: |                             Length                            |
   46: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   47: |                          Microsecond                          |
   48: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   49: @end group
   50: @end example
   51: 
   52:   If `type' is PROTOCOL_BGP4MP, `subtype' is BGP4MP_STATE_CHANGE, and
   53: Address Family == IP (version 4)
   54: 
   55: @example
   56: @group
   57:  0                   1                   2                   3
   58:  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
   59: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   60: |        Source AS number       |     Destination AS number     |
   61: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   62: |        Interface Index        |      Address Family           |
   63: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   64: |                        Source IP address                      |
   65: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   66: |                     Destination IP address                    |
   67: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   68: |            Old State          |           New State           |
   69: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   70: @end group
   71: @end example
   72: 
   73: Where State is the value defined in RFC1771.
   74: 
   75: If `type' is PROTOCOL_BGP4MP, `subtype' is BGP4MP_STATE_CHANGE,
   76: and Address Family == IP version 6
   77: 
   78: @example
   79: @group
   80:  0                   1                   2                   3
   81:  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
   82: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   83: |        Source AS number       |     Destination AS number     |
   84: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   85: |        Interface Index        |      Address Family           |
   86: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   87: |                        Source IP address                      |
   88: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   89: |                        Source IP address (Cont'd)             |
   90: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   91: |                        Source IP address (Cont'd)             |
   92: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   93: |                        Source IP address (Cont'd)             |
   94: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   95: |                     Destination IP address                    |
   96: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   97: |                     Destination IP address (Cont'd)           |
   98: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   99: |                     Destination IP address (Cont'd)           |
  100: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  101: |                     Destination IP address (Cont'd)           |
  102: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  103: |            Old State          |           New State           |
  104: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  105: @end group
  106: @end example
  107: 
  108: If `type' is PROTOCOL_BGP4MP, `subtype' is BGP4MP_MESSAGE,
  109: and Address Family == IP (version 4)
  110: 
  111: @example
  112: @group
  113:  0                   1                   2                   3
  114:  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
  115: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  116: |        Source AS number       |     Destination AS number     |
  117: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  118: |        Interface Index        |      Address Family           |
  119: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  120: |                        Source IP address                      |
  121: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  122: |                     Destination IP address                    |
  123: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  124: |                       BGP Message Packet                      |
  125: |                                                               |
  126: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  127: @end group
  128: @end example
  129: 
  130: Where BGP Message Packet is the whole contents of the
  131: BGP4 message including header portion.
  132: 
  133: If `type' is PROTOCOL_BGP4MP, `subtype' is BGP4MP_MESSAGE,
  134: and Address Family == IP version 6
  135: 
  136: @example
  137: @group
  138:  0                   1                   2                   3
  139:  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
  140: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  141: |        Source AS number       |     Destination AS number     |
  142: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  143: |        Interface Index        |      Address Family           |
  144: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  145: |                        Source IP address                      |
  146: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  147: |                        Source IP address (Cont'd)             |
  148: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  149: |                        Source IP address (Cont'd)             |
  150: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  151: |                        Source IP address (Cont'd)             |
  152: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  153: |                     Destination IP address                    |
  154: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  155: |                     Destination IP address (Cont'd)           |
  156: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  157: |                     Destination IP address (Cont'd)           |
  158: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  159: |                     Destination IP address (Cont'd)           |
  160: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  161: |                       BGP Message Packet                      |
  162: |                                                               |
  163: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  164: @end group
  165: @end example
  166: 
  167: If `type' is PROTOCOL_BGP4MP, `subtype' is BGP4MP_ENTRY,
  168: and Address Family == IP (version 4)
  169: 
  170: @example
  171: @group
  172:  0                   1                   2                   3
  173:  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
  174: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  175: |            View #             |            Status             |
  176: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  177: |                        Time Last Change                       |
  178: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  179: |       Address Family          |    SAFI       | Next-Hop-Len  |
  180: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  181: |                        Next Hop Address                       |
  182: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  183: | Prefix Length |             Address Prefix [variable]         |
  184: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  185: |       Attribute Length        |
  186: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  187: |      BGP Attribute [variable length]    			|
  188: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  189: @end group
  190: @end example
  191: 
  192: If `type' is PROTOCOL_BGP4MP, `subtype' is BGP4MP_ENTRY,
  193: and Address Family == IP version 6
  194: 
  195: @example
  196: @group
  197:  0                   1                   2                   3
  198:  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
  199: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  200: |            View #             |            Status             |
  201: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  202: |                        Time Last Change                       |
  203: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  204: |       Address Family          |    SAFI       | Next-Hop-Len  |
  205: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  206: |                        Next Hop Address                       |
  207: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  208: |                        Next Hop Address (Cont'd)              |
  209: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  210: |                        Next Hop Address (Cont'd)              |
  211: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  212: |                        Next Hop Address (Cont'd)              |
  213: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  214: | Prefix Length |             Address Prefix [variable]         |
  215: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  216: |     Address Prefix (cont'd) [variable]        |
  217: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  218: |       Attribute Length        |
  219: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  220: |      BGP Attribute [variable length]    			    |
  221: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  222: @end group
  223: @end example
  224: 
  225: 	BGP4 Attribute must not contain MP_UNREACH_NLRI.
  226: 	If BGP Attribute has MP_REACH_NLRI field, it must has
  227: 	zero length NLRI, e.g., MP_REACH_NLRI has only Address
  228: 	Family, SAFI and next-hop values.
  229: 
  230: If `type' is PROTOCOL_BGP4MP and `subtype' is BGP4MP_SNAPSHOT,
  231: 
  232: @example
  233: @group
  234:  0                   1                   2                   3
  235:  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
  236: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  237: |           View #              |       File Name [variable]    |
  238: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  239: @end group
  240: @end example
  241: 
  242:     The file specified in "File Name" contains all routing entries,
  243:     which are in the format of ``subtype == BGP4MP_ENTRY''.
  244: 
  245: @example
  246: @group
  247: Constants:
  248:   /* type value */
  249:   #define MSG_PROTOCOL_BGP4MP    16
  250:   #define MSG_PROTOCOL_BGP4MP_ET 17
  251:   /* subtype value */
  252:   #define BGP4MP_STATE_CHANGE 0
  253:   #define BGP4MP_MESSAGE 1
  254:   #define BGP4MP_ENTRY 2
  255:   #define BGP4MP_SNAPSHOT 3
  256: @end group
  257: @end example

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>