本發(fā)明涉及時鐘同步技術,尤指一種實現頻率同步的方法和裝置。
背景技術:
電氣和電子工程師協會(IEEE,Institute Electrical and Electronics Engineers)1588v2是一種精確時間同步協議(PTP,Precision Time Protocol),它是一種主從同步系統。在系統的同步過程中,主設備周期性發(fā)布時間戳信息,從設備根據接收到的來自主設備的時間戳信息計算主設備到從設備之間的線路時間延遲和主從時間差,根據計算得到的主從時間差調整本地時間,使從設備的時間保持與主設備的時間一致的頻率與相位。IEEE1588可以同時實現頻率同步和時間同步。
現有的實現頻率同步的方法大致包括:
主設備向從設備發(fā)送同步(sync)報文,然后發(fā)送一個跟蹤(follow_up)報文,follow_up報文中包含有發(fā)送sync報文的時間T1;從設備接收到sync報文,記錄接收時間T2,根據T1和T2進行頻率同步。或者,從設備在T3時間向主設備發(fā)送延遲(Delay_Req)報文,主設備記錄接收到Delay_Req報文的時間T4并發(fā)送給從設備,根據T1和T2進行頻率同步。
現有的實現頻率同步的方法中,由于網絡中正反向的流量負載不一樣或者其他原因,會導致主設備到從設備之間的包的延時抖動(PDV,Packet Delay Variation)和從設備到主設備之間的PDV也不同。如果正向PDV(即主設備到從設備之間的PDV)很大,而反向PDV(即從設備到主設備之間的PDV)很小,則僅僅依靠T1和T2進行頻率恢復的話,過大的PDV會導致同步性能不佳,從而導致同步精度較低。
技術實現要素:
為了解決上述問題,本發(fā)明提出了一種分析PDV的方法和裝置,能夠提高同步精度。
為了達到上述目的,本發(fā)明提出了一種實現頻率同步的方法,包括:
獲取第一預設時間內的正向包的延時抖動PDV和反向PDV,和/或,獲取第一預設時間內的正向丟包率和反向丟包率;
判斷出獲得的正向PDV和反向PDV滿足forward_delay_stheta>reverse_delay_stheta(1+a);或判斷出獲得的正向丟包率等于反向丟包率,且獲得的正向PDV和反向PDV滿足forward_delay_stheta>reverse_delay_stheta(1+a);或判斷出正向丟包率大于所述反向丟包率,根據發(fā)送延遲Delay_Req報文的時間和接收到Delay_Req報文的時間進行頻率同步;
其中,forward_delay_stheta為正向PDV,reverse_delay_stheta為反向PDV,a為預設值。
優(yōu)選地,當判斷出獲得的所述正向PDV和所述反向PDV滿足forward_delay_stheta<reverse_delay_stheta(1+a);或判斷出所述正向丟包率等于所述反向丟包率,且獲得的所述正向PDV和所述反向PDV滿足forward_delay_stheta<reverse_delay_stheta(1+a);或判斷出所述正向丟包率小于所述反向丟包率時,該方法還包括:
根據發(fā)送同步sync報文的時間和接收到sync報文的時間進行頻率同步。
優(yōu)選地,所述獲取第一預設時間內的正向丟包率和反向丟包率包括:
獲取所述第一預設時間內接收到的各sync報文的序列號,接收到的各Delay_Req報文的序列號;
根據所述各sync報文的序列號計算所述第一預設時間內的正向丟包率,根據所述各Delay_Req報文的序列號計算所述第一預設時間內的反向丟包率。
優(yōu)選地,所述根據各sync報文的序列號計算第一預設時間內的正向丟包率包括:
計算所述第一預設時間內預期接收到的sync報文的數量和所述第一預設時間內實際接收到的sync報文的數量之間的第一差值;計算所述第一差值和所述第一預設時間內預期接收到的sync報文的數量之間的比值得到所述正向丟包率;
其中,所述第一預設時間內預期接收到的sync報文的數量為所述第一預設時間和所述sync報文的發(fā)包速率之間的乘積,所述第一預設時間內實際接收到的sync報文的數量為獲得的各sync報文的序列號的數量。
優(yōu)選地,所述根據各Delay_Req報文的序列號計算第一預設時間內的反向丟包率包括:
計算所述第一預設時間內預期接收到的Delay_Req報文的數量和所述第一預設時間內實際接收到的Delay_Req報文的數量之間的第二差值;計算所述第二差值和所述第一預設時間內預期接收到的Delay_Req報文的數量之間的比值得到所述反向丟包率;
其中,所述第一預設時間內預期接收到的Delay_Req報文的數量為所述第一預設時間和所述Delay_Req報文的發(fā)包速率之間的乘積,所述第一預設時間內實際接收到的Delay_Req報文的數量為獲得各Delay_Req報文的序列號的數量。
優(yōu)選地,所述獲取第一預設時間內的正向PDV和反向PDV包括:
獲取發(fā)送各sync報文的時間、接收到各sync報文的時間、各sync報文的修正域CF、各sync報文的序列號、發(fā)送各Delay_Req報文的時間、接收到各Delay_Req報文的時間、各Delay_Req報文的CF和各Delay_Req報文的序列號;
根據獲得的發(fā)送所述各sync報文的時間、接收到所述各sync報文的時間、所述各sync報文的CF和所述各sync報文的序列號計算正向時延差值,根據獲得的發(fā)送所述各Delay_Req報文的時間、接收到所述各Delay_Req報文的時間、所述各Delay_Req報文的CF和所述各Delay_Req報文的序列號計算反向時延差值;
根據計算得到的正向時延差值計算第二預設時間內的正向時延差值累 加,根據計算得到的反向時延差值計算第二預設時間內的反向時延差值累加。
優(yōu)選地,所述根據獲得的發(fā)送各sync報文的時間、接收到各sync報文的時間、各sync報文的CF和各sync報文的序列號計算正向時延差值包括:
根據獲得的發(fā)送所述各sync報文的時間、接收到所述各sync報文的時間、所述各sync報文的CF和所述各sync報文的序列號計算所述各sync報文的正向時延,根據計算得到的所述各sync報文的正向時延計算所述正向時延差值;
所述根據獲得的發(fā)送各Delay_Req報文的時間、接收到各Delay_Req報文的時間、各Delay_Req報文的CF和各Delay_Req報文的序列號計算反向時延差值包括:
根據獲得的發(fā)送所述各Delay_Req報文的時間、接收到所述各Delay_Req報文的時間、所述各Delay_Req報文的CF和所述各Delay_Req報文的序列號計算所述各Delay_Req報文的反向時延,根據計算得到的所述各Delay_Req報文的反向時延計算所述反向時延差值。
優(yōu)選地,所述根據獲得的發(fā)送各sync報文的時間、接收到各sync報文的時間、各sync報文的CF和各sync報文的序列號計算各sync報文的正向時延包括:
按照公式forward_delay(n)=T2(n)-T1(n)-forward_CF(n)計算所述各sync報文的正向時延;其中,forward_delay(n)為所述序列號為n的sync報文的正向時延,T2(n)為接收到所述序列號為n的sync報文的時間,T1(n)為發(fā)送所述序列號為n的sync報文的時間,forward_CF(n)為所述序列號為n的sync報文的CF,n為大于或等于1的整數;
所述根據獲得的發(fā)送各Delay_Req報文的時間、接收到各Delay_Req報文的時間、各Delay_Req報文的CF和各Delay_Req報文的序列號計算各Delay_Req報文的反向時延包括:
按照公式reverse_delay(n)=T4(n)-T3(n)-reverse_CF(n)計算所述各Delay_Req報文的反向時延;其中,reverse_delay(n)為所述序列號為n的Delay_Req報文的反向時延,T4(n)為接收到所述序列號為n的Delay_Req報 文的時間,T3(n)為發(fā)送所述序列號為n的Delay_Req報文的時間,reverse_CF(n)為所述序列號為n的Delay_Req報文的CF。
優(yōu)選地,所述根據計算得到的各sync報文的正向時延計算正向時延差值包括:
按照公式forward_delay_theta(n+1)=|forward_delay(n+1)-forward_delay(n)|計算所述正向時延差值;其中,forward_delay_theta(n+1)為計算得到的第(n+1)個正向時延差值,forward_delay(n+1)為所述序列號為(n+1)的sync報文的正向時延,forward_delay(n)為所述序列號為n的sync報文的正向時延;
所述根據計算得到的所述各Delay_Req報文的反向時延計算反向時延差值包括:
按照公式reverse_delay_theta(n+1)=|reverse_delay(n+1)-reverse_delay(n)|計算所述反向時延差值;其中,reverse_delay_theta(n+1)為計算得到的第(n+1)個反向時延差值,reverse_delay(n+1)為所述序列號為(n+1)的Delay_Req報文的反向時延,reverse_delay(n)為所述序列號為n的Delay_Req報文的反向時延。
優(yōu)選地,所述判斷出獲得的正向PDV和反向PDV滿足forward_delay_stheta>reverse_delay_stheta(1+a);或判斷出獲得的正向丟包率均等于反向丟包率,且獲得的正向PDV和反向PDV滿足forward_delay_stheta>reverse_delay_stheta(1+a);或判斷出正向丟包率大于反向丟包率后,在所述根據發(fā)送延遲Delay_Req報文的時間和接收到Delay_Req報文的時間進行頻率同步之前還包括:
在第三預設時間內獲取所述第一預設時間內的正弦PDV和反向PDV,和/或,在所述第三預設時間內多次獲取所述第一預設時間內的正向丟包率和反向丟包率;
判斷出在所述第三預設時間內獲得的正向PDV和反向PDV滿足forward_delay_stheta>reverse_delay_stheta(1+a);或判斷出在所述第三預設時間內獲得的正向丟包率大于所述反向丟包率;或判斷出在所述第三預設時間內獲得的正向丟包率均等于反向丟包率,且在所述第三預設時間內獲得的正 向PDV和反向PDV滿足forward_delay_stheta>reverse_delay_stheta(1+a)。
本發(fā)明還提出了一種實現頻率同步的裝置,至少包括:
獲取模塊,用于獲取第一預設時間內的正向包的延時抖動PDV和反向PDV,和/或,獲取第一預設時間內的正向丟包率和反向丟包率;
判斷模塊,用于判斷出獲得的正向PDV和反向PDV滿足forward_delay_stheta>reverse_delay_stheta(1+a);或判斷出獲得的正向丟包率等于反向丟包率,且獲得的正向PDV和反向PDV滿足forward_delay_stheta>reverse_delay_stheta(1+a);或判斷出正向丟包率大于所述反向丟包率,向同步模塊發(fā)送第一通知消息;
同步模塊,用于接收到第一通知消息,根據發(fā)送延遲Delay_Req報文的時間和接收到Delay_Req報文的時間進行頻率同步;
其中,forward_delay_stheta為正向PDV,reverse_delay_stheta為反向PDV,a為預設值。
優(yōu)選地,所述判斷模塊還用于:
判斷出獲得的所述正向PDV和所述反向PDV滿足forward_delay_stheta<reverse_delay_stheta(1+a);或判斷出所述正向丟包率等于所述反向丟包率,且獲得的所述正向PDV和所述反向PDV滿足forward_delay_stheta<reverse_delay_stheta(1+a);或判斷出所述正向丟包率小于所述反向丟包率,向所述同步模塊發(fā)送第二通知消息;
所述同步模塊還用于:
接收到第二通知消息,根據發(fā)送同步sync報文的時間和接收到sync報文的時間進行頻率同步。
優(yōu)選地,所述獲取模塊具體用于:
獲取第一預設時間內的正向PDV和反向PDV,和/或,獲取所述第一預設時間內接收到的各sync報文的序列號,接收到的各Delay_Req報文的序列號;根據所述各sync報文的序列號計算所述第一預設時間內的正向丟包率,根據所述各Delay_Req報文的序列號計算所述第一預設時間內的反向丟包 率。
優(yōu)選地,所述獲取模塊具體用于:
獲取第一預設時間內的正向PDV和反向PDV,和/或,獲取所述第一預設時間內接收到的各sync報文的序列號,接收到的各Delay_Req報文的序列號;計算所述第一預設時間內預期接收到的sync報文的數量和所述第一預設時間內實際接收到的sync報文的數量之間的第一差值;計算所述第一差值和所述第一預設時間內預期接收到的sync報文的數量之間的比值得到所述正向丟包率;其中,所述第一預設時間內預期接收到的sync報文的數量為所述第一預設時間和所述sync報文的發(fā)包速率之間的乘積,所述第一預設時間內實際接收到的sync報文的數量為獲得的各sync報文的序列號的數量,根據所述各Delay_Req報文的序列號計算所述第一預設時間內的反向丟包率。
優(yōu)選地,所述獲取模塊具體用于:
獲取第一預設時間內的正向PDV和反向PDV,和/或,獲取所述第一預設時間內接收到的各sync報文的序列號,接收到的各Delay_Req報文的序列號;根據所述各sync報文的序列號計算所述第一預設時間內的正向丟包率,計算所述第一預設時間內預期接收到的Delay_Req報文的數量和所述第一預設時間內實際接收到的Delay_Req報文的數量之間的第二差值;計算所述第二差值和所述第一預設時間內預期接收到的Delay_Req報文的數量之間的比值得到所述反向丟包率;
其中,所述第一預設時間內預期接收到的Delay_Req報文的數量為所述第一預設時間和所述Delay_Req報文的發(fā)包速率之間的乘積,所述第一預設時間內實際接收到的Delay_Req報文的數量為獲得各Delay_Req報文的序列號的數量。
優(yōu)選地,所述獲取模塊具體用于:
獲取發(fā)送各sync報文的時間、接收到各sync報文的時間、各sync報文的修正域CF、各sync報文的序列號、發(fā)送各Delay_Req報文的時間、接收到各Delay_Req報文的時間、各Delay_Req報文的CF和各Delay_Req報文的序列號;根據獲得的發(fā)送所述各sync報文的時間、接收到所述各sync報 文的時間、所述各sync報文的CF和所述各sync報文的序列號計算正向時延差值,根據獲得的發(fā)送所述各Delay_Req報文的時間、接收到所述各Delay_Req報文的時間、所述各Delay_Req報文的CF和所述各Delay_Req報文的序列號計算反向時延差值;根據計算得到的正向時延差值計算第二預設時間內的正向時延差值累加,根據計算得到的反向時延差值計算第二預設時間內的反向時延差值累加,和/或,獲取第一預設時間內的正向丟包率和反向丟包率。
優(yōu)選地,所述獲取模塊具體用于:
獲取發(fā)送各sync報文的時間、接收到各sync報文的時間、各sync報文的修正域CF、各sync報文的序列號、發(fā)送各Delay_Req報文的時間、接收到各Delay_Req報文的時間、各Delay_Req報文的CF和各Delay_Req報文的序列號;根據獲得的發(fā)送所述各sync報文的時間、接收到所述各sync報文的時間、所述各sync報文的CF和所述各sync報文的序列號計算所述各sync報文的正向時延,根據計算得到的所述各sync報文的正向時延計算所述正向時延差值;根據獲得的發(fā)送所述各Delay_Req報文的時間、接收到所述各Delay_Req報文的時間、所述各Delay_Req報文的CF和所述各Delay_Req報文的序列號計算所述各Delay_Req報文的反向時延,根據計算得到的所述各Delay_Req報文的反向時延計算所述反向時延差值;根據計算得到的正向時延差值計算第二預設時間內的正向時延差值累加,根據計算得到的反向時延差值計算第二預設時間內的反向時延差值累加,和/或,獲取第一預設時間內的正向丟包率和反向丟包率。
優(yōu)選地,所述獲取模塊具體用于:
獲取發(fā)送各sync報文的時間、接收到各sync報文的時間、各sync報文的修正域CF、各sync報文的序列號、發(fā)送各Delay_Req報文的時間、接收到各Delay_Req報文的時間、各Delay_Req報文的CF和各Delay_Req報文的序列號;按照公式forward_delay(n)=T2(n)-T1(n)-forward_CF(n)計算所述各sync報文的正向時延;其中,forward_delay(n)為所述序列號為n的sync報文的正向時延,T2(n)為接收到所述序列號為n的sync報文的時間,T1(n)為發(fā)送所述序列號為n的sync報文的時間,forward_CF(n)為所述序列號為n 的sync報文的CF,n為大于或等于1的整數;根據計算得到的所述各sync報文的正向時延計算所述正向時延差值;按照公式reverse_delay(n)=T4(n)-T3(n)-reverse_CF(n)計算所述各Delay_Req報文的反向時延;其中,reverse_delay(n)為所述序列號為n的Delay_Req報文的反向時延,T4(n)為接收到所述序列號為n的Delay_Req報文的時間,T3(n)為發(fā)送所述序列號為n的Delay_Req報文的時間,reverse_CF(n)為所述序列號為n的Delay_Req報文的CF,根據計算得到的所述各Delay_Req報文的反向時延計算所述反向時延差值;根據計算得到的正向時延差值計算第二預設時間內的正向時延差值累加,根據計算得到的反向時延差值計算第二預設時間內的反向時延差值累加,和/或,獲取第一預設時間內的正向丟包率和反向丟包率。
優(yōu)選地,所述獲取模塊具體用于:
獲取發(fā)送各sync報文的時間、接收到各sync報文的時間、各sync報文的修正域CF、各sync報文的序列號、發(fā)送各Delay_Req報文的時間、接收到各Delay_Req報文的時間、各Delay_Req報文的CF和各Delay_Req報文的序列號;按照公式forward_delay(n)=T2(n)-T1(n)-forward_CF(n)計算所述各sync報文的正向時延;其中,forward_delay(n)為所述序列號為n的sync報文的正向時延,T2(n)為接收到所述序列號為n的sync報文的時間,T1(n)為發(fā)送所述序列號為n的sync報文的時間,forward_CF(n)為所述序列號為n的sync報文的CF,n為大于或等于1的整數;按照公式forward_delay_theta(n+1)=|forward_delay(n+1)-forward_delay(n)|計算所述正向時延差值;其中,forward_delay_theta(n+1)為計算得到的第(n+1)個正向時延差值,forward_delay(n+1)為所述序列號為(n+1)的sync報文的正向時延,forward_delay(n)為所述序列號為n的sync報文的正向時延;按照公式reverse_delay(n)=T4(n)-T3(n)-reverse_CF(n)計算所述各Delay_Req報文的反向時延;其中,reverse_delay(n)為所述序列號為n的Delay_Req報文的反向時延,T4(n)為接收到所述序列號為n的Delay_Req報文的時間,T3(n)為發(fā)送所述序列號為n的Delay_Req報文的時間,reverse_CF(n)為所述序列號為n的Delay_Req報文的CF,按照公式reverse_delay_theta(n+1)=|reverse_delay(n+1)-reverse_delay(n)|計算所述反向時 延差值;其中,reverse_delay_theta(n+1)為計算得到的第(n+1)個反向時延差值,reverse_delay(n+1)為所述序列號為(n+1)的Delay_Req報文的反向時延,reverse_delay(n)為所述序列號為n的Delay_Req報文的反向時延;根據計算得到的正向時延差值計算第二預設時間內的正向時延差值累加,根據計算得到的反向時延差值計算第二預設時間內的反向時延差值累加,和/或,獲取第一預設時間內的正向丟包率和反向丟包率。
優(yōu)選地,所述獲取模塊還用于:
在第三預設時間內獲取所述第一預設時間內的正弦PDV和反向PDV,和/或,在所述第三預設時間內獲取所述第一預設時間內的正向丟包率和反向丟包率;
所述判斷模塊還用于:判斷出在所述第三預設時間內獲得的正向PDV和反向PDV滿足forward_delay_stheta>reverse_delay_stheta(1+a);或判斷出在所述第三預設時間內獲得的正向丟包率大于所述反向丟包率;或在所述第三預設時間內判斷出獲得的正向丟包率均等于反向丟包率,且在所述第三預設時間內獲得的正向PDV和反向PDV滿足forward_delay_stheta>reverse_delay_stheta(1+a),向所述同步模塊發(fā)送所述第一通知消息。
與現有技術相比,本發(fā)明的技術方案包括:獲取第一預設時間內的正向包的延時抖動PDV和反向PDV,和/或,獲取第一預設時間內的正向丟包率和反向丟包率;判斷出獲得的正向PDV和反向PDV滿足forward_delay_stheta>reverse_delay_stheta(1+a);或判斷出獲得的正向丟包率均等于反向丟包率,且獲得的正向PDV和反向PDV滿足forward_delay_stheta>reverse_delay_stheta(1+a);或判斷出正向丟包率大于所述反向丟包率,根據發(fā)送延遲Delay_Req報文的時間和接收到Delay_Req報文的時間進行頻率同步。通過本發(fā)明的方案,當反向丟包率較低或forward_delay_stheta>reverse_delay_stheta(1+a)時,根據Delay_Req報文進行頻率同步,從而提高了同步精度。
附圖說明
下面對本發(fā)明實施例中的附圖進行說明,實施例中的附圖是用于對本發(fā)明的進一步理解,與說明書一起用于解釋本發(fā)明,并不構成對本發(fā)明保護范圍的限制。
圖1為本發(fā)明實現頻率同步的方法的流程圖;
圖2為本發(fā)明實現頻率同步的裝置的結構組成示意圖。
具體實施方式
為了便于本領域技術人員的理解,下面結合附圖對本發(fā)明作進一步的描述,并不能用來限制本發(fā)明的保護范圍。需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的各種方式可以相互組合。
參見圖1,本發(fā)明提出了一種實現頻率同步的方法,包括:
步驟100、獲取第一預設時間內的正向包的延時抖動PDV和反向PDV,和/或,獲取第一預設時間內的正向丟包率和反向丟包率。
本步驟中,獲取第一預設時間內的正向丟包率和反向丟包率包括:
獲取第一預設時間內接收到的各sync報文的序列號,接收到的各Delay_Req報文的序列號;
根據各sync報文的序列號計算第一預設時間內的正向丟包率,根據各Delay_Req報文的序列號計算第一預設時間內的反向丟包率。
其中,根據各sync報文的序列號計算第一預設時間內的正向丟包率包括:
計算第一預設時間內預期接收到的sync報文的數量和第一預設時間內實際接收到的sync報文的數量之間的第一差值;計算第一差值和第一預設時間內預期接收到的sync報文的數量之間的比值得到正向丟包率;
其中,第一預設時間內預期接收到的sync報文的數量為第一預設時間和sync報文的發(fā)包速率之間的乘積,第一預設時間內實際接收到的sync報文的數量為獲得的各sync報文的序列號的數量。
其中,根據各Delay_Req報文的序列號計算第一預設時間內的反向丟包 率包括:
計算第一預設時間內預期接收到的Delay_Req報文的數量和第一預設時間內實際接收到的Delay_Req報文的數量之間的第二差值;計算第二差值和第一預設時間內預期接收到的Delay_Req報文的數量之間的比值得到反向丟包率;
其中,第一預設時間內預期接收到的Delay_Req報文的數量為第一預設時間和Delay_Req報文的發(fā)包速率之間的乘積,第一預設時間內實際接收到的Delay_Req報文的數量為獲得各Delay_Req報文的序列號的數量。
本步驟中,獲取第一預設時間內的正向PDV和反向PDV包括:
獲取發(fā)送各sync報文的時間、接收到各sync報文的時間、各sync報文的修正域CF、各sync報文的序列號、發(fā)送各Delay_Req報文的時間、接收到各Delay_Req報文的時間、各Delay_Req報文的CF和各Delay_Req報文的序列號;
根據獲得的發(fā)送各sync報文的時間、接收到各sync報文的時間、各sync報文的CF和各sync報文的序列號計算正向時延差值,根據獲得的發(fā)送各Delay_Req報文的時間、接收到各Delay_Req報文的時間、各Delay_Req報文的CF和各Delay_Req報文的序列號計算反向時延差值;
根據計算得到的正向時延差值計算第二預設時間內的正向時延差值累加,根據計算得到的反向時延差值計算第二預設時間內的反向時延差值累加。
具體地,可以分別將每次計算得到的正向時延差值和反向時延差值放入各自的觀察窗內,各自的觀察窗的大小相等,且等于第二預設時間內計算得到的正向時延差值或反向時延差值的個數,觀察窗內每新增一個正向時延差值或反向時延差值,觀察窗滑動一個步長,每隔一段時間將觀察窗內的所有正向時延差值或反向時延差值進行累加。
其中,根據獲得的發(fā)送各sync報文的時間、接收到各sync報文的時間、各sync報文的CF和各sync報文的序列號計算正向時延差值包括:
根據獲得的發(fā)送各sync報文的時間、接收到各sync報文的時間、各sync 報文的CF和各sync報文的序列號計算各sync報文的正向時延,根據計算得到的各sync報文的正向時延計算正向時延差值;
根據獲得的發(fā)送各Delay_Req報文的時間、接收到各Delay_Req報文的時間、各Delay_Req報文的CF和各Delay_Req報文的序列號計算反向時延差值包括:
根據獲得的發(fā)送各Delay_Req報文的時間、接收到各Delay_Req報文的時間、各Delay_Req報文的CF和各Delay_Req報文的序列號計算各Delay_Req報文的反向時延,根據計算得到的各Delay_Req報文的反向時延計算反向時延差值。
其中,根據獲得的發(fā)送各sync報文的時間、接收到各sync報文的時間、各sync報文的CF和各sync報文的序列號計算各sync報文的正向時延包括:
按照公式forward_delay(n)=T2(n)-T1(n)-forward_CF(n)計算各sync報文的正向時延;其中,forward_delay(n)為序列號為n的sync報文的正向時延,T2(n)為接收到序列號為n的sync報文的時間,T1(n)為發(fā)送序列號為n的sync報文的時間,forward_CF(n)為序列號為n的sync報文的CF,n為大于或等于1的整數;
根據獲得的發(fā)送各Delay_Req報文的時間、接收到各Delay_Req報文的時間、各Delay_Req報文的CF和各Delay_Req報文的序列號計算各Delay_Req報文的反向時延包括:
按照公式reverse_delay(n)=T4(n)-T3(n)-reverse_CF(n)計算各Delay_Req報文的反向時延;其中,reverse_delay(n)為序列號為n的Delay_Req報文的反向時延,T4(n)為接收到序列號為n的Delay_Req報文的時間,T3(n)為發(fā)送序列號為n的Delay_Req報文的時間,reverse_CF(n)為序列號為n的Delay_Req報文的CF。
其中,根據計算得到的各sync報文的正向時延計算正向時延差值包括:
按照公式forward_delay_theta(n+1)=|forward_delay(n+1)-forward_delay(n)|計算正向時延差值;其中,forward_delay_theta(n+1)為計算得到的第(n+1)個正向時延差值,forward_delay(n+1)為序列號為(n+1)的sync報文的正向 時延,forward_delay(n)為序列號為n的sync報文的正向時延;
根據計算得到的各Delay_Req報文的反向時延計算反向時延差值包括:
按照公式reverse_delay_theta(n+1)=|reverse_delay(n+1)-reverse_delay(n)|計算反向時延差值;其中,reverse_delay_theta(n+1)為計算得到的第(n+1)個反向時延差值,reverse_delay(n+1)為序列號為(n+1)的Delay_Req報文的反向時延,reverse_delay(n)為序列號為n的Delay_Req報文的反向時延。
步驟101、判斷出獲得的正向PDV和反向PDV滿足forward_delay_stheta>reverse_delay_stheta(1+a);或判斷出獲得的正向丟包率均等于反向丟包率,且獲得的正向PDV和反向PDV滿足forward_delay_stheta>reverse_delay_stheta(1+a);或判斷出正向丟包率大于反向丟包率,根據發(fā)送延遲Delay_Req報文的時間和接收到Delay_Req報文的時間進行頻率同步。
通過本發(fā)明的方案,當反向丟包率較低或forward_delay_stheta>reverse_delay_stheta(1+a)時,根據Delay_Req報文進行頻率同步,從而提高了同步精度。
本步驟中,forward_delay_stheta為正向PDV,reverse_delay_stheta為反向PDV,a為預設值。
本步驟中,判斷出獲得的正向PDV和反向PDV滿足forward_delay_stheta>reverse_delay_stheta(1+a);或判斷出獲得的正向丟包率均等于反向丟包率,且獲得的正向PDV和反向PDV滿足forward_delay_stheta>reverse_delay_stheta(1+a);或判斷出正向丟包率大于反向丟包率后,在根據發(fā)送延遲Delay_Req報文的時間和接收到Delay_Req報文的時間進行頻率同步之前還包括:
在第三預設時間內獲取第一預設時間內的正弦PDV和反向PDV,和/或,在第三預設時間內獲取第一預設時間內的正向丟包率和反向丟包率,判斷出每次在第三預設時間內獲得的正向PDV和反向PDV滿足forward_delay_stheta>reverse_delay_stheta(1+a);或判斷出在第三預設時間內獲得的正向丟包率大于反向丟包率;或判斷出在第三預設時間內獲得的正向 丟包率均等于反向丟包率,且在第三預設時間內獲得的正向PDV和反向PDV滿足forward_delay_stheta>reverse_delay_stheta(1+a)。
本步驟中,當判斷出獲得的正向PDV和反向PDV滿足forward_delay_stheta<reverse_delay_stheta(1+a);或判斷出正向丟包率等于反向丟包率,且獲得的正向PDV和反向PDV滿足forward_delay_stheta<reverse_delay_stheta(1+a);或判斷出正向丟包率小于反向丟包率時,根據發(fā)送同步sync報文的時間和接收到sync報文的時間進行頻率同步。
其中,判斷出獲得的正向PDV和反向PDV滿足forward_delay_stheta<reverse_delay_stheta(1+a);或判斷出正向丟包率等于反向丟包率,且獲得的正向PDV和反向PDV滿足forward_delay_stheta<reverse_delay_stheta(1+a);或判斷出正向丟包率小于反向丟包率包括:
判斷出每次獲得的正向PDV和反向PDV滿足forward_delay_stheta<reverse_delay_stheta(1+a);或判斷出每次獲得的正向丟包率均小于反向丟包率;或每次判斷出判斷出正向丟包率小于反向丟包率,或判斷出正向丟包率等于反向丟包率,且獲得的正向PDV和反向PDV滿足forward_delay_stheta<reverse_delay_stheta(1+a)。
也就是說,如果在第三預設時間內均判斷出根據正向報文(sync報文)或反向報文(Delay_Req報文)進行頻率同步,則進行方向切換;如果在第三預設時間內某一次或幾次判斷出根據正向報文進行頻率同步,其他的判斷出根據反向報文進行頻率同步,則不進行方向切換。這樣,防止了頻繁切換對環(huán)路性能的影響。
參見圖2,本發(fā)明還提出了一種實現頻率同步的裝置,至少包括:
獲取模塊,用于獲取第一預設時間內的正向包的延時抖動PDV和反向PDV,和/或,獲取第一預設時間內的正向丟包率和反向丟包率;
判斷模塊,用于判斷出獲得的正向PDV和反向PDV滿足forward_delay_stheta>reverse_delay_stheta(1+a);或判斷出獲得的正向丟包率 等于反向丟包率,且獲得的正向PDV和反向PDV滿足forward_delay_stheta>reverse_delay_stheta(1+a);或判斷出正向丟包率大于反向丟包率,向同步模塊發(fā)送第一通知消息;
同步模塊,用于接收到第一通知消息,根據發(fā)送延遲Delay_Req報文的時間和接收到Delay_Req報文的時間進行頻率同步;
其中,forward_delay_stheta為正向PDV,reverse_delay_stheta為反向PDV,a為預設值。
本發(fā)明的裝置中,判斷模塊還用于:
判斷出獲得的正向PDV和反向PDV滿足forward_delay_stheta<reverse_delay_stheta(1+a);或判斷出正向丟包率等于反向丟包率,且獲得的正向PDV和反向PDV滿足forward_delay_stheta<reverse_delay_stheta(1+a);或判斷出正向丟包率小于反向丟包率,向同步模塊發(fā)送第二通知消息;
同步模塊還用于:
接收到第二通知消息,根據發(fā)送sync報文的時間和接收到sync報文的時間進行頻率同步。
本發(fā)明的裝置中,獲取模塊具體用于:
獲取第一預設時間內的正向PDV和反向PDV,和/或,獲取第一預設時間內接收到的各sync報文的序列號,接收到的各Delay_Req報文的序列號;根據各sync報文的序列號計算第一預設時間內的正向丟包率,根據各Delay_Req報文的序列號計算第一預設時間內的反向丟包率。
本發(fā)明的裝置中,獲取模塊具體用于:
獲取第一預設時間內的正向PDV和反向PDV,和/或,獲取第一預設時間內接收到的各sync報文的序列號,接收到的各Delay_Req報文的序列號;計算第一預設時間內預期接收到的sync報文的數量和第一預設時間內實際接收到的sync報文的數量之間的第一差值;計算第一差值和第一預設時間內預期接收到的sync報文的數量之間的比值得到正向丟包率;其中,第一預設 時間內預期接收到的sync報文的數量為第一預設時間和sync報文的發(fā)包速率之間的乘積,第一預設時間內實際接收到的sync報文的數量為獲得的各sync報文的序列號的數量,根據各Delay_Req報文的序列號計算第一預設時間內的反向丟包率。
本發(fā)明的裝置中,獲取模塊具體用于:
獲取第一預設時間內的正向PDV和反向PDV,和/或,獲取第一預設時間內接收到的各sync報文的序列號,接收到的各Delay_Req報文的序列號;根據各sync報文的序列號計算第一預設時間內的正向丟包率,計算第一預設時間內預期接收到的Delay_Req報文的數量和第一預設時間內實際接收到的Delay_Req報文的數量之間的第二差值;計算第二差值和第一預設時間內預期接收到的Delay_Req報文的數量之間的比值得到反向丟包率;
其中,第一預設時間內預期接收到的Delay_Req報文的數量為第一預設時間和Delay_Req報文的發(fā)包速率之間的乘積,第一預設時間內實際接收到的Delay_Req報文的數量為獲得各Delay_Req報文的序列號的數量。
本發(fā)明的裝置中,獲取模塊具體用于:
獲取發(fā)送各sync報文的時間、接收到各sync報文的時間、各sync報文的修正域CF、各sync報文的序列號、發(fā)送各Delay_Req報文的時間、接收到各Delay_Req報文的時間、各Delay_Req報文的CF和各Delay_Req報文的序列號;根據獲得的發(fā)送各sync報文的時間、接收到各sync報文的時間、各sync報文的CF和各sync報文的序列號計算正向時延差值,根據獲得的發(fā)送各Delay_Req報文的時間、接收到各Delay_Req報文的時間、各Delay_Req報文的CF和各Delay_Req報文的序列號計算反向時延差值;根據計算得到的正向時延差值計算第二預設時間內的正向時延差值累加,根據計算得到的反向時延差值計算第二預設時間內的反向時延差值累加,和/或,獲取第一預設時間內的正向丟包率和反向丟包率。
本發(fā)明的裝置中,獲取模塊具體用于:
獲取發(fā)送各sync報文的時間、接收到各sync報文的時間、各sync報文的修正域CF、各sync報文的序列號、發(fā)送各Delay_Req報文的時間、接收 到各Delay_Req報文的時間、各Delay_Req報文的CF和各Delay_Req報文的序列號;根據獲得的發(fā)送各sync報文的時間、接收到各sync報文的時間、各sync報文的CF和各sync報文的序列號計算各sync報文的正向時延,根據計算得到的各sync報文的正向時延計算正向時延差值;根據獲得的發(fā)送各Delay_Req報文的時間、接收到各Delay_Req報文的時間、各Delay_Req報文的CF和各Delay_Req報文的序列號計算各Delay_Req報文的反向時延,根據計算得到的各Delay_Req報文的反向時延計算反向時延差值;根據計算得到的正向時延差值計算第二預設時間內的正向時延差值累加,根據計算得到的反向時延差值計算第二預設時間內的反向時延差值累加,和/或,獲取第一預設時間內的正向丟包率和反向丟包率。
本發(fā)明的裝置中,獲取模塊具體用于:
獲取發(fā)送各sync報文的時間、接收到各sync報文的時間、各sync報文的修正域CF、各sync報文的序列號、發(fā)送各Delay_Req報文的時間、接收到各Delay_Req報文的時間、各Delay_Req報文的CF和各Delay_Req報文的序列號;按照公式forward_delay(n)=T2(n)-T1(n)-forward_CF(n)計算各sync報文的正向時延;其中,forward_delay(n)為序列號為n的sync報文的正向時延,T2(n)為接收到序列號為n的sync報文的時間,T1(n)為發(fā)送序列號為n的sync報文的時間,forward_CF(n)為序列號為n的sync報文的CF,n為大于或等于1的整數;根據計算得到的各sync報文的正向時延計算正向時延差值;按照公式reverse_delay(n)=T4(n)-T3(n)-reverse_CF(n)計算各Delay_Req報文的反向時延;其中,reverse_delay(n)為序列號為n的Delay_Req報文的反向時延,T4(n)為接收到序列號為n的Delay_Req報文的時間,T3(n)為發(fā)送序列號為n的Delay_Req報文的時間,reverse_CF(n)為序列號為n的Delay_Req報文的CF,根據計算得到的各Delay_Req報文的反向時延計算反向時延差值;根據計算得到的正向時延差值計算第二預設時間內的正向時延差值累加,根據計算得到的反向時延差值計算第二預設時間內的反向時延差值累加,和/或,獲取第一預設時間內的正向丟包率和反向丟包率。
本發(fā)明的裝置中,獲取模塊具體用于:
獲取發(fā)送各sync報文的時間、接收到各sync報文的時間、各sync報文 的修正域CF、各sync報文的序列號、發(fā)送各Delay_Req報文的時間、接收到各Delay_Req報文的時間、各Delay_Req報文的CF和各Delay_Req報文的序列號;按照公式forward_delay(n)=T2(n)-T1(n)-forward_CF(n)計算各sync報文的正向時延;其中,forward_delay(n)為序列號為n的sync報文的正向時延,T2(n)為接收到序列號為n的sync報文的時間,T1(n)為發(fā)送序列號為n的sync報文的時間,forward_CF(n)為序列號為n的sync報文的CF,n為大于或等于1的整數;按照公式forward_delay_theta(n+1)=|forward_delay(n+1)-forward_delay(n)|計算正向時延差值;其中,forward_delay_theta(n+1)為計算得到的第(n+1)個正向時延差值,forward_delay(n+1)為序列號為(n+1)的sync報文的正向時延,forward_delay(n)為序列號為n的sync報文的正向時延;按照公式reverse_delay(n)=T4(n)-T3(n)-reverse_CF(n)計算各Delay_Req報文的反向時延;其中,reverse_delay(n)為序列號為n的Delay_Req報文的反向時延,T4(n)為接收到序列號為n的Delay_Req報文的時間,T3(n)為發(fā)送序列號為n的Delay_Req報文的時間,reverse_CF(n)為序列號為n的Delay_Req報文的CF,按照公式reverse_delay_theta(n+1)=|reverse_delay(n+1)-reverse_delay(n)|計算反向時延差值;其中,reverse_delay_theta(n+1)為計算得到的第(n+1)個反向時延差值,reverse_delay(n+1)為序列號為(n+1)的Delay_Req報文的反向時延,reverse_delay(n)為序列號為n的Delay_Req報文的反向時延;根據計算得到的正向時延差值計算第二預設時間內的正向時延差值累加,根據計算得到的反向時延差值計算第二預設時間內的反向時延差值累加,和/或,獲取第一預設時間內的正向丟包率和反向丟包率。
本發(fā)明的裝置中,獲取模塊還用于:
在第三預設時間內獲取第一預設時間內的正弦PDV和反向PDV,和/或,在第三預設時間內獲取第一預設時間內的正向丟包率和反向丟包率;
判斷模塊還用于:
判斷出在第三預設時間內獲得的正向PDV和反向PDV滿足forward_delay_stheta>reverse_delay_stheta(1+a);或判斷出在第三預設時間內獲得的正向丟包率大于反向丟包率;或判斷出在第三預設時間內獲得的正向 丟包率均等于反向丟包率,且在第三預設時間內獲得的正向PDV和反向PDV滿足forward_delay_stheta>reverse_delay_stheta(1+a),向同步模塊發(fā)送第一通知消息。
需要說明的是,以上所述的實施例僅是為了便于本領域的技術人員理解而已,并不用于限制本發(fā)明的保護范圍,在不脫離本發(fā)明的發(fā)明構思的前提下,本領域技術人員對本發(fā)明所做出的任何顯而易見的替換和改進等均在本發(fā)明的保護范圍之內。