sip是voip業務中,最為重要的協議之一,那麼對於這個協議,我們在之前的一些文章中個,也闡述過與之相關的一些基礎內容。這裡我們不在贅述。那麼今天的重點,就是講解一下sip路由機制的相關知識。
總的來說,sip路由機制包括兩個場景:
1,請求訊息的路由
2,響應訊息的路由
其中,響應訊息的路由非常簡單,就是完全依靠via來完成的,具體請見我關於rfc3261中會話流程的分析。下面我們只談sip路由機制中,sip請求訊息的路由。首先我們要搞清楚什麼是嚴格路由和鬆散路由。
嚴格路由(strict routing):
可以理解為比較「死板」的理由機制,這種路由機制在sip協議的前身rfc 2534中定義,其機制非常簡單。要求接收到的訊息的request-uri必須是自己的uri,然後它會把第乙個route頭域「彈」出來,並把其中的uri作為新的request-rui,然後把該訊息路由給該uri。
鬆散路由(louse routing,lr):
該路由機制較為靈活,也是sip路由機制的靈魂所在,在sip根本大典rfc 3261中定義。下面介紹一下乙個鬆散路由的proxy的路由決策過程:
1,proxy首先會檢查訊息的request-uri是不是自己屬於自己所負責的域。如果是,它就會通過定位服務將該位址「翻譯」成具體的聯絡位址並以此替換掉原來的request-uri;否則,它不會動request-uri。
2,proxy檢查第乙個route頭域中的uri是不是自己的,如果是,則移除之。
3,前面兩項都是準備工作,下面該進行真正的路由了。如果還有route頭域,則proxy會把訊息路由給該頭域中的uri,否則就路由給request-uri。至於如何從下一跳uri確定出ip位址,埠以及傳輸協議那是另外一回事了。
好了,解了兩種路由機制,我們再來了解一下route和record-route。如果說via是為了給乙個請求訊息的響應訊息留後路,那麼record-route就是為了給該請求訊息之後的請求訊息留後路。
【說明】sip路由機制中,乙個sip訊息每經過乙個proxy(包括主叫),都會被加上乙個via頭域,當訊息到達被叫後,via頭域就記錄了請求訊息經過的完整路徑。被叫將這些via頭域原樣copy到響應訊息中(包括各via的引數,以及各via的順序),然後下發給第乙個via中的uri,每個proxy**響應訊息前都會把第乙個via(也就是它自己新增的via)刪除,然後將訊息**給新的第乙個via中的uri,直到訊息到達主叫。
而在乙個請求訊息的傳輸過程中,proxy也可能(純粹自願,如果它希望還能接收到本次會話的後續請求訊息的話)會新增乙個record-route頭域,這樣當訊息到達被叫後裡面就有會有0個或若干個record-route頭域。被叫會將這些record-route頭域併入路由集,並併入自己的路由集,隨後被叫在傳送請求訊息時就會使用該路由集構造一系列route頭域,以便對訊息進行路由。
然後,被叫會像上面對待via頭域一樣,將record-route頭域全部原樣copy到響應訊息中返回給主叫。 主叫收到響應訊息後也會將這些record-route頭域併入路由集,只是它會將其反序。該會話中的後續請求訊息的route頭域就會通過路由集構造。
【注意】record-route頭域不用來路由,而只是起到傳遞資訊的作用。record-route頭域不是路由集的唯一**,路由集還可以通過手工配置等方式得到
SIP 路由機制
總的來說,sip中存在兩種路由場景 1,請求訊息的路由 2,響應訊息的路由 其中,響應訊息的路由非常簡單,就是完全依靠via來完成的,具體請見我關於rfc3261中會話流程的分析。下面我們只談sip請求訊息的路由。首先我們要搞清楚什麼是嚴格路由和鬆散路由。嚴格路由 strict routing 可以...
SIP路由分析
本文摘抄自csdn博文sip route與 record route sip路由機制解析 sip路由可以簡單分為請求訊息路由和響應訊息路由。invite bye ack cancel等屬於請求訊息,200 ok 180 183 480等狀態返回碼屬於響應訊息。響應訊息的路由非常簡單,就是完全依靠vi...
SIP訊息路由機制
一 請求路由 鬆散路由 loose router 和嚴格路由 strict router 這是sip協議 rfc3261 中的乙個非常重要的概念。在sip訊息的route頭域或record route頭域中,攜帶的域值是sip uri或sips uri,如果這個uri帶有 lr 屬性值,那麼,就表示...