Page MenuHomeVyOS Platform

VPP: Enable ip6-icmp-ra-punt feature on interfaces with DHCPv6 address configured
Closed, ResolvedPublic

Description

Automatically enable the VPP feature ip6-icmp-ra-punt on interface with DHCPv6 address

vppctl:

lcp create eth1 host-if tap4096
set interface feature eth1 ip6-icmp-ra-punt arc ip6-unicast
lcp resync

Details

Version
-
Is it a breaking change?
Perfectly compatible
Issue type
Feature (new functionality)

Event Timeline

natali-rs1985 changed the task status from Open to In progress.
natali-rs1985 triaged this task as Normal priority.
natali-rs1985 updated the task description. (Show Details)

aws instance with vpp enabled successfully receives ipv6 address from aws dhcpv6

dhcp packets received and forwarded to kernel:

vyos@VyOS-for-Smoke-Tests# run sh in
Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down
Interface    IP Address                                 MAC                VRF        MTU  S/L    Description
-----------  -----------------------------------------  -----------------  -------  -----  -----  -------------
eth0         172.16.11.98/24                            06:2a:58:9b:cf:85  default   1500  u/u    WAN
eth1         2406:da14:e66:3a00:7939:26e:75b8:4f0d/128  06:a9:66:a9:11:61  default   1500  u/u
lo           127.0.0.1/8                                00:00:00:00:00:00  default  65536  u/u
             ::1/128

00:02:13:894187: dpdk-input
  eth1 rx queue 0
  buffer 0x9d739: current data 0, length 151, buffer-pool 0, ref-count 1, trace handle 0x1
                  ext-hdr-valid 
  PKT MBUF: port 0, nb_segs 1, pkt_len 151
    buf_len 2176, data_len 151, ol_flags 0x100, data_off 128, phys_addr 0xfcb5cec0
    packet_type 0x240 l2_len 0 l3_len 0 outer_l2_len 0 outer_l3_len 0 
    rss 0x0 fdir.hi 0x0 fdir.lo 0x0
    Packet Offload Flags
      PKT_RX_L4_CKSUM_GOOD (0x0100) L4 cksum of RX pkt. is valid
    Packet Types
      RTE_PTYPE_L3_IPV6 (0x0040) IPv6 packet without extension headers
      RTE_PTYPE_L4_UDP (0x0200) UDP packet
  IP6: 06:b4:86:ee:69:c9 -> 06:a9:66:a9:11:61
  UDP: fe80::4b4:86ff:feee:69c9 -> fe80::4a9:66ff:fea9:1161
    tos 0x00, flow label 0x0, hop limit 255, payload length 97
00:02:13:894192: ethernet-input
  frame: flags 0x3, hw-if-index 1, sw-if-index 1
  IP6: 06:b4:86:ee:69:c9 -> 06:a9:66:a9:11:61
00:02:13:894194: ip6-input
  UDP: fe80::4b4:86ff:feee:69c9 -> fe80::4a9:66ff:fea9:1161
    tos 0x00, flow label 0x0, hop limit 255, payload length 97
00:02:13:894194: ip6-lookup
  fib 0 dpo-idx 0 flow hash: 0x00000000
  UDP: fe80::4b4:86ff:feee:69c9 -> fe80::4a9:66ff:fea9:1161
    tos 0x00, flow label 0x0, hop limit 255, payload length 97
00:02:13:894196: ip6-link-local
  sw_if_index:1 fib_index:1
00:02:13:894198: ip6-lookup
  fib 1 dpo-idx 12 flow hash: 0x00000000
  UDP: fe80::4b4:86ff:feee:69c9 -> fe80::4a9:66ff:fea9:1161
    tos 0x00, flow label 0x0, hop limit 255, payload length 97
00:02:13:894198: ip6-receive
    fib:1 adj:12 flow:0x00000000
  UDP: fe80::4b4:86ff:feee:69c9 -> fe80::4a9:66ff:fea9:1161
    tos 0x00, flow label 0x0, hop limit 255, payload length 97
00:02:13:894200: ip6-udp-lookup
  UDP: src-port 547 dst-port 546
00:02:13:894201: ip6-punt
    fib:1 adj:12 flow:0x00000000
  UDP: fe80::4b4:86ff:feee:69c9 -> fe80::4a9:66ff:fea9:1161
    tos 0x00, flow label 0x0, hop limit 255, payload length 97
00:02:13:894202: ip6-punt-redirect
  via redirect:1
00:02:13:894203: ip6-dvr-dpo
     sw_if_index:2
00:02:13:894203: ip6-dvr-reinject
     sw_if_index:2
00:02:13:894204: tap4096-output
  tap4096 flags 0xc219000d
  IP6: 06:b4:86:ee:69:c9 -> 06:a9:66:a9:11:61
  UDP: fe80::4b4:86ff:feee:69c9 -> fe80::4a9:66ff:fea9:1161
    tos 0x00, flow label 0x0, hop limit 255, payload length 97
00:02:13:894205: tap4096-tx
    buffer 0x9d739: current data 0, length 151, buffer-pool 0, ref-count 1, trace handle 0x1
                    ext-hdr-valid 
                    l4-cksum-computed l4-cksum-correct local dvr l2-hdr-offset 0 l3-hdr-offset 14 
  hdr-sz 0 l2-hdr-offset 0 l3-hdr-offset 14 l4-hdr-offset 0 l4-hdr-sz 0
  IP6: 06:b4:86:ee:69:c9 -> 06:a9:66:a9:11:61
  UDP: fe80::4b4:86ff:feee:69c9 -> fe80::4a9:66ff:fea9:1161
    tos 0x00, flow label 0x0, hop limit 255, payload length 97



00:02:13:894403: dpdk-input
  eth1 rx queue 0
  buffer 0x9d760: current data 0, length 146, buffer-pool 0, ref-count 1, trace handle 0x2
                  ext-hdr-valid 
  PKT MBUF: port 0, nb_segs 1, pkt_len 146
    buf_len 2176, data_len 146, ol_flags 0x100, data_off 128, phys_addr 0xfcb5d880
    packet_type 0x240 l2_len 0 l3_len 0 outer_l2_len 0 outer_l3_len 0 
    rss 0x0 fdir.hi 0x0 fdir.lo 0x0
    Packet Offload Flags
      PKT_RX_L4_CKSUM_GOOD (0x0100) L4 cksum of RX pkt. is valid
    Packet Types
      RTE_PTYPE_L3_IPV6 (0x0040) IPv6 packet without extension headers
      RTE_PTYPE_L4_UDP (0x0200) UDP packet
  IP6: 06:b4:86:ee:69:c9 -> 06:a9:66:a9:11:61
  UDP: fe80::4b4:86ff:feee:69c9 -> fe80::4a9:66ff:fea9:1161
    tos 0x00, flow label 0x0, hop limit 255, payload length 92
00:02:13:894405: ethernet-input
  frame: flags 0x3, hw-if-index 1, sw-if-index 1
  IP6: 06:b4:86:ee:69:c9 -> 06:a9:66:a9:11:61
00:02:13:894406: ip6-input
  UDP: fe80::4b4:86ff:feee:69c9 -> fe80::4a9:66ff:fea9:1161
    tos 0x00, flow label 0x0, hop limit 255, payload length 92
00:02:13:894406: ip6-lookup
  fib 0 dpo-idx 0 flow hash: 0x00000000
  UDP: fe80::4b4:86ff:feee:69c9 -> fe80::4a9:66ff:fea9:1161
    tos 0x00, flow label 0x0, hop limit 255, payload length 92
00:02:13:894407: ip6-link-local
  sw_if_index:1 fib_index:1
00:02:13:894407: ip6-lookup
  fib 1 dpo-idx 12 flow hash: 0x00000000
  UDP: fe80::4b4:86ff:feee:69c9 -> fe80::4a9:66ff:fea9:1161
    tos 0x00, flow label 0x0, hop limit 255, payload length 92
00:02:13:894407: ip6-receive
    fib:1 adj:12 flow:0x00000000
  UDP: fe80::4b4:86ff:feee:69c9 -> fe80::4a9:66ff:fea9:1161
    tos 0x00, flow label 0x0, hop limit 255, payload length 92
00:02:13:894409: ip6-udp-lookup
  UDP: src-port 547 dst-port 546
00:02:13:894409: ip6-punt
    fib:1 adj:12 flow:0x00000000
  UDP: fe80::4b4:86ff:feee:69c9 -> fe80::4a9:66ff:fea9:1161
    tos 0x00, flow label 0x0, hop limit 255, payload length 92
00:02:13:894409: ip6-punt-redirect
  via redirect:1
00:02:13:894409: ip6-dvr-dpo
     sw_if_index:2
00:02:13:894409: ip6-dvr-reinject
     sw_if_index:2
00:02:13:894410: tap4096-output
  tap4096 flags 0xc219000d
  IP6: 06:b4:86:ee:69:c9 -> 06:a9:66:a9:11:61
  UDP: fe80::4b4:86ff:feee:69c9 -> fe80::4a9:66ff:fea9:1161
    tos 0x00, flow label 0x0, hop limit 255, payload length 92
00:02:13:894410: tap4096-tx
    buffer 0x9d760: current data 0, length 146, buffer-pool 0, ref-count 1, trace handle 0x2
                    ext-hdr-valid 
                    l4-cksum-computed l4-cksum-correct local dvr l2-hdr-offset 0 l3-hdr-offset 14 
  hdr-sz 0 l2-hdr-offset 0 l3-hdr-offset 14 l4-hdr-offset 0 l4-hdr-sz 0
  IP6: 06:b4:86:ee:69:c9 -> 06:a9:66:a9:11:61
  UDP: fe80::4b4:86ff:feee:69c9 -> fe80::4a9:66ff:fea9:1161
    tos 0x00, flow label 0x0, hop limit 255, payload length 92

With manually enabled 'set interface feature eth0 ip6-icmp-ra-punt arc ip6-multicast' RA received and forwarded to kernel:

00:04:25:548472: dpdk-input
  eth1 rx queue 0
  buffer 0x9d037: current data 0, length 110, buffer-pool 0, ref-count 1, trace handle 0x2
                  ext-hdr-valid 
  PKT MBUF: port 0, nb_segs 1, pkt_len 110
    buf_len 2176, data_len 110, ol_flags 0x0, data_off 128, phys_addr 0xfcb40e40
    packet_type 0x40 l2_len 0 l3_len 0 outer_l2_len 0 outer_l3_len 0 
    rss 0x0 fdir.hi 0x0 fdir.lo 0x0
    Packet Types
      RTE_PTYPE_L3_IPV6 (0x0040) IPv6 packet without extension headers
  IP6: 06:b4:86:ee:69:c9 -> 33:33:00:00:00:01
  ICMP6: fe80::4b4:86ff:feee:69c9 -> ff02::1
    tos 0x00, flow label 0x0, hop limit 255, payload length 56
00:04:25:548477: ethernet-input
  frame: flags 0x3, hw-if-index 1, sw-if-index 1
  IP6: 06:b4:86:ee:69:c9 -> 33:33:00:00:00:01
00:04:25:548479: ip6-input
  ICMP6: fe80::4b4:86ff:feee:69c9 -> ff02::1
    tos 0x00, flow label 0x0, hop limit 255, payload length 56
00:04:25:548482: ip6-icmp-ra-punt
  ip6-icmp-ra-punt: shortcut to punt taken - yes
00:04:25:548489: ip6-punt
    fib:0 adj:0 flow:0x00000000
  ICMP6: fe80::4b4:86ff:feee:69c9 -> ff02::1
    tos 0x00, flow label 0x0, hop limit 255, payload length 56
00:04:25:548490: ip6-punt-redirect
  via redirect:1
00:04:25:548491: ip6-dvr-dpo
     sw_if_index:2
00:04:25:548492: ip6-dvr-reinject
     sw_if_index:2
00:04:25:548493: tap4096-output
  tap4096 flags 0x0219000d
  IP6: 06:b4:86:ee:69:c9 -> 33:33:00:00:00:01
  ICMP6: fe80::4b4:86ff:feee:69c9 -> ff02::1
    tos 0x00, flow label 0x0, hop limit 255, payload length 56
00:04:25:548494: tap4096-tx
    buffer 0x9d037: current data 0, length 110, buffer-pool 0, ref-count 1, trace handle 0x2
                    ext-hdr-valid 
                    local dvr l2-hdr-offset 0 l3-hdr-offset 14 
  hdr-sz 0 l2-hdr-offset 0 l3-hdr-offset 14 l4-hdr-offset 0 l4-hdr-sz 0
  IP6: 06:b4:86:ee:69:c9 -> 33:33:00:00:00:01
  ICMP6: fe80::4b4:86ff:feee:69c9 -> ff02::1
    tos 0x00, flow label 0x0, hop limit 255, payload length 56
natali-rs1985 moved this task from Need Triage to Completed on the VyOS Rolling board.