<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>simple | DAILY ZSOCIAL MEDIA NEWS</title>
	<atom:link href="https://dailyzsocialmedianews.com/tag/simple/feed/" rel="self" type="application/rss+xml" />
	<link>https://dailyzsocialmedianews.com</link>
	<description>ALL ABOUT DAILY ZSOCIAL MEDIA NEWS</description>
	<lastBuildDate>Wed, 07 Feb 2024 19:33:32 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.1</generator>

<image>
	<url>https://dailyzsocialmedianews.com/wp-content/uploads/2020/12/cropped-DAILY-ZSOCIAL-MEDIA-NEWS-e1607166156946-32x32.png</url>
	<title>simple | DAILY ZSOCIAL MEDIA NEWS</title>
	<link>https://dailyzsocialmedianews.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Easy Precision Time Protocol at Meta</title>
		<link>https://dailyzsocialmedianews.com/easy-precision-time-protocol-at-meta/</link>
		
		<dc:creator><![CDATA[]]></dc:creator>
		<pubDate>Wed, 07 Feb 2024 19:33:31 +0000</pubDate>
				<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Meta]]></category>
		<category><![CDATA[precision]]></category>
		<category><![CDATA[Protocol]]></category>
		<category><![CDATA[simple]]></category>
		<category><![CDATA[time]]></category>
		<guid isPermaLink="false">https://dailyzsocialmedianews.com/?p=24667</guid>

					<description><![CDATA[<div style="margin-bottom:20px;"><img width="1024" height="562" src="https://social-media-news.s3.amazonaws.com/wp-content/uploads/2024/02/07193329/Simple-Precision-Time-Protocol-at-Meta.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="Simple Precision Time Protocol at Meta" decoding="async" fetchpriority="high" srcset="https://social-media-news.s3.amazonaws.com/wp-content/uploads/2024/02/07193329/Simple-Precision-Time-Protocol-at-Meta.png 1024w, https://social-media-news.s3.amazonaws.com/wp-content/uploads/2024/02/07193329/Simple-Precision-Time-Protocol-at-Meta-300x165.png 300w, https://social-media-news.s3.amazonaws.com/wp-content/uploads/2024/02/07193329/Simple-Precision-Time-Protocol-at-Meta-768x422.png 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></div><p>While deploying Precision Time Protocol (PTP) at Meta, we’ve developed a simplified version of the protocol (Simple Precision Time Protocol – SPTP), that can offer the same level of clock synchronization as unicast PTPv2 more reliably and with fewer resources. In our own tests, SPTP boasts comparable performance to PTP, but with significant improvements in [&#8230;]</p>
The post <a href="https://dailyzsocialmedianews.com/easy-precision-time-protocol-at-meta/">Easy Precision Time Protocol at Meta</a> first appeared on <a href="https://dailyzsocialmedianews.com">DAILY ZSOCIAL MEDIA NEWS</a>.]]></description>
										<content:encoded><![CDATA[<div style="margin-bottom:20px;"><img width="1024" height="562" src="https://social-media-news.s3.amazonaws.com/wp-content/uploads/2024/02/07193329/Simple-Precision-Time-Protocol-at-Meta.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="Simple Precision Time Protocol at Meta" decoding="async" srcset="https://social-media-news.s3.amazonaws.com/wp-content/uploads/2024/02/07193329/Simple-Precision-Time-Protocol-at-Meta.png 1024w, https://social-media-news.s3.amazonaws.com/wp-content/uploads/2024/02/07193329/Simple-Precision-Time-Protocol-at-Meta-300x165.png 300w, https://social-media-news.s3.amazonaws.com/wp-content/uploads/2024/02/07193329/Simple-Precision-Time-Protocol-at-Meta-768x422.png 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></div><p></p>
<ul>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">While deploying Precision Time Protocol (PTP) at Meta, we’ve developed a simplified version of the protocol (Simple Precision Time Protocol – SPTP), that can offer the same level of clock synchronization as unicast PTPv2 more reliably and with fewer resources.</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">In our own tests, SPTP boasts comparable performance to PTP, but with significant improvements in CPU, memory, and network utilization.</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">We’ve made the source code for the SPTP client and server available on</span> <span style="font-weight: 400;">GitHub</span><span style="font-weight: 400;">.</span></li>
</ul>
<p><span style="font-weight: 400;">We’ve previously spoken in great detail about</span> <span style="font-weight: 400;">how Precision Time Protocol is being deployed at Meta</span><span style="font-weight: 400;">, including </span><span style="font-weight: 400;">the protocol itself and Meta’s precision time architecture.</span></p>
<p><span style="font-weight: 400;">As we deployed PTP into one of our data centers, we were also evaluating and testing alternative PTP clients. In doing so, we soon realized that we could eliminate a lot of complexity in the PTP protocol itself that we experienced during data center deployments while still maintaining complete hardware compatibility with our existing equipment.</span></p>
<p><span style="font-weight: 400;">This is how the idea of Simple Precision Time Protocol (SPTP) was born. </span></p>
<p><span style="font-weight: 400;">But before we dive under the hood of SPTP we should explore why the IEEE 1588</span> <span style="font-weight: 400;">G8265.1</span><span style="font-weight: 400;"> and</span> <span style="font-weight: 400;">G8275.2</span><span style="font-weight: 400;"> unicast profiles (here, we just call them PTP) weren’t a perfect fit for our data center deployment.</span></p>
<h2><span style="font-weight: 400;">PTP and its limitations</span></h2>
<h3><span style="font-weight: 400;">Excessive network communication</span></h3>
<p><span style="font-weight: 400;">A typical IEEE 1588-2019 two-step PTPv2 unicast UDP flow consists of the following exchange:</span></p>
<p>Figure 1: Typical two-step PTPv2 exchange.</p>
<p><span style="font-weight: 400;">This sequence repeats either in full or in part depending on the negotiation result. The exchange shown is one of many possible combinations. It may involve additional steps such as grant cancellation, grand cancellation acknowledgements, and so on.</span></p>
<p><span style="font-weight: 400;">The frequency of these messages may vary depending on the implementation and configuration. After completing negotiation, the frequency of some messages can change dynamically.</span></p>
<p><span style="font-weight: 400;">This design allows for a lot of flexibility, especially for less powerful equipment where resources are limited. In combination with multicast, it allows us to support a relatively large number of clients using either very old or embedded devices. For example, a PTP server can reject the request or confirm a less frequent exchange if the resources are exhausted.</span></p>
<p><span style="font-weight: 400;">This design, however, leads to excessive network communication, which is particularly visible on a</span> <span style="font-weight: 400;">time appliance</span><span style="font-weight: 400;"> serving a large number of clients.</span></p>
<h3><span style="font-weight: 400;">State machine</span></h3>
<p><span style="font-weight: 400;">Due to the “subscription” model, both the PTP client and the server have to keep the state in memory. This approach comes with the tradeoffs such as:</span><span style="font-weight: 400;"><br /></span></p>
<ul>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Excessive usage of resources such as memory and CPU.</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Strict capacity limits that mean multicast support is required for large numbers of clients.</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Code complexity.</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Fragile state transitions.</span></li>
</ul>
<p><span style="font-weight: 400;">These issues can manifest, for example, in so-called abandoned syncs – situations where the work of a PTP client is interrupted (either forcefully stopped or crashed). Because the PTP server didn’t receive a cancellation signaling message it will keep sending sync and followup packets until the subscription expires (which may take hours). This leads to additional complexity and fragility in the system. </span></p>
<p><span style="font-weight: 400;"> </span><span style="font-weight: 400;">There are additional protocol design side effects such as:</span><span style="font-weight: 400;"><br /></span></p>
<ul>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">An almost infinite Denial of Service Attack (DoS) amplification factor.</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Server-driven communication with little control by the client.</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Complete trust in the validity of server timestamps.</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Asynchronous path delay calculations.</span></li>
</ul>
<p><span style="font-weight: 400;">In data centers, where communication is typically driven by hundreds of thousands of clients and multicast is not supported, these tradeoffs are very limiting. </span></p>
<h2><span style="font-weight: 400;">SPTP</span></h2>
<p><span style="font-weight: 400;">True to its name, SPTP significantly reduces the number of exchanges between a server and client, allowing for much more efficient network communication.</span></p>
<h3><span style="font-weight: 400;">Exchange</span></h3>
<p><img decoding="async" class="size-large wp-image-20921" src="https://engineering.fb.com/wp-content/uploads/2024/02/SPTP_image2.jpg?w=1024" alt="" width="1024" height="1024" srcset="https://engineering.fb.com/wp-content/uploads/2024/02/SPTP_image2.jpg 1080w, https://engineering.fb.com/wp-content/uploads/2024/02/SPTP_image2.jpg?resize=916,916 916w, https://engineering.fb.com/wp-content/uploads/2024/02/SPTP_image2.jpg?resize=768,768 768w, https://engineering.fb.com/wp-content/uploads/2024/02/SPTP_image2.jpg?resize=1024,1024 1024w, https://engineering.fb.com/wp-content/uploads/2024/02/SPTP_image2.jpg?resize=96,96 96w, https://engineering.fb.com/wp-content/uploads/2024/02/SPTP_image2.jpg?resize=192,192 192w" sizes="(max-width: 992px) 100vw, 62vw"/>Figure 2: Typical SPTP exchange.</p>
<p><span style="font-weight: 400;">In a typical SPTP exchange:</span><span style="font-weight: 400;"><br /></span></p>
<ol>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">The client sends a delay request.</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">The server responds with a sync.</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">The server sends a followup/announce.</span></li>
</ol>
<p><span style="font-weight: 400;">The number of network exchanges is drastically reduced. Instead of 11 different network exchanges as shown on Figure 1 and the requirement for client and server state machines for the duration of the subscription, there are only three packets exchanged and no state needs to be preserved on either side. In the simplified exchange, every packet has an important role:</span></p>
<h4><span style="font-weight: 400;">Delay request</span></h4>
<p><span style="font-weight: 400;">A delay request initiates the SPTP exchange. It’s interpreted by a server not only as a standard delay request containing the correction field (CF1) of the transparent clock, but also as a signal to respond with sync and followup packets. Just like in a two-step PTPv2 exchange, it generates T3 upon departure from the client side and T4 upon arrival on the server side.</span></p>
<p><span style="font-weight: 400;">To distinguish between a PTPv2 delay request and a SPTP delay request, the PTP profile Specific 1 flag must be set by the client.</span></p>
<h4><span style="font-weight: 400;">Sync</span></h4>
<p><span style="font-weight: 400;">In response to a delay request, a sync packet would be sent containing the T4 generated at an earlier stage. Just like in a regular two-step PTPv2 exchange, a sync packet will generate a T1 upon departure from the server side. While in transit, the correction field of the packet (CF2) is populated by the network equipment.</span></p>
<h4><span style="font-weight: 400;">Followup/announce</span></h4>
<p><span style="font-weight: 400;">Following the sync packet, an announce packet is immediately sent containing T1 generated at a previous stage. In addition, the correction filed from the Delay Request field is populated by the CF1 value collected at an earlier stage.  </span></p>
<p><span style="font-weight: 400;">The announce packet also contains typical PTPv2 information such as clock class, clock accuracy, and so on. On the client side, the arrival of the packet generates the T2 timestamp.</span></p>
<p><span style="font-weight: 400;">After a successful SPTP exchange, default two-step PTPv2 formulas for mean path delay and clock offset must be applied:</span></p>
<p style="text-align: center;"><span style="font-weight: 400;">mean_path_delay = ((T4 – T3) + (T2-T1) – CF1 -CF2)/2</span></p>
<p style="text-align: center;"><span style="font-weight: 400;">clock_offset = T2 – T1 – mean_path_delay</span></p>
<p><span style="font-weight: 400;">After every exchange the client has access to the announce message attributes such as time source, clock quality, etc., as well as the path delay and a calculated clock offset after every exchange with every server. And, because the exchange is client-driven, the offsets could be calculated at the exact same time. This avoids a situation where a client is following a faulty server and has no chance of detecting it.</span></p>
<p><img loading="lazy" decoding="async" class="size-large wp-image-20922" src="https://engineering.fb.com/wp-content/uploads/2024/02/SPTP_image3.png?w=1024" alt="" width="1024" height="553" srcset="https://engineering.fb.com/wp-content/uploads/2024/02/SPTP_image3.png 1408w, https://engineering.fb.com/wp-content/uploads/2024/02/SPTP_image3.png?resize=916,494 916w, https://engineering.fb.com/wp-content/uploads/2024/02/SPTP_image3.png?resize=768,415 768w, https://engineering.fb.com/wp-content/uploads/2024/02/SPTP_image3.png?resize=1024,553 1024w, https://engineering.fb.com/wp-content/uploads/2024/02/SPTP_image3.png?resize=96,52 96w, https://engineering.fb.com/wp-content/uploads/2024/02/SPTP_image3.png?resize=192,104 192w" sizes="auto, (max-width: 992px) 100vw, 62vw"/>Figure 3: Client following faulty Time Server 2 based on announce.</p>
<h3><span style="font-weight: 400;">Reliability</span></h3>
<p><span style="font-weight: 400;">We can also provide stronger reliability guarantees by using multi-clock reliance.</span></p>
<p><span style="font-weight: 400;">In our implementation for precision time synchronization, we provide time as well as a window of uncertainty (WOU) to the consumer application via the fbclock API. As we described in a previous blog post on</span> <span style="font-weight: 400;">how PTP is being deployed at Meta</span><span style="font-weight: 400;"> the WOU is based on the observation of time sync errors for the minimum duration to have stationarity of the state of the system. </span></p>
<p><span style="font-weight: 400;">In addition, we’ve established a method based on a collection of clocks that each client can access for timing information that we call a </span><span style="font-weight: 400;">clock ensemble</span><span style="font-weight: 400;">. The clock ensemble operates in two modes, steady state and transient; where steady state is during normal operation and transient is in the case of holdover.</span></p>
<p><span style="font-weight: 400;">However, with a pool of N clocks, C, forming the clock ensemble, the question becomes which clocks to select for determining robustness and accurate timing information. Clocks that are not accurate are rejected (C_reject) and, thus, our ensemble size falls to N = C_total –  C_reject. We employ two stages, one that is based on each individual clock, and the second that acts on the collection of valid clocks in the ensemble. </span></p>
<p><span style="font-weight: 400;">The first stage observes the previous measurements of each individual clock, where the main criteria is to reject outliers in the previous states of the clock. Once this criterion threshold is exceeded, the entire clock is rejected from the valid clock ensemble pool. This is based off</span> <span style="font-weight: 400;">Chauvenet’s criterion</span><span style="font-weight: 400;">, where the criterion is a probability band that is centered on the mean of the clock outputs (assuming a normal distribution during steady state). Based on the stationarity tests, we use a sample size of 400 previous clock outputs and calculate a maximum allowable deviation. </span></p>
<p><span style="font-weight: 400;">For example:</span></p>
<p><span style="font-weight: 400;"><img decoding="async" src="https://latex.codecogs.com/png.latex?%5Cfn_cm%20D_%7Bmax%7D%5Cge%20%5Cfrac%7B%7CC%20-%20%5Cbar%7BC%7D%7C%7D%7BS_%7Bc%7D%7D"/>, where <img decoding="async" src="https://latex.codecogs.com/png.latex?%5Cfn_cm%20C"/> is the current clock output, <img decoding="async" src="https://latex.codecogs.com/png.latex?%5Cfn_cm%20%5Coverline%20C"/> </span><span style="font-weight: 400;">is the clock sample mean, and <img decoding="async" src="https://latex.codecogs.com/png.latex?%5Cfn_cm%20S_%7Bc%7D"/> </span><span style="font-weight: 400;">is the clock set standard deviation.</span></p>
<p><span style="font-weight: 400;">We find the probability that the current clock output is in disagreement with the previous 400 samples:</span></p>
<p><img decoding="async" src="https://latex.codecogs.com/png.latex?%5Cfn_cm%20%7BP_%7Bz%7D%20%3D%201%20-%20%5Cfrac%7B1%7D%7B4%28400%29%7D%20%5Capprox%200.9993%7D"/></p>
<p><span style="font-weight: 400;">Based on a window size of 400 previous samples, the maximum allowed deviation is:</span></p>
<p><img decoding="async" src="https://latex.codecogs.com/png.latex?%5Cfn_cm%20D_%7Bmax%7D%20%3D%203.2272"/></p>
<p><span style="font-weight: 400;">Now, the clock outputs are tested against this value. If they exceed the <img decoding="async" src="https://latex.codecogs.com/png.latex?%5Cfn_cm%20D_%7Bmax%7D"/> </span><span style="font-weight: 400;">they are rejected, an alert is raised, and a threshold counter is incremented. Once the rejection threshold is reached for an individual clock, this clock is entirely rejected.</span></p>
<p><span style="font-weight: 400;">Now, we enter the second stage of verifying the clock ensemble composed of the valid clocks. The second stage forms a weighted average of the non-rejected clocks in the valid clock ensemble, where each clock in the ensemble is reported as its sample size, mean, and variance. The average of the clocks’ means is the weighted average, where the weights are inversely proportional to the mean absolute deviations reported by each clock after applying Chauvenet’s criterion. </span></p>
<p><span style="font-weight: 400;">Now we can report the mean and variance of the clock ensemble, ensuring the clocks contained therewith are valid and not providing erroneous values. The confidence interval is scaled with the number of good clocks in the ensemble, where the higher the number of valid clocks out of the total clocks provides greater reliability.</span></p>
<p><span style="font-weight: 400;">For a number of hosts, we show that the distribution of clocks falls within the following heatmap:</span></p>
<p><img loading="lazy" decoding="async" class="size-large wp-image-20923" src="https://engineering.fb.com/wp-content/uploads/2024/02/SPTP_image4.png?w=640" alt="" width="640" height="480" srcset="https://engineering.fb.com/wp-content/uploads/2024/02/SPTP_image4.png 640w, https://engineering.fb.com/wp-content/uploads/2024/02/SPTP_image4.png?resize=96,72 96w, https://engineering.fb.com/wp-content/uploads/2024/02/SPTP_image4.png?resize=192,144 192w" sizes="auto, (max-width: 992px) 100vw, 62vw"/>Figure 4: Offset distribution overlay of multiple clocks.</p>
<p><span style="font-weight: 400;">We calculate the variance, <img decoding="async" src="https://latex.codecogs.com/png.latex?%5Cfn_cm%20v_%7Bk%7D"/></span><span style="font-weight: 400;">, of each individual clock’s observations, then we calculate a weighted mean, <img decoding="async" src="https://latex.codecogs.com/png.latex?%5Cfn_cm%20w_%7Bk%7D"/></span><span style="font-weight: 400;">, taking into consideration the reciprocal of each clock’s variance as the weight.</span></p>
<p><img decoding="async" class="aligncenter" src="https://latex.codecogs.com/png.latex?%5Cfn_cm%20w_%7Bk%7D%20%3D%20%5Cfrac%7BC%7D%7B%5Csqrt%7B%5Cfrac%7Bv%7D%7Bk%7D%7D%7D%2C%20C%20%3D%20%5B%5Cfrac%7B1%7D%7Bk%7D%5Csum%20%5Cfrac%7B1%7D%7Bv_%7Bk%7D%7D%5D%5E%7B-1%7D"/></p>
<p><span style="font-weight: 400;">Due to independence of clocks, the variance of the weighted sum, <img decoding="async" src="https://latex.codecogs.com/png.latex?%5Cfn_cm%20w_%7Bk%7D"/></span><span style="font-weight: 400;">, is:</span></p>
<p><img decoding="async" class="aligncenter" src="https://latex.codecogs.com/png.latex?%5Cfn_cm%20%5Cfrac%7B1%7D%7Bk%7D%5Csum_%7B%7D%5E%7B%7D%5Cmathrm%7BW%7D_%7Bk%7D%5E%7B2%7Dv_%7Bk%7D%20%3D%20%5Csum_%7B%7D%5E%7B%7DC%5E%7B2%7D%20%3D%20N_%7Bw%7DC%5E%7B2%7D"/></p>
<p><span style="font-weight: 400;">In summary, we collect samples from a number of clock sources that form our clock ensemble. The overall precision and reliability of the provided data by SPTP is a function of the number of reliable and in distribution clocks forming the clock ensemble.</span></p>
<p><span style="font-weight: 400;">A future post will focus on this specifically. </span></p>
<h2><span style="font-weight: 400;">SPTP’s performance</span></h2>
<p><span style="font-weight: 400;">Let’s explore performance of the SPTP versus PTP.</span></p>
<p><span style="font-weight: 400;">Initial deployments to a single client confirmed no regression in the precision of the synchronization:</span></p>
<p><img loading="lazy" decoding="async" class="size-large wp-image-20970" src="https://engineering.fb.com/wp-content/uploads/2024/02/SPTP-Figure-5-updated.png?w=1024" alt="" width="1024" height="403" srcset="https://engineering.fb.com/wp-content/uploads/2024/02/SPTP-Figure-5-updated.png 1520w, https://engineering.fb.com/wp-content/uploads/2024/02/SPTP-Figure-5-updated.png?resize=916,360 916w, https://engineering.fb.com/wp-content/uploads/2024/02/SPTP-Figure-5-updated.png?resize=768,302 768w, https://engineering.fb.com/wp-content/uploads/2024/02/SPTP-Figure-5-updated.png?resize=1024,403 1024w, https://engineering.fb.com/wp-content/uploads/2024/02/SPTP-Figure-5-updated.png?resize=96,38 96w, https://engineering.fb.com/wp-content/uploads/2024/02/SPTP-Figure-5-updated.png?resize=192,76 192w" sizes="auto, (max-width: 992px) 100vw, 62vw"/>Figure 5: Clock offset after switching from ptp4l and SPTP.</p>
<p><span style="font-weight: 400;">Repeating the same measurement after migration to SPTP produces a very similar result, only marginally different due to a statistical error:</span></p>
<p><img loading="lazy" decoding="async" class="size-large wp-image-20925" src="https://engineering.fb.com/wp-content/uploads/2024/02/SPTP_image6.png?w=1024" alt="" width="1024" height="574" srcset="https://engineering.fb.com/wp-content/uploads/2024/02/SPTP_image6.png 1999w, https://engineering.fb.com/wp-content/uploads/2024/02/SPTP_image6.png?resize=580,326 580w, https://engineering.fb.com/wp-content/uploads/2024/02/SPTP_image6.png?resize=916,514 916w, https://engineering.fb.com/wp-content/uploads/2024/02/SPTP_image6.png?resize=768,431 768w, https://engineering.fb.com/wp-content/uploads/2024/02/SPTP_image6.png?resize=1024,574 1024w, https://engineering.fb.com/wp-content/uploads/2024/02/SPTP_image6.png?resize=1536,861 1536w, https://engineering.fb.com/wp-content/uploads/2024/02/SPTP_image6.png?resize=96,54 96w, https://engineering.fb.com/wp-content/uploads/2024/02/SPTP_image6.png?resize=192,108 192w" sizes="auto, (max-width: 992px) 100vw, 62vw"/>Figure 6: P99.99 offset collected from over 100000 SPTP clients.</p>
<p><span style="font-weight: 400;">With large-scale deployment of our implementations, we can confirm resource utilization improvements.</span></p>
<p><span style="font-weight: 400;">We noticed that due to the difference in multi-server support, the performance gains vary significantly depending on the number of tracked time servers.</span></p>
<p><span style="font-weight: 400;">For example, with just a single time appliance serving the entire network there are significant improvements across the board. Most notably over 40 percent CPU, 70 percent memory, and 50 percent network utilization improvements:</span></p>
<p><img loading="lazy" decoding="async" class="size-large wp-image-20926" src="https://engineering.fb.com/wp-content/uploads/2024/02/SPTP_image7.png?w=1024" alt="" width="1024" height="574" srcset="https://engineering.fb.com/wp-content/uploads/2024/02/SPTP_image7.png 1234w, https://engineering.fb.com/wp-content/uploads/2024/02/SPTP_image7.png?resize=580,326 580w, https://engineering.fb.com/wp-content/uploads/2024/02/SPTP_image7.png?resize=916,514 916w, https://engineering.fb.com/wp-content/uploads/2024/02/SPTP_image7.png?resize=768,431 768w, https://engineering.fb.com/wp-content/uploads/2024/02/SPTP_image7.png?resize=1024,574 1024w, https://engineering.fb.com/wp-content/uploads/2024/02/SPTP_image7.png?resize=96,54 96w, https://engineering.fb.com/wp-content/uploads/2024/02/SPTP_image7.png?resize=192,108 192w" sizes="auto, (max-width: 992px) 100vw, 62vw"/>Figure 7: Packets per second with ptp4l (green) vs SPTP (blue).</p>
<h2><span style="font-weight: 400;">The next steps for SPTP at Meta</span></h2>
<p><span style="font-weight: 400;">Since SPTP can offer the exact same level of synchronization with a lot fewer resources consumed, we think it’s a reasonable alternative to the existing unicast PTP profiles.</span></p>
<p><span style="font-weight: 400;">In a large-scale data center deployment, it can help to combat frequently changing network paths and create savings in terms of network traffic, memory usage, and number of CPU cycles.</span></p>
<p><span style="font-weight: 400;">It will also eliminate a lot of complexity inherited from multicast PTP profiles, which is not necessarily useful in the trusted networks of the modern data centers.</span></p>
<p><span style="font-weight: 400;">It should be noted that SPTP may not be suitable for systems that still require subscription and authentication. But this could be solved by using PTP TLVs (type-length-value). </span></p>
<p><span style="font-weight: 400;">Additionally, by removing the need for subscriptions, it’s possible to observe multiple clocks – which allows us to provide higher reliability by comparing the time sync from multiple sources at the end node.</span></p>
<p><span style="font-weight: 400;">SPTP can offer significantly simpler, faster, and more reliable synchronization. Similar to G.8265.1 and G.8275.2 it provides excellent synchronization quality using a different set of parameters. Simplification comes with certain tradeoffs, such as missing signaling messages, that users need to be aware of and decide which profile is the best for them.</span></p>
<p><span style="font-weight: 400;">Having it standardized and assigned a unicast profile identifier will encourage wider support, adoption, and popularization of PTP as a default precise time synchronization protocol.</span></p>
<p><span style="font-weight: 400;">The source code for the SPTP client and the server can be accessed on our</span> <span style="font-weight: 400;">GitHub page</span><span style="font-weight: 400;">.</span></p>
<h2><span style="font-weight: 400;">Acknowledgements</span></h2>
<p>We would like to thank Alexander Bulimov, Vadim Fedorenko, and Mike Lambeta for their help implementing the code and the math for this article.</p>The post <a href="https://dailyzsocialmedianews.com/easy-precision-time-protocol-at-meta/">Easy Precision Time Protocol at Meta</a> first appeared on <a href="https://dailyzsocialmedianews.com">DAILY ZSOCIAL MEDIA NEWS</a>.]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
