PTP BMCA

<From IEEE-1588 clause 9.3>

TL;DR

BMCA主要分為兩部分:

  1. 使用data set comparison algorithm势木,得出每個port上最優(yōu)的announce msg蛛倦,記為E_{rbest},以及所有port中最優(yōu)的announce msg啦桌,記為E_{best}溯壶。
  2. 使用state decision algorithm,根據(jù)port自己的E_{rbest}甫男,以及clock的E_{best}且改,defaultDS(主要是其中的clock quality信息),得出port的state machine應(yīng)該收到的BMC event板驳。

1. Selection of the best master clock algorithm

PTP中有2種best master clock algorithm:

  • default mechanism(默認(rèn))又跛,見9.3.2, 9.3.3, 9.3.4
  • alternate bmca(如果在profile中指定)。

alternate bmca algorithm在協(xié)議中沒有明確規(guī)定若治,支持自行定義慨蓝。
但是,任何的alternate bmca端幼,都應(yīng)該滿足以下要求:

  1. algorithm的output應(yīng)該提供一個推薦state礼烈,用于在9.2.5, 9.2.6.8, 9.2.6.9中提到的PTP state machine和state decision event中。 推薦的state應(yīng)該滿足9.2.4中的要求婆跑。
    可選的此熬,alternate algorithm可以是一個dynamic algorithm,也可以是一個簡單地指定port的推薦state的static algorithm滑进。
  2. algorithm的output應(yīng)該提供用于更新data set的state decision codes(見9.3.5)摹迷,以及所有更新中需要用到的data。
    decision code如下:
    1. M1:此port為MASTER state郊供,因為它在clockClass 1~127的node上峡碉。且它是整個system的grandmaster port。
    2. M2:此port為MASTER state驮审,因為它在clockClass 128或以上的node上鲫寄。且它是整個system的grandmaster port吉执。
    3. M3:此port為MASTER state,但它不在grandmaster clock上地来。
    4. S1:此port為SLAVE state戳玫。
    5. P1:此port為PASSIVE state,因為它在clockClass 1~127的node上未斑。It is either not on the grandmaster clock of the system or is PASSIVE to break a timing loop
    6. P2:此port為PASSIVE state咕宿,因為它在clockClass 128或以上的node上。It is PASSIVE to break a timing loop

BMC algorithm運(yùn)行在domain的每一個OC和BC的所有port上蜡秽。它持續(xù)地運(yùn)行府阀,持續(xù)地根據(jù)network或clock的變化進(jìn)行調(diào)整。

2. BMC algorithm

overview

本節(jié)介紹local clock如何確定所有clock中哪一個是最好的芽突。根據(jù)這個結(jié)果试浙,它進(jìn)一步確認(rèn)其port的state;見Table 10寞蚌。
本算法在domain的每一個clock上獨(dú)立地運(yùn)行田巴,換句話說,clock不通過協(xié)商確定誰是master挟秤,它們通過自己的計算給出結(jié)論壹哺。
本算法避免出現(xiàn)選出2個master,0個master艘刚,或有故障的1個master的情況管宵。

BMCA由2部分組成:

  1. data set comparison algorithm,確定兩個clock中哪個更好昔脯。詳見9.3.4
  2. 一個可以計算出每個port的合理state的算法啄糙。詳見9.3.3笛臣,得出的結(jié)果在圖23,24,26中稱為"recommended state"

data set的比較云稚,圍繞clock的各個port上收到的announce message中攜帶的信息,和clock的defaultDS中的信息展開沈堡。

general BMC specifications

一個ordinary or boundary clock C_0静陈,有 defaultDS data set D_0,以及N個ports诞丽。在它上進(jìn)行BMC algorithm鲸拥,內(nèi)容如下:

  1. 對于C_0的每一個port "r",來自其他clock的qualified Announce messages被port "r"接收后僧免,需要進(jìn)行比較刑赶。
  2. 對于C_0的每一個port "r",要通過data set comparison algorithm懂衩,決定出這些message中最好的一條E_{rbest}
  3. 對于C_0上的所有N個port撞叨,要通過data set comparison algorithm金踪,從N個E_{rbest}中選出最好的message,E_{best}牵敷。
  4. 對于C_0上的每個port胡岔,要用state decision algorithm,根據(jù)E_{best}枷餐、E_{rbest}靶瘸、D_0的defaultDS,決定出給每個port的state machine發(fā)什么BMC event毛肋。
  5. 當(dāng)收到alternateMasterFlag為TRUE的announce message時怨咪,應(yīng)當(dāng)把它丟棄。
computation of E_{rbest}

每個port獨(dú)立地計算E_{rbest}村生。
E_{best}的選擇惊暴,state decision algorithm的運(yùn)行,任何state change趁桃,這些操作都是atomic的辽话;詳見3.1.2

計算E_{rbest}時,port "r"應(yīng)該:

  1. 只考慮port "r"上接收的qualified Announce messages
  2. include來自一個foreign master至少2條qualified Announce messages(如果有的話)卫病,然后從對應(yīng)的foreignMasterDS中刪掉沒有被選為E_{rbest}的msg的information油啤。
  3. 若port "r"為SLAVE state,則Include之前計算出的E_{rbest}結(jié)果蟀苛。但若有新的qualified Announce message被port "r"接收益咬,則應(yīng)該轉(zhuǎn)而考慮它。 若在選擇了之前的E_{rbest}的port "r"上發(fā)生了ANNOUNCE_RECEIPT_TIMEOUT_EXPIRES event帜平,那么這個E_{rbest}就不應(yīng)該被include幽告。

在資源允許的情況下,應(yīng)該從盡可能多的foreign master clock上include盡可能多的Announce messages裆甩。

foreignMasterDS data set specifications

foreignMasterDS用于qualifying Announce messages冗锁。
此data set包含2個member:

  • foreignMasterDS.foreignMasterPortIdentity
    唯一指定一個foreign master clock
  • foreignMasterDS.foreignMasterAnnounceMessages
    在FOREIGN_MASTER_TIME_WINDOW內(nèi),從一個foreign master clock處收到的Announce messages的數(shù)量嗤栓。

作為保留Announce message的標(biāo)準(zhǔn)冻河,規(guī)定了2個參數(shù):

  • FOREIGN_MASTER_TIME_WINDOW: 4 announceInterval.
  • FOREIGN_MASTER_THRESHOLD: 2 Announce messages received FOREIGN_MASTER_TIME_WINDOW。

foreignMasterDS應(yīng)該至少能保存5條foreign master的record茉帅。

qualification of Announce messages

對port "r"上接收的Announce message "S" qualify的過程如下:

  1. 若S來自同clock叨叙,則停止qualify
  2. 若S不是port "r"上接收的最新的announce message,停止qualify
  3. 若來自foreign master clock F的announce message數(shù)量堪澎,在FOREIGN_MASTER_TIME_WINDOW內(nèi)少于FOREIGN_MASTER_THRESHOLD擂错,則停止qualify。
    (這是為了只處理來自stable foreign master的信息)
  4. 若S的stepsRemoved不小于255樱蛤,停止qualify
    (主要是為了區(qū)別rogue frame钮呀。在使用PATH_TRACE的時候桃犬,這個條件是必要的。這樣做可能會導(dǎo)致在真有這么大的network中導(dǎo)致failure行楞,但這種情況確實很罕見)
  5. 否則攒暇,S被qualifiied。

3. State decision algorithm

詳見下圖子房。
當(dāng)一個decision被得出形用,則local clock需要根據(jù)9.3.5中的規(guī)則來更新本地data set。
我們通過data set comparison algorithm進(jìn)行D_0证杭、E_{best}E_{rbest}之間的比較田度。 對于下圖中的decision block "E_{best}better by topology thanE_{rbest}",它們之間的比較就應(yīng)該用data set comparisom algorithm解愤。

State decision algorithm

4. Data set comparison algorithm

BMCA通過比較clock的data set來比較它們的好壞镇饺。
data set comparison的具體流程見下面2圖。其中兩個data set分別稱為set A送讲、set B奸笤。data set中的值的來源見下表。
如果在比較D_0哼鬓、E_{best}E_{rbest}中的任意兩個時监右,其中一個為空,則另一個非空的勝出异希。 D_0一般不會為空健盒,但是E_{best}E_{rbest}可能為空。

參數(shù) source of E_{best} and E_{rbest} source of D_0
GM priority1 grandmasterPriority1 defaultDS.priority1
GM identity grandmasterIdentity defaultDS.clockIdentity
GM class grandmasterClockQuality.clockClass defaultDS.clockQuality. clockClass
GM accuracy grandmasterClockQuality.clockAccuracy defaultDS.clockQuality. clockAccuracy
GM offsetScaledLogVariance grandmasterClockQuality. offsetScaledLogVariance defaultDS.clockQuality. offsetScaledLogVariance
GM priority2 grandmasterPriority2 defaultDS.priority2
Steps Removed stepsRemoved 0
Identity of Senders sourcePortIdentity defaultDS.clockIdentity
Identity of Receiver parentDS.portIdentity (of portDS data set of port receiving message) defaultDS.clockIdentity
Port Number of Receivers parentDS.portIdentity.portNumber (of portDS data set of port receiving message) 0
Data set comparison algorithm, part 1
Data set comparison algorithm, part 2

上圖中的error不會用于state decision称簿,也不會用于data set update扣癣,但對于錯誤診斷來說應(yīng)該有用。error1說明message收發(fā)在同一個port憨降,error2說明2條message相同父虑,或者是來自相同grandmaster的先后2條msg。

5. Update of data sets

根據(jù)不同的state decision code券册,進(jìn)行對應(yīng)的data set 調(diào)整频轿。
具體見協(xié)議9.3.5

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末垂涯,一起剝皮案震驚了整個濱河市烁焙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌耕赘,老刑警劉巖骄蝇,帶你破解...
    沈念sama閱讀 219,589評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異操骡,居然都是意外死亡九火,警方通過查閱死者的電腦和手機(jī)赚窃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評論 3 396
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來岔激,“玉大人勒极,你說我怎么就攤上這事÷嵌Γ” “怎么了辱匿?”我有些...
    開封第一講書人閱讀 165,933評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長炫彩。 經(jīng)常有香客問我匾七,道長,這世上最難降的妖魔是什么江兢? 我笑而不...
    開封第一講書人閱讀 58,976評論 1 295
  • 正文 為了忘掉前任昨忆,我火速辦了婚禮,結(jié)果婚禮上杉允,老公的妹妹穿的比我還像新娘邑贴。我一直安慰自己,他們只是感情好叔磷,可當(dāng)我...
    茶點故事閱讀 67,999評論 6 393
  • 文/花漫 我一把揭開白布痢缎。 她就那樣靜靜地躺著,像睡著了一般世澜。 火紅的嫁衣襯著肌膚如雪独旷。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,775評論 1 307
  • 那天寥裂,我揣著相機(jī)與錄音嵌洼,去河邊找鬼。 笑死封恰,一個胖子當(dāng)著我的面吹牛麻养,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播诺舔,決...
    沈念sama閱讀 40,474評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼鳖昌,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了低飒?” 一聲冷哼從身側(cè)響起许昨,我...
    開封第一講書人閱讀 39,359評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎褥赊,沒想到半個月后糕档,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,854評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡拌喉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,007評論 3 338
  • 正文 我和宋清朗相戀三年速那,在試婚紗的時候發(fā)現(xiàn)自己被綠了俐银。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,146評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡端仰,死狀恐怖捶惜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情荔烧,我是刑警寧澤售躁,帶...
    沈念sama閱讀 35,826評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站茴晋,受9級特大地震影響陪捷,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜诺擅,卻給世界環(huán)境...
    茶點故事閱讀 41,484評論 3 331
  • 文/蒙蒙 一市袖、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧烁涌,春花似錦苍碟、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,029評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至抒钱,卻和暖如春蜓肆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背谋币。 一陣腳步聲響...
    開封第一講書人閱讀 33,153評論 1 272
  • 我被黑心中介騙來泰國打工仗扬, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蕾额。 一個月前我還...
    沈念sama閱讀 48,420評論 3 373
  • 正文 我出身青樓早芭,卻偏偏與公主長得像,于是被迫代替她去往敵國和親诅蝶。 傳聞我的和親對象是個殘疾皇子退个,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,107評論 2 356

推薦閱讀更多精彩內(nèi)容