Skip to content

Commit

Permalink
Merge branch '57-finalize' into stage
Browse files Browse the repository at this point in the history
  • Loading branch information
cumulusAnia committed Dec 13, 2023
2 parents ca82de7 + 2d7f298 commit 0da6793
Showing 1 changed file with 138 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -484,6 +484,144 @@ cumulus@switch:~$ sudo systemctl restart ptp4l.service
{{< /tab >}}
{{< /tabs >}}
### Noise Transfer Servo
ITU-T specifies the following key elements to measure, test, and classify the accuracy of a clock:
- Noise generation&mdash;jitter and wander noise in the output of a clock in reference to a <span style="background-color:#F5F5DC">[PRTC](## "Primary Reference Time Clock")</span>.
- Noise tolerance&mdash;how much noise the clock can tolerate before it switches to another stable source.
- Noise transfer&mdash;smoothe out the input noise so that noise does not accumulate and increase over a network of clocks.
- Transient response&mdash;the response from the clock to a transient.
- Hold over&mdash;the time interval during which the clock maintains its output after losing the input reference signal.
Cumulus Linux PTP has an option to use a servo specifically designed to handle ITU-T’s Noise Transfer specification. When you use this option, the <span style="background-color:#F5F5DC">[PHC](## "Physical Hardware Clock")</span> is disciplined by Noise Transfer Servo, which smoothes the jitter and wander noise from the Master clock.
{{%notice note%}}
- To use Noise Transfer Servo, you need to enable SyncE on the switch and on PTP interfaces.
- Cumulus Linux supports Noise Transfer Servo on Spectrum ASICs that support SyncE.
- NVIDIA recommends you do not change the default Noise Transfer Servo configuration parameters.
- NVIDIA recommends you use Noise Transfer Servo with PTP Telecom profiles. If you use other profiles or choose not to use a profile, make sure to set the sync interval to -3 or better.
{{%/notice%}}
To enable Noise Transfer Servo:
{{< tabs "TabID500 ">}}
{{< tab "NVUE Commands ">}}
The following example enables PTP, sets the profile to `default-itu-8275-1`, enables SyncE, enables PTP on swp3, and enables Noise Transfer Servo.
```
cumulus@switch:~$ nv set service ptp 1 enable on
cumulus@switch:~$ nv set service ptp 1 current-profile default-itu-8275-1
cumulus@switch:~$ nv set system synce enable on
cumulus@switch:~$ nv set interface swp3 ptp enable on
cumulus@switch:~$ nv set service ptp 1 servo noise-transfer
cumulus@switch:~$ nv config apply
```
{{< /tab >}}
{{< tab "Linux Commands ">}}
Edit the `/etc/ptp4l.conf` and the `/etc/firefly_servo/servo.conf` files; see examples below.
```
cumulus@switch:~$ sudo nano /etc/ptp4l.conf
[global]
#
# Default Data Set
#
slaveOnly 0
free_running 1
slave_event_monitor /var/run/servo_slave_event_monitor
priority1 128
priority2 128
domainNumber 24

twoStepFlag 1
dscp_event 46
dscp_general 46
network_transport L2
dataset_comparison G.8275.x
G.8275.defaultDS.localPriority 128
ptp_dst_mac 01:80:C2:00:00:0E
#
# Port Data Set
#
logAnnounceInterval -3
logSyncInterval -4
logMinDelayReqInterval -4
announceReceiptTimeout 3
delay_mechanism E2E

offset_from_master_min_threshold -50
offset_from_master_max_threshold 50
mean_path_delay_threshold 200
tsmonitor_num_ts 100
tsmonitor_num_log_sets 2
tsmonitor_num_log_entries 4
tsmonitor_log_wait_seconds 1
#
# Run time options
#
logging_level 6
path_trace_enabled 0
use_syslog 1
verbose 0
summary_interval 0
#
# servo parameters
#
pi_proportional_const 0.000000
pi_integral_const 0.000000
pi_proportional_scale 0.700000
pi_proportional_exponent -0.300000
pi_proportional_norm_max 0.700000
pi_integral_scale 0.300000
pi_integral_exponent 0.400000
pi_integral_norm_max 0.300000
first_step_threshold 0.000020
step_threshold 0.000000025
servo_offset_threshold 20
servo_num_offset_values 10
write_phase_mode 1
max_frequency 50000000
sanity_freq_limit 0
#
# Default interface options
#
time_stamping hardware

[swp3]
udp_ttl 1
masterOnly 0
delay_mechanism E2E
```
```
cumulus@switch:~$ sudo nano /etc/firefly_servo/servo.conf
[global]
free_running 0
domainNumber 24

offset_from_master_min_threshold -50
offset_from_master_max_threshold 50

# Debugging & Logging
doca_logging_level 50

init_max_time_adjustment 0
max_time_adjustment 1500
hold_over_timer 0
# Sampling Window & servo logic
servo_window_timer 3000
servo_window_min_samples 10
servo_num_offset_values 5
```
{{< /tab >}}
{{< /tabs >}}
To show Noise Transfer Servo configuration settings, run the `nv show service ptp <instance-id> servo` command.
## Optional Global Configuration
Optional global PTP configuration includes configuring the DiffServ code point (DSCP). You can configure the DSCP value for all PTP IPv4 packets originated locally. You can set a value between 0 and 63.
Expand Down

0 comments on commit 0da6793

Please sign in to comment.