PTP Flapping Between SLAVE and LISTENING on ESXi 8.0U3g with Intel E810 NIC
search cancel

PTP Flapping Between SLAVE and LISTENING on ESXi 8.0U3g with Intel E810 NIC

book

Article ID: 452912

calendar_today

Updated On:

Products

VMware vSphere ESX 8.x

Issue/Introduction

When configuring PTP on an ESXi host using Intel E810 adapters, the following symptoms may occur:

  1. PTP status continuously flaps between SLAVE and LISTENING states.
  2. The esxcli system ptp test or trx.log shows frequent ANNOUNCE_RECEIPT_TIMEOUT_EXPIRES messages.
  3. Synchronization never settles, and the clock offset fluctuates significantly.
  4. Logs show negative delay values or large spikes in root dispersion before the timeout occurs: port 1 (eth0): SLAVE to LISTENING on ANNOUNCE_RECEIPT_TIMEOUT_EXPIRES rms 176111 max 308903 freq +253223 delay -33065

Environment

Environment:

  • Hypervisor: VMware ESXi 8.0U3 
  • Hardware: Dell PowerEdge or similar systems equipped with Intel E810 NICs
  • Protocol: Precision Time Protocol (PTP) configured on VMkernel interface or via PCI Passthrough

Cause

 

This issue is caused by a combination of factors related to the Intel ice driver and the PTP servo loop configuration:

  • Servo Instability: The default PI servo loop in ptp4l is sensitive to delay spikes and jitter common in certain Intel driver versions, leading to unstable frequency adjustments.
  • Aggressive Timeout: The default announceReceiptTimeout is often too short (defaulting to 3 announce intervals, approx. 0.375s), causing the service to drop synchronization at the first sign of network flutter or driver processing delay.

Resolution

To stabilize PTP synchronization on affected Intel E810 NICs, apply tuning parameters to the PTP configuration to smooth delay computation and increase the timeout threshold.

Procedure:

  1. Log in to the ESXi host via SSH.
  2. Modify the PTP configuration to include the linear regression servo and extended timeout. Note: Starting with ESXi 7.0U3, PTP configuration is managed via ConfigStore. Do not edit /etc/ptp.conf directly.
  3. Run the following esxcli commands (or update the TRX configuration if using a specific agent):
    bash
    # Set the clock servo to linear regression to smooth spikes# Set the announce receipt timeout to 8 (approx. 1 second)# Example command format for ptp4l:ptp4l -i <interface> --clock_servo=linreg --announceReceiptTimeout=8
  4. Restart the PTP service:
    bash
    /etc/init.d/ptpd restart
  5. Verify the stabilization:
    bash
    esxcli system ptp test
    Ensure the Port state remains SLAVE and Timeinsync returns true.