Skip to content

PPR Basic Test Topology

Renato Westphal edited this page Jul 20, 2019 · 12 revisions

Table of Contents

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.

+-------+       +-------+                                                 +-------+
|       |       |       |                                                 |       |
| 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

---

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
    !

Verification - Control Plane

Verify that IS-IS has flooded the PPR TLVs correctly to all 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: 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 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 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

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 iproute2/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:

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