From 989ddc201c85a78d8d71cbd9b2e761e6a7d438fe Mon Sep 17 00:00:00 2001 From: Bill Fenner Date: Sun, 15 Jan 2023 06:55:51 -0800 Subject: [PATCH] [BGP] BGP Tunnel Encapsulation and SR-TE printing Print BGP SR-TE NLRI using the tunnel encapsulation, both from the base spec draft-ietf-idr-sr-policy-safi and using the types and names specified in the IANA registry for draft-ietf-idr-bgp-sr-segtypes-ext. --- print-bgp.c | 548 +++++++++++++++++++++++++++++ tests/TESTLIST | 2 + tests/bgp-sr-te-malformed-pkt.out | 20 ++ tests/bgp-sr-te-malformed-pkt.pcap | Bin 0 -> 368 bytes tests/bgp-sr-te-tunnel-policy.out | 276 +++++++++++++++ tests/bgp-sr-te-tunnel-policy.pcap | Bin 0 -> 8628 bytes 6 files changed, 846 insertions(+) create mode 100644 tests/bgp-sr-te-malformed-pkt.out create mode 100644 tests/bgp-sr-te-malformed-pkt.pcap create mode 100644 tests/bgp-sr-te-tunnel-policy.out create mode 100644 tests/bgp-sr-te-tunnel-policy.pcap diff --git a/print-bgp.c b/print-bgp.c index 279da2887..d56e6c3bb 100644 --- a/print-bgp.c +++ b/print-bgp.c @@ -375,6 +375,17 @@ static const struct tok bgp_origin_values[] = { { 0, NULL} }; +/* + * https://datatracker.ietf.org/doc/html/draft-ietf-idr-sr-policy-safi#section-2.4.5 + */ +static const struct tok bgp_sr_te_enlp_values[] = { + { 1, "IPv4" }, + { 2, "IPv6" }, + { 3, "Both" }, + { 4, "None" }, + { 0, NULL } +}; + #define BGP_PMSI_TUNNEL_RSVP_P2MP 1 #define BGP_PMSI_TUNNEL_LDP_P2MP 2 #define BGP_PMSI_TUNNEL_PIM_SSM 3 @@ -399,6 +410,179 @@ static const struct tok bgp_pmsi_flag_values[] = { { 0, NULL} }; +/* https://www.iana.org/assignments/bgp-tunnel-encapsulation/bgp-tunnel-encapsulation.xhtml#tunnel-types */ +#define BGP_TUNNEL_ENCAP_SR_TE 15 + +static const struct tok bgp_tunnel_encap_values[] = { + { BGP_TUNNEL_ENCAP_SR_TE, "SR Policy"}, + { 0, NULL} +}; + +/* https://www.iana.org/assignments/bgp-tunnel-encapsulation/bgp-tunnel-encapsulation.xhtml#tunnel-sub-tlvs */ +#define BGP_TUNNEL_ENCAP_ENCAPSULATION 1 +#define BGP_TUNNEL_ENCAP_PROTOCOL_TYPE 2 +#define BGP_TUNNEL_ENCAP_IPSEC_TA 3 +#define BGP_TUNNEL_ENCAP_COLOR 4 +#define BGP_TUNNEL_ENCAP_LBB 5 +#define BGP_TUNNEL_ENCAP_REMOTE_ENDPOINT 6 +#define BGP_TUNNEL_ENCAP_IPV4_DS 7 +#define BGP_TUNNEL_ENCAP_UDP_DPORT 8 +#define BGP_TUNNEL_ENCAP_ELH 9 +#define BGP_TUNNEL_ENCAP_LABEL_STACK 10 +#define BGP_TUNNEL_ENCAP_PREFIX_SID 11 +#define BGP_TUNNEL_ENCAP_SR_TE_PREFERENCE 12 +#define BGP_TUNNEL_ENCAP_SR_TE_BINDING_SID 13 +#define BGP_TUNNEL_ENCAP_SR_TE_ENLP 14 +#define BGP_TUNNEL_ENCAP_SR_TE_PRIORITY 15 +#define BGP_TUNNEL_ENCAP_SR_TE_SRV6_BINDING_SID 20 +#define BGP_TUNNEL_ENCAP_SR_TE_SEGMENT_LIST 128 +#define BGP_TUNNEL_ENCAP_SR_TE_POLICY_CP_NAME 129 +#define BGP_TUNNEL_ENCAP_SR_TE_POLICY_NAME 130 + +static const struct tok bgp_tunnel_encap_subtlv_values[] = { + { BGP_TUNNEL_ENCAP_ENCAPSULATION, "Encapsulation"}, + { BGP_TUNNEL_ENCAP_PROTOCOL_TYPE, "Protocol Type"}, + { BGP_TUNNEL_ENCAP_IPSEC_TA, "IPsec Tunnel Authenticator"}, + { BGP_TUNNEL_ENCAP_COLOR, "Color"}, + { BGP_TUNNEL_ENCAP_LBB, "Load-Balancing Block"}, + { BGP_TUNNEL_ENCAP_REMOTE_ENDPOINT, "Remote Endpoint"}, + { BGP_TUNNEL_ENCAP_IPV4_DS, "IPv4 DS Field"}, + { BGP_TUNNEL_ENCAP_UDP_DPORT, "UDP Destination Port"}, + { BGP_TUNNEL_ENCAP_ELH, "Embedded Label Handling"}, + { BGP_TUNNEL_ENCAP_LABEL_STACK, "MPLS Label Stack"}, + { BGP_TUNNEL_ENCAP_PREFIX_SID, "Prefix SID"}, + { BGP_TUNNEL_ENCAP_SR_TE_PREFERENCE, "Preference"}, + { BGP_TUNNEL_ENCAP_SR_TE_BINDING_SID, "Binding SID"}, + { BGP_TUNNEL_ENCAP_SR_TE_ENLP, "Explicit Null Label Policy"}, + { BGP_TUNNEL_ENCAP_SR_TE_PRIORITY, "Priority"}, + { BGP_TUNNEL_ENCAP_SR_TE_SRV6_BINDING_SID, "SRv6 Binding SID"}, + { BGP_TUNNEL_ENCAP_SR_TE_SEGMENT_LIST, "Segment List"}, + { BGP_TUNNEL_ENCAP_SR_TE_POLICY_CP_NAME, "Policy CP Name"}, + { BGP_TUNNEL_ENCAP_SR_TE_POLICY_NAME, "Policy Name"}, + { 0, NULL} +}; + +/* + * https://datatracker.ietf.org/doc/html/draft-ietf-idr-sr-policy-safi#section-2.4 + */ +#define BGP_TUNNEL_ENCAP_SR_TE_PREFERENCE_LENGTH 6 +#define BGP_TUNNEL_ENCAP_SR_TE_BINDING_SID_NO_SID_LENGTH 2 +#define BGP_TUNNEL_ENCAP_SR_TE_BINDING_SID_4_OCTET_LENGTH 6 +#define BGP_TUNNEL_ENCAP_SR_TE_BINDING_SID_IPV6_LENGTH 18 +#define BGP_TUNNEL_ENCAP_SR_TE_SRV6_BINDING_SID_BASE_LENGTH 18 +#define BGP_TUNNEL_ENCAP_SR_TE_SRV6_BINDING_SID_ENDPOINT_BEHAVIOR_LENGTH 26 +#define BGP_TUNNEL_ENCAP_SR_TE_ENLP_LENGTH 3 + +/* + * https://datatracker.ietf.org/doc/html/draft-ietf-idr-sr-policy-safi#section-2.4.4 + */ +#define BGP_TUNNEL_ENCAP_SEGMENT_LIST_TYPE_A 1 +#define BGP_TUNNEL_ENCAP_SEGMENT_LIST_WEIGHT 9 +#define BGP_TUNNEL_ENCAP_SEGMENT_LIST_TYPE_B 13 + +#define BGP_TUNNEL_ENCAP_SEGMENT_LIST_TYPE_A_LENGTH 6 +#define BGP_TUNNEL_ENCAP_SEGMENT_LIST_WEIGHT_LENGTH 6 +#define BGP_TUNNEL_ENCAP_SEGMENT_LIST_TYPE_B_LENGTH 18 +#define BGP_TUNNEL_ENCAP_SEGMENT_LIST_TYPE_B_ENDPOINT_BEHAVIOR_LENGTH 26 + + +/* + * https://datatracker.ietf.org/doc/html/draft-ietf-idr-sr-policy-safi#section-2.4.4 and + * https://datatracker.ietf.org/doc/html/draft-ietf-idr-bgp-sr-segtypes-ext#section-2 + */ +static const struct tok bgp_segmentlist_segment_values[] = { + { BGP_TUNNEL_ENCAP_SEGMENT_LIST_TYPE_A, "Segment Type A" }, //SID only, in the form of MPLS Label + { 2, "Deprecated" }, //Previous SRv6 + { 3, "Segment Type C" }, //IPv4 Node Address with optional SID + { 4, "Segment Type D" }, //IPv6 Node Address with optional SID for SR MPLS + { 5, "Segment Type E" }, //IPv4 Address + index with optional SID + { 6, "Segment Type F" }, //IPv4 Local and Remote addresses with optional SID + { 7, "Segment Type G" }, //IPv6 Address + index for local and remote pair with optional SID for SR MPLS + { 8, "Segment Type H" }, //IPv6 Local and Remote addresses with optional SID for SR MPLS + { BGP_TUNNEL_ENCAP_SEGMENT_LIST_WEIGHT, "Weight" }, + { BGP_TUNNEL_ENCAP_SEGMENT_LIST_TYPE_B, "Segment Type B" }, //SRv6 SID + { 14, "Segment Type I" }, //IPv6 Node and SID for SRv6 + { 15, "Segment Type J" }, //IPv6 Node + index for remote and local pair and SID for SRv6 + { 16, "Segment Type K" }, //IPv6 Local/Remote addresses and SID for SRv6 + { 0, NULL} +}; + +/* https://datatracker.ietf.org/doc/html/draft-ietf-idr-sr-policy-safi#section-2.4.2 */ +static const struct tok bgp_sr_binding_sid_flags[] = { + { 0x80, "S" }, // Specified-BSID-only + { 0x40, "I" }, // Drop Upon Invalid + { 0, NULL } +}; + +#define BGP_TUNNEL_ENCAP_SRV6_ENDPOINT_BEHAVIOR_PRESENT 0x20 +/* https://datatracker.ietf.org/doc/html/draft-ietf-idr-sr-policy-safi#section-2.4.3 */ +static const struct tok bgp_srv6_binding_sid_flags[] = { + { 0x80, "S" }, // Specified-BSID-only + { 0x40, "I" }, // Drop Upon Invalid + { BGP_TUNNEL_ENCAP_SRV6_ENDPOINT_BEHAVIOR_PRESENT, "B" }, // SRv6 Endpoint Behavior and SID Structure present + { 0, NULL } +}; + +#define BGP_TUNNEL_ENCAP_SR_POLICY_SEGMENT_ENDPOINT_BEHAVIOR_PRESENT 0x10 +/* https://datatracker.ietf.org/doc/html/draft-ietf-idr-sr-policy-safi#section-6.8 */ +static const struct tok bgp_sr_policy_segment_flags[] = { + { 0x80, "V" }, // Segment Verification Flag + { BGP_TUNNEL_ENCAP_SR_POLICY_SEGMENT_ENDPOINT_BEHAVIOR_PRESENT, "B" }, // SRv6 Endpoint Behavior & SID Structure + { 0, NULL } +}; + +/* https://www.iana.org/assignments/segment-routing/segment-routing.xhtml#srv6-endpoint-behaviors */ +static const struct tok bgp_sr_v6_endpoint_behaviors[] = { + { 1, "End" }, + { 2, "End with PSP" }, + { 3, "End with USP" }, + { 4, "End with PSP & USP" }, + { 5, "End.X" }, + { 6, "End.X with PSP" }, + { 7, "End.X with USP" }, + { 8, "End.X with PSP & USP" }, + { 9, "End.T" }, + { 10, "End.T with PSP" }, + { 11, "End.T with USP" }, + { 12, "End.T with PSP & USP" }, + { 14, "End.B6.Encaps" }, + { 15, "End.BM" }, + { 16, "End.DX6" }, + { 17, "End.DX4" }, + { 18, "End.DT6" }, + { 19, "End.DT4" }, + { 20, "End.DT46" }, + { 21, "End.DX2" }, + { 22, "End.DX2V" }, + { 23, "End.DT2U" }, + { 24, "End.DT2M" }, + { 25, "Reserved" }, + { 27, "End.B6.Encaps.Red" }, + { 28, "End with USD" }, + { 29, "End with PSP & USD" }, + { 30, "End with USP & USD" }, + { 31, "End with PSP, USP & USD" }, + { 32, "End.X with USD" }, + { 33, "End.X with PSP & USD" }, + { 34, "End.X with USP & USD" }, + { 35, "End.X with PSP, USP & USD" }, + { 36, "End.T with USD" }, + { 37, "End.T with PSP & USD" }, + { 38, "End.T with USP & USD" }, + { 39, "End.T with PSP, USP & USD" }, + { 40, "End.MAP" }, + { 41, "End.Limit" }, + { 69, "End.M.GTP6.D" }, + { 70, "End.M.GTP6.Di" }, + { 71, "End.M.GTP6.E" }, + { 72, "End.M.GTP4.E" }, + { 75, "End.Replicate" }, + { 84, "End.NSH - NSH Segment" }, + { 32767, "The SID defined in [RFC8754]" }, + { 65535, "Opaque" }, + { 0, NULL } +}; + #define BGP_AIGP_TLV 1 static const struct tok bgp_aigp_values[] = { @@ -438,6 +622,8 @@ static const struct tok bgp_role_values[] = { #define SAFNUM_MDT 66 /* RFC7432 */ #define SAFNUM_EVPN 70 +/* draft-ietf-idr-sr-policy-safi */ +#define SAFNUM_SR_TE 73 /* RFC4364 */ #define SAFNUM_VPNUNICAST 128 /* RFC6513 */ @@ -458,6 +644,7 @@ static const struct tok bgp_safi_values[] = { { SAFNUM_VPLS, "VPLS"}, { SAFNUM_MDT, "MDT"}, { SAFNUM_EVPN, "EVPN"}, + { SAFNUM_SR_TE, "SR-TE Policy"}, { SAFNUM_VPNUNICAST, "labeled VPN Unicast"}, { SAFNUM_VPNMULTICAST, "labeled VPN Multicast"}, { SAFNUM_VPNUNIMULTICAST, "labeled VPN Unicast+Multicast"}, @@ -1222,6 +1409,53 @@ print_mdt_vpn_nlri(netdissect_options *ndo, const u_char *pptr) return -2; } +#define SRTE_IP_NLRI_LEN 96 +#define SRTE_IP6_NLRI_LEN 192 + +/* + * +------------------+ + * | Distinguisher | 4 octets + * +------------------+ + * | Policy Color | 4 octets + * +------------------+ + * | Endpoint | 4 or 16 octets + * +------------------+ + */ +static int +print_srte_nlri(netdissect_options *ndo, + const u_char *pptr, int af) +{ + uint8_t nlri_len; + nlri_len = GET_U_1(pptr); + pptr ++; + + if (af == AFNUM_IP && nlri_len != SRTE_IP_NLRI_LEN) + return -1; + else if (af == AFNUM_IP6 && nlri_len != SRTE_IP6_NLRI_LEN) + return -1; + + uint32_t distinguisher; + distinguisher = GET_BE_U_4(pptr); + pptr += sizeof(distinguisher); + + uint32_t color; + color = GET_BE_U_4(pptr); + pptr += sizeof(color); + + ND_PRINT("\n\t NLRI Length: %u, Distinguisher: %u, Color: %u", + nlri_len, distinguisher, color); + + if (af == AFNUM_IP) { + ND_PRINT(", Endpoint: %s", + GET_IPADDR_STRING(pptr)); + } else if (af == AFNUM_IP6) { + ND_PRINT(", Endpoint: %s", + GET_IP6ADDR_STRING(pptr)); + } + + return nlri_len + 1; +} + #define BGP_MULTICAST_VPN_ROUTE_TYPE_INTRA_AS_I_PMSI 1 #define BGP_MULTICAST_VPN_ROUTE_TYPE_INTER_AS_I_PMSI 2 #define BGP_MULTICAST_VPN_ROUTE_TYPE_S_PMSI 3 @@ -1760,6 +1994,7 @@ bgp_mp_af_print(netdissect_options *ndo, case (AFNUM_IP<<8 | SAFNUM_VPNUNIMULTICAST): case (AFNUM_IP<<8 | SAFNUM_MULTICAST_VPN): case (AFNUM_IP<<8 | SAFNUM_MDT): + case (AFNUM_IP<<8 | SAFNUM_SR_TE): case (AFNUM_IP6<<8 | SAFNUM_UNICAST): case (AFNUM_IP6<<8 | SAFNUM_MULTICAST): case (AFNUM_IP6<<8 | SAFNUM_UNIMULTICAST): @@ -1767,6 +2002,7 @@ bgp_mp_af_print(netdissect_options *ndo, case (AFNUM_IP6<<8 | SAFNUM_VPNUNICAST): case (AFNUM_IP6<<8 | SAFNUM_VPNMULTICAST): case (AFNUM_IP6<<8 | SAFNUM_VPNUNIMULTICAST): + case (AFNUM_IP6<<8 | SAFNUM_SR_TE): case (AFNUM_NSAP<<8 | SAFNUM_UNICAST): case (AFNUM_NSAP<<8 | SAFNUM_MULTICAST): case (AFNUM_NSAP<<8 | SAFNUM_UNIMULTICAST): @@ -1832,6 +2068,12 @@ bgp_nlri_print(netdissect_options *ndo, uint16_t af, uint8_t safi, case (AFNUM_IP<<8 | SAFNUM_RT_ROUTING_INFO): advance = print_rt_routing_info(ndo, tptr); break; + case (AFNUM_IP<<8 | SAFNUM_SR_TE): /* fall through */ + case (AFNUM_IP6<<8 | SAFNUM_SR_TE): + advance = print_srte_nlri(ndo, tptr, af); + if (advance == -1) + ND_PRINT( "\n\t (illegal prefix length)"); + break; case (AFNUM_IP<<8 | SAFNUM_MULTICAST_VPN): /* fall through */ case (AFNUM_IP6<<8 | SAFNUM_MULTICAST_VPN): advance = print_multicast_vpn(ndo, tptr); @@ -1913,6 +2155,263 @@ static const struct tok bgp_flags[] = { { 0, NULL } }; +/* + * When an SR-MPLS SID is present in a segment, it is + * encoded as specified in + * https://datatracker.ietf.org/doc/html/draft-ietf-idr-sr-policy-safi#section-2.4.2 + * 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 + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | Label | TC |S| TTL | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + */ +static int +print_srmpls_sid(netdissect_options *ndo, const u_char *sptr) { + uint32_t label = GET_BE_U_3(sptr); + uint8_t tc_s = label & 0xf; + label = label >> 4; + sptr += 3; + uint8_t ttl; + ttl = GET_U_1(sptr); + sptr += sizeof(ttl); + ND_PRINT( ", Label: %u, TC: %u, S: %u, TTL: %u", label, tc_s>>1, tc_s&1, ttl); + // how far did we advance sptr? + return 4; +} + +/* + * When the SRv6 Endpoint Behavior and SID Structure is + * present, it is encoded as specified in + * https://datatracker.ietf.org/doc/html/draft-ietf-idr-sr-policy-safi#BEHAVIORSTRUCT + */ +static int +print_srv6_endpoint_behavior(netdissect_options *ndo, const u_char *sptr) { + uint16_t behavior = GET_BE_U_2(sptr); + sptr += 4; // skip behavior and reserved + ND_PRINT( ", Behavior: %s (%04x), LB Length %d, LN Length %d, Function Length %d, Arg Length %d", + tok2str(bgp_sr_v6_endpoint_behaviors, "Unknown", behavior), behavior, + GET_U_1(sptr), GET_U_1(sptr + 1), GET_U_1(sptr + 2), GET_U_1(sptr + 3)); + // how far did we advance sptr? + return 8; +} + +static int +bgp_tunnel_encap_print(netdissect_options *ndo, + const u_char **tptr, uint8_t tunnel_len) +{ + const u_char *rptr = *tptr; + while (rptr < *tptr + tunnel_len) { + uint8_t subtlv_type; + uint16_t subtlv_len; + subtlv_type = GET_U_1(rptr); + rptr += sizeof(subtlv_type); + ND_PRINT( "\n\t %s (%u)", + tok2str(bgp_tunnel_encap_subtlv_values, "Unknown", subtlv_type), + subtlv_type); + /* https://www.rfc-editor.org/rfc/rfc9012.html#name-bgp-tunnel-encapsulation-att + * describes that the length field can be one or two bytes: decode it here: + */ + if (subtlv_type < 128) { + /* 1-byte length */ + subtlv_len = GET_U_1(rptr); + rptr += 1; + } else { + /* 2-byte length */ + subtlv_len = GET_BE_U_2(rptr); + rptr += 2; + } + ND_PRINT( ", length: %u", subtlv_len); + switch (subtlv_type) { + case BGP_TUNNEL_ENCAP_SR_TE_BINDING_SID: { + if (subtlv_len != BGP_TUNNEL_ENCAP_SR_TE_BINDING_SID_NO_SID_LENGTH + && subtlv_len != BGP_TUNNEL_ENCAP_SR_TE_BINDING_SID_4_OCTET_LENGTH + && subtlv_len != BGP_TUNNEL_ENCAP_SR_TE_BINDING_SID_IPV6_LENGTH) { + ND_PRINT( " (invalid length)"); + rptr = *tptr + tunnel_len; + break; + } + uint8_t flags; + flags = GET_U_1(rptr); + rptr += sizeof(flags); + ND_PRINT( ", Flags [%s]", bittok2str_nosep(bgp_sr_binding_sid_flags, "", flags )); + rptr += 1; /*to ignore reserved field*/ + if (subtlv_len == BGP_TUNNEL_ENCAP_SR_TE_BINDING_SID_NO_SID_LENGTH) { + ND_PRINT( ", No Binding SID present"); + } else if (subtlv_len == BGP_TUNNEL_ENCAP_SR_TE_BINDING_SID_4_OCTET_LENGTH) { + //4-octet SID + rptr += print_srmpls_sid(ndo, rptr); + } else if (subtlv_len == BGP_TUNNEL_ENCAP_SR_TE_BINDING_SID_IPV6_LENGTH) { + //16-octet SID + ND_PRINT( ", ipv6 address: %s", GET_IP6ADDR_STRING(rptr)); + rptr += sizeof(struct in6_addr); + } + break; + } + case BGP_TUNNEL_ENCAP_SR_TE_SRV6_BINDING_SID: { + uint8_t flags; + uint8_t expected_length; + flags = GET_U_1(rptr); + if (flags & BGP_TUNNEL_ENCAP_SRV6_ENDPOINT_BEHAVIOR_PRESENT) { + expected_length = BGP_TUNNEL_ENCAP_SR_TE_SRV6_BINDING_SID_ENDPOINT_BEHAVIOR_LENGTH; + } else { + expected_length = BGP_TUNNEL_ENCAP_SR_TE_SRV6_BINDING_SID_BASE_LENGTH; + } + if (subtlv_len != expected_length) { + ND_PRINT( " (invalid length)"); + rptr = *tptr + tunnel_len; + break; + } + rptr += sizeof(flags); + ND_PRINT( ", Flags [%s]", bittok2str_nosep(bgp_srv6_binding_sid_flags, "", flags )); + rptr += 1; /*to ignore reserved field*/ + // 16-byte binding SID + ND_PRINT( ", SRv6 Binding SID %s", GET_IP6ADDR_STRING(rptr)); + rptr += sizeof(struct in6_addr); + if (flags & BGP_TUNNEL_ENCAP_SRV6_ENDPOINT_BEHAVIOR_PRESENT) { + rptr += print_srv6_endpoint_behavior(ndo, rptr); + } + break; + } + case BGP_TUNNEL_ENCAP_SR_TE_PREFERENCE: { + if (subtlv_len != BGP_TUNNEL_ENCAP_SR_TE_PREFERENCE_LENGTH) { + ND_PRINT( " (invalid length)"); + rptr = *tptr + tunnel_len; + break; + } + uint8_t flags; + flags = GET_U_1(rptr); + rptr += sizeof(flags); + rptr += 1; /*to ignore reserved field*/ + uint32_t preference; + preference = GET_BE_U_4(rptr); + rptr += sizeof(preference); + ND_PRINT( ", Flags [], Preference: %u", preference); + break; + } + case BGP_TUNNEL_ENCAP_SR_TE_ENLP: { + if (subtlv_len != BGP_TUNNEL_ENCAP_SR_TE_ENLP_LENGTH) { + ND_PRINT(" (invalid length)"); + rptr = *tptr + tunnel_len; + break; + } + uint8_t flags; + flags = GET_U_1(rptr); + rptr += sizeof(flags); + rptr += 1; /*to ignore reserved field*/ + uint8_t enlp; + enlp = GET_U_1(rptr); + rptr += sizeof(enlp); + ND_PRINT(", Flags [], ENLP: %s (%u)", + tok2str(bgp_sr_te_enlp_values, "Unknown", enlp), enlp); + break; + } + case BGP_TUNNEL_ENCAP_SR_TE_SEGMENT_LIST: { + rptr += 1; /*to ignore reserved field*/ + if (subtlv_len == 0) { + ND_PRINT( "\n\t (invalid length)"); + rptr = *tptr + tunnel_len; + break; + } + subtlv_len -= 1; + const u_char *sptr = rptr; + while (sptr < rptr + subtlv_len) { + uint8_t sl_subtlv_type; + sl_subtlv_type = GET_U_1(sptr); + sptr += sizeof(sl_subtlv_type); + ND_PRINT( "\n\t %s (%u)", + tok2str(bgp_segmentlist_segment_values, "Unknown", sl_subtlv_type), + sl_subtlv_type); + switch (sl_subtlv_type) { + case BGP_TUNNEL_ENCAP_SEGMENT_LIST_TYPE_A: { + uint8_t length; + length = GET_U_1(sptr); + sptr += sizeof(length); + ND_PRINT( ", length: %u", length); + if (length != BGP_TUNNEL_ENCAP_SEGMENT_LIST_TYPE_A_LENGTH) { + ND_PRINT( " (invalid length)"); + sptr = rptr + subtlv_len; + break; + } + uint8_t flags; + flags = GET_U_1(sptr); + sptr += sizeof(flags); + ND_PRINT(", Flags [%s]", bittok2str_nosep(bgp_sr_policy_segment_flags, "", flags)); + sptr += 1; /*to ignore reserved octet*/ + sptr += print_srmpls_sid(ndo, sptr); + break; + } + case BGP_TUNNEL_ENCAP_SEGMENT_LIST_TYPE_B: { + uint8_t length; + length = GET_U_1(sptr); + sptr += sizeof(length); + ND_PRINT( ", length: %u", length); + uint8_t flags; + flags = GET_U_1(sptr); + uint8_t expected_len; + if (flags & BGP_TUNNEL_ENCAP_SR_POLICY_SEGMENT_ENDPOINT_BEHAVIOR_PRESENT) { + expected_len = BGP_TUNNEL_ENCAP_SEGMENT_LIST_TYPE_B_ENDPOINT_BEHAVIOR_LENGTH; + } else { + expected_len = BGP_TUNNEL_ENCAP_SEGMENT_LIST_TYPE_B_LENGTH; + } + if (length != expected_len) { + ND_PRINT( " (invalid length)"); + sptr = rptr + subtlv_len; + break; + } + sptr += sizeof(flags); + ND_PRINT(", Flags [%s]", bittok2str_nosep(bgp_sr_policy_segment_flags, "", flags)); + sptr += 1; /*to ignore reserved octet*/ + ND_PRINT( ", SRv6 Binding SID %s", GET_IP6ADDR_STRING(sptr)); + sptr += sizeof(struct in6_addr); + if (flags & BGP_TUNNEL_ENCAP_SR_POLICY_SEGMENT_ENDPOINT_BEHAVIOR_PRESENT) { + sptr += print_srv6_endpoint_behavior(ndo, sptr); + } + break; + } + case BGP_TUNNEL_ENCAP_SEGMENT_LIST_WEIGHT: { + uint8_t length; + length = GET_U_1(sptr); + sptr += sizeof(length); + ND_PRINT( ", length: %u", length); + if (length != BGP_TUNNEL_ENCAP_SEGMENT_LIST_WEIGHT_LENGTH) { + ND_PRINT( " (invalid length)"); + sptr = rptr + subtlv_len; + break; + } + uint8_t flags; + flags = GET_U_1(sptr); + sptr += sizeof(flags); + sptr += 1; /*to ignore reserved fields*/ + uint32_t weight; + weight = GET_BE_U_4(sptr); + sptr += sizeof(weight); + ND_PRINT( ", Flags [], Weight: %u", weight); + break; + } + default: + ND_TCHECK_LEN(sptr, subtlv_len); + if (ndo->ndo_vflag >= 1) + print_unknown_data(ndo, rptr, "\n\t ", subtlv_len); + sptr = rptr + subtlv_len; + break; + } + } + rptr = sptr; + break; + } + default: + if (ndo->ndo_vflag >= 1) + print_unknown_data(ndo, rptr, "\n\t\t", subtlv_len); + rptr += subtlv_len; + break; + } + } + *tptr = rptr; + return -1; +trunc: + return -2; +} + static int bgp_attr_print(netdissect_options *ndo, uint8_t atype, const u_char *pptr, u_int len, @@ -2154,6 +2653,35 @@ bgp_attr_print(netdissect_options *ndo, tnhlen -= (sizeof(nd_ipv4)+BGP_VPN_RD_LEN); } break; + case (AFNUM_IP<<8 | SAFNUM_SR_TE): + case (AFNUM_IP6<<8 | SAFNUM_SR_TE): + if (tnhlen == 2*(int)sizeof(struct in6_addr)) { + ND_PRINT( "%s (Global)", GET_IP6ADDR_STRING(tptr)); + tptr += sizeof(struct in6_addr); + tlen -= sizeof(struct in6_addr); + tnhlen -= sizeof(struct in6_addr); + + ND_PRINT( "%s (Link-Local)", GET_IP6ADDR_STRING(tptr)); + tptr += sizeof(struct in6_addr); + tlen -= sizeof(struct in6_addr); + tnhlen -= sizeof(struct in6_addr); + } else if (tnhlen == (int)sizeof(struct in6_addr)) { + ND_PRINT( "%s", GET_IP6ADDR_STRING(tptr)); + tptr += sizeof(struct in6_addr); + tlen -= sizeof(struct in6_addr); + tnhlen -= sizeof(struct in6_addr); + } else if (tnhlen == (int)sizeof(struct in_addr)) { + ND_PRINT( "%s", GET_IPADDR_STRING(tptr)); + tptr += sizeof(struct in_addr); + tlen -= sizeof(struct in_addr); + tnhlen -= sizeof(struct in_addr); + } else { + ND_PRINT( "invalid len"); + tptr += tnhlen; + tlen -= tnhlen; + tnhlen = 0; + } + break; case (AFNUM_IP6<<8 | SAFNUM_UNICAST): case (AFNUM_IP6<<8 | SAFNUM_MULTICAST): case (AFNUM_IP6<<8 | SAFNUM_UNIMULTICAST): @@ -2406,6 +2934,26 @@ bgp_attr_print(netdissect_options *ndo, } break; } + case BGPTYPE_TUNNEL_ENCAP: + { + while (tptr < pptr + len) { + uint8_t tunnel_type; + uint16_t tunnel_len; + ND_TCHECK_2(tptr); + tunnel_type = GET_U_1(tptr+1); + tptr += 2; + ND_TCHECK_LEN(tptr, sizeof(tunnel_len)); + tunnel_len = GET_BE_U_2(tptr); + tptr += sizeof(tunnel_len); + ND_PRINT( "\n\t Tunnel-type: %s (%u), length: %u", + tok2str(bgp_tunnel_encap_values, "Unknown", tunnel_type), + tunnel_type, tunnel_len); + advance = bgp_tunnel_encap_print(ndo, &tptr, tunnel_len); + if (advance == -2) + goto trunc; + } + break; + } case BGPTYPE_AIGP: { uint8_t type; diff --git a/tests/TESTLIST b/tests/TESTLIST index 47d6dfa0c..e37293c3d 100644 --- a/tests/TESTLIST +++ b/tests/TESTLIST @@ -77,6 +77,8 @@ bgp-bgpsec bgp-bgpsec.pcap bgp-bgpsec.out -v bgp-ovs bgp-ovs.pcapng bgp-ovs.out -v bgp-role bgp-role.pcapng bgp-role.out -v bgp_notification_rr_msg_error bgp_notification_rr_msg_error.pcap bgp_notification_rr_msg_error.out -v +bgp-sr-te-tunnel-policy bgp-sr-te-tunnel-policy.pcap bgp-sr-te-tunnel-policy.out -v +bgp-sr-te-malformed-pkt bgp-sr-te-malformed-pkt.pcap bgp-sr-te-malformed-pkt.out -v # Broadcom tag tests brcmtag brcm-tag.pcap brcm-tag.out diff --git a/tests/bgp-sr-te-malformed-pkt.out b/tests/bgp-sr-te-malformed-pkt.out new file mode 100644 index 000000000..9471b61b2 --- /dev/null +++ b/tests/bgp-sr-te-malformed-pkt.out @@ -0,0 +1,20 @@ + 1 2021-01-18 15:00:56.247148 IP (tos 0x0, ttl 64, id 41156, offset 0, flags [DF], proto TCP (6), length 232) + 1.0.0.2.38957 > 1.0.0.1.179: Flags [P.], cksum 0x3412 (correct), seq 1493983574:1493983754, ack 462494371, win 58, options [nop,nop,TS val 1684679531 ecr 1684679365], length 180: BGP + Update Message (2), length: 180 + Community (8), length: 4, Flags [OT]: NO_ADVERTISE + Tunnel Encapsulation (23), length: 103, Flags [OT]: + Tunnel-type: SR Policy (15), length: 99 + Binding SID (13), length: 6, Flags [], Label: 965536, TC: 0, S: 0, TTL: 0 + Preference (12), length: 6, Flags [], Preference: 200 + Explicit Null Label Policy (14), length: 3, Flags [], ENLP: Both (3) + Color (4), length: 8 + 0x0000: 030b 0000 0000 0002 + Remote Endpoint (6), length: 10 + 0x0000: 0000 0000 0001 0304 0506 + Segment List (128), length: 65535 + Segment Type A (1), length: 6, Flags [], Label: 65537, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 131073, TC: 0, S: 0, TTL: 0 + Weight (9), length: 6, Flags [], Weight: 500 + Unknown (128) [|bgp] + 2 2021-01-18 15:00:56.247243 IP (tos 0xc0, ttl 255, id 64511, offset 0, flags [DF], proto TCP (6), length 52) + 1.0.0.1.179 > 1.0.0.2.38957: Flags [.], cksum 0xcaab (correct), ack 180, win 57, options [nop,nop,TS val 1684679531 ecr 1684679531], length 0 diff --git a/tests/bgp-sr-te-malformed-pkt.pcap b/tests/bgp-sr-te-malformed-pkt.pcap new file mode 100644 index 0000000000000000000000000000000000000000..a1b9419d4965e6874b3de508f994d581ccd2236a GIT binary patch literal 368 zcmca|c+)~A1{MYw`2U}Qff2}Av4}Mx=O{D7Hy|5?nHWLBZch>?K2GLfaAjb4vEYaU zg9F=iPoOYRl7VrCF2m+Xp2RTeiBgLjBp9qrgn)vK99$_`+Sw^tT1Wq*0fsG1Ky&9F z;9vntFdYz2XW(Z@=4E4Gc)g2(fd@zf!3jQQ1_ovp4rXpJmx+xFOfxdGu(CA(oyrJQ zCIEyWS^-FNg0(SzX<(29iy1)W9H4XnP?ZBCBZC7I3((Cc99TgfPnp2SAjZJx$pZ2T zLjq6)$Y5Xs*#QcL)4))00t$dI#Q%`60EWT=29w|a9T@(z)dI}~dKRRA^9)^32t@KE QaWx1qSe{yq917am0EfF#82|tP literal 0 HcmV?d00001 diff --git a/tests/bgp-sr-te-tunnel-policy.out b/tests/bgp-sr-te-tunnel-policy.out new file mode 100644 index 000000000..bfe3e1c26 --- /dev/null +++ b/tests/bgp-sr-te-tunnel-policy.out @@ -0,0 +1,276 @@ + 1 2019-04-16 20:37:06.326576 IP6 (hlim 1, next-header Options (0) payload length: 56) fe80::200:eff:fe01:0 > ff02::16: HBH (rtalert: 0x0000) (padn) [icmp6 sum ok] ICMP6, multicast listener report v2, 2 group record(s) [gaddr ff02::1:ff00:1 to_ex, 0 source(s)] [gaddr ff02::1:ff01:0 to_ex, 0 source(s)] + 2 2019-04-16 20:37:06.390208 IP6 (hlim 1, next-header Options (0) payload length: 56) fe80::7c4c:1fff:fecf:2ce > ff02::16: HBH (rtalert: 0x0000) (padn) [icmp6 sum ok] ICMP6, multicast listener report v2, 2 group record(s) [gaddr ff02::1:ff00:2 to_ex, 0 source(s)] [gaddr ff02::1:ffcf:2ce to_ex, 0 source(s)] + 3 2019-04-16 20:37:06.998314 IP6 (hlim 1, next-header Options (0) payload length: 56) fe80::200:eff:fe01:0 > ff02::16: HBH (rtalert: 0x0000) (padn) [icmp6 sum ok] ICMP6, multicast listener report v2, 2 group record(s) [gaddr ff02::1:ff00:1 to_ex, 0 source(s)] [gaddr ff02::1:ff01:0 to_ex, 0 source(s)] + 4 2019-04-16 20:37:07.402850 IP6 (hlim 1, next-header Options (0) payload length: 76) fe80::200:eff:fe01:0 > ff02::16: HBH (rtalert: 0x0000) (padn) [icmp6 sum ok] ICMP6, multicast listener report v2, 3 group record(s) [gaddr ff02::1:ff00:0 to_ex, 0 source(s)] [gaddr ff05::2 to_ex, 0 source(s)] [gaddr ff02::2 to_ex, 0 source(s)] + 5 2019-04-16 20:37:07.474102 IP6 (hlim 1, next-header Options (0) payload length: 76) fe80::7c4c:1fff:fecf:2ce > ff02::16: HBH (rtalert: 0x0000) (padn) [icmp6 sum ok] ICMP6, multicast listener report v2, 3 group record(s) [gaddr ff02::1:ff00:0 to_ex, 0 source(s)] [gaddr ff05::2 to_ex, 0 source(s)] [gaddr ff02::2 to_ex, 0 source(s)] + 6 2019-04-16 20:37:07.990188 IP6 (hlim 1, next-header Options (0) payload length: 76) fe80::7c4c:1fff:fecf:2ce > ff02::16: HBH (rtalert: 0x0000) (padn) [icmp6 sum ok] ICMP6, multicast listener report v2, 3 group record(s) [gaddr ff02::1:ff00:0 to_ex, 0 source(s)] [gaddr ff05::2 to_ex, 0 source(s)] [gaddr ff02::2 to_ex, 0 source(s)] + 7 2019-04-16 20:37:08.246441 IP6 (hlim 1, next-header Options (0) payload length: 76) fe80::200:eff:fe01:0 > ff02::16: HBH (rtalert: 0x0000) (padn) [icmp6 sum ok] ICMP6, multicast listener report v2, 3 group record(s) [gaddr ff02::1:ff00:0 to_ex, 0 source(s)] [gaddr ff05::2 to_ex, 0 source(s)] [gaddr ff02::2 to_ex, 0 source(s)] + 8 2019-04-16 20:37:08.606010 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 32) 2000:0:0:40::2 > ff02::1:ff00:1: [icmp6 sum ok] ICMP6, neighbor solicitation, length 32, who has 2000:0:0:40::1 + source link-address option (1), length 8 (1): 7e:4c:1f:cf:02:ce + 9 2019-04-16 20:37:08.608773 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 32) 2000:0:0:40::1 > 2000:0:0:40::2: [icmp6 sum ok] ICMP6, neighbor advertisement, length 32, tgt is 2000:0:0:40::1, Flags [router, solicited, override] + destination link-address option (2), length 8 (1): 00:00:0e:01:00:00 + 10 2019-04-16 20:37:08.609091 IP6 (flowlabel 0x7652b, hlim 64, next-header TCP (6) payload length: 40) 2000:0:0:40::2.44323 > 2000:0:0:40::1.179: Flags [S], cksum 0x956e (correct), seq 4234797614, win 28800, options [mss 1440,sackOK,TS val 778585801 ecr 0,nop,wscale 9], length 0 + 11 2019-04-16 20:37:08.611536 IP6 (flowlabel 0xccdfa, hlim 64, next-header TCP (6) payload length: 20) 2000:0:0:40::1.179 > 2000:0:0:40::2.44323: Flags [R.], cksum 0xe2dd (correct), seq 0, ack 4234797615, win 0, length 0 + 12 2019-04-16 20:37:08.637989 IP6 (flowlabel 0x9db84, hlim 64, next-header TCP (6) payload length: 40) 2000:0:0:40::2.37641 > 2000:0:0:40::1.179: Flags [S], cksum 0x9429 (correct), seq 2679134782, win 28800, options [mss 1440,sackOK,TS val 778585810 ecr 0,nop,wscale 9], length 0 + 13 2019-04-16 20:37:08.640249 IP6 (flowlabel 0xa9b9c, hlim 64, next-header TCP (6) payload length: 20) 2000:0:0:40::1.179 > 2000:0:0:40::2.37641: Flags [R.], cksum 0xe1a1 (correct), seq 0, ack 2679134783, win 0, length 0 + 14 2019-04-16 20:37:08.675679 IP6 (flowlabel 0xec447, hlim 64, next-header TCP (6) payload length: 40) 2000:0:0:40::2.40919 > 2000:0:0:40::1.179: Flags [S], cksum 0x7a0b (correct), seq 1511632156, win 28800, options [mss 1440,sackOK,TS val 778585819 ecr 0,nop,wscale 9], length 0 + 15 2019-04-16 20:37:08.678056 IP6 (flowlabel 0x13160, hlim 64, next-header TCP (6) payload length: 20) 2000:0:0:40::1.179 > 2000:0:0:40::2.40919: Flags [R.], cksum 0xc78c (correct), seq 0, ack 1511632157, win 0, length 0 + 16 2019-04-16 20:37:08.733367 IP6 (flowlabel 0x2078c, hlim 64, next-header TCP (6) payload length: 40) 2000:0:0:40::2.45559 > 2000:0:0:40::1.179: Flags [S], cksum 0xb771 (correct), seq 598971374, win 28800, options [mss 1440,sackOK,TS val 778585833 ecr 0,nop,wscale 9], length 0 + 17 2019-04-16 20:37:08.735733 IP6 (flowlabel 0x6738f, hlim 64, next-header TCP (6) payload length: 20) 2000:0:0:40::1.179 > 2000:0:0:40::2.45559: Flags [R.], cksum 0x0501 (correct), seq 0, ack 598971375, win 0, length 0 + 18 2019-04-16 20:37:08.831483 IP6 (flowlabel 0x0206e, hlim 64, next-header TCP (6) payload length: 40) 2000:0:0:40::2.35875 > 2000:0:0:40::1.179: Flags [S], cksum 0xa04d (correct), seq 2625722367, win 28800, options [mss 1440,sackOK,TS val 778585858 ecr 0,nop,wscale 9], length 0 + 19 2019-04-16 20:37:08.835486 IP6 (flowlabel 0x33031, hlim 64, next-header TCP (6) payload length: 20) 2000:0:0:40::1.179 > 2000:0:0:40::2.35875: Flags [R.], cksum 0xedf5 (correct), seq 0, ack 2625722368, win 0, length 0 + 20 2019-04-16 20:37:09.024377 IP6 (flowlabel 0x8405d, hlim 64, next-header TCP (6) payload length: 40) 2000:0:0:40::2.41377 > 2000:0:0:40::1.179: Flags [S], cksum 0x70b8 (correct), seq 3456778333, win 28800, options [mss 1440,sackOK,TS val 778585906 ecr 0,nop,wscale 9], length 0 + 21 2019-04-16 20:37:09.027340 IP6 (flowlabel 0x3b89f, hlim 64, next-header TCP (6) payload length: 20) 2000:0:0:40::1.179 > 2000:0:0:40::2.41377: Flags [R.], cksum 0xbe90 (correct), seq 0, ack 3456778334, win 0, length 0 + 22 2019-04-16 20:37:09.371914 IP6 (flowlabel 0xd8c49, hlim 64, next-header TCP (6) payload length: 40) 2000:0:0:40::2.33579 > 2000:0:0:40::1.179: Flags [S], cksum 0x56dd (correct), seq 4094448213, win 28800, options [mss 1440,sackOK,TS val 778585993 ecr 0,nop,wscale 9], length 0 + 23 2019-04-16 20:37:09.374836 IP6 (flowlabel 0x85ee1, hlim 64, next-header TCP (6) payload length: 20) 2000:0:0:40::1.179 > 2000:0:0:40::2.33579: Flags [R.], cksum 0xa50c (correct), seq 0, ack 4094448214, win 0, length 0 + 24 2019-04-16 20:37:10.043571 IP6 (flowlabel 0x26438, hlim 64, next-header TCP (6) payload length: 40) 2000:0:0:40::2.37185 > 2000:0:0:40::1.179: Flags [S], cksum 0xba99 (correct), seq 3339390172, win 28800, options [mss 1440,sackOK,TS val 778586161 ecr 0,nop,wscale 9], length 0 + 25 2019-04-16 20:37:10.046464 IP6 (flowlabel 0xfd941, hlim 64, next-header TCP (6) payload length: 20) 2000:0:0:40::1.179 > 2000:0:0:40::2.37185: Flags [R.], cksum 0x0971 (correct), seq 0, ack 3339390173, win 0, length 0 + 26 2019-04-16 20:37:11.355774 IP6 (flowlabel 0xf3995, hlim 64, next-header TCP (6) payload length: 40) 2000:0:0:40::2.38279 > 2000:0:0:40::1.179: Flags [S], cksum 0x451a (correct), seq 3747832949, win 28800, options [mss 1440,sackOK,TS val 778586489 ecr 0,nop,wscale 9], length 0 + 27 2019-04-16 20:37:11.358668 IP6 (flowlabel 0x46303, hlim 64, next-header TCP (6) payload length: 20) 2000:0:0:40::1.179 > 2000:0:0:40::2.38279: Flags [R.], cksum 0x9539 (correct), seq 0, ack 3747832950, win 0, length 0 + 28 2019-04-16 20:37:13.949532 IP6 (flowlabel 0x42172, hlim 64, next-header TCP (6) payload length: 40) 2000:0:0:40::2.38717 > 2000:0:0:40::1.179: Flags [S], cksum 0x341f (correct), seq 458175815, win 28800, options [mss 1440,sackOK,TS val 778587137 ecr 0,nop,wscale 9], length 0 + 29 2019-04-16 20:37:13.952481 IP6 (class 0xc0, flowlabel 0x4cb8f, hlim 255, next-header TCP (6) payload length: 40) 2000:0:0:40::1.179 > 2000:0:0:40::2.38717: Flags [S.], cksum 0xdb1a (correct), seq 4006408363, ack 458175816, win 28560, options [mss 1440,sackOK,TS val 778587138 ecr 778587137,nop,wscale 9], length 0 + 30 2019-04-16 20:37:13.952690 IP6 (flowlabel 0x42172, hlim 64, next-header TCP (6) payload length: 32) 2000:0:0:40::2.38717 > 2000:0:0:40::1.179: Flags [.], cksum 0x792b (correct), ack 1, win 57, options [nop,nop,TS val 778587138 ecr 778587138], length 0 + 31 2019-04-16 20:37:13.970758 IP6 (flowlabel 0x42172, hlim 64, next-header TCP (6) payload length: 83) 2000:0:0:40::2.38717 > 2000:0:0:40::1.179: Flags [P.], cksum 0xa650 (correct), seq 1:52, ack 1, win 57, options [nop,nop,TS val 778587143 ecr 778587138], length 51: BGP + Open Message (1), length: 51 + Version 4, my AS 23456, Holdtime 0s, ID 1.1.1.1 + Optional parameters, length: 22 + Option Capabilities Advertisement (2), length: 20 + Multiprotocol Extensions (1), length: 4 + AFI IPv4 (1), SAFI SR-TE Policy (73) + Multiprotocol Extensions (1), length: 4 + AFI IPv6 (2), SAFI SR-TE Policy (73) + Route Refresh (2), length: 0 + 32-Bit AS Number (65), length: 4 + 4 Byte AS 1523982034 + 32 2019-04-16 20:37:13.973440 IP6 (class 0xc0, flowlabel 0x4cb8f, hlim 255, next-header TCP (6) payload length: 32) 2000:0:0:40::1.179 > 2000:0:0:40::2.38717: Flags [.], cksum 0x78ef (correct), ack 52, win 56, options [nop,nop,TS val 778587143 ecr 778587143], length 0 + 33 2019-04-16 20:37:13.973613 IP6 (class 0xc0, flowlabel 0x4cb8f, hlim 255, next-header TCP (6) payload length: 99) 2000:0:0:40::1.179 > 2000:0:0:40::2.38717: Flags [P.], cksum 0x49fe (correct), seq 1:68, ack 52, win 56, options [nop,nop,TS val 778587143 ecr 778587143], length 67: BGP + Open Message (1), length: 67 + Version 4, my AS 23456, Holdtime 180s, ID 0.0.0.1 + Optional parameters, length: 38 + Option Capabilities Advertisement (2), length: 36 + Multiprotocol Extensions (1), length: 4 + AFI IPv6 (2), SAFI Unicast (1) + Multiprotocol Extensions (1), length: 4 + AFI IPv4 (1), SAFI SR-TE Policy (73) + Multiprotocol Extensions (1), length: 4 + AFI IPv6 (2), SAFI SR-TE Policy (73) + Route Refresh (2), length: 0 + Graceful Restart (64), length: 2 + Restart Flags: [R, N], Restart Time 300s + 32-Bit AS Number (65), length: 4 + 4 Byte AS 1523982034 + Multiple Paths (69), length: 4 + AFI IPv6 (2), SAFI Unicast (1), Send/Receive: Receive + 34 2019-04-16 20:37:13.973750 IP6 (flowlabel 0x42172, hlim 64, next-header TCP (6) payload length: 32) 2000:0:0:40::2.38717 > 2000:0:0:40::1.179: Flags [.], cksum 0x78ab (correct), ack 68, win 57, options [nop,nop,TS val 778587143 ecr 778587143], length 0 + 35 2019-04-16 20:37:13.973943 IP6 (flowlabel 0x42172, hlim 64, next-header TCP (6) payload length: 51) 2000:0:0:40::2.38717 > 2000:0:0:40::1.179: Flags [P.], cksum 0x747d (correct), seq 52:71, ack 68, win 57, options [nop,nop,TS val 778587143 ecr 778587143], length 19: BGP + Keepalive Message (4), length: 19 + 36 2019-04-16 20:37:13.977569 IP6 (class 0xc0, flowlabel 0x4cb8f, hlim 255, next-header TCP (6) payload length: 51) 2000:0:0:40::1.179 > 2000:0:0:40::2.38717: Flags [P.], cksum 0x747d (correct), seq 68:87, ack 52, win 56, options [nop,nop,TS val 778587144 ecr 778587143], length 19: BGP + Keepalive Message (4), length: 19 + 37 2019-04-16 20:37:14.018075 IP6 (flowlabel 0x42172, hlim 64, next-header TCP (6) payload length: 32) 2000:0:0:40::2.38717 > 2000:0:0:40::1.179: Flags [.], cksum 0x7878 (correct), ack 87, win 57, options [nop,nop,TS val 778587155 ecr 778587144], length 0 + 38 2019-04-16 20:37:14.018308 IP6 (class 0xc0, flowlabel 0x4cb8f, hlim 255, next-header TCP (6) payload length: 32) 2000:0:0:40::1.179 > 2000:0:0:40::2.38717: Flags [.], cksum 0x787a (correct), ack 71, win 56, options [nop,nop,TS val 778587155 ecr 778587143], length 0 + 39 2019-04-16 20:37:14.020857 IP6 (class 0xc0, flowlabel 0x4cb8f, hlim 255, next-header TCP (6) payload length: 51) 2000:0:0:40::1.179 > 2000:0:0:40::2.38717: Flags [P.], cksum 0x7440 (correct), seq 87:106, ack 71, win 56, options [nop,nop,TS val 778587155 ecr 778587155], length 19: BGP + Keepalive Message (4), length: 19 + 40 2019-04-16 20:37:14.021038 IP6 (flowlabel 0x42172, hlim 64, next-header TCP (6) payload length: 32) 2000:0:0:40::2.38717 > 2000:0:0:40::1.179: Flags [.], cksum 0x785a (correct), ack 106, win 57, options [nop,nop,TS val 778587155 ecr 778587155], length 0 + 41 2019-04-16 20:37:33.815821 IP6 (flowlabel 0x42172, hlim 64, next-header TCP (6) payload length: 339) 2000:0:0:40::2.38717 > 2000:0:0:40::1.179: Flags [P.], cksum 0xf673 (correct), seq 71:378, ack 106, win 57, options [nop,nop,TS val 778592104 ecr 778587155], length 307: BGP + Update Message (2), length: 307 + Community (8), length: 4, Flags [OT]: NO_ADVERTISE + Tunnel Encapsulation (23), length: 228, Flags [OT]: + Tunnel-type: SR Policy (15), length: 224 + Binding SID (13), length: 6, Flags [], Label: 965536, TC: 0, S: 0, TTL: 0 + Preference (12), length: 6, Flags [], Preference: 200 + Segment List (128), length: 25 + Segment Type A (1), length: 6, Flags [], Label: 65537, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 131073, TC: 0, S: 0, TTL: 0 + Weight (9), length: 6, Flags [], Weight: 500 + Segment List (128), length: 25 + Segment Type A (1), length: 6, Flags [], Label: 196609, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 262145, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 327682, TC: 0, S: 0, TTL: 0 + Segment List (128), length: 57 + Segment Type A (1), length: 6, Flags [], Label: 262145, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 262146, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 262147, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 262148, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 262149, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 262150, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 262151, TC: 0, S: 0, TTL: 0 + Segment List (128), length: 1 + Segment List (128), length: 9 + Weight (9), length: 6, Flags [], Weight: 111 + Segment List (128), length: 73 + Segment Type A (1), length: 6, Flags [], Label: 65537, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 65538, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 65539, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 65540, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 65541, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 65542, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 65543, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 65544, TC: 0, S: 0, TTL: 0 + Weight (9), length: 6, Flags [], Weight: 999 + Origin (1), length: 1, Flags [T]: IGP + AS Path (2), length: 6, Flags [T]: 200 + Local Preference (5), length: 4, Flags [T]: 100 + Multi-Protocol Reach NLRI (14), length: 22, Flags [OE]: + AFI: IPv4 (1), SAFI: SR-TE Policy (73) + nexthop: 1.0.0.2, nh-length: 4, no SNPA + NLRI Length: 96, Distinguisher: 4294967295, Color: 2147483648, Endpoint: 3.4.5.6 + 42 2019-04-16 20:37:33.819087 IP6 (class 0xc0, flowlabel 0x4cb8f, hlim 255, next-header TCP (6) payload length: 32) 2000:0:0:40::1.179 > 2000:0:0:40::2.38717: Flags [.], cksum 0x507d (correct), ack 378, win 56, options [nop,nop,TS val 778592105 ecr 778592104], length 0 + 43 2019-04-16 20:37:33.819228 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 1.0.0.2 tell 1.0.0.1, length 28 + 44 2019-04-16 20:37:33.819396 ARP, Ethernet (len 6), IPv4 (len 4), Reply 1.0.0.2 is-at 7e:4c:1f:cf:02:ce, length 28 + 45 2019-04-16 20:37:34.690324 IP6 (flowlabel 0x42172, hlim 64, next-header TCP (6) payload length: 363) 2000:0:0:40::2.38717 > 2000:0:0:40::1.179: Flags [P.], cksum 0x0190 (correct), seq 378:709, ack 106, win 57, options [nop,nop,TS val 778592323 ecr 778592105], length 331: BGP + Update Message (2), length: 331 + Community (8), length: 4, Flags [OT]: NO_ADVERTISE + Tunnel Encapsulation (23), length: 228, Flags [OT]: + Tunnel-type: SR Policy (15), length: 224 + Binding SID (13), length: 6, Flags [], Label: 965537, TC: 0, S: 0, TTL: 0 + Preference (12), length: 6, Flags [], Preference: 200 + Segment List (128), length: 25 + Segment Type A (1), length: 6, Flags [], Label: 65537, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 131073, TC: 0, S: 0, TTL: 0 + Weight (9), length: 6, Flags [], Weight: 500 + Segment List (128), length: 25 + Segment Type A (1), length: 6, Flags [], Label: 196609, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 262145, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 327682, TC: 0, S: 0, TTL: 0 + Segment List (128), length: 57 + Segment Type A (1), length: 6, Flags [], Label: 262145, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 262146, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 262147, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 262148, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 262149, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 262150, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 262151, TC: 0, S: 0, TTL: 0 + Segment List (128), length: 1 + Segment List (128), length: 9 + Weight (9), length: 6, Flags [], Weight: 111 + Segment List (128), length: 73 + Segment Type A (1), length: 6, Flags [], Label: 65537, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 65538, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 65539, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 65540, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 65541, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 65542, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 65543, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 65544, TC: 0, S: 0, TTL: 0 + Weight (9), length: 6, Flags [], Weight: 999 + Origin (1), length: 1, Flags [T]: IGP + AS Path (2), length: 6, Flags [T]: 200 + Local Preference (5), length: 4, Flags [T]: 100 + Multi-Protocol Reach NLRI (14), length: 46, Flags [OE]: + AFI: IPv6 (2), SAFI: SR-TE Policy (73) + nexthop: 2000:0:0:40::2, nh-length: 16, no SNPA + NLRI Length: 192, Distinguisher: 4294967295, Color: 2147483648, Endpoint: 2002::304:506 + 46 2019-04-16 20:37:34.693512 IP6 (class 0xc0, flowlabel 0x4cb8f, hlim 255, next-header TCP (6) payload length: 32) 2000:0:0:40::1.179 > 2000:0:0:40::2.38717: Flags [.], cksum 0x4d7d (correct), ack 709, win 56, options [nop,nop,TS val 778592323 ecr 778592323], length 0 + 47 2019-04-16 20:37:39.798084 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 32) fe80::7c4c:1fff:fecf:2ce > 2000:0:0:40::1: [icmp6 sum ok] ICMP6, neighbor solicitation, length 32, who has 2000:0:0:40::1 + source link-address option (1), length 8 (1): 7e:4c:1f:cf:02:ce + 48 2019-04-16 20:37:39.800930 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 24) 2000:0:0:40::1 > fe80::7c4c:1fff:fecf:2ce: [icmp6 sum ok] ICMP6, neighbor advertisement, length 24, tgt is 2000:0:0:40::1, Flags [router, solicited] + 49 2019-04-16 20:37:55.797538 IP6 (flowlabel 0x42172, hlim 64, next-header TCP (6) payload length: 75) 2000:0:0:40::2.38717 > 2000:0:0:40::1.179: Flags [P.], cksum 0x9720 (correct), seq 709:752, ack 106, win 57, options [nop,nop,TS val 778597599 ecr 778592323], length 43: BGP + Update Message (2), length: 43 + Multi-Protocol Unreach NLRI (15), length: 16, Flags [OE]: + AFI: IPv4 (1), SAFI: SR-TE Policy (73) + NLRI Length: 96, Distinguisher: 4294967295, Color: 2147483648, Endpoint: 3.4.5.6 + 50 2019-04-16 20:37:55.800569 IP6 (class 0xc0, flowlabel 0x4cb8f, hlim 255, next-header TCP (6) payload length: 32) 2000:0:0:40::1.179 > 2000:0:0:40::2.38717: Flags [.], cksum 0x2419 (correct), ack 752, win 56, options [nop,nop,TS val 778597600 ecr 778597599], length 0 + 51 2019-04-16 20:37:56.649536 IP6 (flowlabel 0x42172, hlim 64, next-header TCP (6) payload length: 87) 2000:0:0:40::2.38717 > 2000:0:0:40::1.179: Flags [P.], cksum 0x064b (correct), seq 752:807, ack 106, win 57, options [nop,nop,TS val 778597812 ecr 778597600], length 55: BGP + Update Message (2), length: 55 + Multi-Protocol Unreach NLRI (15), length: 28, Flags [OE]: + AFI: IPv6 (2), SAFI: SR-TE Policy (73) + NLRI Length: 192, Distinguisher: 4294967295, Color: 2147483648, Endpoint: 2002::304:506 + 52 2019-04-16 20:37:56.652666 IP6 (class 0xc0, flowlabel 0x4cb8f, hlim 255, next-header TCP (6) payload length: 32) 2000:0:0:40::1.179 > 2000:0:0:40::2.38717: Flags [.], cksum 0x2238 (correct), ack 807, win 56, options [nop,nop,TS val 778597813 ecr 778597812], length 0 + 53 2019-04-16 20:37:59.893446 IP6 (flowlabel 0x42172, hlim 64, next-header TCP (6) payload length: 351) 2000:0:0:40::2.38717 > 2000:0:0:40::1.179: Flags [P.], cksum 0x4c43 (correct), seq 807:1126, ack 106, win 57, options [nop,nop,TS val 778598623 ecr 778597813], length 319: BGP + Update Message (2), length: 319 + Community (8), length: 4, Flags [OT]: NO_ADVERTISE + Tunnel Encapsulation (23), length: 228, Flags [OT]: + Tunnel-type: SR Policy (15), length: 224 + Binding SID (13), length: 6, Flags [], Label: 965536, TC: 0, S: 0, TTL: 0 + Preference (12), length: 6, Flags [], Preference: 200 + Segment List (128), length: 25 + Segment Type A (1), length: 6, Flags [], Label: 65537, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 131073, TC: 0, S: 0, TTL: 0 + Weight (9), length: 6, Flags [], Weight: 500 + Segment List (128), length: 25 + Segment Type A (1), length: 6, Flags [], Label: 196609, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 262145, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 327682, TC: 0, S: 0, TTL: 0 + Segment List (128), length: 57 + Segment Type A (1), length: 6, Flags [], Label: 262145, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 262146, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 262147, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 262148, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 262149, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 262150, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 262151, TC: 0, S: 0, TTL: 0 + Segment List (128), length: 1 + Segment List (128), length: 9 + Weight (9), length: 6, Flags [], Weight: 111 + Segment List (128), length: 73 + Segment Type A (1), length: 6, Flags [], Label: 65537, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 65538, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 65539, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 65540, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 65541, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 65542, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 65543, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 65544, TC: 0, S: 0, TTL: 0 + Weight (9), length: 6, Flags [], Weight: 999 + Origin (1), length: 1, Flags [T]: IGP + AS Path (2), length: 6, Flags [T]: 200 + Local Preference (5), length: 4, Flags [T]: 100 + Multi-Protocol Reach NLRI (14), length: 34, Flags [OE]: + AFI: IPv4 (1), SAFI: SR-TE Policy (73) + nexthop: 2000:0:0:40::2, nh-length: 16, no SNPA + NLRI Length: 96, Distinguisher: 4294967295, Color: 2147483648, Endpoint: 3.4.5.6 + 54 2019-04-16 20:37:59.896504 IP6 (class 0xc0, flowlabel 0x4cb8f, hlim 255, next-header TCP (6) payload length: 32) 2000:0:0:40::1.179 > 2000:0:0:40::2.38717: Flags [.], cksum 0x1aa3 (correct), ack 1126, win 56, options [nop,nop,TS val 778598624 ecr 778598623], length 0 + 55 2019-04-16 20:37:59.958559 IP6 (flowlabel 0x42172, hlim 64, next-header TCP (6) payload length: 363) 2000:0:0:40::2.38717 > 2000:0:0:40::1.179: Flags [P.], cksum 0xcc7f (correct), seq 1126:1457, ack 106, win 57, options [nop,nop,TS val 778598640 ecr 778598624], length 331: BGP + Update Message (2), length: 331 + Community (8), length: 4, Flags [OT]: NO_ADVERTISE + Tunnel Encapsulation (23), length: 228, Flags [OT]: + Tunnel-type: SR Policy (15), length: 224 + Binding SID (13), length: 6, Flags [], Label: 965537, TC: 0, S: 0, TTL: 0 + Preference (12), length: 6, Flags [], Preference: 200 + Segment List (128), length: 25 + Segment Type A (1), length: 6, Flags [], Label: 65537, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 131073, TC: 0, S: 0, TTL: 0 + Weight (9), length: 6, Flags [], Weight: 500 + Segment List (128), length: 25 + Segment Type A (1), length: 6, Flags [], Label: 196609, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 262145, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 327682, TC: 0, S: 0, TTL: 0 + Segment List (128), length: 57 + Segment Type A (1), length: 6, Flags [], Label: 262145, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 262146, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 262147, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 262148, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 262149, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 262150, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 262151, TC: 0, S: 0, TTL: 0 + Segment List (128), length: 1 + Segment List (128), length: 9 + Weight (9), length: 6, Flags [], Weight: 111 + Segment List (128), length: 73 + Segment Type A (1), length: 6, Flags [], Label: 65537, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 65538, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 65539, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 65540, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 65541, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 65542, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 65543, TC: 0, S: 0, TTL: 0 + Segment Type A (1), length: 6, Flags [], Label: 65544, TC: 0, S: 0, TTL: 0 + Weight (9), length: 6, Flags [], Weight: 999 + Origin (1), length: 1, Flags [T]: IGP + AS Path (2), length: 6, Flags [T]: 200 + Local Preference (5), length: 4, Flags [T]: 100 + Multi-Protocol Reach NLRI (14), length: 46, Flags [OE]: + AFI: IPv6 (2), SAFI: SR-TE Policy (73) + nexthop: 2000:0:0:40::2, nh-length: 16, no SNPA + NLRI Length: 192, Distinguisher: 4294967295, Color: 2147483648, Endpoint: 2002::304:506 + 56 2019-04-16 20:37:59.960950 IP6 (class 0xc0, flowlabel 0x4cb8f, hlim 255, next-header TCP (6) payload length: 32) 2000:0:0:40::1.179 > 2000:0:0:40::2.38717: Flags [.], cksum 0x1937 (correct), ack 1457, win 56, options [nop,nop,TS val 778598640 ecr 778598640], length 0 + 57 2019-04-16 20:38:04.817099 IP6 (class 0xc0, flowlabel 0x4cb8f, hlim 255, next-header TCP (6) payload length: 53) 2000:0:0:40::1.179 > 2000:0:0:40::2.38717: Flags [P.], cksum 0x0e41 (correct), seq 106:127, ack 1457, win 56, options [nop,nop,TS val 778599854 ecr 778598640], length 21: BGP + Notification Message (3), length: 21, Cease (6), subcode Peer Unconfigured (3) + 58 2019-04-16 20:38:04.817304 IP6 (class 0xc0, flowlabel 0x4cb8f, hlim 255, next-header TCP (6) payload length: 32) 2000:0:0:40::1.179 > 2000:0:0:40::2.38717: Flags [F.], cksum 0x1463 (correct), seq 127, ack 1457, win 56, options [nop,nop,TS val 778599854 ecr 778598640], length 0 + 59 2019-04-16 20:38:04.817436 IP6 (flowlabel 0x42172, hlim 64, next-header TCP (6) payload length: 32) 2000:0:0:40::2.38717 > 2000:0:0:40::1.179: Flags [.], cksum 0x0fa5 (correct), ack 127, win 57, options [nop,nop,TS val 778599854 ecr 778599854], length 0 + 60 2019-04-16 20:38:04.857972 IP6 (flowlabel 0x42172, hlim 64, next-header TCP (6) payload length: 32) 2000:0:0:40::2.38717 > 2000:0:0:40::1.179: Flags [.], cksum 0x0f99 (correct), ack 128, win 57, options [nop,nop,TS val 778599865 ecr 778599854], length 0 + 61 2019-04-16 20:38:08.442566 IP6 (hlim 1, next-header Options (0) payload length: 116) fe80::200:eff:fe01:0 > ff02::16: HBH (rtalert: 0x0000) (padn) [icmp6 sum ok] ICMP6, multicast listener report v2, 5 group record(s) [gaddr ff02::1:ff00:0 to_ex, 0 source(s)] [gaddr ff05::2 to_ex, 0 source(s)] [gaddr ff02::2 to_ex, 0 source(s)] [gaddr ff02::1:ff00:1 to_ex, 0 source(s)] [gaddr ff02::1:ff01:0 to_ex, 0 source(s)] + 62 2019-04-16 20:38:09.662200 IP6 (hlim 1, next-header Options (0) payload length: 76) fe80::7c4c:1fff:fecf:2ce > ff02::16: HBH (rtalert: 0x0000) (padn) [icmp6 sum ok] ICMP6, multicast listener report v2, 3 group record(s) [gaddr ff02::1:ff00:0 to_in, 0 source(s)] [gaddr ff05::2 to_in, 0 source(s)] [gaddr ff02::2 to_in, 0 source(s)] + 63 2019-04-16 20:38:09.668050 IP6 (hlim 1, next-header Options (0) payload length: 76) fe80::a007:a2ff:fe03:6ee0 > ff02::16: HBH (rtalert: 0x0000) (padn) [icmp6 sum ok] ICMP6, multicast listener report v2, 3 group record(s) [gaddr ff02::1:ff00:0 to_in, 0 source(s)] [gaddr ff05::2 to_in, 0 source(s)] [gaddr ff02::2 to_in, 0 source(s)] + 64 2019-04-16 20:38:09.684548 IP6 (hlim 1, next-header Options (0) payload length: 76) fe80::a007:a2ff:fe03:6ee0 > ff02::16: HBH (rtalert: 0x0000) (padn) [icmp6 sum ok] ICMP6, multicast listener report v2, 3 group record(s) [gaddr ff02::1:ff00:0 to_in, 0 source(s)] [gaddr ff05::2 to_in, 0 source(s)] [gaddr ff02::2 to_in, 0 source(s)] + 65 2019-04-16 20:38:10.390145 IP6 (hlim 1, next-header Options (0) payload length: 76) fe80::7c4c:1fff:fecf:2ce > ff02::16: HBH (rtalert: 0x0000) (padn) [icmp6 sum ok] ICMP6, multicast listener report v2, 3 group record(s) [gaddr ff02::1:ff00:0 to_in, 0 source(s)] [gaddr ff05::2 to_in, 0 source(s)] [gaddr ff02::2 to_in, 0 source(s)] diff --git a/tests/bgp-sr-te-tunnel-policy.pcap b/tests/bgp-sr-te-tunnel-policy.pcap new file mode 100644 index 0000000000000000000000000000000000000000..96c06cd8a345e73334363e57e201b5db7e759db1 GIT binary patch literal 8628 zcmeHN4RBOf6+ZXvf7onR36!5G&q8Y@?V5CHvzv-MCey-}RAN==&`L6bPOzFH4K|_1 zE|n3O!Gg9K>cB`6r;cq2Ru?FCv<=GGYC~H)j*g{B+Hursty}TyZiS2?7r!X z$!KTl&D?kQ-Fx5p&Uena=f0o(=I1}^SIAFB$>)g#PX6(cgSS2QmY+KCn`<(O!&IUe z2ETs14JVW$F`DHcL<+_7qZr96^1N`I+DHNP2-;4quk$pQ>Py}dVv{{pGw*68(_Rqr5;&ca3y z|IFvm$QCme8@>H{8Nb(9qs9dhS_WftO(uD@*}SGU=2eWKX!;SpwyYt2b#A5y>v>F- z6ExY75Cut$61dSsk@9W4OHqU>#b~l2WeZ*YhY_5pvO|*%2?e=;GY+FPEs4-d3~-gb zMJ}Pw*3uP0P1Q$CE{=0CIGb|+TJvgxr}Zgov%N@cia*fjSHcyE_8Wf5{le#qFxm^B zjL?lZ=jz}TJ^Ch9m!Jt1Gf_1C2*H#C9tsdY+)_>S>T${AvY)u}h#cGGg~$C7%I$e< z#Yb5>^LXGxHXbi>zro|;5mz1+yLNly0X!5SE?^$7^h+MCODo*`5j(QT3y(d&quh$= zgEcIjd2E1~q7<8_nVcqpN5UU>ZQ4a&{V z-G7p$Gmpo=WaIG~_ZvLUr6;-Z2;RBf8xP>20Pz&_2o%=GTR(`p@gTLs3y*DBAGgv7m03OQjjkgf<`1?7cb69!lR=LK@tn;w;X)iqb z`ziNa1?Hl#Kh_?y@wl4%nFpf{e_pQfGV9!TXpc7@z(WDzO6Kw84$0$JdjoF%sN9zE z!sBbTlsg-}`BN;Nc`QQ)G4s`;t=w<$n0F}P=8y2oSG@569tsebF^`9$MCW0l)&Fc+4sRO_@CVlw7kmG&3#X( zd}f|wAKW?r4J0Uvcd5%uOxXbrn?yEAG0Y zz-=)Q_h#di?nX=t!TY<8q%cbGg&6VT(HD?@e^I=XV3bdc5oH>szt>Vk2{BUMQ79?= zxAyTIA*L$Tc;*q5!BL@%LJR#Xe*69xS+VR(CjBzTRy`YgFN}RR=%>0)*%S*g%2mf= zgcYdQGAOIYh%${*nNd56gMFTwbo%=NDlS*%=){HH2%2*EN@^{8D@M!D0Png%J`u2O%P{u7%I-Tkd`8jj+Ervc8Ngvi*@XOJc&`jS&%t~~ z0loY5VBTOu2{B6d$ED}kdu32O8?k`GM$~L5lU z<(Vu^CxPE_{Bf(Ijp$?ItT9$s7}E-E3ua|0tzYJ+YdfRVWTP|}s9a?n z${+{_NrWlL+lan@p<&fgSX;jGh~-La;1sV^V_d|*oj^`o1s^-8>V!|o_< z_nHr{J#2)Wz#XyNgWHi}M9>o$4xq0P6F8*!{xdbVhxXPC2RUwN)Lu{-p&Qw^+ zC>)CHuyAk1goR=%%At5uF%;QhZB3Jbvgs-_;2mMX3gIQsXjW=wyZ}_?sU{l|o9W_F z{;kRmO*VW_Btwx=22xS_7zVi7(|H?DpH}k1s`v`pK;1$wJvD@>Dk_Sm9}!-&A^kJ8 zQQC+Ot_}`-(OA7Qh7JigHQqUAK>3ir6nrYPQwDPP#ByIbn$`J;F}=a&u+vup<=MNU zbUShb*D@&Aczqf>gH#L@JV?YA8Yn&c5EiGM8G@$xfQ93U%*YLPeYIPL6tB`k(JwHyg_w1_!$}fh3 zgx8XKE%SY}b1dISm+yig{g&VH?aTA`QGQ%-T#J_*jy`NW_0as#j0(p$LK$p@uiBPx zgvJexMKWYsziL0Pe@FE>k#Mf}Ilk;V=CLe=HTqV)Q=@^?i&5{ jPYmur;_rxK(#XH=outv#u#v$3BHRlWTxGodFTM6})mt}~ literal 0 HcmV?d00001