PTP Pdelay_Resp_Follow_Up (ptp_pdelay_resp_follow_up)
- Layer: Application and control
- Header: variable length
- Notes: PTP / ESMC / CFM / R-APS / 802.3ah OAM (P2)
Reached from
| Lower layer | Selector | Value |
|---|---|---|
ethernet2 | ethertype | 35063 (0x88f7) |
dot1q | ethertype | 35063 (0x88f7) |
dot1ad | ethertype | 35063 (0x88f7) |
udp | dst_port / src_port | 320 (0x0140) |
ptp | message_type | 10 (re-decodes this layer) |
Fields
| Field | Type | Default | Auto | Description |
|---|---|---|---|---|
major_sdo_id | uint(4) | 0 | majorSdoId (transportSpecific in IEEE 1588-2008): 0 for the default profiles, 1 for IEEE 802.1AS (gPTP). | |
message_type | enum(4) | 10 (pdelay_resp_follow_up) | Message type: 0 Sync, 1 Delay_Req, 2 Pdelay_Req, 3 Pdelay_Resp, 8 Follow_Up, 9 Delay_Resp, 10 Pdelay_Resp_Follow_Up, 11 Announce, 12 Signaling, 13 Management. | |
minor_version | uint(4) | 0 | minorVersionPTP (0 in IEEE 1588-2008, 1 in IEEE 1588-2019). | |
version | uint(4) | 2 | versionPTP (2). | |
message_length | uint(16) | Length of the header and payload in octets | Length of the whole message in octets, including the TLVs (Auto). | |
domain_number | uint(8) | 0 | Domain number. | |
minor_sdo_id | uint(8) | 0 | minorSdoId (reserved, 0, in IEEE 1588-2008). | |
flags | flags(16) | 0x0 | Flag field: alternateMaster, twoStep, unicast, the profile specific and security bits in the first octet; leap61, leap59, currentUtcOffsetValid, ptpTimescale, timeTraceable, frequencyTraceable and synchronizationUncertain in the second. | |
correction_field | int(64) | 0 | Correction in nanoseconds multiplied by 2^16 (signed). | |
message_type_specific | uint(32) | 0 | Message type specific field (reserved, 0, in IEEE 1588-2008). | |
clock_identity | uint(64) | 144116287553929217 | Clock identity of the source port (EUI-64, e.g. a MAC address with ff:fe in the middle). | |
port_number | uint(16) | 1 | Port number of the source port. | |
sequence_id | uint(16) | 0 | Sequence ID; a Follow_Up / Delay_Resp / Pdelay_Resp copies the one of the message it answers. | |
control_field | enum(8) | 5 (other) | Control field (IEEE 1588 version 1 compatibility): 0 Sync, 1 Delay_Req, 2 Follow_Up, 3 Delay_Resp, 4 Management, 5 other messages. | |
log_message_interval | int(8) | 127 | Log2 of the message interval in seconds (signed; 0x7f when not applicable). | |
response_origin_timestamp_seconds | uint(48) | 0 | Timestamp: seconds (48 bits). | |
response_origin_timestamp_nanoseconds | uint(32) | 0 | Timestamp: nanoseconds (32 bits). | |
requesting_port_clock_identity | uint(64) | 144116287553929218 | Port identity: clock identity (all ones = every clock). | |
requesting_port_port_number | uint(16) | 1 | Port identity: port number (0xffff = every port). | |
tlvs | tlv — message_length - 54 octets | [] | TLVs (16-bit type, 16-bit length of the value, Auto): Management, Management Error Status, Organization Extension, unicast negotiation (Request / Grant / Cancel / Acknowledge Cancel), Path Trace, Alternate Time Offset Indicator. They end at the message length. |
message_type
| Value | Name |
|---|---|
| 0 | sync |
| 1 | delay_req |
| 2 | pdelay_req |
| 3 | pdelay_resp |
| 8 | follow_up |
| 9 | delay_resp |
| 10 | pdelay_resp_follow_up |
| 11 | announce |
| 12 | signaling |
| 13 | management |
flags
| Bit | Mask | Name |
|---|---|---|
| 15 | 32768 (0x8000) | security |
| 14 | 16384 (0x4000) | profile_specific_2 |
| 13 | 8192 (0x2000) | profile_specific_1 |
| 10 | 1024 (0x0400) | unicast |
| 9 | 512 (0x0200) | two_step |
| 8 | 256 (0x0100) | alternate_master |
| 6 | 64 (0x0040) | synchronization_uncertain |
| 5 | 32 (0x0020) | frequency_traceable |
| 4 | 16 (0x0010) | time_traceable |
| 3 | 8 (0x0008) | ptp_timescale |
| 2 | 4 (0x0004) | current_utc_offset_valid |
| 1 | 2 (0x0002) | leap59 |
| 0 | 1 (0x0001) | leap61 |
control_field
| Value | Name |
|---|---|
| 0 (0x00) | sync |
| 1 (0x01) | delay_req |
| 2 (0x02) | follow_up |
| 3 (0x03) | delay_resp |
| 4 (0x04) | management |
| 5 (0x05) | other |
tlvs
- Type 16 bits, length 16 bits.
- The length counts the value only.
- Unknown types are kept as raw value octets.
| Type | Name | Value fields | Description |
|---|---|---|---|
| 1 (0x0001) | management | management_id, data_field | |
| 2 (0x0002) | management_error_status | management_error_id, management_id, reserved, display_data | |
| 3 (0x0003) | organization_extension | organization_id, organization_sub_type, data_field | |
| 4 (0x0004) | request_unicast_transmission | message_type, reserved, log_inter_message_period, duration_field | |
| 5 (0x0005) | grant_unicast_transmission | message_type, reserved, log_inter_message_period, duration_field, reserved2, reserved3, renewal_invited | |
| 6 (0x0006) | cancel_unicast_transmission | message_type, reserved, reserved2 | |
| 7 (0x0007) | acknowledge_cancel_unicast_transmission | message_type, reserved, reserved2 | |
| 8 (0x0008) | path_trace | path_sequence | |
| 9 (0x0009) | alternate_time_offset_indicator | key_field, current_offset, jump_seconds, time_of_next_jump, display_name_length, display_name, pad |
tlvs › management
| Field | Type | Default | Auto | Description |
|---|---|---|---|---|
management_id | enum(16) | 8192 (default_data_set) | ||
data_field | bytes — rest of the PDU |
tlvs › management › management_id
| Value | Name |
|---|---|
| 0 (0x0000) | null_management |
| 1 (0x0001) | clock_description |
| 2 (0x0002) | user_description |
| 8192 (0x2000) | default_data_set |
| 8193 (0x2001) | current_data_set |
| 8194 (0x2002) | parent_data_set |
| 8195 (0x2003) | time_properties_data_set |
| 8196 (0x2004) | port_data_set |
| 8197 (0x2005) | priority1 |
| 8198 (0x2006) | priority2 |
| 8199 (0x2007) | domain |
| 8200 (0x2008) | slave_only |
| 8201 (0x2009) | log_announce_interval |
| 8205 (0x200d) | log_sync_interval |
| 8213 (0x2015) | utc_properties |
tlvs › management_error_status
| Field | Type | Default | Auto | Description |
|---|---|---|---|---|
management_error_id | enum(16) | |||
management_id | enum(16) | |||
reserved | uint(32) | 0 | ||
display_data | bytes — rest of the PDU |
tlvs › management_error_status › management_error_id
| Value | Name |
|---|---|
| 1 (0x0001) | response_too_big |
| 2 (0x0002) | no_such_id |
| 3 (0x0003) | wrong_length |
| 4 (0x0004) | wrong_value |
| 5 (0x0005) | not_setable |
| 6 (0x0006) | not_supported |
| 65534 (0xfffe) | general_error |
tlvs › management_error_status › management_id
| Value | Name |
|---|---|
| 0 (0x0000) | null_management |
| 1 (0x0001) | clock_description |
| 2 (0x0002) | user_description |
| 8192 (0x2000) | default_data_set |
| 8193 (0x2001) | current_data_set |
| 8194 (0x2002) | parent_data_set |
| 8195 (0x2003) | time_properties_data_set |
| 8196 (0x2004) | port_data_set |
| 8197 (0x2005) | priority1 |
| 8198 (0x2006) | priority2 |
| 8199 (0x2007) | domain |
| 8200 (0x2008) | slave_only |
| 8201 (0x2009) | log_announce_interval |
| 8205 (0x200d) | log_sync_interval |
| 8213 (0x2015) | utc_properties |
tlvs › organization_extension
| Field | Type | Default | Auto | Description |
|---|---|---|---|---|
organization_id | uint(24) | |||
organization_sub_type | uint(24) | |||
data_field | bytes — rest of the PDU |
tlvs › request_unicast_transmission
| Field | Type | Default | Auto | Description |
|---|---|---|---|---|
message_type | enum(4) | 11 (announce) | ||
reserved | uint(4) | 0 | ||
log_inter_message_period | int(8) | 1 | ||
duration_field | uint(32) | 300 |
tlvs › request_unicast_transmission › message_type
| Value | Name |
|---|---|
| 0 | sync |
| 1 | delay_req |
| 2 | pdelay_req |
| 3 | pdelay_resp |
| 8 | follow_up |
| 9 | delay_resp |
| 10 | pdelay_resp_follow_up |
| 11 | announce |
| 12 | signaling |
| 13 | management |
tlvs › grant_unicast_transmission
| Field | Type | Default | Auto | Description |
|---|---|---|---|---|
message_type | enum(4) | 11 (announce) | ||
reserved | uint(4) | 0 | ||
log_inter_message_period | int(8) | 1 | ||
duration_field | uint(32) | 300 | ||
reserved2 | uint(8) | 0 | ||
reserved3 | uint(7) | 0 | ||
renewal_invited | uint(1) | 0 |
tlvs › grant_unicast_transmission › message_type
| Value | Name |
|---|---|
| 0 | sync |
| 1 | delay_req |
| 2 | pdelay_req |
| 3 | pdelay_resp |
| 8 | follow_up |
| 9 | delay_resp |
| 10 | pdelay_resp_follow_up |
| 11 | announce |
| 12 | signaling |
| 13 | management |
tlvs › cancel_unicast_transmission
| Field | Type | Default | Auto | Description |
|---|---|---|---|---|
message_type | enum(4) | 11 (announce) | ||
reserved | uint(4) | 0 | ||
reserved2 | uint(8) | 0 |
tlvs › cancel_unicast_transmission › message_type
| Value | Name |
|---|---|
| 0 | sync |
| 1 | delay_req |
| 2 | pdelay_req |
| 3 | pdelay_resp |
| 8 | follow_up |
| 9 | delay_resp |
| 10 | pdelay_resp_follow_up |
| 11 | announce |
| 12 | signaling |
| 13 | management |
tlvs › acknowledge_cancel_unicast_transmission
| Field | Type | Default | Auto | Description |
|---|---|---|---|---|
message_type | enum(4) | 11 (announce) | ||
reserved | uint(4) | 0 | ||
reserved2 | uint(8) | 0 |
tlvs › acknowledge_cancel_unicast_transmission › message_type
| Value | Name |
|---|---|
| 0 | sync |
| 1 | delay_req |
| 2 | pdelay_req |
| 3 | pdelay_resp |
| 8 | follow_up |
| 9 | delay_resp |
| 10 | pdelay_resp_follow_up |
| 11 | announce |
| 12 | signaling |
| 13 | management |
tlvs › path_trace
| Field | Type | Default | Auto | Description |
|---|---|---|---|---|
path_sequence | list<uint(64)> — rest of the PDU |
tlvs › alternate_time_offset_indicator
| Field | Type | Default | Auto | Description |
|---|---|---|---|---|
key_field | uint(8) | 0 | ||
current_offset | int(32) | 0 | ||
jump_seconds | int(32) | 0 | ||
time_of_next_jump | uint(48) | 0 | ||
display_name_length | uint(8) | Size of display_name in octets | ||
display_name | bytes — display_name_length octets | |||
pad | bytes — rest of the PDU |
Constraints
| Level | Rule |
|---|---|
| warning | version = 2 |
Sample templates
- ptp-pdelay-resp-follow-up-l2 —
templates/protocols/timing/ptp-pdelay-resp-follow-up-l2.wpg.yaml