File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / quagga / doc / appendix.texi
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 17:26:11 2012 UTC (12 years, 4 months ago) by misho
Branches: quagga, MAIN
CVS tags: v0_99_22p0, v0_99_22, v0_99_21, v0_99_20_1, v0_99_20, HEAD
quagga

    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, `subtype' is BGP4MP_STATE_CHANGE, and
   34: Address Family == IP (version 4)
   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: |        Source AS number       |     Destination AS number     |
   42: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   43: |        Interface Index        |      Address Family           |
   44: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   45: |                        Source IP address                      |
   46: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   47: |                     Destination IP address                    |
   48: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   49: |            Old State          |           New State           |
   50: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   51: @end group
   52: @end example
   53: 
   54: Where State is the value defined in RFC1771.
   55: 
   56: If `type' is PROTOCOL_BGP4MP, `subtype' is BGP4MP_STATE_CHANGE,
   57: and Address Family == IP version 6
   58: 
   59: @example
   60: @group
   61:  0                   1                   2                   3
   62:  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
   63: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   64: |        Source AS number       |     Destination AS number     |
   65: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   66: |        Interface Index        |      Address Family           |
   67: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   68: |                        Source IP address                      |
   69: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   70: |                        Source IP address (Cont'd)             |
   71: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   72: |                        Source IP address (Cont'd)             |
   73: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   74: |                        Source IP address (Cont'd)             |
   75: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   76: |                     Destination IP address                    |
   77: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   78: |                     Destination IP address (Cont'd)           |
   79: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   80: |                     Destination IP address (Cont'd)           |
   81: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   82: |                     Destination IP address (Cont'd)           |
   83: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   84: |            Old State          |           New State           |
   85: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   86: @end group
   87: @end example
   88: 
   89: If `type' is PROTOCOL_BGP4MP, `subtype' is BGP4MP_MESSAGE,
   90: and Address Family == IP (version 4)
   91: 
   92: @example
   93: @group
   94:  0                   1                   2                   3
   95:  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
   96: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   97: |        Source AS number       |     Destination AS number     |
   98: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   99: |        Interface Index        |      Address Family           |
  100: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  101: |                        Source IP address                      |
  102: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  103: |                     Destination IP address                    |
  104: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  105: |                       BGP Message Packet                      |
  106: |                                                               |
  107: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  108: @end group
  109: @end example
  110: 
  111: Where BGP Message Packet is the whole contents of the
  112: BGP4 message including header portion.
  113: 
  114: If `type' is PROTOCOL_BGP4MP, `subtype' is BGP4MP_MESSAGE,
  115: and Address Family == IP version 6
  116: 
  117: @example
  118: @group
  119:  0                   1                   2                   3
  120:  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
  121: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  122: |        Source AS number       |     Destination AS number     |
  123: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  124: |        Interface Index        |      Address Family           |
  125: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  126: |                        Source IP address                      |
  127: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  128: |                        Source IP address (Cont'd)             |
  129: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  130: |                        Source IP address (Cont'd)             |
  131: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  132: |                        Source IP address (Cont'd)             |
  133: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  134: |                     Destination IP address                    |
  135: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  136: |                     Destination IP address (Cont'd)           |
  137: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  138: |                     Destination IP address (Cont'd)           |
  139: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  140: |                     Destination IP address (Cont'd)           |
  141: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  142: |                       BGP Message Packet                      |
  143: |                                                               |
  144: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  145: @end group
  146: @end example
  147: 
  148: If `type' is PROTOCOL_BGP4MP, `subtype' is BGP4MP_ENTRY,
  149: and Address Family == IP (version 4)
  150: 
  151: @example
  152: @group
  153:  0                   1                   2                   3
  154:  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
  155: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  156: |            View #             |            Status             |
  157: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  158: |                        Time Last Change                       |
  159: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  160: |       Address Family          |    SAFI       | Next-Hop-Len  |
  161: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  162: |                        Next Hop Address                       |
  163: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  164: | Prefix Length |             Address Prefix [variable]         |
  165: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  166: |       Attribute Length        |
  167: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  168: |      BGP Attribute [variable length]    			|
  169: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  170: @end group
  171: @end example
  172: 
  173: If `type' is PROTOCOL_BGP4MP, `subtype' is BGP4MP_ENTRY,
  174: and Address Family == IP version 6
  175: 
  176: @example
  177: @group
  178:  0                   1                   2                   3
  179:  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
  180: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  181: |            View #             |            Status             |
  182: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  183: |                        Time Last Change                       |
  184: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  185: |       Address Family          |    SAFI       | Next-Hop-Len  |
  186: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  187: |                        Next Hop Address                       |
  188: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  189: |                        Next Hop Address (Cont'd)              |
  190: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  191: |                        Next Hop Address (Cont'd)              |
  192: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  193: |                        Next Hop Address (Cont'd)              |
  194: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  195: | Prefix Length |             Address Prefix [variable]         |
  196: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  197: |     Address Prefix (cont'd) [variable]        |
  198: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  199: |       Attribute Length        |
  200: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  201: |      BGP Attribute [variable length]    			    |
  202: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  203: @end group
  204: @end example
  205: 
  206: 	BGP4 Attribute must not contain MP_UNREACH_NLRI.
  207: 	If BGP Attribute has MP_REACH_NLRI field, it must has
  208: 	zero length NLRI, e.g., MP_REACH_NLRI has only Address
  209: 	Family, SAFI and next-hop values.
  210: 
  211: If `type' is PROTOCOL_BGP4MP and `subtype' is BGP4MP_SNAPSHOT,
  212: 
  213: @example
  214: @group
  215:  0                   1                   2                   3
  216:  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
  217: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  218: |           View #              |       File Name [variable]    |
  219: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  220: @end group
  221: @end example
  222: 
  223:     The file specified in "File Name" contains all routing entries,
  224:     which are in the format of ``subtype == BGP4MP_ENTRY''.
  225: 
  226: @example
  227: @group
  228: Constants:
  229:   /* type value */
  230:   #define MSG_PROTOCOL_BGP4MP 16
  231:   /* subtype value */
  232:   #define BGP4MP_STATE_CHANGE 0
  233:   #define BGP4MP_MESSAGE 1
  234:   #define BGP4MP_ENTRY 2
  235:   #define BGP4MP_SNAPSHOT 3
  236: @end group
  237: @end example

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