Page MenuHomeVyOS Platform

VPP DHCP address cannot be assigned on some clouds
Open, NormalPublicBUG

Description

VPP DHCP address cannot be assigned on some clouds
For example, on AWS:

Config:

vyos@VyOS-for-Smoke-Tests:~$ show conf com | match "eth1|vpp"
set interfaces ethernet eth1 address 'dhcp'
set interfaces ethernet eth1 description 'LAN'
set interfaces ethernet eth1 dhcp-options no-default-route
set interfaces ethernet eth1 mtu '1500'
set vpp settings interface eth1 dpdk-options promisc
set vpp settings interface eth1 driver 'dpdk'
set vpp settings unix poll-sleep-usec '222'
vyos@VyOS-for-Smoke-Tests:~$

Trace

vpp# show trace           
------------------- Start of thread 0 vpp_main -------------------
Packet 1

00:07:00:472210: dpdk-input
  eth1 rx queue 0
  buffer 0x7b3e6: current data 0, length 590, buffer-pool 0, ref-count 1, trace handle 0x0
                  ext-hdr-valid 
  PKT MBUF: port 0, nb_segs 1, pkt_len 590
    buf_len 2176, data_len 590, ol_flags 0x180, data_off 128, phys_addr 0x4b91d380
    packet_type 0x210 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_IP_CKSUM_GOOD (0x0080) IP cksum of RX pkt. is valid
      PKT_RX_L4_CKSUM_GOOD (0x0100) L4 cksum of RX pkt. is valid
    Packet Types
      RTE_PTYPE_L3_IPV4 (0x0010) IPv4 packet without extension headers
      RTE_PTYPE_L4_UDP (0x0200) UDP packet
  IP4: 06:88:62:0d:39:6d -> 06:22:c0:87:dc:d5
  UDP: 172.16.21.1 -> 172.16.21.25
    tos 0x00, ttl 255, length 576, checksum 0xf771 dscp CS0 ecn NON_ECN
    fragment id 0x0000, flags DONT_FRAGMENT
  UDP: 67 -> 68
    length 556, checksum 0x0000
00:07:00:472510: ethernet-input
  frame: flags 0x1, hw-if-index 1, sw-if-index 1
  IP4: 06:88:62:0d:39:6d -> 06:22:c0:87:dc:d5
00:07:00:472514: ip4-input
  UDP: 172.16.21.1 -> 172.16.21.25
    tos 0x00, ttl 255, length 576, checksum 0xf771 dscp CS0 ecn NON_ECN
    fragment id 0x0000, flags DONT_FRAGMENT
  UDP: 67 -> 68
    length 556, checksum 0x0000
00:07:00:472517: ip4-not-enabled
    fib:0 adj:0 flow:0x00000000
  UDP: 172.16.21.1 -> 172.16.21.25
    tos 0x00, ttl 255, length 576, checksum 0xf771 dscp CS0 ecn NON_ECN
    fragment id 0x0000, flags DONT_FRAGMENT
  UDP: 67 -> 68
    length 556, checksum 0x0000
00:07:00:472520: error-drop
  rx:eth1
00:07:00:472521: drop
  dpdk-input: no error

Packet 2

00:07:14:612322: dpdk-input
  eth1 rx queue 0
  buffer 0x7b425: current data 0, length 590, buffer-pool 0, ref-count 1, trace handle 0x1
                  ext-hdr-valid 
  PKT MBUF: port 0, nb_segs 1, pkt_len 590
    buf_len 2176, data_len 590, ol_flags 0x180, data_off 128, phys_addr 0x4b91f300
    packet_type 0x210 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_IP_CKSUM_GOOD (0x0080) IP cksum of RX pkt. is valid
      PKT_RX_L4_CKSUM_GOOD (0x0100) L4 cksum of RX pkt. is valid
    Packet Types
      RTE_PTYPE_L3_IPV4 (0x0010) IPv4 packet without extension headers
      RTE_PTYPE_L4_UDP (0x0200) UDP packet
  IP4: 06:88:62:0d:39:6d -> 06:22:c0:87:dc:d5
  UDP: 172.16.21.1 -> 172.16.21.25
    tos 0x00, ttl 255, length 576, checksum 0xf771 dscp CS0 ecn NON_ECN
    fragment id 0x0000, flags DONT_FRAGMENT
  UDP: 67 -> 68
    length 556, checksum 0x0000
00:07:14:612625: ethernet-input
  frame: flags 0x1, hw-if-index 1, sw-if-index 1
  IP4: 06:88:62:0d:39:6d -> 06:22:c0:87:dc:d5
00:07:14:612628: ip4-input
  UDP: 172.16.21.1 -> 172.16.21.25
    tos 0x00, ttl 255, length 576, checksum 0xf771 dscp CS0 ecn NON_ECN
    fragment id 0x0000, flags DONT_FRAGMENT
  UDP: 67 -> 68
    length 556, checksum 0x0000
00:07:14:612629: ip4-not-enabled
    fib:0 adj:0 flow:0x00000000
  UDP: 172.16.21.1 -> 172.16.21.25
    tos 0x00, ttl 255, length 576, checksum 0xf771 dscp CS0 ecn NON_ECN
    fragment id 0x0000, flags DONT_FRAGMENT
  UDP: 67 -> 68
    length 556, checksum 0x0000
00:07:14:612631: error-drop
  rx:eth1
00:07:14:612632: drop
  dpdk-input: no error

Packet 3

00:07:28:954854: dpdk-input
  eth1 rx queue 0
  buffer 0x7b464: current data 0, length 590, buffer-pool 0, ref-count 1, trace handle 0x2
                  ext-hdr-valid 
  PKT MBUF: port 0, nb_segs 1, pkt_len 590
    buf_len 2176, data_len 590, ol_flags 0x180, data_off 128, phys_addr 0x4c921280
    packet_type 0x210 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_IP_CKSUM_GOOD (0x0080) IP cksum of RX pkt. is valid
      PKT_RX_L4_CKSUM_GOOD (0x0100) L4 cksum of RX pkt. is valid
    Packet Types
      RTE_PTYPE_L3_IPV4 (0x0010) IPv4 packet without extension headers
      RTE_PTYPE_L4_UDP (0x0200) UDP packet
  IP4: 06:88:62:0d:39:6d -> 06:22:c0:87:dc:d5
  UDP: 172.16.21.1 -> 172.16.21.25
    tos 0x00, ttl 255, length 576, checksum 0xf771 dscp CS0 ecn NON_ECN
    fragment id 0x0000, flags DONT_FRAGMENT
  UDP: 67 -> 68
    length 556, checksum 0x0000
00:07:28:955151: ethernet-input
  frame: flags 0x1, hw-if-index 1, sw-if-index 1
  IP4: 06:88:62:0d:39:6d -> 06:22:c0:87:dc:d5
00:07:28:955154: ip4-input
  UDP: 172.16.21.1 -> 172.16.21.25
    tos 0x00, ttl 255, length 576, checksum 0xf771 dscp CS0 ecn NON_ECN
    fragment id 0x0000, flags DONT_FRAGMENT
  UDP: 67 -> 68
    length 556, checksum 0x0000
00:07:28:955155: ip4-not-enabled
    fib:0 adj:0 flow:0x00000000
  UDP: 172.16.21.1 -> 172.16.21.25
    tos 0x00, ttl 255, length 576, checksum 0xf771 dscp CS0 ecn NON_ECN
    fragment id 0x0000, flags DONT_FRAGMENT
  UDP: 67 -> 68
    length 556, checksum 0x0000
00:07:28:955156: error-drop
  rx:eth1
00:07:28:955157: drop
  dpdk-input: no error

Packet 4

00:07:50:799285: dpdk-input
  eth1 rx queue 0
  buffer 0x7b4a3: current data 0, length 42, buffer-pool 0, ref-count 1, trace handle 0x3
                  ext-hdr-valid 
  PKT MBUF: port 0, nb_segs 1, pkt_len 42
    buf_len 2176, data_len 42, ol_flags 0x0, data_off 128, phys_addr 0x4c923200
    packet_type 0x0 l2_len 0 l3_len 0 outer_l2_len 0 outer_l3_len 0 
    rss 0x0 fdir.hi 0x0 fdir.lo 0x0
  ARP: 06:88:62:0d:39:6d -> ff:ff:ff:ff:ff:ff
  request, type ethernet/IP4, address size 6/4
  06:88:62:0d:39:6d/172.16.21.1 -> 00:00:00:00:00:00/172.16.21.25
00:07:50:799586: ethernet-input
  frame: flags 0x1, hw-if-index 1, sw-if-index 1
  ARP: 06:88:62:0d:39:6d -> ff:ff:ff:ff:ff:ff
00:07:50:799592: arp-input
  request, type ethernet/IP4, address size 6/4
  06:88:62:0d:39:6d/172.16.21.1 -> 00:00:00:00:00:00/172.16.21.25
00:07:50:799594: linux-cp-arp-phy
  rx-sw-if-index: 1 opcode: 1
00:07:50:799601: error-drop
  rx:eth1
00:07:50:799602: drop
  dpdk-input: no error

Packet 5

00:08:40:990442: dpdk-input
  eth1 rx queue 0
  buffer 0x7b4e2: current data 0, length 590, buffer-pool 0, ref-count 1, trace handle 0x4
                  ext-hdr-valid 
  PKT MBUF: port 0, nb_segs 1, pkt_len 590
    buf_len 2176, data_len 590, ol_flags 0x180, data_off 128, phys_addr 0x4c925180
    packet_type 0x210 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_IP_CKSUM_GOOD (0x0080) IP cksum of RX pkt. is valid
      PKT_RX_L4_CKSUM_GOOD (0x0100) L4 cksum of RX pkt. is valid
    Packet Types
      RTE_PTYPE_L3_IPV4 (0x0010) IPv4 packet without extension headers
      RTE_PTYPE_L4_UDP (0x0200) UDP packet
  IP4: 06:88:62:0d:39:6d -> 06:22:c0:87:dc:d5
  UDP: 172.16.21.1 -> 172.16.21.25
    tos 0x00, ttl 255, length 576, checksum 0xf771 dscp CS0 ecn NON_ECN
    fragment id 0x0000, flags DONT_FRAGMENT
  UDP: 67 -> 68
    length 556, checksum 0x0000
00:08:40:990732: ethernet-input
  frame: flags 0x1, hw-if-index 1, sw-if-index 1
  IP4: 06:88:62:0d:39:6d -> 06:22:c0:87:dc:d5
00:08:40:990735: ip4-input
  UDP: 172.16.21.1 -> 172.16.21.25
    tos 0x00, ttl 255, length 576, checksum 0xf771 dscp CS0 ecn NON_ECN
    fragment id 0x0000, flags DONT_FRAGMENT
  UDP: 67 -> 68
    length 556, checksum 0x0000
00:08:40:990736: ip4-not-enabled
    fib:0 adj:0 flow:0x00000000
  UDP: 172.16.21.1 -> 172.16.21.25
    tos 0x00, ttl 255, length 576, checksum 0xf771 dscp CS0 ecn NON_ECN
    fragment id 0x0000, flags DONT_FRAGMENT
  UDP: 67 -> 68
    length 556, checksum 0x0000
00:08:40:990738: error-drop
  rx:eth1
00:08:40:990739: drop
  dpdk-input: no error

Details

Version
VyOS 2025.09.14-0044-rolling
Is it a breaking change?
Unspecified (possibly destroys the router)
Issue type
Bug (incorrect behavior)

Related Objects

StatusSubtypeAssignedTask
OpenBUGNone
OpenBUGNone

Event Timeline

Viacheslav triaged this task as Normal priority.Sep 27 2025, 2:09 PM

Not sure Is this related or not, but on i40e dhcp also fails to assign address

One solution that I found, edit the template to allow dhcp_plugin

sudo nano -c +93  /usr/share/vyos/templates/vpp/startup.conf.j2

Add plugin:

plugin dhcp_plugin.so { enable }

Call this command:

sudo vppctl set dhcp client intfc eth1 hostname r14

eth1

vyos@r14# sudo vppctl show int addr
eth0 (up):
  L3 192.168.122.14/24
eth1 (up):
  L3 192.168.100.201/24
local0 (dn):
tap4096 (up):
tap4097 (up):
[edit]
vyos@r14# 

---
vyos@r14# run show interfaces 
Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down
Interface    IP Address          MAC                VRF        MTU  S/L    Description
-----------  ------------------  -----------------  -------  -----  -----  -------------
eth0         192.168.122.14/24   52:54:00:8d:67:6e  default   1500  u/u
eth1         192.168.100.201/24  52:54:00:f4:d5:cd  default   1500  u/u

With this option, set interface feature eth1 ip4-not-enabled arc ip4-unicast disable

Packet 22

00:09:06:251579: dpdk-input
  eth1 rx queue 0
  buffer 0x9c935: current data 0, length 344, buffer-pool 0, ref-count 1, trace handle 0x15
                  ext-hdr-valid 
  PKT MBUF: port 0, nb_segs 1, pkt_len 344
    buf_len 2176, data_len 344, ol_flags 0x0, data_off 128, phys_addr 0x36524dc0
    packet_type 0x0 l2_len 0 l3_len 0 outer_l2_len 0 outer_l3_len 0 
    rss 0x0 fdir.hi 0x0 fdir.lo 0x0
  IP4: 52:54:00:18:68:5b -> 52:54:00:f4:d5:cd
  UDP: 192.168.100.1 -> 192.168.100.200
    tos 0xc0, ttl 64, length 330, checksum 0xf2f2 dscp CS6 ecn NON_ECN
    fragment id 0x3bd6
  UDP: 67 -> 68
    length 310, checksum 0x4189
00:09:06:251872: ethernet-input
  frame: flags 0x1, hw-if-index 1, sw-if-index 1
  IP4: 52:54:00:18:68:5b -> 52:54:00:f4:d5:cd
00:09:06:251874: ip4-input
  UDP: 192.168.100.1 -> 192.168.100.200
    tos 0xc0, ttl 64, length 330, checksum 0xf2f2 dscp CS6 ecn NON_ECN
    fragment id 0x3bd6
  UDP: 67 -> 68
    length 310, checksum 0x4189
00:09:06:251875: ip4-lookup
  fib 0 dpo-idx 11 flow hash: 0x00000000
  UDP: 192.168.100.1 -> 192.168.100.200
    tos 0xc0, ttl 64, length 330, checksum 0xf2f2 dscp CS6 ecn NON_ECN
    fragment id 0x3bd6
  UDP: 67 -> 68
    length 310, checksum 0x4189
00:09:06:251877: ip4-receive
    fib:0 adj:11 flow:0x00000000
  UDP: 192.168.100.1 -> 192.168.100.200
    tos 0xc0, ttl 64, length 330, checksum 0xf2f2 dscp CS6 ecn NON_ECN
    fragment id 0x3bd6
  UDP: 67 -> 68
    length 310, checksum 0x4189
00:09:06:251880: ip4-drop
    fib:0 adj:1 flow:0x00000000
  UDP: 192.168.100.1 -> 192.168.100.200
    tos 0xc0, ttl 64, length 330, checksum 0xf2f2 dscp CS6 ecn NON_ECN
    fragment id 0x3bd6
  UDP: 67 -> 68
    length 310, checksum 0x4189
00:09:06:251881: error-drop
  rx:eth1
00:09:06:251881: drop
  ip4-local: ip4 spoofed local-address packet drops