IS-IS PPR Basic =============== .. contents:: Table of contents :local: :backlinks: entry :depth: 2 Software ~~~~~~~~ The FRR PPR implementation for IS-IS is available here: https://github.com/opensourcerouting/frr/tree/isisd-ppr Topology ~~~~~~~~ In this topology we have an IS-IS network consisting of 12 routers. CE1 and CE2 are the consumer edges, connected to R11 and R14, respectively. Three hosts are connected to the CEs using only static routes. Router R11 advertises 6 PPR TLVs, which corresponds to three bi-directional GRE tunnels: \* **6000:1::1 <-> 6000:2::1:** {R11 - R21 - R22 - R23 - R14} (IPv6 Node Addresses only) \* **6000:1::2 <-> 6000:2::2:** {R11 - R21 - R32 - R41 - R33 - R23 - R14} (IPv6 Node and Interface Addresses) \* **6000:1::3 <-> 6000:2::3:** {R11 - R21 - R99 - R23 - R14} (misconfigured path) PBR rules are configured on R11 and R14 to route the traffic between Host 1 and Host 3 using the first PPR tunnel. Traffic between Host 2 and Host 3 uses the regular IS-IS shortest path. Additional information: \* Addresses in the 4000::/16 range refer to interface addresses, where the last hextet corresponds to the node ID. \* Addresses in the 5000::/16 range refer to loopback addresses, where the last hextet corresponds to the node ID. \* Addresses in the 6000::/16 range refer to PPR-ID addresses. :: +-------+ +-------+ +-------+ | | | | | | | HOST1 | | HOST2 | | HOST3 | | | | | | | +---+---+ +---+---+ +---+---+ | | | |fd00:10:1::/64 | | +-----+ +------+ fd00:20:1::/64| | |fd00:10:2::/64 | | | | +-+--+--+ +---+---+ | | | | | CE1 | | CE2 | | | | | +---+---+ +---+---+ | | | | |fd00:10:0::/64 fd00:20:0::/64| | | | | +---+---+ +-------+ +-------+ +---+---+ | |4000:101::/64| |4000:102::/64| |4000:103::/64| | | R11 +-------------+ R12 +-------------+ R13 +-------------+ R14 | | | | | | | | | +---+---+ +--+-+--+ +--+-+--+ +---+---+ | | | | | | |4000:104::/64 | |4000:106::/64 | |4000:108::/64 | +---------+ +--------+ +--------+ +--------+ +--------+ +---------+ | |4000:105::/64 | |4000:107::/64 | |4000:109::/64 | | | | | | +--+-+--+ +--+-+--+ +--+-+--+ | |4000:110::/64| |4000:111::/64| | | R21 +-------------+ R22 +-------------+ R23 | | | | | | | +--+-+--+ +--+-+--+ +--+-+--+ | | | | | | | |4000:113::/64 | |4000:115::/64 | |4000:117::/64 +---------+ +--------+ +--------+ +--------+ +--------+ +---------+ |4000:112::/64 | |4000:114::/64 | |4000:116::/64 | | | | | | | +---+---+ +--+-+--+ +--+-+--+ +---+---+ | |4000:118::/64| |4000:119::/64| |4000:120::/64| | | R31 +-------------+ R32 +-------------+ R33 +-------------+ R34 | | | | | | | | | +-------+ +---+---+ +---+---+ +-------+ | | |4000:121::/64 | +----------+----------+ | | +---+---+ | | | R41 | | | +-------+ Configuration ~~~~~~~~~~~~~ PPR TLV processing needs to be enabled on all IS-IS routers using the ``ppr on`` command. The advertisements of all PPR TLVs is done by router R11. CLI configuration ^^^^^^^^^^^^^^^^^ .. code:: yaml --- routers: host1: links: eth-ce1: peer: [ce1, eth-host1] frr: zebra: staticd: config: | interface eth-ce1 ipv6 address fd00:10:1::1/64 ! ipv6 route ::/0 fd00:10:1::100 host2: links: eth-ce1: peer: [ce1, eth-host2] frr: zebra: staticd: config: | interface eth-ce1 ipv6 address fd00:10:2::1/64 ! ipv6 route ::/0 fd00:10:2::100 host3: links: eth-ce2: peer: [ce2, eth-host3] frr: zebra: staticd: config: | interface eth-ce2 ipv6 address fd00:20:1::1/64 ! ipv6 route ::/0 fd00:20:1::100 ce1: links: eth-host1: peer: [host1, eth-ce1] eth-host2: peer: [host2, eth-ce1] eth-rt11: peer: [rt11, eth-ce1] frr: zebra: staticd: config: | interface eth-host1 ipv6 address fd00:10:1::100/64 ! interface eth-host2 ipv6 address fd00:10:2::100/64 ! interface eth-rt11 ipv6 address fd00:10:0::100/64 ! ipv6 route ::/0 fd00:10:0::11 ce2: links: eth-host3: peer: [host3, eth-ce2] eth-rt14: peer: [rt14, eth-ce2] frr: zebra: staticd: config: | interface eth-host3 ipv6 address fd00:20:1::100/64 ! interface eth-rt14 ipv6 address fd00:20:0::100/64 ! ipv6 route ::/0 fd00:20:0::14 rt11: links: lo-ppr: eth-ce1: peer: [ce1, eth-rt11] eth-rt12: peer: [rt12, eth-rt11] eth-rt21: peer: [rt21, eth-rt11] shell: | # GRE tunnel for preferred packets (PPR) ip -6 tunnel add tun-ppr mode ip6gre remote 6000:2::1 local 6000:1::1 ttl 64 ip link set dev tun-ppr up # PBR rules ip -6 rule add from fd00:10:1::/64 to fd00:20:1::/64 iif eth-ce1 lookup 10000 ip -6 route add default dev tun-ppr table 10000 frr: zebra: staticd: isisd: config: | interface lo-ppr ipv6 address 6000:1::1/128 ipv6 address 6000:1::2/128 ipv6 address 6000:1::3/128 ! interface lo ipv6 address 5000::11/128 ipv6 router isis 1 ! interface eth-ce1 ipv6 address fd00:10:0::11/64 ! interface eth-rt12 ipv6 address 4000:101::11/64 ipv6 router isis 1 isis network point-to-point isis hello-multiplier 3 ! interface eth-rt21 ipv6 address 4000:104::11/64 ipv6 router isis 1 isis network point-to-point isis hello-multiplier 3 ! ipv6 route fd00:10::/32 fd00:10:0::100 ! ppr group VOIP ppr ipv6 6000:1::1/128 prefix 5000::11/128 metric 50 pde ipv6-node 5000::14/128 pde ipv6-node 5000::23/128 pde ipv6-node 5000::22/128 pde ipv6-node 5000::21/128 pde ipv6-node 5000::11/128 ! ppr ipv6 6000:2::1/128 prefix 5000::14/128 metric 50 pde ipv6-node 5000::11/128 pde ipv6-node 5000::21/128 pde ipv6-node 5000::22/128 pde ipv6-node 5000::23/128 pde ipv6-node 5000::14/128 ! ! ppr group INTERFACE_PDES ppr ipv6 6000:1::2/128 prefix 5000::11/128 pde ipv6-node 5000::14/128 pde ipv6-node 5000::23/128 pde ipv6-node 5000::33/128 pde ipv6-interface 4000:121::41/64 pde ipv6-node 5000::32/128 pde ipv6-interface 4000:113::21/64 pde ipv6-node 5000::11/128 ! ppr ipv6 6000:2::2/128 prefix 5000::14/128 pde ipv6-node 5000::11/128 pde ipv6-node 5000::21/128 pde ipv6-node 5000::32/128 pde ipv6-interface 4000:121::41/64 pde ipv6-node 5000::33/128 pde ipv6-interface 4000:116::23/64 pde ipv6-node 5000::14/128 ! ! ppr group BROKEN ppr ipv6 6000:1::3/128 prefix 5000::11/128 metric 1500 pde ipv6-node 5000::14/128 pde ipv6-node 5000::23/128 ! non-existing node!!! pde ipv6-node 5000::99/128 pde ipv6-node 5000::21/128 pde ipv6-node 5000::11/128 ! ppr ipv6 6000:2::3/128 prefix 5000::14/128 metric 1500 pde ipv6-node 5000::11/128 pde ipv6-node 5000::21/128 ! non-existing node!!! pde ipv6-node 5000::99/128 pde ipv6-node 5000::23/128 pde ipv6-node 5000::14/128 ! ! router isis 1 net 49.0000.0000.0000.0011.00 is-type level-1 topology ipv6-unicast ppr on ppr advertise VOIP ppr advertise INTERFACE_PDES ppr advertise BROKEN ! rt12: links: eth-rt11: peer: [rt11, eth-rt12] eth-rt13: peer: [rt13, eth-rt12] eth-rt21: peer: [rt21, eth-rt12] eth-rt22: peer: [rt22, eth-rt12] frr: zebra: isisd: config: | interface lo ipv6 address 5000::12/128 ipv6 router isis 1 ! interface eth-rt11 ipv6 address 4000:101::12/64 ipv6 router isis 1 isis network point-to-point isis hello-multiplier 3 ! interface eth-rt13 ipv6 address 4000:102::12/64 ipv6 router isis 1 isis network point-to-point isis hello-multiplier 3 ! interface eth-rt21 ipv6 address 4000:105::12/64 ipv6 router isis 1 isis network point-to-point isis hello-multiplier 3 ! interface eth-rt22 ipv6 address 4000:106::12/64 ipv6 router isis 1 isis network point-to-point isis hello-multiplier 3 ! router isis 1 net 49.0000.0000.0000.0012.00 is-type level-1 topology ipv6-unicast ppr on ! rt13: links: eth-rt12: peer: [rt12, eth-rt13] eth-rt14: peer: [rt14, eth-rt13] eth-rt22: peer: [rt22, eth-rt13] eth-rt23: peer: [rt23, eth-rt13] frr: zebra: isisd: config: | interface lo ipv6 address 5000::13/128 ipv6 router isis 1 ! interface eth-rt12 ipv6 address 4000:102::13/64 ipv6 router isis 1 isis network point-to-point isis hello-multiplier 3 ! interface eth-rt14 ipv6 address 4000:103::13/64 ipv6 router isis 1 isis network point-to-point isis hello-multiplier 3 ! interface eth-rt22 ipv6 address 4000:107::13/64 ipv6 router isis 1 isis network point-to-point isis hello-multiplier 3 ! interface eth-rt23 ipv6 address 4000:108::13/64 ipv6 router isis 1 isis network point-to-point isis hello-multiplier 3 ! router isis 1 net 49.0000.0000.0000.0013.00 is-type level-1 topology ipv6-unicast ppr on ! rt14: links: lo-ppr: eth-ce2: peer: [ce2, eth-rt14] eth-rt13: peer: [rt13, eth-rt14] eth-rt23: peer: [rt23, eth-rt14] shell: | # GRE tunnel for preferred packets (PPR) ip -6 tunnel add tun-ppr mode ip6gre remote 6000:1::1 local 6000:2::1 ttl 64 ip link set dev tun-ppr up # PBR rules ip -6 rule add from fd00:20:1::/64 to fd00:10:1::/64 iif eth-ce2 lookup 10000 ip -6 route add default dev tun-ppr table 10000 frr: zebra: staticd: isisd: config: | interface lo-ppr ipv6 address 6000:2::1/128 ipv6 address 6000:2::2/128 ipv6 address 6000:2::3/128 ! interface lo ipv6 address 5000::14/128 ipv6 router isis 1 ! interface eth-ce2 ipv6 address fd00:20:0::14/64 ! interface eth-rt13 ipv6 address 4000:103::14/64 ipv6 router isis 1 isis network point-to-point isis hello-multiplier 3 ! interface eth-rt23 ipv6 address 4000:109::14/64 ipv6 router isis 1 isis network point-to-point isis hello-multiplier 3 ! ipv6 route fd00:20::/32 fd00:20:0::100 ! router isis 1 net 49.0000.0000.0000.0014.00 is-type level-1 topology ipv6-unicast ppr on ! rt21: links: eth-rt11: peer: [rt11, eth-rt21] eth-rt12: peer: [rt12, eth-rt21] eth-rt22: peer: [rt22, eth-rt21] eth-rt31: peer: [rt31, eth-rt21] eth-rt32: peer: [rt32, eth-rt21] frr: zebra: isisd: config: | interface lo ipv6 address 5000::21/128 ipv6 router isis 1 ! interface eth-rt11 ipv6 address 4000:104::21/64 ipv6 router isis 1 isis network point-to-point isis hello-multiplier 3 ! interface eth-rt12 ipv6 address 4000:105::21/64 ipv6 router isis 1 isis network point-to-point isis hello-multiplier 3 ! interface eth-rt22 ipv6 address 4000:110::21/64 ipv6 router isis 1 isis network point-to-point isis hello-multiplier 3 ! interface eth-rt31 ipv6 address 4000:112::21/64 ipv6 router isis 1 isis network point-to-point isis hello-multiplier 3 ! interface eth-rt32 ipv6 address 4000:113::21/64 ipv6 router isis 1 isis network point-to-point isis hello-multiplier 3 ! router isis 1 net 49.0000.0000.0000.0021.00 is-type level-1 topology ipv6-unicast ppr on ! rt22: links: eth-rt12: peer: [rt12, eth-rt22] eth-rt13: peer: [rt13, eth-rt22] eth-rt21: peer: [rt21, eth-rt22] eth-rt23: peer: [rt23, eth-rt22] eth-rt32: peer: [rt32, eth-rt22] eth-rt33: peer: [rt33, eth-rt22] frr: zebra: isisd: config: | interface lo ipv6 address 5000::22/128 ipv6 router isis 1 ! interface eth-rt12 ipv6 address 4000:106::22/64 ipv6 router isis 1 isis network point-to-point isis hello-multiplier 3 ! interface eth-rt13 ipv6 address 4000:107::22/64 ipv6 router isis 1 isis network point-to-point isis hello-multiplier 3 ! interface eth-rt21 ipv6 address 4000:110::22/64 ipv6 router isis 1 isis network point-to-point isis hello-multiplier 3 ! interface eth-rt23 ipv6 address 4000:111::22/64 ipv6 router isis 1 isis network point-to-point isis hello-multiplier 3 ! interface eth-rt32 ipv6 address 4000:114::22/64 ipv6 router isis 1 isis network point-to-point isis hello-multiplier 3 ! interface eth-rt33 ipv6 address 4000:115::22/64 ipv6 router isis 1 isis network point-to-point isis hello-multiplier 3 ! router isis 1 net 49.0000.0000.0000.0022.00 is-type level-1 topology ipv6-unicast ppr on ! rt23: links: eth-rt13: peer: [rt13, eth-rt23] eth-rt14: peer: [rt14, eth-rt23] eth-rt22: peer: [rt22, eth-rt23] eth-rt33: peer: [rt33, eth-rt23] eth-rt34: peer: [rt34, eth-rt23] frr: zebra: isisd: config: | interface lo ipv6 address 5000::23/128 ipv6 router isis 1 ! interface eth-rt13 ipv6 address 4000:108::23/64 ipv6 router isis 1 isis network point-to-point isis hello-multiplier 3 ! interface eth-rt14 ipv6 address 4000:109::23/64 ipv6 router isis 1 isis network point-to-point isis hello-multiplier 3 ! interface eth-rt22 ipv6 address 4000:111::23/64 ipv6 router isis 1 isis network point-to-point isis hello-multiplier 3 ! interface eth-rt33 ipv6 address 4000:116::23/64 ipv6 router isis 1 isis network point-to-point isis hello-multiplier 3 ! interface eth-rt34 ipv6 address 4000:117::23/64 ipv6 router isis 1 isis network point-to-point isis hello-multiplier 3 ! router isis 1 net 49.0000.0000.0000.0023.00 is-type level-1 topology ipv6-unicast ppr on ! rt31: links: eth-rt21: peer: [rt21, eth-rt31] eth-rt32: peer: [rt32, eth-rt31] frr: zebra: isisd: config: | interface lo ipv6 address 5000::31/128 ipv6 router isis 1 ! interface eth-rt21 ipv6 address 4000:112::31/64 ipv6 router isis 1 isis network point-to-point isis hello-multiplier 3 ! interface eth-rt32 ipv6 address 4000:118::31/64 ipv6 router isis 1 isis network point-to-point isis hello-multiplier 3 ! router isis 1 net 49.0000.0000.0000.0031.00 is-type level-1 topology ipv6-unicast ppr on ! rt32: links: eth-rt21: peer: [rt21, eth-rt32] eth-rt22: peer: [rt22, eth-rt32] eth-rt31: peer: [rt31, eth-rt32] eth-rt33: peer: [rt33, eth-rt32] eth-sw1: peer: [sw1, eth-rt32] frr: zebra: isisd: config: | interface lo ipv6 address 5000::32/128 ipv6 router isis 1 ! interface eth-rt21 ipv6 address 4000:113::32/64 ipv6 router isis 1 isis network point-to-point isis hello-multiplier 3 ! interface eth-rt22 ipv6 address 4000:114::32/64 ipv6 router isis 1 isis network point-to-point isis hello-multiplier 3 ! interface eth-rt31 ipv6 address 4000:118::32/64 ipv6 router isis 1 isis network point-to-point isis hello-multiplier 3 ! interface eth-rt33 ipv6 address 4000:119::32/64 ipv6 router isis 1 isis network point-to-point isis hello-multiplier 3 ! interface eth-sw1 ipv6 address 4000:121::32/64 ipv6 router isis 1 isis hello-multiplier 3 ! router isis 1 net 49.0000.0000.0000.0032.00 is-type level-1 topology ipv6-unicast ppr on ! rt33: links: eth-rt22: peer: [rt22, eth-rt33] eth-rt23: peer: [rt23, eth-rt33] eth-rt32: peer: [rt32, eth-rt33] eth-rt34: peer: [rt34, eth-rt33] eth-sw1: peer: [sw1, eth-rt33] frr: zebra: isisd: config: | interface lo ipv6 address 5000::33/128 ipv6 router isis 1 ! interface eth-rt22 ipv6 address 4000:115::33/64 ipv6 router isis 1 isis network point-to-point isis hello-multiplier 3 ! interface eth-rt23 ipv6 address 4000:116::33/64 ipv6 router isis 1 isis network point-to-point isis hello-multiplier 3 ! interface eth-rt32 ipv6 address 4000:119::33/64 ipv6 router isis 1 isis network point-to-point isis hello-multiplier 3 ! interface eth-rt34 ipv6 address 4000:120::33/64 ipv6 router isis 1 isis network point-to-point isis hello-multiplier 3 ! interface eth-sw1 ipv6 address 4000:121::33/64 ipv6 router isis 1 isis hello-multiplier 3 ! router isis 1 net 49.0000.0000.0000.0033.00 is-type level-1 topology ipv6-unicast ppr on ! rt34: links: eth-rt23: peer: [rt23, eth-rt34] eth-rt33: peer: [rt33, eth-rt34] frr: zebra: isisd: config: | interface lo ipv6 address 5000::34/128 ipv6 router isis 1 ! interface eth-rt23 ipv6 address 4000:117::34/64 ipv6 router isis 1 isis network point-to-point isis hello-multiplier 3 ! interface eth-rt33 ipv6 address 4000:120::34/64 ipv6 router isis 1 isis network point-to-point isis hello-multiplier 3 ! router isis 1 net 49.0000.0000.0000.0034.00 is-type level-1 topology ipv6-unicast ppr on ! rt41: links: eth-sw1: peer: [sw1, eth-rt41] frr: zebra: isisd: config: | interface lo ipv6 address 5000::41/128 ipv6 router isis 1 ! interface eth-sw1 ipv6 address 4000:121::41/64 ipv6 router isis 1 isis hello-multiplier 3 ! router isis 1 net 49.0000.0000.0000.0041.00 is-type level-1 topology ipv6-unicast ppr on ! switches: sw1: links: eth-rt32: peer: [rt32, eth-sw1] eth-rt33: peer: [rt33, eth-sw1] eth-rt41: peer: [rt41, eth-sw1] frr: base-config: | hostname %(node) password 1 log file %(logdir)/%(node).log log commands ! debug zebra rib debug isis ppr debug isis events debug isis route-events debug isis spf-events debug isis lsp-gen ! YANG ^^^^ PPR can also be configured using NETCONF, RESTCONF and gRPC based on the following YANG models: \* `frr-ppr.yang `__ \* `frr-isisd.yang `__ As an example, here’s R11 configuration in the XML format: .. code:: xml lo-ppr default lo default 1 true eth-ce1 default eth-rt12 default 1 true 3 3 point-to-point eth-rt21 default 1 true 3 3 point-to-point VOIP 6000:1::1/128 5000::11/128 5000::14/128 ipv6-node topological 5000::23/128 ipv6-node topological 5000::22/128 ipv6-node topological 5000::21/128 ipv6-node topological 5000::11/128 ipv6-node topological 50 6000:2::1/128 5000::14/128 5000::11/128 ipv6-node topological 5000::21/128 ipv6-node topological 5000::22/128 ipv6-node topological 5000::23/128 ipv6-node topological 5000::14/128 ipv6-node topological 50 INTERFACE_PDES 6000:1::2/128 5000::11/128 5000::14/128 ipv6-node topological 5000::23/128 ipv6-node topological 5000::33/128 ipv6-node topological 4000:121::41/64 ipv6-interface topological 5000::32/128 ipv6-node topological 4000:113::21/64 ipv6-interface topological 5000::11/128 ipv6-node topological 6000:2::2/128 5000::14/128 5000::11/128 ipv6-node topological 5000::21/128 ipv6-node topological 5000::32/128 ipv6-node topological 4000:121::41/64 ipv6-interface topological 5000::33/128 ipv6-node topological 4000:116::23/64 ipv6-interface topological 5000::14/128 ipv6-node topological BROKEN 6000:1::3/128 5000::11/128 5000::14/128 ipv6-node topological 5000::23/128 ipv6-node topological 5000::99/128 ipv6-node topological 5000::21/128 ipv6-node topological 5000::11/128 ipv6-node topological 1500 6000:2::3/128 5000::14/128 5000::11/128 ipv6-node topological 5000::21/128 ipv6-node topological 5000::99/128 ipv6-node topological 5000::23/128 ipv6-node topological 5000::14/128 ipv6-node topological 1500 1 49.0000.0000.0000.0011.00 true VOIP INTERFACE_PDES BROKEN Verification - Control Plane ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Verify that R11 has flooded the PPR TLVs correctly to all IS-IS routers: :: # show isis database detail 0000.0000.0011 Area 1: IS-IS Level-1 link-state database: LSP ID PduLen SeqNumber Chksum Holdtime ATT/P/OL debian.00-00 1233 0x00000009 0x7bd4 683 0/0/0 Protocols Supported: IPv4, IPv6 Area Address: 49.0000 MT Router Info: ipv4-unicast MT Router Info: ipv6-unicast Hostname: debian MT Reachability: 0000.0000.0012.00 (Metric: 10) ipv6-unicast MT Reachability: 0000.0000.0021.00 (Metric: 10) ipv6-unicast MT IPv6 Reachability: 5000::11/128 (Metric: 10) ipv6-unicast MT IPv6 Reachability: 4000:101::/64 (Metric: 10) ipv6-unicast MT IPv6 Reachability: 4000:104::/64 (Metric: 10) ipv6-unicast PPR: Fragment ID: 0, MT-ID: ipv4-unicast, Algorithm: SPF, F:0 D:0 A:0 U:1 PPR Prefix: 5000::11/128 ID: 6000:1::3/128 (Native IPv6) PDE: 5000::14/128 (IPv6 Node Address), L:0 N:0 E:0 PDE: 5000::23/128 (IPv6 Node Address), L:0 N:0 E:0 PDE: 5000::99/128 (IPv6 Node Address), L:0 N:0 E:0 PDE: 5000::21/128 (IPv6 Node Address), L:0 N:0 E:0 PDE: 5000::11/128 (IPv6 Node Address), L:0 N:1 E:0 Metric: 1500 PPR: Fragment ID: 0, MT-ID: ipv4-unicast, Algorithm: SPF, F:0 D:0 A:0 U:1 PPR Prefix: 5000::14/128 ID: 6000:2::3/128 (Native IPv6) PDE: 5000::11/128 (IPv6 Node Address), L:0 N:0 E:0 PDE: 5000::21/128 (IPv6 Node Address), L:0 N:0 E:0 PDE: 5000::99/128 (IPv6 Node Address), L:0 N:0 E:0 PDE: 5000::23/128 (IPv6 Node Address), L:0 N:0 E:0 PDE: 5000::14/128 (IPv6 Node Address), L:0 N:1 E:0 Metric: 1500 PPR: Fragment ID: 0, MT-ID: ipv4-unicast, Algorithm: SPF, F:0 D:0 A:0 U:1 PPR Prefix: 5000::11/128 ID: 6000:1::2/128 (Native IPv6) PDE: 5000::14/128 (IPv6 Node Address), L:0 N:0 E:0 PDE: 5000::23/128 (IPv6 Node Address), L:0 N:0 E:0 PDE: 5000::33/128 (IPv6 Node Address), L:0 N:0 E:0 PDE: 4000:121::41 (IPv6 Interface Address), L:0 N:0 E:0 PDE: 5000::32/128 (IPv6 Node Address), L:0 N:0 E:0 PDE: 4000:113::21 (IPv6 Interface Address), L:0 N:0 E:0 PDE: 5000::11/128 (IPv6 Node Address), L:0 N:1 E:0 Metric: 0 PPR: Fragment ID: 0, MT-ID: ipv4-unicast, Algorithm: SPF, F:0 D:0 A:0 U:1 PPR Prefix: 5000::14/128 ID: 6000:2::2/128 (Native IPv6) PDE: 5000::11/128 (IPv6 Node Address), L:0 N:0 E:0 PDE: 5000::21/128 (IPv6 Node Address), L:0 N:0 E:0 PDE: 5000::32/128 (IPv6 Node Address), L:0 N:0 E:0 PDE: 4000:121::41 (IPv6 Interface Address), L:0 N:0 E:0 PDE: 5000::33/128 (IPv6 Node Address), L:0 N:0 E:0 PDE: 4000:116::23 (IPv6 Interface Address), L:0 N:0 E:0 PDE: 5000::14/128 (IPv6 Node Address), L:0 N:1 E:0 Metric: 0 PPR: Fragment ID: 0, MT-ID: ipv4-unicast, Algorithm: SPF, F:0 D:0 A:0 U:1 PPR Prefix: 5000::11/128 ID: 6000:1::1/128 (Native IPv6) PDE: 5000::14/128 (IPv6 Node Address), L:0 N:0 E:0 PDE: 5000::23/128 (IPv6 Node Address), L:0 N:0 E:0 PDE: 5000::22/128 (IPv6 Node Address), L:0 N:0 E:0 PDE: 5000::21/128 (IPv6 Node Address), L:0 N:0 E:0 PDE: 5000::11/128 (IPv6 Node Address), L:0 N:1 E:0 Metric: 50 PPR: Fragment ID: 0, MT-ID: ipv4-unicast, Algorithm: SPF, F:0 D:0 A:0 U:1 PPR Prefix: 5000::14/128 ID: 6000:2::1/128 (Native IPv6) PDE: 5000::11/128 (IPv6 Node Address), L:0 N:0 E:0 PDE: 5000::21/128 (IPv6 Node Address), L:0 N:0 E:0 PDE: 5000::22/128 (IPv6 Node Address), L:0 N:0 E:0 PDE: 5000::23/128 (IPv6 Node Address), L:0 N:0 E:0 PDE: 5000::14/128 (IPv6 Node Address), L:0 N:1 E:0 Metric: 50 The PPR TLVs can also be seen using a modified version of Wireshark as seen below: .. figure:: https://user-images.githubusercontent.com/931662/61582441-9551e500-ab01-11e9-8f6f-400ee3fba927.png :alt: s2 s2 Using the ``show isis ppr`` command, verify that all routers installed the PPR-IDs for the paths they are part of. Example: Router RT11 ^^^^^^^^^^^ :: # show isis ppr Area Level ID Prefix Metric Position Status Uptime -------------------------------------------------------------------------------------------- 1 L1 6000:1::1/128 (Native IPv6) 5000::11/128 50 Tail-End - - 1 L1 6000:1::2/128 (Native IPv6) 5000::11/128 0 Tail-End - - 1 L1 6000:1::3/128 (Native IPv6) 5000::11/128 1500 Tail-End - - 1 L1 6000:2::1/128 (Native IPv6) 5000::14/128 50 Head-End Up 00:45:41 1 L1 6000:2::2/128 (Native IPv6) 5000::14/128 0 Head-End Up 00:45:41 1 L1 6000:2::3/128 (Native IPv6) 5000::14/128 1500 Head-End Up 00:45:41 # show ipv6 route 6000::/16 longer-prefixes isis Codes: K - kernel route, C - connected, S - static, R - RIPng, O - OSPFv3, I - IS-IS, B - BGP, N - NHRP, T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP, F - PBR, f - OpenFabric, > - selected route, * - FIB route, q - queued route, r - rejected route I>* 6000:2::1/128 [115/50] via fe80::c2a:54ff:fe39:bff7, eth-rt21, 00:01:33 I>* 6000:2::2/128 [115/0] via fe80::c2a:54ff:fe39:bff7, eth-rt21, 00:01:33 I>* 6000:2::3/128 [115/1500] via fe80::c2a:54ff:fe39:bff7, eth-rt21, 00:01:33 Router RT12 ''''''''''' :: # show isis ppr Area Level ID Prefix Metric Position Status Uptime ------------------------------------------------------------------------------------------ 1 L1 6000:1::1/128 (Native IPv6) 5000::11/128 50 Off-Path - - 1 L1 6000:1::2/128 (Native IPv6) 5000::11/128 0 Off-Path - - 1 L1 6000:1::3/128 (Native IPv6) 5000::11/128 1500 Off-Path - - 1 L1 6000:2::1/128 (Native IPv6) 5000::14/128 50 Off-Path - - 1 L1 6000:2::2/128 (Native IPv6) 5000::14/128 0 Off-Path - - 1 L1 6000:2::3/128 (Native IPv6) 5000::14/128 1500 Off-Path - - # show ipv6 route 6000::/16 longer-prefixes isis Router RT13 ''''''''''' :: # show isis ppr Area Level ID Prefix Metric Position Status Uptime ------------------------------------------------------------------------------------------ 1 L1 6000:1::1/128 (Native IPv6) 5000::11/128 50 Off-Path - - 1 L1 6000:1::2/128 (Native IPv6) 5000::11/128 0 Off-Path - - 1 L1 6000:1::3/128 (Native IPv6) 5000::11/128 1500 Off-Path - - 1 L1 6000:2::1/128 (Native IPv6) 5000::14/128 50 Off-Path - - 1 L1 6000:2::2/128 (Native IPv6) 5000::14/128 0 Off-Path - - 1 L1 6000:2::3/128 (Native IPv6) 5000::14/128 1500 Off-Path - - # show ipv6 route 6000::/16 longer-prefixes isis Router RT14 ''''''''''' :: # show isis ppr Area Level ID Prefix Metric Position Status Uptime -------------------------------------------------------------------------------------------- 1 L1 6000:1::1/128 (Native IPv6) 5000::11/128 50 Head-End Up 00:45:45 1 L1 6000:1::2/128 (Native IPv6) 5000::11/128 0 Head-End Up 00:45:45 1 L1 6000:1::3/128 (Native IPv6) 5000::11/128 1500 Head-End Up 00:45:45 1 L1 6000:2::1/128 (Native IPv6) 5000::14/128 50 Tail-End - - 1 L1 6000:2::2/128 (Native IPv6) 5000::14/128 0 Tail-End - - 1 L1 6000:2::3/128 (Native IPv6) 5000::14/128 1500 Tail-End - - # show ipv6 route 6000::/16 longer-prefixes isis Codes: K - kernel route, C - connected, S - static, R - RIPng, O - OSPFv3, I - IS-IS, B - BGP, N - NHRP, T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP, F - PBR, f - OpenFabric, > - selected route, * - FIB route, q - queued route, r - rejected route I>* 6000:1::1/128 [115/50] via fe80::58ea:78ff:fe00:92c1, eth-rt23, 00:01:36 I>* 6000:1::2/128 [115/0] via fe80::58ea:78ff:fe00:92c1, eth-rt23, 00:01:36 I>* 6000:1::3/128 [115/1500] via fe80::58ea:78ff:fe00:92c1, eth-rt23, 00:01:36 Router RT21 ''''''''''' :: # show isis ppr Area Level ID Prefix Metric Position Status Uptime --------------------------------------------------------------------------------------------- 1 L1 6000:1::1/128 (Native IPv6) 5000::11/128 50 Mid-Point Up 00:45:46 1 L1 6000:1::2/128 (Native IPv6) 5000::11/128 0 Mid-Point Up 00:45:46 1 L1 6000:1::3/128 (Native IPv6) 5000::11/128 1500 Mid-Point Up 00:45:46 1 L1 6000:2::1/128 (Native IPv6) 5000::14/128 50 Mid-Point Up 00:45:46 1 L1 6000:2::2/128 (Native IPv6) 5000::14/128 0 Mid-Point Up 00:45:46 1 L1 6000:2::3/128 (Native IPv6) 5000::14/128 1500 Mid-Point Down - # show isis ppr id ipv6 6000:2::3/128 detail Area 1: PPR-ID: 6000:2::3/128 (Native IPv6) PPR-Prefix: 5000::14/128 PDEs: 5000::11/128 (IPv6 Node Address) 5000::21/128 (IPv6 Node Address) [LOCAL] 5000::99/128 (IPv6 Node Address) [NEXT] 5000::23/128 (IPv6 Node Address) 5000::14/128 (IPv6 Node Address) Attributes: Metric: 1500 Position: Mid-Point Originator: 0000.0000.0011 Level: L1 Algorithm: 1 MT-ID: ipv4-unicast Status: Down: PDE is unreachable Last change: 00:00:37 # show ipv6 route 6000::/16 longer-prefixes isis Codes: K - kernel route, C - connected, S - static, R - RIPng, O - OSPFv3, I - IS-IS, B - BGP, N - NHRP, T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP, F - PBR, f - OpenFabric, > - selected route, * - FIB route, q - queued route, r - rejected route I>* 6000:1::1/128 [115/50] via fe80::142e:79ff:feeb:cffc, eth-rt11, 00:01:38 I>* 6000:1::2/128 [115/0] via fe80::142e:79ff:feeb:cffc, eth-rt11, 00:01:38 I>* 6000:1::3/128 [115/1500] via fe80::142e:79ff:feeb:cffc, eth-rt11, 00:01:38 I>* 6000:2::1/128 [115/50] via fe80::c88e:7fff:fe5f:a08d, eth-rt22, 00:01:38 I>* 6000:2::2/128 [115/0] via fe80::8b2:9eff:fe98:f66a, eth-rt32, 00:01:38 Router RT22 ''''''''''' :: # show isis ppr Area Level ID Prefix Metric Position Status Uptime --------------------------------------------------------------------------------------------- 1 L1 6000:1::1/128 (Native IPv6) 5000::11/128 50 Mid-Point Up 00:45:47 1 L1 6000:1::2/128 (Native IPv6) 5000::11/128 0 Off-Path - - 1 L1 6000:1::3/128 (Native IPv6) 5000::11/128 1500 Off-Path - - 1 L1 6000:2::1/128 (Native IPv6) 5000::14/128 50 Mid-Point Up 00:45:47 1 L1 6000:2::2/128 (Native IPv6) 5000::14/128 0 Off-Path - - 1 L1 6000:2::3/128 (Native IPv6) 5000::14/128 1500 Off-Path - - # show ipv6 route 6000::/16 longer-prefixes isis Codes: K - kernel route, C - connected, S - static, R - RIPng, O - OSPFv3, I - IS-IS, B - BGP, N - NHRP, T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP, F - PBR, f - OpenFabric, > - selected route, * - FIB route, q - queued route, r - rejected route I>* 6000:1::1/128 [115/50] via fe80::2cb5:edff:fe60:29b1, eth-rt21, 00:01:38 I>* 6000:2::1/128 [115/50] via fe80::e8d9:63ff:fea3:177b, eth-rt23, 00:01:38 Router RT23 ''''''''''' :: # show isis ppr Area Level ID Prefix Metric Position Status Uptime --------------------------------------------------------------------------------------------- 1 L1 6000:1::1/128 (Native IPv6) 5000::11/128 50 Mid-Point Up 00:45:49 1 L1 6000:1::2/128 (Native IPv6) 5000::11/128 0 Mid-Point Up 00:45:49 1 L1 6000:1::3/128 (Native IPv6) 5000::11/128 1500 Mid-Point Down - 1 L1 6000:2::1/128 (Native IPv6) 5000::14/128 50 Mid-Point Up 00:45:49 1 L1 6000:2::2/128 (Native IPv6) 5000::14/128 0 Mid-Point Up 00:45:49 1 L1 6000:2::3/128 (Native IPv6) 5000::14/128 1500 Mid-Point Up 00:45:49 # show isis ppr id ipv6 6000:1::3/128 detail Area 1: PPR-ID: 6000:1::3/128 (Native IPv6) PPR-Prefix: 5000::11/128 PDEs: 5000::14/128 (IPv6 Node Address) 5000::23/128 (IPv6 Node Address) [LOCAL] 5000::99/128 (IPv6 Node Address) [NEXT] 5000::21/128 (IPv6 Node Address) 5000::11/128 (IPv6 Node Address) Attributes: Metric: 1500 Position: Mid-Point Originator: 0000.0000.0011 Level: L1 Algorithm: 1 MT-ID: ipv4-unicast Status: Down: PDE is unreachable Last change: 00:02:50 # show ipv6 route 6000::/16 longer-prefixes isis Codes: K - kernel route, C - connected, S - static, R - RIPng, O - OSPFv3, I - IS-IS, B - BGP, N - NHRP, T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP, F - PBR, f - OpenFabric, > - selected route, * - FIB route, q - queued route, r - rejected route I>* 6000:1::1/128 [115/50] via fe80::d09f:1bff:fe31:e9c9, eth-rt22, 00:01:40 I>* 6000:1::2/128 [115/0] via fe80::c0c3:b3ff:fe9f:b5d3, eth-rt33, 00:01:40 I>* 6000:2::1/128 [115/50] via fe80::f40a:66ff:fefc:5c32, eth-rt14, 00:01:40 I>* 6000:2::2/128 [115/0] via fe80::f40a:66ff:fefc:5c32, eth-rt14, 00:01:40 I>* 6000:2::3/128 [115/1500] via fe80::f40a:66ff:fefc:5c32, eth-rt14, 00:01:40 Router RT31 ''''''''''' :: # show isis ppr Area Level ID Prefix Metric Position Status Uptime ------------------------------------------------------------------------------------------ 1 L1 6000:1::1/128 (Native IPv6) 5000::11/128 50 Off-Path - - 1 L1 6000:1::2/128 (Native IPv6) 5000::11/128 0 Off-Path - - 1 L1 6000:1::3/128 (Native IPv6) 5000::11/128 1500 Off-Path - - 1 L1 6000:2::1/128 (Native IPv6) 5000::14/128 50 Off-Path - - 1 L1 6000:2::2/128 (Native IPv6) 5000::14/128 0 Off-Path - - 1 L1 6000:2::3/128 (Native IPv6) 5000::14/128 1500 Off-Path - - # show ipv6 route 6000::/16 longer-prefixes isis Router RT32 ''''''''''' :: # show isis ppr Area Level ID Prefix Metric Position Status Uptime --------------------------------------------------------------------------------------------- 1 L1 6000:1::1/128 (Native IPv6) 5000::11/128 50 Off-Path - - 1 L1 6000:1::2/128 (Native IPv6) 5000::11/128 0 Mid-Point Up 00:45:51 1 L1 6000:1::3/128 (Native IPv6) 5000::11/128 1500 Off-Path - - 1 L1 6000:2::1/128 (Native IPv6) 5000::14/128 50 Off-Path - - 1 L1 6000:2::2/128 (Native IPv6) 5000::14/128 0 Mid-Point Up 00:45:51 1 L1 6000:2::3/128 (Native IPv6) 5000::14/128 1500 Off-Path - - # show ipv6 route 6000::/16 longer-prefixes isis Codes: K - kernel route, C - connected, S - static, R - RIPng, O - OSPFv3, I - IS-IS, B - BGP, N - NHRP, T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP, F - PBR, f - OpenFabric, > - selected route, * - FIB route, q - queued route, r - rejected route I>* 6000:1::2/128 [115/0] via 4000:113::21, eth-rt21, 00:01:42 I>* 6000:2::2/128 [115/0] via 4000:121::41, eth-sw1, 00:01:42 Router RT33 ''''''''''' :: # show isis ppr Area Level ID Prefix Metric Position Status Uptime --------------------------------------------------------------------------------------------- 1 L1 6000:1::1/128 (Native IPv6) 5000::11/128 50 Off-Path - - 1 L1 6000:1::2/128 (Native IPv6) 5000::11/128 0 Mid-Point Up 00:45:52 1 L1 6000:1::3/128 (Native IPv6) 5000::11/128 1500 Off-Path - - 1 L1 6000:2::1/128 (Native IPv6) 5000::14/128 50 Off-Path - - 1 L1 6000:2::2/128 (Native IPv6) 5000::14/128 0 Mid-Point Up 00:45:52 1 L1 6000:2::3/128 (Native IPv6) 5000::14/128 1500 Off-Path - - # show ipv6 route 6000::/16 longer-prefixes isis Codes: K - kernel route, C - connected, S - static, R - RIPng, O - OSPFv3, I - IS-IS, B - BGP, N - NHRP, T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP, F - PBR, f - OpenFabric, > - selected route, * - FIB route, q - queued route, r - rejected route I>* 6000:1::2/128 [115/0] via 4000:121::41, eth-sw1, 00:01:43 I>* 6000:2::2/128 [115/0] via 4000:116::23, eth-rt23, 00:01:43 Router RT34 ''''''''''' :: # show isis ppr Area Level ID Prefix Metric Position Status Uptime ------------------------------------------------------------------------------------------ 1 L1 6000:1::1/128 (Native IPv6) 5000::11/128 50 Off-Path - - 1 L1 6000:1::2/128 (Native IPv6) 5000::11/128 0 Off-Path - - 1 L1 6000:1::3/128 (Native IPv6) 5000::11/128 1500 Off-Path - - 1 L1 6000:2::1/128 (Native IPv6) 5000::14/128 50 Off-Path - - 1 L1 6000:2::2/128 (Native IPv6) 5000::14/128 0 Off-Path - - 1 L1 6000:2::3/128 (Native IPv6) 5000::14/128 1500 Off-Path - - # show ipv6 route 6000::/16 longer-prefixes isis Router RT41 ''''''''''' :: # show isis ppr Area Level ID Prefix Metric Position Status Uptime --------------------------------------------------------------------------------------------- 1 L1 6000:1::1/128 (Native IPv6) 5000::11/128 50 Off-Path - - 1 L1 6000:1::2/128 (Native IPv6) 5000::11/128 0 Mid-Point Up 00:45:55 1 L1 6000:1::3/128 (Native IPv6) 5000::11/128 1500 Off-Path - - 1 L1 6000:2::1/128 (Native IPv6) 5000::14/128 50 Off-Path - - 1 L1 6000:2::2/128 (Native IPv6) 5000::14/128 0 Mid-Point Up 00:45:55 1 L1 6000:2::3/128 (Native IPv6) 5000::14/128 1500 Off-Path - - # show ipv6 route 6000::/16 longer-prefixes isis Codes: K - kernel route, C - connected, S - static, R - RIPng, O - OSPFv3, I - IS-IS, B - BGP, N - NHRP, T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP, F - PBR, f - OpenFabric, > - selected route, * - FIB route, q - queued route, r - rejected route I>* 6000:1::2/128 [115/0] via fe80::b4b9:60ff:feee:3c73, eth-sw1, 00:01:46 I>* 6000:2::2/128 [115/0] via fe80::bc2a:d9ff:fe65:97f2, eth-sw1, 00:01:46 As it can be seen by the output of ``show isis ppr id ipv6 ... detail``, routers R21 and R23 couldn’t install the third PPR path because of an unreachable PDE (configuration error). Verification - Forwarding Plane ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ On Router R11, use the ``traceroute`` tool to ensure that the PPR paths were installed correctly in the network: :: root@rt11:~# traceroute 6000:2::1 traceroute to 6000:2::1 (6000:2::1), 30 hops max, 80 byte packets 1 4000:104::21 (4000:104::21) 0.612 ms 0.221 ms 0.241 ms 2 4000:110::22 (4000:110::22) 0.257 ms 0.113 ms 0.105 ms 3 4000:111::23 (4000:111::23) 0.257 ms 0.151 ms 0.098 ms 4 6000:2::1 (6000:2::1) 0.346 ms 0.139 ms 0.100 ms root@rt11:~# root@rt11:~# traceroute 6000:2::2 traceroute to 6000:2::2 (6000:2::2), 30 hops max, 80 byte packets 1 4000:104::21 (4000:104::21) 4.383 ms 4.148 ms 0.044 ms 2 4000:113::32 (4000:113::32) 0.272 ms 0.065 ms 0.064 ms 3 4000:121::41 (4000:121::41) 0.263 ms 0.101 ms 0.086 ms 4 4000:115::33 (4000:115::33) 0.351 ms 4000:119::33 (4000:119::33) 0.249 ms 4000:115::33 (4000:115::33) 0.153 ms 5 4000:111::23 (4000:111::23) 0.232 ms 0.293 ms 0.131 ms 6 6000:2::2 (6000:2::2) 0.184 ms 0.212 ms 0.140 ms root@rt11:~# root@rt11:~# traceroute 6000:2::3 traceroute to 6000:2::3 (6000:2::3), 30 hops max, 80 byte packets 1 4000:104::21 (4000:104::21) 1.537 ms !N 1.347 ms !N 1.075 ms !N The failure on the third traceroute is expected since the 6000:2::3 PPR-ID is misconfigured. Now ping Host 3 from Host 1 and use tcpdump or wireshark to verify that the ICMP packets are being tunneled using GRE and following the {R11 - R21 - R22 - R23 - R14} path. Here’s a wireshark capture between R11 and R21: .. figure:: https://user-images.githubusercontent.com/931662/61582398-d4cc0180-ab00-11e9-83a8-d219f98010b9.png :alt: s1 s1 Using ``traceroute`` it’s also possible to see that the ICMP packets are being tunneled through the IS-IS network: :: root@host1:~# traceroute fd00:20:1::1 -s fd00:10:1::1 traceroute to fd00:20:1::1 (fd00:20:1::1), 30 hops max, 80 byte packets 1 fd00:10:1::100 (fd00:10:1::100) 0.354 ms 0.092 ms 0.031 ms 2 fd00:10::11 (fd00:10::11) 0.125 ms 0.022 ms 0.026 ms 3 * * * 4 * * * 5 fd00:20:1::1 (fd00:20:1::1) 0.235 ms 0.106 ms 0.091 ms