中文字幕无码久久精品,13—14同岁无码A片,99热门精品一区二区三区无码,菠萝菠萝蜜在线观看视频高清1

您當(dāng)前的位置是:  首頁(yè) > 資訊 > 國(guó)內(nèi) >
 首頁(yè) > 資訊 > 國(guó)內(nèi) >

完整SIP/SDP媒體協(xié)商概論-關(guān)于ICE流程結(jié)束處理

2020-04-28 10:46:35   作者:   來(lái)源:CTI論壇   評(píng)論:0  點(diǎn)擊:


  筆者在前面的兩篇文章中分別介紹了STUN客戶端處理流程和服務(wù)器端處理流程。在本文章中,我們將針對(duì)ICE的最后一部分的處理進(jìn)行總結(jié),這個(gè)章節(jié)包括ICE的流程結(jié)束的處理。ICE流程結(jié)束需要從兩種部署場(chǎng)景的agent來(lái)討論。一種是全場(chǎng)景部署agent的處理流程,另外一種是輕量級(jí)的部署場(chǎng)景agent處理流程。另外,ICE結(jié)束流程的最后還要進(jìn)行對(duì)封凍候選地址的處理。和前面的文章一樣,筆者這里仍然還是重點(diǎn)討論全場(chǎng)景部署agent的處理流程,然后針對(duì)輕量級(jí)場(chǎng)景中agent的部署進(jìn)行討論,最后對(duì)ICE結(jié)束對(duì)封凍候選地址進(jìn)行討論。
  1、全部署場(chǎng)景處理流程
  針對(duì)全場(chǎng)景部署agent的處理流程中,關(guān)于ICE結(jié)束的流程涉及了推薦配對(duì)和狀態(tài)機(jī)更新兩個(gè)部分的內(nèi)容。其中,推薦配對(duì)是由被控方agent產(chǎn)生。接下來(lái),筆者會(huì)繼續(xù)討論推薦配對(duì)的處理流程。
  2、推薦配對(duì)
  剛才筆者已經(jīng)提到,推薦配對(duì)是由被控方產(chǎn)生的。ICE通過(guò)Regular Nomination(正常推薦方式)或Aggressive Nomination(主動(dòng)推薦方式)來(lái)選擇推薦配對(duì)。選擇何種方式對(duì)推薦配對(duì)進(jìn)行算法處理,取決于對(duì)端pper的部署場(chǎng)景。如果對(duì)端peer支持的是一個(gè)輕量級(jí)部署場(chǎng)景,agent必須使用Regular Nomination算法來(lái)處理。如果對(duì)端peer使用了ice-options屬性(ICE options),agent不能理解此選項(xiàng)的話,agent必須使用Regular Nomination算法。如果對(duì)端peer支持全場(chǎng)景部署,并且沒(méi)有使用任何ICE選項(xiàng)或者使用了ICE選項(xiàng)(但是,agent可以理解),agent可以選擇使用Regular Nomination或者Aggressive Nomination算法。但是,因?yàn)镽egular Nomination的穩(wěn)定性比Aggressive Nomination要好,所以,RFC5245規(guī)范推薦使用Regular Nomination算法。下面,筆者分別對(duì)這兩種算法進(jìn)行完整介紹。
  圖片來(lái)自于互聯(lián)網(wǎng)
  當(dāng)推薦配對(duì)使用Regular Nomination時(shí),agent會(huì)讓一些檢查流程完成處理,在檢查的每個(gè)流程中會(huì)忽略掉USE-CANDIDATE屬性。針對(duì)一個(gè)媒體流構(gòu)件來(lái)說(shuō),一旦一個(gè)或多個(gè)檢查成功完成,成功檢查完成后會(huì)生成有效配對(duì),有效配對(duì)然后添加到有效列表中。Agent會(huì)讓檢查繼續(xù)執(zhí)行,直到檢查遇到某些評(píng)判標(biāo)準(zhǔn),然后根據(jù)某些評(píng)判標(biāo)準(zhǔn)選擇有效配對(duì)。停止檢查的評(píng)判標(biāo)準(zhǔn)和評(píng)估有效配對(duì)標(biāo)準(zhǔn)完全取決于邏輯優(yōu)化本身自己。
  當(dāng)被控方agent選擇了一對(duì)有效配對(duì)時(shí),它會(huì)重復(fù)這個(gè)生成有效配對(duì)的檢查,并且這次使用USE-CANDIDATE屬性。因?yàn)榍懊娴臋z查是成功的,所以,理論上講,這個(gè)檢查應(yīng)該也是一個(gè)成功的檢查。針對(duì)檢查的邏輯處理方式會(huì)對(duì)配對(duì)增加一個(gè)推薦標(biāo)識(shí)(nominated flag),并且僅支持這個(gè)配對(duì)。因此,針對(duì)每個(gè)媒體構(gòu)件來(lái)說(shuō),在有效列表中僅有一個(gè)單個(gè)支持了推薦標(biāo)識(shí)配對(duì),并且,當(dāng)檢查列表的狀態(tài)切換到完成狀態(tài)后,ICE會(huì)選擇正確配對(duì)來(lái)針對(duì)媒體構(gòu)件發(fā)送和接收媒體流。根據(jù)以上介紹,讀者可以看出,因?yàn)閍gent可以控制檢查停止和檢查的評(píng)判標(biāo)準(zhǔn),因此,Regular Nomination具有更大的靈活性。這里只有一個(gè)要求,agent最后選擇一個(gè)配對(duì)或者只能選擇一個(gè)候選配對(duì),然后針對(duì)此配對(duì)(支持USE-CANDIDATE屬性)生成一個(gè)檢查。通過(guò)增加拓展支持,Regular Nomination同時(shí)提高了ICE的適應(yīng)能力,可以支持多種部署場(chǎng)景的變化。Regular Nomination具有更高的穩(wěn)定性,它可以允許雙方agent通過(guò)單個(gè)配對(duì)實(shí)現(xiàn)媒體支持,無(wú)需其他臨時(shí)選項(xiàng)支持(Aggressive Nomination需要臨時(shí)選項(xiàng)支持)。但是,Regular Nomination也有其缺點(diǎn),因?yàn)镽egular Nomination需要額外檢查完成,因此,Regular Nomination肯定會(huì)增加處理時(shí)延。通過(guò)以上內(nèi)容的介紹,筆者描述了Regular Nomination算法的處理方式,接下來(lái),筆者介紹一下Aggressive Nomination算法的使用方式。
  當(dāng)使用Aggressive Nomination算法時(shí),在agent發(fā)生的每個(gè)檢查中,被控方agent會(huì)包含一個(gè)USE-CANDIDATE屬性,針對(duì)一個(gè)媒體構(gòu)件的檢查中,一旦第一個(gè)檢查是成功的,這個(gè)配對(duì)就會(huì)被添加到有效列表中,然后設(shè)置一個(gè)推薦標(biāo)識(shí)。在有效列表中,所有構(gòu)件的配對(duì)都設(shè)置了推薦標(biāo)識(shí)后,媒體開(kāi)始通過(guò)最高優(yōu)先級(jí)的推薦標(biāo)識(shí)配對(duì)進(jìn)行傳輸。但是,因?yàn)閍gent在所有的檢查中都包含了USE-CANDIDATE屬性,在所有的檢查中,有可能部分其他的檢查還沒(méi)有完成,這樣就會(huì)引起其他有效配對(duì)會(huì)產(chǎn)生自己的推薦標(biāo)識(shí)設(shè)置。因?yàn),ICE總是從有效列表中選擇最高優(yōu)先級(jí)推薦標(biāo)識(shí)的候選配對(duì)來(lái)進(jìn)行媒體傳輸。因此,當(dāng)ICE檢查完成時(shí),已選擇的配對(duì)可能實(shí)際上暫時(shí)發(fā)生了修改,這樣就會(huì)導(dǎo)致一系列的臨時(shí)選擇作為一個(gè)緩沖(三秒延遲規(guī)則,后面講到),直到ICE檢查穩(wěn)定后,這樣的狀態(tài)才能結(jié)束。因?yàn)檫@個(gè)問(wèn)題,因此,相對(duì)于Regular Nomination算法來(lái)說(shuō),Aggressive Nomination缺乏一定的穩(wěn)定性。但是它不會(huì)增加檢查延時(shí)。
  3、更新ICE處理狀態(tài)
  無(wú)論是對(duì)于主控方agent還是被控方agent來(lái)說(shuō),ICE的處理狀態(tài)取決于在有效列表中標(biāo)識(shí)候選配對(duì)的當(dāng)前狀態(tài)和檢查列表的狀態(tài)。任何時(shí)間內(nèi),以下五種場(chǎng)景可能發(fā)生在這些處理狀態(tài)中,F(xiàn)在,我們具體介紹一下這五種可能發(fā)生的場(chǎng)景。
  對(duì)媒體流來(lái)說(shuō),如果在有效列表中沒(méi)有已設(shè)推薦標(biāo)識(shí)的配對(duì),并且檢查列表狀態(tài)是正在運(yùn)行中,ICE處理將會(huì)繼續(xù)執(zhí)行。
  對(duì)媒體流來(lái)說(shuō),如果在有效列表中至少有一對(duì)已設(shè)推薦標(biāo)識(shí)的配對(duì),并且檢查列表狀態(tài)是正在運(yùn)行中,則繼續(xù)進(jìn)行以下處理流程:
  • Agent必須移除在檢查列表中所有等待狀態(tài)和封凍狀態(tài)的配對(duì),并且為同樣component(構(gòu)件)啟動(dòng)一個(gè)triggered check queue,作為標(biāo)識(shí)配支持此媒體流。
  • 如果在檢查列表中的一個(gè)In-Progress配對(duì)作為標(biāo)識(shí)配對(duì)支持同樣構(gòu)件的話,如果配對(duì)的優(yōu)先級(jí)低于最低優(yōu)先級(jí)標(biāo)識(shí)配對(duì),針對(duì)此構(gòu)件來(lái)說(shuō),agent應(yīng)該清除檢查的重傳處理流程。
  • 對(duì)于至少一個(gè)媒體流的每個(gè)構(gòu)件來(lái)說(shuō),在有效列表中一旦至少有一對(duì)標(biāo)識(shí)配對(duì),并且檢查列表的狀態(tài)是正在運(yùn)行中的狀態(tài),需要進(jìn)一步執(zhí)行以下流程:
  • Agent必須為此媒體的檢查列表進(jìn)行狀態(tài)修改,修改其狀態(tài)為完成狀態(tài)。
  • Agent必須繼續(xù)對(duì)任何檢查做出響應(yīng),這些檢查可能仍然是agent用來(lái)接收媒體的響應(yīng),并且,如果STUN 服務(wù)器端流程要求的話,agent必須執(zhí)行triggered check。
  • Agent必須為檢查列表繼續(xù)重傳任何In-Progress 檢查。
  • Agent可以開(kāi)始為媒體流傳輸媒體,為全場(chǎng)場(chǎng)景部署agent和輕量級(jí)場(chǎng)景部署agent發(fā)送媒體的處理流程將在后續(xù)文章中介紹。
  一旦每個(gè)檢查列表的狀態(tài)是完成狀態(tài),要求執(zhí)行以下流程:
  Agent設(shè)置所有的ICE處理狀態(tài)是完成狀態(tài)。
  如果agent是正在處于被控狀態(tài),此agent會(huì)為每個(gè)媒體流的每個(gè)構(gòu)件檢查最高優(yōu)先級(jí)已標(biāo)識(shí)的候選配對(duì)。如果它們中的任何候選配對(duì)不同于在最近offer/answer交互消息在的默認(rèn)候選配對(duì),被控方agent必須生成一個(gè)更新的offer。具體的生成方式根據(jù)后續(xù)offer/answer交互模式的處理流程進(jìn)行。
  如果被控方agent正在使用Aggressive Nomination,當(dāng)配對(duì)選擇時(shí),它可能導(dǎo)致多個(gè)更新offers。Agent可以延遲發(fā)送此更新的offer,通過(guò)一定的時(shí)間設(shè)置進(jìn)行控制(RFC5245規(guī)范建議設(shè)置為一秒鐘),這個(gè)時(shí)間可以保證其已選配對(duì)進(jìn)入穩(wěn)定狀態(tài)。
  如果檢查列表的狀態(tài)是失敗狀態(tài),ICE將不能為完成針對(duì)媒體流的處理。正確的處理方式依賴于對(duì)其他媒體流的檢查列表狀態(tài):
  • 如果所有的檢查列表的狀態(tài)是失敗狀態(tài),所有ICE處理的狀態(tài)將認(rèn)為是失敗狀態(tài),并且,agent應(yīng)該認(rèn)為此會(huì)話是一個(gè)失敗的會(huì)話,agent不應(yīng)該重新啟動(dòng)ICE處理流程,被控方agent應(yīng)該結(jié)束整個(gè)會(huì)話。
  • 針對(duì)其他媒體流來(lái)說(shuō),如果在檢查列表中至少有一個(gè)檢查的狀態(tài)是完成狀態(tài),被控方agent應(yīng)該在其更新的offer中從此會(huì)話中移除此失敗的媒體流。
  • 針對(duì)其他媒體流來(lái)說(shuō),如果在檢查列表中沒(méi)有任何檢查是完成狀態(tài),但是,至少有一個(gè)檢查是正在運(yùn)行狀態(tài),agent應(yīng)該讓ICE進(jìn)行執(zhí)行。
  • 到此為止,關(guān)于ICE結(jié)束處理中全場(chǎng)景部署agent的處理流程就已經(jīng)結(jié)束。接下來(lái),筆者將討論針對(duì)輕量級(jí)部署場(chǎng)景agent對(duì)ICE結(jié)束流程的處理。
  4、輕量級(jí)部署場(chǎng)景處理流程
  針對(duì)輕量級(jí)部署場(chǎng)景agent來(lái)說(shuō),ICE結(jié)束流程相對(duì)比較直接。這里有兩個(gè)情況需要注意:
  • 部署場(chǎng)景是輕量級(jí)的部署場(chǎng)景,對(duì)端peer是全場(chǎng)景部署場(chǎng)景
  • 部署場(chǎng)景是輕量級(jí)部署場(chǎng)景,對(duì)端peer也是輕量級(jí)部署場(chǎng)景
  ICE結(jié)束處理會(huì)給agent帶來(lái)一個(gè)后續(xù)影響,agent能夠清除任何已分配的候選地址(ICE沒(méi)有使用這些候選地址)。關(guān)于清除已分配候選地址的處理方式,筆者在本文章的后續(xù)部分介紹。
  如果對(duì)端peer是全部署場(chǎng)景的話,這種情況下,agent將會(huì)收到peer的連接檢查。當(dāng)agent已經(jīng)收到來(lái)一個(gè)連接檢查,這個(gè)檢查中包含了針對(duì)一個(gè)媒體流的每個(gè)構(gòu)件所支持的USE-CANDIDATE屬性,此媒體流的ICE處理狀態(tài)將要從正在運(yùn)行狀態(tài)遷移到完成狀態(tài)。當(dāng)針對(duì)所有媒體流的ICE處理狀態(tài)是完成狀態(tài)的話,所有ICE處理狀態(tài)都是完成狀態(tài)。輕量級(jí)部署從來(lái)不自己決定針對(duì)媒體流的ICE流程失敗處理,而是寧愿讓全場(chǎng)景部署的agent來(lái)決定。在后續(xù)的offer中,針對(duì)失敗的媒體流,全場(chǎng)景部署將做出決定,移除或重新啟動(dòng)這些失敗的媒體流。
  如果對(duì)端peer是輕量級(jí)peer的話,ICE結(jié)束處理的流程相對(duì)比較復(fù)雜一些。一旦offer/answer交互模式完成后,雙方agent都會(huì)檢查它們的候選地址和它的peer的候選地址。針對(duì)每個(gè)媒體流,每個(gè)agent將會(huì)使用自己候選地址和對(duì)端peer的候選地址進(jìn)行配對(duì)處理。當(dāng)它們具有同樣的component,使用同樣的傳輸協(xié)議(RFC5245使用UDP傳輸協(xié)議),并且來(lái)自于同一IP地址類型(IPv4或IPV6),那么這兩個(gè)候選地址就會(huì)配對(duì)。在生成配對(duì)后,針對(duì)每個(gè)媒體流構(gòu)件中的配對(duì)數(shù)量有兩種處理方式:
  如果在每個(gè)媒體構(gòu)件中,有一個(gè)單個(gè)配對(duì)的話,此配對(duì)會(huì)添加到有效列表中。如果一個(gè)媒體的所有構(gòu)件只有一個(gè)配對(duì)的話,針對(duì)此媒體流的ICE處理狀態(tài)將會(huì)設(shè)置為完成狀態(tài)。如果所有媒體流的ICE處理狀態(tài)是完成狀態(tài)的話,所有ICE處理狀態(tài)將會(huì)設(shè)置為完成狀態(tài)。這種部署環(huán)境經(jīng)常會(huì)發(fā)生在IPv4的網(wǎng)絡(luò)環(huán)境中。
  如果在每個(gè)構(gòu)件中,有多于一個(gè)以上的配對(duì)的話,需要執(zhí)行以下幾個(gè)步驟:
  • Agent必須基于本地策略選擇一個(gè)配對(duì)。因?yàn),這種情況僅發(fā)生在IPv6的環(huán)境中,RFC5245推薦agent需要根據(jù)RFC6724的處理流程選擇一個(gè)單個(gè)配對(duì)。
  • Agent會(huì)在有效列表中為每個(gè)構(gòu)件添加此已選配對(duì)。然后允許開(kāi)始發(fā)送媒體。這里要注意,但是在實(shí)際環(huán)境中,可能雙方agent已選擇了不同的配對(duì)。
  為了保持雙方agent的配對(duì)的一致性,被控方agent必須發(fā)送一個(gè)更新的offer,在這個(gè)更新的offer中包含一個(gè)remote-candidates屬性設(shè)置。關(guān)于更新offer的發(fā)送處理流程,筆者在將來(lái)的討論中介紹。
  當(dāng)offer發(fā)送以后,agent一定不能更新ICE處理狀態(tài)。針對(duì)所有媒體流,如果此后續(xù)offer完成處理,主控方agent必須修改ICE處理流程狀態(tài)為完成狀態(tài),并且設(shè)置所有ICE處理狀態(tài)為完成狀態(tài)。主控方agent的狀態(tài)設(shè)置則基于輕量級(jí)部署場(chǎng)景的流程來(lái)進(jìn)行處理。
  5、封凍候選地址
  在ICE結(jié)束處理的流程中,包括兩種對(duì)后選地址的封凍處理。一種是全場(chǎng)景部署中封凍處理,另外一種是輕量級(jí)的部署場(chǎng)景封凍處理。接下來(lái),筆者分別對(duì)其流程進(jìn)行說(shuō)明。
  首先介紹全場(chǎng)景中關(guān)于封凍處理的流程。ICE結(jié)束處理的流程要求agent繼續(xù)監(jiān)聽(tīng)STUN請(qǐng)求,一旦對(duì)其媒體流的處理完成后,繼續(xù)對(duì)媒體流生成triggered checks。RFC5245介紹了一種規(guī)則,規(guī)則描述了當(dāng)agent處于安全狀態(tài)時(shí),它在一個(gè)候選地址(ICE沒(méi)有選擇此候選地址,然后釋放候選地址)終止發(fā)送或接收檢查。
  當(dāng)SIP網(wǎng)絡(luò)中使用了ICE,并且offer被經(jīng)過(guò)分叉處理發(fā)送到多個(gè)接收方時(shí),ICE將會(huì)使用同樣的本地候選地址并行和每個(gè)自己的answer進(jìn)行處理。對(duì)所有使用那些候選地址來(lái)傳輸媒體流的peers來(lái)說(shuō),一旦ICE處理流程狀態(tài)達(dá)到完成狀態(tài),agent應(yīng)該等待另外三秒鐘,然后agent可以終止對(duì)檢查的響應(yīng),或在那個(gè)候選地址生成一個(gè)triggered checks。Agent可以在那個(gè)等待時(shí)間釋放候選地址。注意,服務(wù)器端反射候選地址的封凍處理從來(lái)不會(huì)被明確聲明,keepalive的缺失會(huì)啟動(dòng)封凍處理流程發(fā)生。三秒延遲的規(guī)則策略可以處理如下場(chǎng)景,具體來(lái)說(shuō),ICE已經(jīng)完成后,agent使用了aggressive nomination算法,然后對(duì)已選配對(duì)進(jìn)行快速修改。
  輕量級(jí)部署場(chǎng)景中ICE結(jié)束處理相對(duì)比較簡(jiǎn)單。對(duì)所有使用那些候選地址來(lái)傳輸媒體流的peers來(lái)說(shuō),一旦ICE處理流程狀態(tài)達(dá)到完成狀態(tài),輕量級(jí)部署場(chǎng)景可以釋放任何沒(méi)有被ICE選擇的候選地址。
  完成了關(guān)于ICE的討論以后,筆者將進(jìn)一步討論關(guān)于后續(xù)offer/answer交互中的offer生成,answer接收,更新offer等細(xì)節(jié)。
  參考資料:
  https://www.rfc-editor.org/rfc/rfc6724
  https://www.rfc-editor.org/rfc/rfc3484
  https://www.rfc-editor.org/rfc/rfc5245.html
  https://datatracker.ietf.org/meeting/93/materials/slides-93-mmusic-3
  https://bugzilla.mozilla.org/show_bug.cgi?id=1034964
 
  關(guān)注微信公眾號(hào):asterisk-cn,獲得有價(jià)值的Asterisk行業(yè)分享
  Asterisk freepbx FreeSBC技術(shù)文檔: www.freepbx.org.cn
  融合通信/IPPBX商業(yè)解決方案:www.hiastar.com
  如何使用FreeSBC,qq技術(shù)分享群:334023047, www.freesbc.cn
 

【免責(zé)聲明】本文僅代表作者本人觀點(diǎn),與CTI論壇無(wú)關(guān)。CTI論壇對(duì)文中陳述、觀點(diǎn)判斷保持中立,不對(duì)所包含內(nèi)容的準(zhǔn)確性、可靠性或完整性提供任何明示或暗示的保證。請(qǐng)讀者僅作參考,并請(qǐng)自行承擔(dān)全部責(zé)任。

相關(guān)閱讀:

專題

CTI論壇會(huì)員企業(yè)