SIP訊息路由機制

2021-06-03 05:30:32 字數 1717 閱讀 6357

一:請求路由

鬆散路由(loose router)和嚴格路由(strict router),這是sip協議(rfc3261)中的乙個非常重要的概念。

在sip訊息的route頭域或record-route頭域中,攜帶的域值是sip uri或sips uri,如果這個uri帶有」lr」屬性值,那麼,就表示uri的位址所標識的sip proxy是鬆散路由的,否則,是嚴格路由的。如record-route: 、route: 。

鬆散路由是rfc3261所定義的訊息路由規則,而嚴格路由則是rfc2543中所定義的路由規則。鬆散路由提供了對嚴格路由的相容機制。路由規則中,涉及了對request uri域值的處理。嚴格路由時,要求request uri為路由位址。

嚴格路由是一種比較「死板」的理由機制,這種路由機制在sip協議的前身rfc 2534中定義,其機制非常簡單。它要求收到的訊息的request-uri必須是自己的uri,然後它會把第乙個route頭域「彈」出來,並把其中的uri作為新的request-rui,然後把該訊息路由給該uri。而鬆散路由則提供了一種更為靈活的機制。

處理步驟:

proxy首先會檢查訊息的request-uri是不是自己屬於自己所負責的域。如果是,它就會通過定位服務將該位址「翻譯」成具體的聯絡位址並以此替換掉原來的request-uri;否則,它不會動request-uri。 

proxy首先檢查路由表中的第乙個位址是否為自己,如果是則從表中刪除。 

嚴格路由在發往下一跳前,將request uri的域值更新為路由表中的表頭位址(下一跳)。 

鬆散路由將路由如果發現request uri是自己插入到路由表中的位址。從路由表中取出最後乙個位址更新request uri,並刪除最後乙個位址。 

鬆散路由檢查下一跳是否為嚴格路由。如果不是,不處理;否則,將request uri插入到路由表表尾,並用下一跳位址(嚴格路由的位址)更新request uri。 

如果路由表為空,則路由給request uri。 

路由機制用於請求訊息的路由,其中route頭域攜帶路由表資訊,而record-route頭域則是sip proxy想讓自己保留在後續dialog中而插入的記錄。也就是說,通常初始化時,發起終端是沒有路由表的(當然也可以強制配置,這樣侷限性太強),完成第一次訊息互動後,雙方根據record-route資訊,各自更新路由表。

二:應答訊息路由

sip應答訊息的路由機制,相對請求來說,比較簡單,基本思想就是,請求從**來,應答回**去。那是如何實現的呢?很簡單,via頭域就是完成這個差事的。via頭域表說明了sip請求實際的路由過程,用於應答訊息的回程路由。

下面是乙個via的示例(注意,換行僅是為了增強可讀性,沒其它意思)

via: sip/2.0/udp pc33.atlanta.com;branch=z9hg4bknashds8

;received=192.0.2.1

其中pc33.atlanta.com部分稱為sent-by屬性,表明了訊息在本站點的具體傳送位址。每個sip proxy在前轉sip請求訊息時,都必須在via表前端插入自己的via(稱為top via)並說明sent-by。而「received=192.0.2.1」這一引數則說明了訊息到達本站點時的源位址。

當uas傳送應答時,往top via所指示的位址傳送(received優先於sent-by)。當sip proxy路由應答訊息時,首先檢查top via是不是自己,不是則不處理,是則刪除top via,並繼續前轉。所以,當源發起端收到應答時,應答訊息中應該只有乙個via頭域,並且是指向自己的,否則就應該丟棄。

SIP訊息路由機制

一 請求路由 鬆散路由 loose router 和嚴格路由 strict router 這是sip協議 rfc3261 中的乙個非常重要的概念。在sip訊息的route頭域或record route頭域中,攜帶的域值是sip uri或sips uri,如果這個uri帶有 lr 屬性值,那麼,就表示...

SIP 路由機制

總的來說,sip中存在兩種路由場景 1,請求訊息的路由 2,響應訊息的路由 其中,響應訊息的路由非常簡單,就是完全依靠via來完成的,具體請見我關於rfc3261中會話流程的分析。下面我們只談sip請求訊息的路由。首先我們要搞清楚什麼是嚴格路由和鬆散路由。嚴格路由 strict routing 可以...

SIP訊息格式

sip 訊息格式 首行 start line 請求行 響應 狀態行 請求行 1.方法 invite,cancel,ack,bye 用於會話的建立 修改和終止 register 用於對使用者的聯絡資訊進行註冊 options 用於對伺服器及其能力進行查詢 2.請求 url 用來標識所請求資源的 sip...