本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種時(shí)鐘同步方法及設(shè)備。
背景技術(shù):
通信網(wǎng)絡(luò)中,時(shí)鐘同步對(duì)于語音、視頻等業(yè)務(wù)的傳輸具有重要的作用。時(shí)鐘同步是指網(wǎng)絡(luò)各設(shè)備之間的時(shí)間或頻率差保持在合理的誤差水平內(nèi)。
精確時(shí)間協(xié)議(Precision Time Protocol,PTP)是一種時(shí)鐘同步協(xié)議,應(yīng)用PTP協(xié)議的網(wǎng)絡(luò)稱為PTP域。目前主要通過鏈路層硬件傳輸和報(bào)文軟件層傳輸?shù)确绞綄?shí)現(xiàn)網(wǎng)絡(luò)時(shí)鐘同步。IEEE 1588V2協(xié)議中定義了單步時(shí)鐘和雙步時(shí)鐘的概念。單步時(shí)鐘是指使用單個(gè)事件報(bào)文提供時(shí)間戳信息的時(shí)鐘。雙步時(shí)鐘是指使用事件報(bào)文和后續(xù)跟隨報(bào)文的組合提供時(shí)間戳信息的時(shí)鐘。
IEEE 1588V2協(xié)議中對(duì)單步時(shí)鐘和雙步時(shí)鐘之間如何對(duì)接沒有介紹,由于單步時(shí)鐘與雙步時(shí)鐘攜帶時(shí)間戳的方式不同,現(xiàn)有通信網(wǎng)絡(luò)中僅采用單步時(shí)鐘或僅采用雙步時(shí)鐘進(jìn)行時(shí)鐘同步,無法實(shí)現(xiàn)單步時(shí)鐘和雙步時(shí)鐘混合進(jìn)行時(shí)鐘同步。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供一種時(shí)鐘同步方法及設(shè)備,用以解決現(xiàn)有通信網(wǎng)絡(luò)中時(shí)鐘狀態(tài)單一的問題,為單步時(shí)鐘和雙步時(shí)鐘的混合時(shí)鐘同步提供可能性。
本發(fā)明實(shí)施例提供的具體技術(shù)方案如下:
第一方面,本發(fā)明實(shí)施例提供了一種時(shí)鐘同步方法,包括:
設(shè)備確定所述設(shè)備的第一PTP端口的時(shí)鐘步數(shù)配置信息,以及確定所述第一PTP端口的時(shí)鐘狀態(tài);
所述設(shè)備若確定所述第一PTP端口的時(shí)鐘狀態(tài)為主時(shí)鐘,則根據(jù)所述第一PTP端口的時(shí)鐘步數(shù)配置信息,在事件報(bào)文中攜帶時(shí)間戳信息后通過所述第一PTP端口發(fā)送給與所述第一PTP端口對(duì)接的下游設(shè)備的第二PTP端口;
所述設(shè)備若確定所述第一PTP端口的時(shí)鐘狀態(tài)為從時(shí)鐘或只做從時(shí)鐘,則根據(jù)所述第一PTP端口的時(shí)鐘步數(shù)配置信息,通過所述第一PTP端口從對(duì)接的上游設(shè)備的第三PTP端口交互事件報(bào)文,從交互的事件報(bào)文中獲取時(shí)間戳信息,根據(jù)獲取的時(shí)間戳信息與所述上游設(shè)備進(jìn)行時(shí)鐘同步,其中,所述第三PTP端口的時(shí)鐘狀態(tài)為主時(shí)鐘。
第二方面,本發(fā)明實(shí)施例中提供了一種設(shè)備,包括:
第一處理模塊,用于確定所述設(shè)備的第一PTP端口的時(shí)鐘步數(shù)配置信息,以及確定所述第一PTP端口的時(shí)鐘狀態(tài);
第二處理模塊,用于若確定所述第一PTP端口的時(shí)鐘狀態(tài)為主時(shí)鐘,則根據(jù)所述第一PTP端口的時(shí)鐘步數(shù)配置信息,在事件報(bào)文中攜帶時(shí)間戳信息后通過所述第一PTP端口發(fā)送給與所述第一PTP端口對(duì)接的下游設(shè)備的第二PTP端口;
第三處理模塊,用于若確定所述第一PTP端口的時(shí)鐘狀態(tài)為從時(shí)鐘或只做從時(shí)鐘,則根據(jù)所述第一PTP端口的時(shí)鐘步數(shù)配置信息,通過所述第一PTP端口從對(duì)接的上游設(shè)備的第三PTP端口交互事件報(bào)文,從交互的事件報(bào)文中獲取時(shí)間戳信息,根據(jù)獲取的時(shí)間戳信息與所述上游設(shè)備進(jìn)行時(shí)鐘同步,其中,所述第三PTP端口的時(shí)鐘狀態(tài)為主時(shí)鐘。
基于上述技術(shù)方案,本發(fā)明實(shí)施例中,設(shè)備確定PTP端口的時(shí)鐘步數(shù)配置信息以及時(shí)鐘狀態(tài),根據(jù)PTP端口的時(shí)鐘步數(shù)配置信息以及時(shí)鐘狀態(tài)與上游設(shè)備或下游設(shè)備進(jìn)行時(shí)鐘同步,使得PTP端口不需要與上游設(shè)備或下游設(shè)備的PTP端口具有相同的時(shí)鐘步數(shù),為實(shí)現(xiàn)單步時(shí)鐘與雙步時(shí)鐘混合進(jìn)行時(shí)鐘同步提供了可能性。
附圖說明
圖1為本發(fā)明實(shí)施例中設(shè)備進(jìn)行時(shí)鐘同步的方法流程示意圖;
圖2為本發(fā)明實(shí)施例中時(shí)鐘同步系統(tǒng)架構(gòu)示意圖;
圖3為本發(fā)明實(shí)施例中本地時(shí)鐘模塊的結(jié)構(gòu)示意圖;
圖4為本發(fā)明實(shí)施例中設(shè)備連接示意圖;
圖5為本發(fā)明實(shí)施例中另一設(shè)備連接示意圖;
圖6為本發(fā)明實(shí)施例中時(shí)鐘狀態(tài)為slave且執(zhí)行延時(shí)請(qǐng)求-響應(yīng)機(jī)制的PTP端口時(shí)鐘同步流程示意圖;
圖7為本發(fā)明實(shí)施例中時(shí)鐘狀態(tài)為slave且執(zhí)行對(duì)等延時(shí)機(jī)制的PTP端口時(shí)鐘同步流程示意圖;
圖8為本發(fā)明實(shí)施例中時(shí)鐘狀態(tài)為master且執(zhí)行延時(shí)請(qǐng)求-響應(yīng)機(jī)制的PTP端口時(shí)鐘同步流程示意圖;
圖9為本發(fā)明實(shí)施例中時(shí)鐘狀態(tài)為master且執(zhí)行對(duì)等延時(shí)機(jī)制的PTP端口時(shí)鐘同步流程示意圖;
圖10為本發(fā)明實(shí)施例中設(shè)備結(jié)構(gòu)示意圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步地詳細(xì)描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其它實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
本發(fā)明實(shí)施例中,PTP端口的時(shí)鐘狀態(tài)可以是主時(shí)鐘(Master)、從時(shí)鐘(Slave)、只做從時(shí)鐘(Slave-only)或未配置中的任意一種。
本發(fā)明實(shí)施例中,PTP端口可以配置為單步端口或雙步端口,其中,單步端口對(duì)應(yīng)的為單步時(shí)鐘,雙步端口對(duì)應(yīng)的為雙步時(shí)鐘。
應(yīng)用中,若單步端口的時(shí)鐘狀態(tài)不屬于主時(shí)鐘、從時(shí)鐘、只做從時(shí)鐘中的任意一種,則不進(jìn)行時(shí)鐘同步。
本發(fā)明實(shí)施例中,PTP設(shè)備可以為邊界時(shí)鐘,此時(shí)該P(yáng)TP設(shè)備具有N個(gè)PTP端口,其中,N為大于1的整數(shù)。PTP設(shè)備也可以為普通時(shí)鐘,此時(shí)該P(yáng)TP設(shè)備僅具有一個(gè)PTP端口。
本發(fā)明實(shí)施例中,上游設(shè)備是指相對(duì)于當(dāng)前設(shè)備靠近時(shí)鐘源的設(shè)備;下游設(shè)備是指相對(duì)于當(dāng)前設(shè)備遠(yuǎn)離時(shí)鐘源的設(shè)備。
本發(fā)明實(shí)施例中,如圖1所示,設(shè)備進(jìn)行時(shí)鐘同步的詳細(xì)方法流程如下:
步驟101:設(shè)備確定該設(shè)備的第一PTP端口的時(shí)鐘步數(shù)配置信息,以及確定第一PTP端口的時(shí)鐘狀態(tài)。
具體地,設(shè)備按照IEEE1588v2規(guī)定的最優(yōu)主時(shí)鐘算法選舉PTP域的最優(yōu)主時(shí)鐘,且按照最優(yōu)主時(shí)鐘算法分配該設(shè)備的各PTP端口的時(shí)鐘狀態(tài),以及判斷參與時(shí)鐘同步的PTP端口是否配置了時(shí)鐘步數(shù),并在確定PTP端口已經(jīng)配置時(shí)鐘步數(shù)的情況下獲取該P(yáng)TP端口的時(shí)鐘步數(shù)配置信息。
步驟102:設(shè)備若確定第一PTP端口的時(shí)鐘狀態(tài)為主時(shí)鐘,根據(jù)第一PTP端口的時(shí)鐘步數(shù)配置信息,在事件報(bào)文中攜帶時(shí)間戳信息后通過第一PTP端口發(fā)送給與第一PTP端口對(duì)接的下游設(shè)備的第二PTP端口。
實(shí)施中,設(shè)備在確定第一PTP端口的時(shí)鐘狀態(tài)為主時(shí)鐘的情況下,根據(jù)第一PTP端口的時(shí)鐘步數(shù)配置信息的不同,有以下三種處理方式:
第一,設(shè)備若確定第一PTP端口的時(shí)鐘狀態(tài)為主時(shí)鐘,且確定第一PTP端口被配置為單步端口,在第一事件報(bào)文中攜帶時(shí)間戳信息后發(fā)送給第二PTP端口,以及接收下游設(shè)備通過第二PTP端口返回的第二事件報(bào)文,向第二PTP端口發(fā)送攜帶接收第二事件報(bào)文的時(shí)間戳信息的第三事件報(bào)文。
第二,設(shè)備若確定第一PTP端口的時(shí)鐘狀態(tài)為主時(shí)鐘,且確定第一PTP端口被配置為雙步端口,發(fā)送第一事件報(bào)文以及攜帶時(shí)間戳信息的第一事件報(bào)文的跟隨報(bào)文給第二PTP端口;
以及接收下游設(shè)備通過第二PTP端口返回的第二事件報(bào)文;
若為端延時(shí)機(jī)制,向第二PTP端口發(fā)送第三事件報(bào)文以及攜帶接收第二事件報(bào)文的時(shí)間戳信息的第三事件報(bào)文的跟隨報(bào)文,或者,若為請(qǐng)求應(yīng)答機(jī)制,向第二PTP端口發(fā)送攜帶接收第二事件報(bào)文的時(shí)間戳信息的第三事件報(bào)文。
第三,設(shè)備若確定第一PTP端口的時(shí)鐘狀態(tài)為主時(shí)鐘,且確定第一PTP端口未配置時(shí)鐘步數(shù),則發(fā)送兩路具有相應(yīng)的序列標(biāo)識(shí)的第一事件報(bào)文給所述第二PTP端口,其中第一路第一事件報(bào)文攜帶時(shí)間戳信息且twoStepFlag字段為FALSE,第二路第一事件報(bào)文的twoStepFlag字段為TRUE且在跟隨報(bào)文中攜帶時(shí)間戳信息;
以及接收所述下游設(shè)備通過所述第二PTP端口返回的第一事件報(bào)文對(duì)應(yīng)的第二事件報(bào)文,若為請(qǐng)求應(yīng)答機(jī)制,則向所述第二PTP端口發(fā)送攜帶接收第二事件報(bào)文的時(shí)間戳信息的第三事件報(bào)文,若為端延時(shí)機(jī)制,則向所述第二PTP端口發(fā)送兩路具有相應(yīng)的序列標(biāo)識(shí)的第三事件報(bào)文,其中第一路第三事件報(bào)文攜帶接收第二事件報(bào)文的時(shí)間戳信息且twoStepFlag字段為FALSE,第二路第三事件報(bào)文的twoStepFlag字段為TRUE且在跟隨報(bào)文中攜帶接收第二事件報(bào)文的時(shí)間戳信息。
具體地,該第三種處理方式中,若設(shè)備的第一PTP端口采用的為延遲請(qǐng)求-響應(yīng)機(jī)制(也即上面所述的請(qǐng)求應(yīng)答機(jī)制),通過第一PTP端口先后發(fā)出兩路具有相同的序列標(biāo)識(shí)(Sequence ID)的第一事件報(bào)文(即Sync事件報(bào)文),一路為只發(fā)送/回復(fù)事件報(bào)文,即事件報(bào)文Sync中的twoStepFlag字段設(shè)置為FALSE,同時(shí)事件報(bào)文Sync自身攜帶發(fā)送時(shí)間戳t1;另一路為發(fā)送/回復(fù)事件報(bào)文及該事件報(bào)文后續(xù)的跟隨報(bào)文,即事件報(bào)文Sync中的twoStepFlag字段設(shè)置為TRUE,同時(shí)其后續(xù)跟隨報(bào)文攜帶事件報(bào)文Sync的發(fā)送時(shí)間戳。
具體地,該第三種處理方式中,若設(shè)備的第一PTP端口采用的為對(duì)等延時(shí)機(jī)制(也即上面所述的端延時(shí)機(jī)制),通過第一PTP端口會(huì)先后發(fā)出兩路具有相同Sequence ID的第一事件報(bào)文(即Sync事件報(bào)文)和兩路具有相同Sequence ID的第三事件報(bào)文(即Pdelay_resp事件報(bào)文)。具體地,一路為:只發(fā)送/回復(fù)事件報(bào)文,即事件報(bào)文Sync和/或Pdelay_resp中的twoStepFlag字段設(shè)置為FALSE,同時(shí)事件報(bào)文Sync和/或Pdelay_resp自身攜帶發(fā)送時(shí)間戳;另一路為:發(fā)送/回復(fù)事件報(bào)文及該事件報(bào)文后續(xù)的跟隨報(bào)文,即事件報(bào)文Sync和/或Pdelay_resp中的twoStepFlag字段設(shè)置為TRUE,同時(shí)該事件報(bào)文后續(xù)的跟隨報(bào)文攜帶事件報(bào)文Sync和/或Pdelay_resp的發(fā)送時(shí)間戳。
步驟103:設(shè)備若確定第一PTP端口的時(shí)鐘狀態(tài)為從時(shí)鐘或只做從時(shí)鐘,根據(jù)第一PTP端口的時(shí)鐘步數(shù)配置信息,通過第一PTP端口從對(duì)接的上游設(shè)備的第三PTP端口交互事件報(bào)文,根據(jù)交互的事件報(bào)文中獲取時(shí)間戳信息,根據(jù)獲取的時(shí)間戳信息與上游設(shè)備進(jìn)行時(shí)鐘同步,其中,第三PTP端口的時(shí)鐘狀態(tài)為主時(shí)鐘。
實(shí)施中,設(shè)備在確定第一PTP端口的時(shí)鐘狀態(tài)為從時(shí)鐘或只做從時(shí)鐘的情況下,根據(jù)第一PTP端口的時(shí)鐘步數(shù)配置信息的不同,有以下兩種處理方式:
第一,設(shè)備若確定第一PTP端口的時(shí)鐘狀態(tài)為從時(shí)鐘或只做從時(shí)鐘,且確定第一PTP端口被配置為單步端口或未配置時(shí)鐘步數(shù),通過第一PTP端口與第三PTP端口交互的事件報(bào)文確定第三PTP端口的時(shí)鐘步數(shù)配置信息,若確定第三PTP端口被配置為單步端口,根據(jù)第一PTP端口與第三PTP端口交互的事件報(bào)文獲取時(shí)間戳信息,若確定第三PTP端口被配置為雙步端口,根據(jù)第一PTP端口與第三PTP端口交互的事件報(bào)文以及事件報(bào)文的跟隨報(bào)文獲取時(shí)間戳信息。
具體地,設(shè)備若通過第一PTP端口接收到兩路具有相同Sequence ID的事件報(bào)文,則僅處理twoStepFlag字段為FALSE的事件報(bào)文,忽略另一路具有相同Sequence ID的事件報(bào)文及該事件報(bào)文的跟隨報(bào)文。
具體地,若確定第一PTP端口與所述第三PTP端口交互的事件報(bào)文的twoStepFlag字段為FALSE,則確定第三PTP端口被配置為單步端口,若確定第一PTP端口與所述第三PTP端口交互的事件報(bào)文的twoStepFlag字段為TRUE,則確定第三PTP端口被配置為雙步端口。
第一處理方式中,在設(shè)備的第一PTP端口的時(shí)鐘狀態(tài)為從時(shí)鐘或只做從時(shí)鐘,且確定第一PTP端口被配置為單步端口或未配置時(shí)鐘步數(shù)的情況下,通過識(shí)別與第三PTP端口交互的事件報(bào)文的twoStepFlag字段的取值,判斷第三PTP端口的時(shí)鐘步數(shù),根據(jù)第三PTP端口的時(shí)鐘步數(shù)確定獲取時(shí)間戳信息的方式。
第二,設(shè)備若確定第一PTP端口的時(shí)鐘狀態(tài)為從時(shí)鐘或只做從時(shí)鐘,且確定第一PTP端口被配置為雙步端口,根據(jù)第一PTP端口與第三PTP端口交互的事件報(bào)文以及事件報(bào)文的跟隨報(bào)文獲取時(shí)間戳信息。
實(shí)施中,設(shè)備在確定第一PTP端口的時(shí)鐘狀態(tài)為從時(shí)鐘或只做從時(shí)鐘的情況下,根據(jù)第一PTP端口與第三PTP端口交互的事件報(bào)文中獲取時(shí)間戳信息,具體分為以下兩種處理過程:
第一,設(shè)備若確定第一PTP端口采用的為延時(shí)請(qǐng)求-響應(yīng)機(jī)制,從通過第三PTP端口向第一PTP端口發(fā)送的第一事件報(bào)文中獲取第三PTP端口發(fā)送第一事件報(bào)文的第一時(shí)間戳信息t1,以及記錄第一PTP端口接收第一事件報(bào)文的第二時(shí)間戳信息t2,以及記錄通過第一PTP端口向第三PTP端口發(fā)送第二事件報(bào)文的第三時(shí)間戳信息t3,以及從上游設(shè)備通過第三PTP端口向第一PTP端口發(fā)送的第三事件報(bào)文中,獲取第三PTP端口接收第二事件報(bào)文的第四時(shí)間戳信息t4。
第二,設(shè)備若確定第一PTP端口采用的為對(duì)等延時(shí)機(jī)制,從通過第三PTP端口向第一PTP端口發(fā)送的第一事件報(bào)文中獲取第三PTP端口發(fā)送第一事件報(bào)文的第一時(shí)間戳信息T1,以及記錄第一PTP端口接收第一事件報(bào)文的第二時(shí)間戳信息T2,以及記錄通過第一PTP端口向所述第三PTP端口發(fā)送第二事件報(bào)文的第三時(shí)間戳信息t1,以及從上游設(shè)備通過第三PTP端口向第一PTP端口發(fā)送的第三事件報(bào)文中,獲取第三PTP端口接收第二事件報(bào)文的第四時(shí)間戳信息t2,以及從第三事件報(bào)文中獲取第三PTP端口發(fā)送第三事件報(bào)文的第五時(shí)間戳信息t3,以及記錄第一PTP端口接收第三事件報(bào)文的第六時(shí)間戳信息信息t4。
第二處理方式中,在設(shè)備的第一PTP端口的時(shí)鐘狀態(tài)為從時(shí)鐘或只做從時(shí)鐘,且確定第一PTP端口被配置為雙步端口的情況下,直接從第一PTP端口與第三PTP端口交互的事件報(bào)文以及事件報(bào)文的跟隨報(bào)文中獲取時(shí)間戳信息。
實(shí)施中,設(shè)備在確定第一PTP端口的時(shí)鐘狀態(tài)為從時(shí)鐘或只做從時(shí)鐘的情況下,從第一PTP端口從第三PTP端口接收的事件報(bào)文以及事件報(bào)文的跟隨報(bào)文中獲取時(shí)間戳信息,具體分為以下兩種處理過程:
第一,設(shè)備若確定第一PTP端口采用的為延時(shí)請(qǐng)求-響應(yīng)機(jī)制,從通過第三PTP端口向第一PTP端口發(fā)送的第一事件報(bào)文的跟隨報(bào)文中獲取第三PTP端口發(fā)送第一事件報(bào)文的第一時(shí)間戳信息t1,以及記錄第一PTP端口接收第一事件報(bào)文的第二時(shí)間戳信息t2,以及記錄通過第一PTP端口向第三PTP端口發(fā)送第二事件報(bào)文的第三時(shí)間戳信息t3,以及從上游設(shè)備通過第三PTP端口向第一PTP端口發(fā)送的第三事件報(bào)文中,獲取第三PTP端口接收第二事件報(bào)文的第四時(shí)間戳信息t4。
第二,設(shè)備若確定第一PTP端口采用的為對(duì)等延時(shí)機(jī)制,從通過第三PTP端口向第一PTP端口發(fā)送的第一事件報(bào)文的跟隨報(bào)文中獲取第三PTP端口發(fā)送第一事件報(bào)文的第一時(shí)間戳信息T1,以及記錄第一PTP端口接收第一事件報(bào)文的第二時(shí)間戳信息T2,以及記錄通過第一PTP端口向第三PTP端口發(fā)送第二事件報(bào)文的第三時(shí)間戳信息t1,以及從上游設(shè)備通過第三PTP端口向第一PTP端口發(fā)送的第三事件報(bào)文中,獲取第三PTP端口接收第二事件報(bào)文的第四時(shí)間戳信息t2,以及從第三事件報(bào)文的跟隨報(bào)文中獲取第三PTP端口發(fā)送第三事件報(bào)文的第五時(shí)間戳信息t3,以及記錄第一PTP端口接收第三事件報(bào)文的第六時(shí)間戳信息信息t4。
實(shí)施中,設(shè)備根據(jù)獲得時(shí)間戳信息確定鏈路延時(shí)以及頻偏校正量,并根據(jù)鏈路延時(shí)確定時(shí)間差;設(shè)備采用頻偏校正量對(duì)時(shí)間差進(jìn)行校正,確定校正后的時(shí)間差,并采用校正后的時(shí)間差更新本地時(shí)鐘。
可選地,設(shè)備采用頻偏校正量對(duì)時(shí)間差進(jìn)行校正之前,確定時(shí)間差大于預(yù)設(shè)閾值。該實(shí)施方式中,在時(shí)間差小于或等于預(yù)設(shè)閾值的情況下,不再對(duì)事件差進(jìn)行校正,直接采用該時(shí)間差進(jìn)行時(shí)鐘同步并更新本地時(shí)鐘,可以提高同步效率。其中,該預(yù)設(shè)閾值可以是通過多次試驗(yàn)得到的經(jīng)驗(yàn)值。
可選地,設(shè)備根據(jù)獲得時(shí)間戳信息確定頻偏校正量之后,若確定所述頻偏校正量等于零,停止更新本地時(shí)鐘,并在間隔預(yù)設(shè)時(shí)長后重新計(jì)算所述頻偏校正量;否則,采用所述頻偏校正量對(duì)所述時(shí)間差進(jìn)行校正。
可選地,設(shè)備計(jì)算獲得上一次確定的平均時(shí)間差與所述時(shí)間差的平均值,并計(jì)算所述平均值與所述頻偏校正量的差值,其中,所述平均時(shí)間差的初始值為首次確定的時(shí)間差。
具體地,根據(jù)獲得時(shí)間戳信息的不同,確定鏈路延時(shí)以及頻偏校正量,并根據(jù)鏈路延時(shí)確定時(shí)間差,有以下兩種處理過程:
第一,設(shè)備若確定第一PTP端口采用的為延時(shí)請(qǐng)求-響應(yīng)機(jī)制,根據(jù)第一時(shí)間戳信息、第二時(shí)間戳信息、第三時(shí)間戳信息以及第四時(shí)間戳信息確定鏈路延時(shí),并根據(jù)鏈路延時(shí)確定時(shí)間差,其中,鏈路延時(shí)表示為:delay=((t2-t1)-(t3-t4))/2,時(shí)間差表示為:offset=(t2-t1)-delay,其中,t1表示第一時(shí)間戳信息,t2表示第二時(shí)間戳信息,t3表示第三時(shí)間戳信息,t4表示第四時(shí)間戳信息,delay表示鏈路延時(shí),offset表示時(shí)間差。
設(shè)備根據(jù)最近預(yù)設(shè)時(shí)長(最近預(yù)設(shè)窗口)內(nèi)第一次獲得的第一時(shí)間戳信息、第一次獲得的第二時(shí)間戳信息、最后一次獲得的第一時(shí)間戳信息以及最后一次獲得的第二時(shí)間戳信息確定頻偏校正量,其中,頻偏校正量表示為:f=(tm2-t12)-(tm1-t11),其中,tm1表示最后一次獲得的第一時(shí)間戳信息,tm2表示最后一次獲得的第二時(shí)間戳信息,t11表示第一次獲得的第一時(shí)間戳信息,t12表示第一次獲得的第二時(shí)間戳信息。
第二,設(shè)備若確定第一PTP端口采用的為對(duì)等延時(shí)機(jī)制,根據(jù)第三時(shí)間戳信息、第四時(shí)間戳信息、第五時(shí)間戳信息以及第六時(shí)間戳信息確定鏈路延時(shí),并根據(jù)鏈路延時(shí)、第一時(shí)間戳信息以及第二時(shí)間戳信息確定時(shí)間差,其中,鏈路延時(shí)表示為:delay=((t2-t1)-(t3-t4))/2,時(shí)間差表示為:offset=(T2-T1)-delay,其中,t1表示第三時(shí)間戳信息,t2表示第四時(shí)間戳信息,t3表示第五時(shí)間戳信息,t4表示第六時(shí)間戳信息,T1表示第一時(shí)間戳信息,T2表示第二時(shí)間戳信息,delay表示鏈路延時(shí),offset表示時(shí)間差。
設(shè)備根據(jù)預(yù)設(shè)時(shí)長內(nèi)第一次獲得的第三時(shí)間戳信息、第一次獲得的第四時(shí)間戳信息、最后一次獲得的第三時(shí)間戳信息以及最后一次獲得的第四時(shí)間戳信息確定頻偏校正量,其中,頻偏校正量表示為:f=(tm2-t12)-(tm1-t11),其中,tm1表示最后一次獲得的第三時(shí)間戳信息,tm2表示最后一次獲得的第四時(shí)間戳信息,t11表示第一次獲得的第三時(shí)間戳信息,t12表示第一次獲得的第四時(shí)間戳信息。
本發(fā)明實(shí)施例中,PTP的公共報(bào)文頭的結(jié)構(gòu)如表1所示,其中,每個(gè)報(bào)文類型維護(hù)一個(gè)單獨(dú)的Sequence ID池,PTP端口在接收到具有相同Sequence ID的相同類型的多個(gè)報(bào)文時(shí),只選擇其中的一個(gè)報(bào)文進(jìn)行處理。flagField字段的twoStepFlag指示報(bào)文從雙步時(shí)鐘發(fā)送或從單步時(shí)鐘發(fā)送。具體地,事件報(bào)文Sync和Pdelay_Resp的flagField字段的twoStepFlag,若取值為FALSE則指示為單步時(shí)鐘,從事件報(bào)文獲取時(shí)間戳信息;若取值為TRUE,則指示為雙步時(shí)鐘,從事件報(bào)文及該事件報(bào)文后續(xù)的跟隨報(bào)文獲取時(shí)間戳信息。
表1公共報(bào)文頭
以下通過幾個(gè)具體實(shí)施例對(duì)PTP端口進(jìn)行時(shí)鐘同步的過程進(jìn)行詳細(xì)說明。
第一具體實(shí)施例,如圖2所示為時(shí)鐘同步系統(tǒng)的架構(gòu)示意圖,該系統(tǒng)主要包括設(shè)備和外部網(wǎng)絡(luò),其中設(shè)備包括至少一個(gè)PTP端口201、全局?jǐn)?shù)據(jù)集模塊202和本地時(shí)鐘模塊203。
其中,全局?jǐn)?shù)據(jù)集模塊202為至少一個(gè)PTP端口共享,包括IEEE1588v2規(guī)定的缺省時(shí)鐘數(shù)據(jù)集、當(dāng)前時(shí)鐘數(shù)據(jù)集、父時(shí)鐘數(shù)據(jù)集等參數(shù)。
其中,本地時(shí)鐘模塊203主要用于從與上游設(shè)備連接的PTP端口獲取上游設(shè)備的時(shí)鐘信息,并根據(jù)該上游設(shè)備的時(shí)鐘信息,將該設(shè)備與從上游設(shè)備選舉出的最優(yōu)主時(shí)鐘(或稱為父時(shí)鐘)進(jìn)行時(shí)鐘同步;和/或,將該設(shè)備的時(shí)鐘信息傳遞到該設(shè)備中與下游設(shè)備連接的PTP端口。
具體地,如圖3所示,本地時(shí)鐘模塊包括最優(yōu)主時(shí)鐘模塊301、時(shí)間戳模塊302、對(duì)時(shí)模塊303以及時(shí)鐘校準(zhǔn)模塊304。
其中,最優(yōu)主時(shí)鐘模塊301用于根據(jù)IEEE1588v2規(guī)定的最優(yōu)主時(shí)鐘算法選舉PTP域中最優(yōu)主時(shí)鐘,且按照最優(yōu)主時(shí)鐘算法分配設(shè)備的各PTP端口的時(shí)鐘狀態(tài),以及判斷參與時(shí)鐘同步的PTP端口是否手工配置了時(shí)鐘步數(shù),即從全局?jǐn)?shù)據(jù)集模塊202中獲取PTP端口的時(shí)鐘步數(shù)的配置信息,該配置信息為已經(jīng)配置為單步端口或者已經(jīng)配置為雙步端口或者未配置,記錄該配置信息并將該配置信息通知給時(shí)間戳模塊302;
時(shí)間戳模塊302用于根據(jù)最優(yōu)主時(shí)鐘模塊301分配的參與時(shí)鐘同步的PTP端口的時(shí)鐘狀態(tài)和記錄的時(shí)鐘步數(shù),從全局?jǐn)?shù)據(jù)集模塊202中獲取PTP端口的鏈路延時(shí)機(jī)制,針對(duì)參與時(shí)鐘同步的PTP端口發(fā)送的事件報(bào)文和接收的事件報(bào)文進(jìn)行時(shí)間戳標(biāo)記或獲取,具體處理過程分為以下幾種:
方式1,當(dāng)PTP端口的時(shí)鐘狀態(tài)為從時(shí)鐘(Slave)或僅做從時(shí)鐘(Slave-only),且該P(yáng)TP端口被配置為單步端口或未配置時(shí)鐘步數(shù)時(shí),時(shí)間戳模塊302獲取該P(yáng)TP端口從上游設(shè)備的PTP端口接收的事件報(bào)文Sync和/或Pdelay_Resp,該上游設(shè)備的PTP端口的時(shí)鐘狀態(tài)為主時(shí)鐘(Master),提取該報(bào)文中的twoStepFlag字段,從而判斷該上游設(shè)備的PTP端口的主時(shí)鐘是單步時(shí)鐘還是雙步時(shí)鐘,根據(jù)判斷結(jié)果設(shè)定標(biāo)記或獲取時(shí)間戳的方式。
具體地,若twoStepFlag字段取值為False,則只從事件報(bào)文中獲取時(shí)間戳信息;若twoStepFlag字段取值為True,則從事件報(bào)文及該事件報(bào)文后續(xù)的跟隨報(bào)文中獲取時(shí)間戳信息。
具體地,若收到的為兩路具有相同的序列標(biāo)識(shí)(Sequence ID)的事件報(bào)文,則僅處理twoStepFlag字段為FALSE的事件報(bào)文,忽略另一路具有相同Sequence ID的事件報(bào)文及該事件報(bào)文后續(xù)的跟隨報(bào)文。
具體地,若鏈路延時(shí)機(jī)制為延時(shí)請(qǐng)求-響應(yīng)機(jī)制,針對(duì)每路報(bào)文,記錄Sync報(bào)文發(fā)送的t1時(shí)間戳,Sync報(bào)文接收的t2時(shí)間戳,Delay_req報(bào)文發(fā)送的t3時(shí)間戳,Delay_req報(bào)文接收的t4時(shí)間戳。若鏈路延時(shí)機(jī)制為對(duì)等延時(shí)機(jī)制,針對(duì)每路報(bào)文,記錄Sync報(bào)文發(fā)送的T1時(shí)間戳,Sync報(bào)文接收的T2時(shí)間戳,Pdelay_req報(bào)文發(fā)送的t1時(shí)間戳,Pdelay_req報(bào)文接收的t2時(shí)間戳,Pdelay_resp報(bào)文發(fā)送的t3時(shí)間戳,Pdelay_resp報(bào)文接收的t4時(shí)間戳。
方式2,當(dāng)PTP端口的時(shí)鐘狀態(tài)為Slave或Slave-only,且該P(yáng)TP端口被配置為雙步端口時(shí),時(shí)間戳模塊302從事件報(bào)文以及該事件報(bào)文后續(xù)的跟隨報(bào)文中獲取時(shí)間戳信息。具體地,若鏈路延時(shí)機(jī)制為延時(shí)請(qǐng)求-響應(yīng)機(jī)制,針對(duì)每路報(bào)文,記錄Sync報(bào)文發(fā)送的t1時(shí)間戳,Sync報(bào)文接收的t2時(shí)間戳,Delay_req報(bào)文發(fā)送的t3時(shí)間戳,Delay_req報(bào)文接收的t4時(shí)間戳。若鏈路延時(shí)機(jī)制為對(duì)等延時(shí)機(jī)制,針對(duì)每路報(bào)文,記錄Sync報(bào)文發(fā)送的T1時(shí)間戳,Sync報(bào)文接收的T2時(shí)間戳,Pdelay_req報(bào)文發(fā)送的t1時(shí)間戳,Pdelay_req報(bào)文接收的t2時(shí)間戳,Pdelay_resp報(bào)文發(fā)送的t3時(shí)間戳,Pdelay_resp報(bào)文接收的t4時(shí)間戳。
方式3,當(dāng)PTP端口的時(shí)鐘狀態(tài)為主時(shí)鐘(Master)且被配置為單步端口時(shí),時(shí)間戳模塊302僅發(fā)送并回復(fù)事件報(bào)文以進(jìn)行時(shí)間戳標(biāo)記。具體地,若鏈路延時(shí)機(jī)制為延時(shí)請(qǐng)求-響應(yīng)機(jī)制,針對(duì)每路報(bào)文,標(biāo)記Sync報(bào)文發(fā)送的t1時(shí)間戳以及標(biāo)記Delay_req報(bào)文接收的t4時(shí)間戳。若鏈路延時(shí)機(jī)制為對(duì)等延時(shí)機(jī)制,標(biāo)記Sync報(bào)文發(fā)送的T1時(shí)間戳、Pdelay_req報(bào)文接收的t2時(shí)間戳以及Pdelay_resp報(bào)文發(fā)送的t3時(shí)間戳。
方式4,當(dāng)PTP端口的時(shí)鐘狀態(tài)為Master且未配置時(shí)鐘步數(shù)時(shí),若設(shè)備執(zhí)行的延遲機(jī)制為延遲請(qǐng)求-響應(yīng)機(jī)制,時(shí)間戳模塊302先后發(fā)出兩路具有相同的Sequence ID的Sync事件報(bào)文,一路為只發(fā)送/回復(fù)事件報(bào)文,即事件報(bào)文Sync中的twoStepFlag字段設(shè)置為FALSE,同時(shí)事件報(bào)文Sync自身攜帶發(fā)送時(shí)間戳,另一路為發(fā)送/回復(fù)事件報(bào)文及該事件報(bào)文后續(xù)的跟隨報(bào)文,即事件報(bào)文Sync中的twoStepFlag字段設(shè)置為TRUE,同時(shí)其后續(xù)跟隨報(bào)文攜帶事件報(bào)文Sync的發(fā)送時(shí)間戳。
進(jìn)一步地,若鏈路延時(shí)機(jī)制為對(duì)等延時(shí)機(jī)制,時(shí)間戳模塊302先后發(fā)出兩路具有相同Sequence ID的Sync事件報(bào)文和兩路具有相同Sequence ID的Pdelay_resp事件報(bào)文。具體地,一路為:只發(fā)送/回復(fù)事件報(bào)文,即事件報(bào)文Sync和/或Pdelay_resp中的twoStepFlag字段設(shè)置為FALSE,同時(shí)事件報(bào)文Sync和/或Pdelay_resp自身攜帶發(fā)送時(shí)間戳;另一路為:發(fā)送/回復(fù)事件報(bào)文及該事件報(bào)文后續(xù)的跟隨報(bào)文,即事件報(bào)文Sync和/或Pdelay_resp中的twoStepFlag字段設(shè)置為TRUE,同時(shí)該事件報(bào)文后續(xù)的跟隨報(bào)文攜帶事件報(bào)文Sync和/或Pdelay_resp的發(fā)送時(shí)間戳。具體地,若鏈路延時(shí)機(jī)制為延時(shí)請(qǐng)求-響應(yīng)機(jī)制,時(shí)間戳模塊302標(biāo)記每組Sync報(bào)文發(fā)送的t1時(shí)間戳,和Delay_req報(bào)文接收的t4時(shí)間戳,若鏈路延時(shí)機(jī)制為對(duì)等延時(shí)機(jī)制時(shí),時(shí)間戳模塊標(biāo)記每組Sync報(bào)文發(fā)送的T1時(shí)間戳,和Pdelay_req報(bào)文接收的t2時(shí)間戳以及Pdelay_resp報(bào)文發(fā)送的t3時(shí)間戳。
方式5,當(dāng)所述PTP端口的時(shí)鐘狀態(tài)為主時(shí)鐘且被配置為雙步端口時(shí),時(shí)間戳模塊302發(fā)送并回復(fù)事件報(bào)文及該事件報(bào)文后續(xù)的跟隨報(bào)文,從而進(jìn)行時(shí)間戳標(biāo)記。具體地,若鏈路延時(shí)機(jī)制為延時(shí)請(qǐng)求-響應(yīng)機(jī)制時(shí),標(biāo)記每組Sync報(bào)文發(fā)送的t1時(shí)間戳,和Delay_req報(bào)文接收的t4時(shí)間戳;若鏈路延時(shí)機(jī)制為對(duì)等延時(shí)機(jī)制時(shí),標(biāo)記每組Sync報(bào)文發(fā)送的T1時(shí)間戳,和Pdelay_req報(bào)文接收的t2時(shí)間戳以及Pdelay_resp報(bào)文發(fā)送的t3時(shí)間戳。
對(duì)時(shí)模塊303用于根據(jù)時(shí)間戳模塊302標(biāo)記的時(shí)間戳,計(jì)算并實(shí)時(shí)記錄鏈路延時(shí)時(shí)間delay、時(shí)間差offset以及頻偏校正量f。
時(shí)鐘校準(zhǔn)模塊304用于計(jì)算對(duì)時(shí)模塊303記錄的時(shí)間差offset與時(shí)鐘校準(zhǔn)模塊304中上一次計(jì)算得到的平均時(shí)間差F的平均值,并且根據(jù)該平均值以及頻偏校正量f進(jìn)行時(shí)間差校正,以該校正后的時(shí)間差CorF進(jìn)行時(shí)鐘同步更新本地時(shí)鐘。其中,平均時(shí)間差的初始值為首次計(jì)算得到的時(shí)間差offset。
參與時(shí)鐘同步的PTP端口,可以通過命令行手工配置為單步端口或雙步端口。
情況1,若PTP端口通過命令行手工配置為單步端口,則可以用于接收外部單步時(shí)鐘的事件報(bào)文進(jìn)而獲取時(shí)鐘信息并進(jìn)行時(shí)鐘同步,或者用于接收外部雙步時(shí)鐘的事件報(bào)文及其后續(xù)跟隨報(bào)文進(jìn)而獲取時(shí)鐘信息并進(jìn)行時(shí)鐘同步。具體地,若該P(yáng)TP端口收到時(shí)鐘狀態(tài)為主時(shí)鐘的PTP端口先后發(fā)出的具有相同Sequence ID的事件報(bào)文時(shí),則只處理twoStepFlag字段設(shè)置為FALSE的事件報(bào)文,從該事件報(bào)文中獲取時(shí)間戳信息,并且忽略另一路具有相同Sequence ID的事件報(bào)文及該事件報(bào)文后續(xù)的跟隨報(bào)文。和/或,從本地時(shí)鐘模塊203獲取時(shí)鐘信息向下一級(jí)單步時(shí)鐘系統(tǒng)傳遞時(shí)鐘信息,即向每一個(gè)外部單步時(shí)鐘發(fā)送并回復(fù)單步事件報(bào)文使其進(jìn)行時(shí)鐘同步。
情況2,若PTP端口通過命令行手工配置為雙步端口,則按照IEEE1588v2的規(guī)定可以用于接收外部雙步時(shí)鐘的雙步事件報(bào)文及其后續(xù)跟隨報(bào)文獲取時(shí)鐘信息并進(jìn)行時(shí)鐘同步。和/或,從本地時(shí)鐘模塊203獲取時(shí)鐘信息,向下一級(jí)雙步時(shí)鐘系統(tǒng)傳遞時(shí)鐘信息,即向每一個(gè)外部雙步時(shí)鐘發(fā)送并回復(fù)雙步事件報(bào)文及其后續(xù)跟隨報(bào)文使其進(jìn)行時(shí)鐘同步。
情況3,若PTP端口未配置時(shí)鐘步數(shù),通過最優(yōu)主時(shí)鐘模塊301和時(shí)間戳模塊302自動(dòng)設(shè)置標(biāo)記/獲取時(shí)間戳信息的方式。若最優(yōu)主時(shí)鐘模塊301選舉的PTP端口的端口時(shí)鐘狀態(tài)為從時(shí)鐘(Slave)或只做從時(shí)鐘(Slave-only),且沒有配置時(shí)鐘步數(shù)時(shí),則時(shí)間戳模塊302從接收的事件報(bào)文Sync和/或Pdelay_Resp中提取報(bào)文中的twoStepFlag字段,若twoStepFlag字段為FALSE,則只從事件報(bào)文獲取時(shí)間戳信息;若twoStepFlag字段為TRUE,則從事件報(bào)文及其后續(xù)跟隨報(bào)文獲取時(shí)間戳信息。進(jìn)一步地,若該P(yáng)TP端口的時(shí)鐘狀態(tài)為從時(shí)鐘(Slave)或只做從時(shí)鐘(Slave-only),收到時(shí)鐘狀態(tài)為主時(shí)鐘(Master)的PTP端口發(fā)出的兩路具有相同Sequence ID的事件報(bào)文,則只處理twoStepFlag字段設(shè)置為FALSE的事件報(bào)文,從該事件報(bào)文中獲取時(shí)間戳信息。
若最優(yōu)主時(shí)鐘模塊301選舉的PTP端口的時(shí)鐘狀態(tài)為主時(shí)鐘(Master),則時(shí)間戳模塊302同時(shí)發(fā)出兩路具有相同sequenceId的事件報(bào)文,一路事件報(bào)文Sync和/或Pdelay_Resp中的twoStepFlag字段設(shè)置為FALSE,同時(shí)該事件報(bào)文自身攜帶發(fā)送時(shí)間戳;另一路事件報(bào)文Sync和/或Pdelay_Resp中的twoStepFlag字段設(shè)置為TRUE,且該事件報(bào)文后續(xù)的跟隨報(bào)文攜帶該事件報(bào)文Sync和/或Pdelay_Resp的發(fā)送時(shí)間戳。
進(jìn)一步地,與該P(yáng)TP端口對(duì)接的作為從(Slave)時(shí)鐘的PTP設(shè)備,只處理twoStepFlag字段設(shè)置為FALSE的事件報(bào)文,忽略另一路具有相同sequenceId的事件報(bào)文及該事件報(bào)文后續(xù)的跟隨報(bào)文。或者,與該P(yáng)TP端口對(duì)接的作為從時(shí)鐘的PTP設(shè)備,按照IEEE1588v2中的規(guī)定只處理需要的報(bào)文而忽略另一路具有相同sequenceId的事件報(bào)文,即若對(duì)接的為單步時(shí)鐘,則只處理twoStepFlag字段設(shè)置為FALSE的事件報(bào)文,若對(duì)接的為雙步時(shí)鐘,則只處理twoStepFlag字段設(shè)置為TRUE的事件報(bào)文及該事件報(bào)文后續(xù)的跟隨報(bào)文。
該具體實(shí)施例中,時(shí)間戳模塊302記錄每組時(shí)間戳,主、從時(shí)鐘之間每完成一組同步報(bào)文的交互過程所獲得的時(shí)間戳稱為一組時(shí)間戳。若鏈路延時(shí)機(jī)制為延時(shí)請(qǐng)求-響應(yīng)機(jī)制時(shí),時(shí)間戳模塊302記錄Sync報(bào)文發(fā)送的t1時(shí)間戳,Sync報(bào)文接收的t2時(shí)間戳,Delay_req報(bào)文發(fā)送的t3時(shí)間戳,Delay_req報(bào)文接收的t4時(shí)間戳,如第一組時(shí)間戳為t11、t12、t13、t14,第二組時(shí)間戳為t21、t22、t23、t24,……,以此類推,第n組時(shí)間戳為tn1、tn2、tn3、tn4,其中n為大于等于1的整數(shù)。若鏈路延時(shí)機(jī)制為對(duì)等延時(shí)機(jī)制時(shí),時(shí)間戳模塊302記錄每組Sync報(bào)文發(fā)送的T1時(shí)間戳,Sync報(bào)文接收的T2時(shí)間戳,Pdelay_req報(bào)文發(fā)送的t1時(shí)間戳,Pdelay_req報(bào)文接收的t2時(shí)間戳,Pdelay_resp報(bào)文發(fā)送的t3時(shí)間戳,Pdelay_resp報(bào)文接收的t4時(shí)間戳,如第一組時(shí)間戳為T11、T12、t11、t12、t13、t14,第二組時(shí)間戳為T21、T22、t21、t22、t23、t24,…,以此類推,第n組時(shí)間戳為Tn1、Tn2、tn1、tn2、tn3、tn4,其中n為大于或等于1的整數(shù)。
該具體實(shí)施例中,對(duì)時(shí)模塊303根據(jù)時(shí)間戳模塊302記錄的每組時(shí)間戳按照1588v2規(guī)定的鏈路延時(shí)方法計(jì)算并記錄每組鏈路延時(shí)delay和時(shí)間差offset以及頻偏校正量f,其計(jì)算公式如下:
A、當(dāng)鏈路延時(shí)機(jī)制為延時(shí)請(qǐng)求-響應(yīng)機(jī)制時(shí),鏈路延時(shí)delay=((t2-t1)-(t3-t4))/2,時(shí)間差offset=(t2-t1)-delay,即:
第一組鏈路延時(shí)delay1=((t12-t11)-(t13-t14))/2,時(shí)間差offset1=(t12-t11)-delay1;
第二組鏈路延時(shí)delay2=((t22-t21)-(t23-t24))/2,時(shí)間差offset2=(t22-t21)-delay2;以此類推,
第n組鏈路延時(shí)delayn=((tn2-tn1)-(tn3-tn4))/2,時(shí)間差offsetn=(tn2-tn1)-delayn。
B、當(dāng)鏈路延時(shí)機(jī)制為對(duì)等延時(shí)機(jī)制時(shí),鏈路延時(shí)delay=((t2-t1)-(t3-t4))/2,時(shí)間差offset=(T2-T1)-delay,即:
第一組鏈路延時(shí)delay1=((t12-t11)-(t13-t14))/2,時(shí)間差offset1=(T12-T11)-delay1;
第二組鏈路延時(shí)delay2=((t22-t21)-(t23-t24))/2,時(shí)間差offset2=(T22-T21)-delay2;以此類推,
第n組鏈路延時(shí)delayn=((tn2-tn1)-(tn3-tn4))/2,時(shí)間差offsetn=(Tn2-Tn1)-delayn。
頻偏校正量f為預(yù)定時(shí)間T內(nèi)主時(shí)鐘實(shí)際所運(yùn)行的時(shí)間與從時(shí)鐘實(shí)際所運(yùn)行的時(shí)間之差,即f=(tm2-t12)-(tm1-t11),其中m為大于1的整數(shù),t11、t12為預(yù)定時(shí)間T內(nèi)的第一組sync報(bào)文的發(fā)送和接收的時(shí)間戳,tm1、tm2為預(yù)定時(shí)間T內(nèi)的最后一組sync報(bào)文的發(fā)送和接收的時(shí)間戳,預(yù)定時(shí)間T為人為設(shè)定的時(shí)間,其可以為1秒(s)、2s、3s、4s、5s等不同的整數(shù)時(shí)間,可以連續(xù)的取值,也可以非連續(xù)取值。
當(dāng)f=0時(shí),則表示從時(shí)鐘與主時(shí)鐘頻率同步;
當(dāng)f>0時(shí),則表示從時(shí)鐘比主時(shí)鐘頻率快;
當(dāng)f<0時(shí),則表示從時(shí)鐘比主時(shí)鐘頻率慢。
優(yōu)選地,當(dāng)f=0后,可以不再計(jì)算頻偏校正量,已經(jīng)表示從時(shí)鐘與主時(shí)鐘頻率同步。
更為優(yōu)選地,當(dāng)f=0后,可以間隔連續(xù)多個(gè)預(yù)定時(shí)間T后再次計(jì)算f是否為0,以監(jiān)測(cè)從時(shí)鐘與主時(shí)鐘是否頻率同步。
該具體實(shí)施例中,時(shí)鐘校準(zhǔn)模塊304進(jìn)行時(shí)間差校正,以該校正后的時(shí)間差CorF進(jìn)行時(shí)鐘同步更新本地時(shí)鐘,具體計(jì)算方法如下:
第一組時(shí)間差F1=offset1,校正后的第一組時(shí)間差CorF1=F1-f1;
第二組時(shí)間差F2=(F1+offset2)/2,校正后的第二組時(shí)間差CorF2=F2-f2;
第三組時(shí)間差F3=(F2+offset3)/2,校正后的第三組時(shí)間差CorFn=F3-f3;
以此類推,第n組時(shí)間差Fn=(F(n-1)+offsetn)/2,校正后的第n組時(shí)間差CorFn=Fn-fn。
其中,f為在取offset時(shí)對(duì)時(shí)模塊給出的最近的頻偏校正量,f1為在取offset1時(shí)該對(duì)時(shí)模塊給出的最近的頻偏校正量,f2為在取offset2時(shí)該對(duì)時(shí)模塊給出的最近的頻偏校正量,以此類推,fn為在取offsetn時(shí)該對(duì)時(shí)模塊給出的最近的頻偏校正量。
優(yōu)選地,可以設(shè)定理想的時(shí)間差閾值Num,當(dāng)offsetn=Num時(shí),可以不再對(duì)時(shí)間差offsetn進(jìn)行校正,直接以該offsetn進(jìn)行時(shí)鐘同步更新本地時(shí)鐘。應(yīng)用中,理想的時(shí)間差閾值Num可以通過多次試驗(yàn)得到。
第二具體實(shí)施例中,如圖4所示,若設(shè)備402對(duì)接的上游設(shè)備401的PTP端口被配置為雙步端口,且執(zhí)行對(duì)等延時(shí)機(jī)制,且該設(shè)備402的PTP端口被配置為單步端口,也執(zhí)行對(duì)等延時(shí)機(jī)制,則時(shí)鐘同步的流程是:
(a)上游設(shè)備401經(jīng)過最優(yōu)主時(shí)鐘算法,選舉出上游設(shè)備401的PTP端口為時(shí)鐘狀態(tài)為Master,且設(shè)備402經(jīng)過最優(yōu)主時(shí)鐘算法,選舉出設(shè)備402的PTP端口的時(shí)鐘狀態(tài)為Slave態(tài)。
(b)上游設(shè)備401先后向設(shè)備402發(fā)送事件報(bào)文Sync報(bào)文和跟隨報(bào)文Follow_Up報(bào)文,設(shè)備402在接收到Sync報(bào)文時(shí),會(huì)提取Sync報(bào)文中的twoStepFlag字段,若該字段的取值為TRUE,則從Sync報(bào)文后續(xù)的跟隨報(bào)文Follow_Up報(bào)文中獲取Sync報(bào)文的發(fā)送時(shí)間戳信息T1,同時(shí)記錄接收Sync報(bào)文的時(shí)間戳信息T2。
設(shè)備402向上游設(shè)備401發(fā)出Pdelay_req報(bào)文,并記錄Pdelay_req報(bào)文的發(fā)送時(shí)間戳t1。
上游設(shè)備401在接收到Pdelay_req報(bào)文時(shí),記錄接收時(shí)間戳信息t2,并先后回復(fù)Pdelay_resp報(bào)文和Pdelay_resp_Follow_Up報(bào)文,其中,Pdelay_resp報(bào)文的發(fā)送時(shí)間戳信息t3和Pdelay_req報(bào)文的接收時(shí)間戳信息t2記錄在Pdelay_resp_Follow_Up報(bào)文中。
設(shè)備402在接收Pdelay_resp報(bào)文并提取Pdelay_resp報(bào)文中的twoStepFlag字段,若該字段取值為TRUE,則從Pdelay_resp報(bào)文后續(xù)的跟隨報(bào)文Pdelay_resp_Follow_Up報(bào)文中獲取時(shí)間t2和t3,并記錄接收Pdelay_resp報(bào)文的時(shí)間t4,以此類推,獲取每組報(bào)文的時(shí)間戳信息。
(c)設(shè)備402記錄每組Sync報(bào)文發(fā)送的時(shí)間戳T1,Sync報(bào)文接收的時(shí)間戳T2,Pdelay_req報(bào)文發(fā)送的時(shí)間戳t1,Pdelay_req報(bào)文接收的時(shí)間戳t2,Pdelay_resp報(bào)文發(fā)送的時(shí)間戳t3,Pdelay_resp報(bào)文接收的時(shí)間戳t4。例如,第一組時(shí)間戳為T11、T12、t11、t12、t13、t14,第二組時(shí)間戳為T21、T22、t21、t22、t23、t24,以此類推,第n組時(shí)間戳為Tn1、Tn2、tn1、tn2、tn3、tn4,其中n為大于或等于1的整數(shù)。
(d)設(shè)備402計(jì)算鏈路延時(shí)、時(shí)間差以及頻偏校正量,即:第一組鏈路延時(shí)delay1=((t12-t11)-(t13-t14))/2,時(shí)間差offset1=(T12-T11)-delay1,第二組鏈路延時(shí)delay2=((t22-t21)-(t23-t24))/2,時(shí)間差offset2=(T22-T21)-delay2,……,以此類推,第n組鏈路延時(shí)delayn=((tn2-tn1)-(tn3-tn4))/2,時(shí)間差offsetn=(Tn2-Tn1)-delayn;頻偏校正量f=(tm2-t12)-(tm1-t11)。
(e)設(shè)備402計(jì)算時(shí)間差offset與上一次計(jì)算得到的時(shí)間差平均值F的平均值,并且采用該平均值以及頻偏校正量f進(jìn)行時(shí)間差校正,以該校正后的時(shí)間差CorF進(jìn)行時(shí)鐘同步更新本地時(shí)鐘。
即:計(jì)算第一組時(shí)間差F1=offset1,校正后的第一組時(shí)間差CorF1=F1-f1,此時(shí)設(shè)備以CorF1進(jìn)行對(duì)時(shí)并更新本地時(shí)鐘;計(jì)算第二組時(shí)間差F2=(F1+offset2)/2,校正后的第二組時(shí)間差CorF2=F2-f2,此時(shí)設(shè)備402以CorF2進(jìn)行對(duì)時(shí)并更新本地時(shí)鐘;計(jì)算第三組時(shí)間差F3=(F2+offset3)/2,校正后的第二組時(shí)間差CorFn=F3-f3,此時(shí)設(shè)備402以CorF3進(jìn)行對(duì)時(shí)更新本地時(shí)鐘;以此類推,計(jì)算第n組時(shí)間差Fn=(F(n-1)+offsetn)/2,校正后的第n組時(shí)間差CorFn=Fn-fn,此時(shí)設(shè)備402以CorFn進(jìn)行對(duì)時(shí)并更新本地時(shí)鐘。
其中,f為在取offset時(shí)所計(jì)算出的最近的值,f1為在取offset1時(shí)計(jì)算出的最近的值,f2為在取offset2時(shí)計(jì)算出的最近的值,以此類推,fn為在取offsetn時(shí)計(jì)算出的最近的值。
第三具體實(shí)施例,如圖5所示,設(shè)備502對(duì)接的上游設(shè)備501的PTP端口被配置為雙步端口,執(zhí)行延時(shí)請(qǐng)求-響應(yīng)機(jī)制。下游設(shè)備503為本文背景技術(shù)部分所提及的僅采用雙步時(shí)鐘或僅采用單步時(shí)鐘進(jìn)行同步的PTP設(shè)備,設(shè)備502對(duì)接的下游設(shè)備503的PTP端口被配置為單步端口,執(zhí)行延時(shí)請(qǐng)求-響應(yīng)機(jī)制。設(shè)備502執(zhí)行延時(shí)請(qǐng)求-響應(yīng)機(jī)制,且沒有進(jìn)行時(shí)鐘步數(shù)的配置。時(shí)鐘同步的過程如下:
(a)首先,上游設(shè)備501根據(jù)最優(yōu)主時(shí)鐘算法選舉出上游設(shè)備501的PTP端口的端口時(shí)鐘狀態(tài)為Master;設(shè)備502根據(jù)最優(yōu)主時(shí)鐘算法選舉出設(shè)備502的PTP端口1的時(shí)鐘狀態(tài)為Slave,PTP端口2的時(shí)鐘狀態(tài)為Master;下游設(shè)備503根據(jù)最優(yōu)主時(shí)鐘算法選舉出下游設(shè)備503的PTP端口的時(shí)鐘狀態(tài)為Slave。
(b)上游設(shè)備501向設(shè)備502先后發(fā)出事件報(bào)文Sync報(bào)文和跟隨報(bào)文Follow_Up報(bào)文。
設(shè)備502的PTP端口1接收Sync報(bào)文并提取Sync報(bào)文中的twoStepFlag字段,若該字段的取值為TRUE,則從Sync報(bào)文后續(xù)的跟隨報(bào)文Follow_Up中獲取Sync報(bào)文的發(fā)送時(shí)間戳信息t1,同時(shí)記錄接收Sync報(bào)文的時(shí)間戳信息t2。
設(shè)備502向上游設(shè)備501發(fā)出Delay_req報(bào)文,并記錄Delay_req報(bào)文的發(fā)送時(shí)間戳t3。
上游設(shè)備501接收Delay_req報(bào)文并記錄Delay_req報(bào)文的接收時(shí)間戳信息t4,回復(fù)Delay_resp報(bào)文,并將接收Delay_req的時(shí)間戳信息t4返回給設(shè)備502的PTP端口1。
設(shè)備502通過PTP端口1收到Delay_resp報(bào)文并獲取時(shí)間戳信息t4,此時(shí)PTP端口1已獲得四個(gè)時(shí)間戳信息,分別為t1、t2、t3、t4,然后計(jì)算鏈路延時(shí)delay=((t2-t1)-(t3-t4))/2、時(shí)間差offset=(t2-t1)-delay以及頻偏校正量f,根據(jù)時(shí)間差以及頻偏校正量進(jìn)行時(shí)鐘同步并更新本地時(shí)鐘,以此類推,反復(fù)執(zhí)行該更新本地時(shí)鐘的過程,從而實(shí)現(xiàn)本地時(shí)鐘的實(shí)時(shí)同步及更新。
設(shè)備502的PTP端口2的時(shí)鐘狀態(tài)為Master,設(shè)備502獲取本地時(shí)鐘信息,通過PTP端口2將本地時(shí)鐘信息通過事件報(bào)文告知給下游設(shè)備503,若PTP端口2沒有配置時(shí)鐘步數(shù),會(huì)同時(shí)發(fā)出兩路相同的Sequence ID的Sync報(bào)文,其中一路Sync報(bào)文攜帶該Sync報(bào)文的發(fā)送時(shí)間戳信息t1,且該Sync報(bào)文的twoStepFlag字段設(shè)置為FALSE,而另一路Sync報(bào)文的twoStepFlag字段設(shè)置為TRUE,同時(shí)發(fā)出Follow_Up報(bào)文,F(xiàn)ollow_Up報(bào)文攜帶Sync報(bào)文的發(fā)送時(shí)間戳t1。
若下游設(shè)備503的PTP端口被設(shè)置為單步端口,則只從twoStepFlag字段設(shè)置為FALSE的Sync報(bào)文中獲取時(shí)間戳t1,并記錄接收Sync報(bào)文的時(shí)間戳信息t2,而忽略具有相同Sequence ID的另一路Sync報(bào)文和Follow_Up報(bào)文。
下游設(shè)備503向設(shè)備502發(fā)出Delay_req報(bào)文,并記錄Delay_req報(bào)文的發(fā)送時(shí)間戳t3。
設(shè)備502通過PTP端口2接收Delay_req報(bào)文,并記錄Delay_req報(bào)文接收的時(shí)間戳信息t4,同時(shí)回復(fù)Delay_resp報(bào)文,并將接收Delay_req報(bào)文的時(shí)間戳信息t4返回給下游設(shè)備503。
下游設(shè)備503收到Delay_resp報(bào)文,并從Delay_resp報(bào)文中獲取時(shí)間戳信息t4。這樣下游設(shè)備503獲得四個(gè)時(shí)間戳信息t1、t2、t3、t4,計(jì)算鏈路延時(shí)delay=((t2-t1)-(t3-t4))/2和時(shí)間差offset=(t2-t1)-delay,以offset實(shí)時(shí)進(jìn)行時(shí)鐘同步更新本地時(shí)鐘,從而本地時(shí)鐘的實(shí)時(shí)時(shí)鐘同步及更新。
下游設(shè)備503可以以校正后的時(shí)間差CorF進(jìn)行時(shí)鐘同步更新本地時(shí)鐘,從而進(jìn)一步更精確的進(jìn)行時(shí)鐘同步。
進(jìn)一步地,若下游設(shè)備503為本發(fā)明實(shí)施例所提供的PTP設(shè)備,且下游設(shè)備503與該設(shè)備502對(duì)接的PTP端口被配置為單步端口或沒有配置時(shí)鐘步數(shù),則只處理設(shè)備502的PTP端口2發(fā)出的twoStepFlag字段為FALSE的Sync報(bào)文,而忽略具有相同Sequence ID且twoStepFlag字段為TRUE的Sync報(bào)文及該報(bào)文后續(xù)的跟隨報(bào)文。
第四具體實(shí)施例,如圖6所示,時(shí)鐘狀態(tài)為slave且執(zhí)行延時(shí)請(qǐng)求-響應(yīng)機(jī)制的PTP端口進(jìn)行時(shí)鐘同步的方法流程如下:
步驟601:判斷PTP端口的時(shí)鐘狀態(tài),若時(shí)鐘狀態(tài)不是master、slave、slave-only中的任何一種,則不進(jìn)行時(shí)鐘同步,若時(shí)鐘狀態(tài)為master,則執(zhí)行主時(shí)鐘對(duì)應(yīng)的處理方式,若時(shí)鐘狀態(tài)為slave,則執(zhí)行步驟602;
步驟602:判斷PTP端口是否配置有時(shí)鐘步數(shù),若有,執(zhí)行步驟603,否則執(zhí)行步驟604;
步驟603:判斷PTP端口配置的時(shí)鐘步數(shù)是單步還是雙步,若是單步,執(zhí)行步驟604;若為雙步,執(zhí)行步驟605;
步驟604:獲取Sync事件報(bào)文twoStepFlag字段,判斷該字段的取值是FALSE還是TRUE,若為TRUE執(zhí)行步驟605,若為FALSE,從Sync事件報(bào)文中獲取發(fā)送Sync事件報(bào)文的時(shí)間戳t1后,執(zhí)行步驟606;
步驟605:從Sync事件報(bào)文的跟隨報(bào)文(Follow_Up報(bào)文)中獲取發(fā)送Sync事件報(bào)文的時(shí)間戳t1;
步驟606:記錄發(fā)送Sync事件報(bào)文的時(shí)間戳t1,接收Sync事件報(bào)文的時(shí)間戳t2,發(fā)送Delay_req事件報(bào)文的時(shí)間戳t3,接收Delay_req事件報(bào)文的時(shí)間戳t4;
步驟607:根據(jù)t1、t2、t3和t4,計(jì)算鏈路延時(shí)、時(shí)間差和頻偏校正量;
步驟608:采用頻偏校正量對(duì)時(shí)間差進(jìn)行校正,確定校正后的時(shí)間差;
步驟609:采用校正后的時(shí)間差更新本地時(shí)鐘。
第五具體實(shí)施例,如圖7所示,時(shí)鐘狀態(tài)為slave且執(zhí)行對(duì)等延時(shí)機(jī)制的PTP端口進(jìn)行時(shí)鐘同步的方法流程如下:
步驟701:判斷PTP端口的時(shí)鐘狀態(tài),若時(shí)鐘狀態(tài)不是master、slave、slave-only中的任何一種,則不進(jìn)行時(shí)鐘同步,若時(shí)鐘狀態(tài)為master,則執(zhí)行主時(shí)鐘對(duì)應(yīng)的處理方式,若時(shí)鐘狀態(tài)為slave,則執(zhí)行步驟702;
步驟702:判斷PTP端口是否配置有時(shí)鐘步數(shù),若有,執(zhí)行步驟703,否則執(zhí)行步驟704;
步驟703:判斷PTP端口配置的時(shí)鐘步數(shù)是單步還是雙步,若是單步,執(zhí)行步驟704;若為雙步,執(zhí)行步驟705;
步驟704:獲取Sync事件報(bào)文twoStepFlag字段,判斷該字段的取值是FALSE還是TRUE,若為TRUE執(zhí)行步驟705,若為FALSE,從Sync事件報(bào)文中獲取發(fā)送Sync事件報(bào)文的時(shí)間戳T1后,執(zhí)行步驟706;
步驟705:從Sync事件報(bào)文的跟隨報(bào)文(Follow_Up報(bào)文)中獲取發(fā)送Sync事件報(bào)文的時(shí)間戳T1;
步驟706:記錄發(fā)送Sync事件報(bào)文的時(shí)間戳T1,接收Sync事件報(bào)文的時(shí)間戳T2,發(fā)送Pdelay_req事件報(bào)文的時(shí)間戳t1;
步驟707:獲取Pdelay_resp事件報(bào)文twoStepFlag字段,判斷該字段的取值是FALSE還是TRUE,若為TRUE執(zhí)行步驟708,若為FALSE,從Pdelay_resp事件報(bào)文中獲取接收Pdelay_req事件報(bào)文的時(shí)間戳t2以及發(fā)送Pdelay_resp事件報(bào)文的時(shí)間戳t3后,執(zhí)行步驟709;
步驟708:從Pdelay_resp事件報(bào)文以及跟隨報(bào)文(Pdelay_resp_Follow_Up)中獲取接收Pdelay_req事件報(bào)文的時(shí)間戳t2以及發(fā)送Pdelay_resp事件報(bào)文的時(shí)間戳t3;
步驟709:記錄t2、t3和接收Pdelay_resp事件報(bào)文的時(shí)間戳t4;
步驟:710:計(jì)算鏈路延時(shí)、時(shí)間差和頻偏校正量;
步驟711:計(jì)算校正后的時(shí)間差;
步驟712:根據(jù)校正后的時(shí)間差進(jìn)行本地時(shí)鐘同步。
第六具體實(shí)施例中,如圖8所示,時(shí)鐘狀態(tài)為master且執(zhí)行延時(shí)請(qǐng)求-響應(yīng)機(jī)制的PTP端口進(jìn)行時(shí)鐘同步的方法流程如下:
步驟801:判斷是否配置時(shí)鐘步數(shù),若有執(zhí)行步驟802,否則,執(zhí)行步驟803和步驟804;
步驟802:判斷時(shí)鐘步數(shù)是單步還是雙步,若為單步,執(zhí)行步驟803后執(zhí)行步驟805,若為雙步,執(zhí)行步驟804;
步驟803:發(fā)送Sync事件報(bào)文,并將Sync事件報(bào)文的twoStepFlag字段設(shè)置為FALSE,該Sync事件報(bào)文中攜帶發(fā)送該Sync事件報(bào)文的時(shí)間戳t1;
步驟804:發(fā)送Sync事件報(bào)文和Follow_Up報(bào)文,將Sync事件報(bào)文的twoStepFlag字段設(shè)置為TRUE,在Follow_Up報(bào)文中攜帶發(fā)送該Sync事件報(bào)文的時(shí)間戳t1;
步驟805:記錄接收Delay_req事件報(bào)文的時(shí)間戳t4;
步驟806:發(fā)送Delay_req事件報(bào)文,該Delay_req事件報(bào)文中攜帶時(shí)間戳t4。
第七具體實(shí)施例,如圖9所示,時(shí)鐘狀態(tài)為master且執(zhí)行對(duì)等延時(shí)機(jī)制的PTP端口進(jìn)行時(shí)鐘同步的方法流程如下:
步驟901:判斷是否配置時(shí)鐘步數(shù),若有執(zhí)行步驟902,否則,同時(shí)執(zhí)行步驟903至步驟905的流程以及步驟906至步驟908的流程;
步驟902:判斷時(shí)鐘步數(shù)是單步還是雙步,若為單步,執(zhí)行步驟903至步驟905的流程,若為雙步,執(zhí)行步驟906至步驟908的流程;
其中,步驟903至步驟905的流程如下:
步驟903:只發(fā)送Sync事件報(bào)文,并將Sync事件報(bào)文的twoStepFlag字段設(shè)置為FALSE,該Sync事件報(bào)文中攜帶發(fā)送該Sync事件報(bào)文的時(shí)間戳t1;
步驟904:記錄接收Pdelay_req事件報(bào)文的時(shí)間戳t2;
步驟905:只發(fā)送Pdelay_resp事件報(bào)文,并將Pdelay_resp事件報(bào)文的twoStepFlag字段設(shè)置為FALSE,該P(yáng)delay_resp事件報(bào)文中攜帶t2和發(fā)送Pdelay_resp事件報(bào)文的時(shí)間戳t3;
其中,步驟906至步驟908的流程如下:
步驟906:發(fā)送Sync事件報(bào)文和Follow_Up報(bào)文,并將Sync事件報(bào)文的twoStepFlag字段設(shè)置為TRUE,在Follow_Up報(bào)文中攜帶發(fā)送該Sync事件報(bào)文的時(shí)間戳t1;
步驟907:記錄接收Pdelay_req事件報(bào)文的時(shí)間戳t2;
步驟908:發(fā)送Pdelay_resp事件報(bào)文和Pdelay_resp_Follow_Up報(bào)文,并將Pdelay_resp事件報(bào)文的twoStepFlag字段設(shè)置為TRUE,在Pdelay_resp_Follow_Up報(bào)文中攜帶t2和發(fā)送Pdelay_resp事件報(bào)文的時(shí)間戳t3。
基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例中提供了一種設(shè)備,該設(shè)備的實(shí)施可參見上述方法實(shí)施例部分的描述,重復(fù)之處不再贅述,如圖10所示,該設(shè)備主要包括:
第一處理模塊1001,用于確定所述設(shè)備的第一PTP端口的時(shí)鐘步數(shù)配置信息,以及確定所述第一PTP端口的時(shí)鐘狀態(tài);
第二處理模塊1002,用于若確定所述第一PTP端口的時(shí)鐘狀態(tài)為主時(shí)鐘,根據(jù)所述第一PTP端口的時(shí)鐘步數(shù)配置信息,在事件報(bào)文中攜帶時(shí)間戳信息后通過所述第一PTP端口發(fā)送給與所述第一PTP端口對(duì)接的下游設(shè)備的第二PTP端口;
第三處理模塊1003,用于若確定所述第一PTP端口的時(shí)鐘狀態(tài)為從時(shí)鐘或只做從時(shí)鐘,根據(jù)所述第一PTP端口的時(shí)鐘步數(shù)配置信息,通過所述第一PTP端口從對(duì)接的上游設(shè)備的第三PTP端口交互事件報(bào)文,從交互的事件報(bào)文中獲取時(shí)間戳信息,根據(jù)獲取的時(shí)間戳信息與所述上游設(shè)備進(jìn)行時(shí)鐘同步,其中,所述第三PTP端口的時(shí)鐘狀態(tài)為主時(shí)鐘。
實(shí)施中,所述第二處理模塊具體用于:
若確定所述第一PTP端口的時(shí)鐘狀態(tài)為主時(shí)鐘,且確定所述第一PTP端口被配置為單步端口,在第一事件報(bào)文中攜帶時(shí)間戳信息后發(fā)送給所述第二PTP端口;
若確定所述第一PTP端口的時(shí)鐘狀態(tài)為主時(shí)鐘,且確定所述第一PTP端口被配置為雙步端口,發(fā)送第一事件報(bào)文以及攜帶時(shí)間戳信息的第一事件報(bào)文的跟隨報(bào)文給所述第二PTP端口;
若確定所述第一PTP端口的時(shí)鐘狀態(tài)為主時(shí)鐘,且確定所述第一PTP端口未配置時(shí)鐘步數(shù),則發(fā)送兩路具有相應(yīng)的序列標(biāo)識(shí)的第一事件報(bào)文給所述第二PTP端口,其中第一路第一事件報(bào)文攜帶時(shí)間戳信息且twoStepFlag字段為FALSE,第二路第一事件報(bào)文的twoStepFlag字段為TRUE且在跟隨報(bào)文中攜帶時(shí)間戳信息。
實(shí)施中,所述第三處理模塊具體用于:
若確定所述第一PTP端口的時(shí)鐘狀態(tài)為從時(shí)鐘或只做從時(shí)鐘,且確定所述第一PTP端口被配置為單步端口或未配置時(shí)鐘步數(shù),通過所述第一PTP端口與所述第三PTP端口交互事件報(bào)文,根據(jù)所述事件報(bào)文確定所述第三PTP端口的時(shí)鐘步數(shù)配置信息,若確定所述第三PTP端口被配置為單步端口,根據(jù)所述第一PTP端口與所述第三PTP端口交互的事件報(bào)文獲取時(shí)間戳信息,若確定所述第三PTP端口被配置為雙步端口,根據(jù)所述第一PTP端口與所述第三PTP端口交互的事件報(bào)文以及事件報(bào)文的跟隨報(bào)文獲取時(shí)間戳信息;
若確定所述第一PTP端口的時(shí)鐘狀態(tài)為從時(shí)鐘或只做從時(shí)鐘,且確定所述第一PTP端口被配置為雙步端口,根據(jù)所述第一PTP端口與所述第三PTP端口交互的事件報(bào)文以及事件報(bào)文的跟隨報(bào)文獲取時(shí)間戳信息。
實(shí)施中,所述第三處理模塊具體用于:
若確定所述第一PTP端口與所述第三PTP端口交互的事件報(bào)文的twoStepFlag字段為FALSE,則確定所述第三PTP端口被配置為單步端口,若確定所述第一PTP端口與所述第三PTP端口交互的事件報(bào)文的twoStepFlag字段為TRUE,則確定所述第三PTP端口被配置為雙步端口。
實(shí)施中,所述第三處理模塊具體用于:
若確定所述第一PTP端口采用的為延時(shí)請(qǐng)求-響應(yīng)機(jī)制,從通過所述第三PTP端口向所述第一PTP端口發(fā)送的第一事件報(bào)文中獲取所述第三PTP端口發(fā)送所述第一事件報(bào)文的第一時(shí)間戳信息,以及記錄所述第一PTP端口接收所述第一事件報(bào)文的第二時(shí)間戳信息,以及記錄通過所述第一PTP端口向所述第三PTP端口發(fā)送第二事件報(bào)文的第三時(shí)間戳信息,以及從所述上游設(shè)備通過所述第三PTP端口向所述第一PTP端口發(fā)送的第三事件報(bào)文中,獲取所述第三PTP端口接收所述第二事件報(bào)文的第四時(shí)間戳信息;
若確定所述第一PTP端口采用的為對(duì)等延時(shí)機(jī)制,從通過所述第三PTP端口向所述第一PTP端口發(fā)送的第一事件報(bào)文中獲取所述第三PTP端口發(fā)送所述第一事件報(bào)文的第一時(shí)間戳信息,以及記錄所述第一PTP端口接收所述第一事件報(bào)文的第二時(shí)間戳信息,以及記錄通過所述第一PTP端口向所述第三PTP端口發(fā)送第二事件報(bào)文的第三時(shí)間戳信息,以及從所述上游設(shè)備通過所述第三PTP端口向所述第一PTP端口發(fā)送的第三事件報(bào)文中,獲取所述第三PTP端口接收所述第二事件報(bào)文的第四時(shí)間戳信息,以及從所述第三事件報(bào)文中獲取所述第三PTP端口發(fā)送所述第三事件報(bào)文的第五時(shí)間戳信息,以及記錄所述第一PTP端口接收所述第三事件報(bào)文的第六時(shí)間戳信息信息。
實(shí)施中,所述第三處理模塊具體用于:
若確定所述第一PTP端口采用的為延時(shí)請(qǐng)求-響應(yīng)機(jī)制,從通過所述第三PTP端口向所述第一PTP端口發(fā)送的第一事件報(bào)文的跟隨報(bào)文中獲取所述第三PTP端口發(fā)送所述第一事件報(bào)文的第一時(shí)間戳信息,以及記錄所述第一PTP端口接收所述第一事件報(bào)文的第二時(shí)間戳信息,以及記錄通過所述第一PTP端口向所述第三PTP端口發(fā)送第二事件報(bào)文的第三時(shí)間戳信息,以及從所述上游設(shè)備通過所述第三PTP端口向所述第一PTP端口發(fā)送的第三事件報(bào)文中,獲取所述第三PTP端口接收所述第二事件報(bào)文的第四時(shí)間戳信息;
若確定所述第一PTP端口采用的為對(duì)等延時(shí)機(jī)制,從通過所述第三PTP端口向所述第一PTP端口發(fā)送的第一事件報(bào)文的跟隨報(bào)文中獲取所述第三PTP端口發(fā)送所述第一事件報(bào)文的第一時(shí)間戳信息,以及記錄所述第一PTP端口接收所述第一事件報(bào)文的第二時(shí)間戳信息,以及記錄通過所述第一PTP端口向所述第三PTP端口發(fā)送第二事件報(bào)文的第三時(shí)間戳信息,以及從所述上游設(shè)備通過所述第三PTP端口向所述第一PTP端口發(fā)送的第三事件報(bào)文中,獲取所述第三PTP端口接收所述第二事件報(bào)文的第四時(shí)間戳信息,以及從所述第三事件報(bào)文的跟隨報(bào)文中獲取所述第三PTP端口發(fā)送所述第三事件報(bào)文的第五時(shí)間戳信息,以及記錄所述第一PTP端口接收所述第三事件報(bào)文的第六時(shí)間戳信息信息。
實(shí)施中,所述第三處理模塊具體用于:
根據(jù)獲得時(shí)間戳信息確定鏈路延時(shí)以及頻偏校正量,并根據(jù)所述鏈路延時(shí)確定時(shí)間差;
采用所述頻偏校正量對(duì)所述時(shí)間差進(jìn)行校正,確定校正后的時(shí)間差,并采用所述校正后的時(shí)間差更新本地時(shí)鐘。
實(shí)施中,所述第三處理模塊具體用于:
計(jì)算獲得上一次確定的平均時(shí)間差與所述時(shí)間差的平均值,并計(jì)算所述平均值與所述頻偏校正量的差值,其中,所述平均時(shí)間差的初始值為首次確定的時(shí)間差。
實(shí)施中,所述第三處理模塊具體用于:
若確定所述第一PTP端口采用的為延時(shí)請(qǐng)求-響應(yīng)機(jī)制,根據(jù)所述第一時(shí)間戳信息、所述第二時(shí)間戳信息、所述第三時(shí)間戳信息以及所述第四時(shí)間戳信息確定鏈路延時(shí),并根據(jù)所述鏈路延時(shí)確定時(shí)間差,其中,所述鏈路延時(shí)表示為:delay=((t2-t1)-(t3-t4))/2,所述時(shí)間差表示為:offset=(t2-t1)-delay,其中,t1表示所述第一時(shí)間戳信息,t2表示所述第二時(shí)間戳信息,t3表示所述第三時(shí)間戳信息,t4表示所述第四時(shí)間戳信息,delay表示所述鏈路延時(shí),offset表示所述時(shí)間差;
根據(jù)預(yù)設(shè)時(shí)長內(nèi)第一次獲得的第一時(shí)間戳信息、第一次獲得的第二時(shí)間戳信息、最后一次獲得的第一時(shí)間戳信息以及最后一次獲得的第二時(shí)間戳信息確定頻偏校正量,其中,所述頻偏校正量表示為:f=(tm2-t12)-(tm1-t11),其中,tm1表示所述最后一次獲得的第一時(shí)間戳信息,tm2表示所述最后一次獲得的第二時(shí)間戳信息,t11表示所述第一次獲得的第一時(shí)間戳信息,t12表示所述第一次獲得的第二時(shí)間戳信息。
實(shí)施中,所述第三處理模塊具體用于:
若確定所述第一PTP端口采用的為對(duì)等延時(shí)機(jī)制,根據(jù)所述第三時(shí)間戳信息、所述第四時(shí)間戳信息、所述第五時(shí)間戳信息以及所述第六時(shí)間戳信息確定鏈路延時(shí),并根據(jù)所述鏈路延時(shí)、所述第一時(shí)間戳信息以及所述第二時(shí)間戳信息確定時(shí)間差,其中,所述鏈路延時(shí)表示為:delay=((t2-t1)-(t3-t4))/2,所述時(shí)間差表示為:offset=(T2-T1)-delay,其中,t1表示所述第三時(shí)間戳信息,t2表示所述第四時(shí)間戳信息,t3表示所述第五時(shí)間戳信息,t4表示所述第六時(shí)間戳信息,T1表示所述第一時(shí)間戳信息,T2表示所述第二時(shí)間戳信息,delay表示所述鏈路延時(shí),offset表示所述時(shí)間差;
根據(jù)預(yù)設(shè)時(shí)長內(nèi)第一次獲得的第三時(shí)間戳信息、第一次獲得的第四時(shí)間戳信息、最后一次獲得的第三時(shí)間戳信息以及最后一次獲得的第四時(shí)間戳信息確定頻偏校正量,其中,所述頻偏校正量表示為:f=(tm2-t12)-(tm1-t11),其中,tm1表示所述最后一次獲得的第三時(shí)間戳信息,tm2表示所述最后一次獲得的第四時(shí)間戳信息,t11表示所述第一次獲得的第三時(shí)間戳信息,t12表示所述第一次獲得的第四時(shí)間戳信息。
實(shí)施中,所述第三處理模塊具體用于:
采用所述頻偏校正量對(duì)所述時(shí)間差進(jìn)行校正之前,確定所述時(shí)間差大于預(yù)設(shè)閾值。
實(shí)施中,所述第三處理模塊具體用于:
若確定所述頻偏校正量等于零,停止更新本地時(shí)鐘,并在間隔預(yù)設(shè)時(shí)長后重新計(jì)算所述頻偏校正量;否則,執(zhí)行所述采用所述頻偏校正量對(duì)所述時(shí)間差進(jìn)行校正的操作。
基于上述技術(shù)方案,本發(fā)明實(shí)施例中,設(shè)備確定PTP端口的時(shí)鐘步數(shù)配置信息以及時(shí)鐘狀態(tài),根據(jù)PTP端口的時(shí)鐘步數(shù)配置信息以及時(shí)鐘狀態(tài)與上游設(shè)備或下游設(shè)備進(jìn)行時(shí)鐘同步,使得PTP端口不需要與上游設(shè)備或下游設(shè)備的PTP端口具有相同的時(shí)鐘步數(shù),為實(shí)現(xiàn)單步時(shí)鐘與雙步時(shí)鐘混合進(jìn)行時(shí)鐘同步提供了可能性。
并且,通過對(duì)時(shí)間差進(jìn)行校正,采用校正后的時(shí)間差進(jìn)行本地時(shí)鐘同步,可以進(jìn)一步提高時(shí)鐘同步的精確度。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器和光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。