本文章內(nèi)容過長,上篇請移步主頁進行觀看。
書接上文,我們繼續(xù)來說說NAT在SDWAN中的技術(shù)實現(xiàn)。
STUN報文結(jié)構(gòu)
STUN基于UDP傳輸協(xié)議報文,協(xié)議報文的封裝格式如下圖所示。
圖STUN報文結(jié)構(gòu)
如下圖所示,STUN消息(STUN Message)包括STUN消息頭和STUN消息屬性兩部分。STUN消息頭的長度為20字節(jié),后面跟著零個或多個屬性。
圖STUN消息結(jié)構(gòu)
STUN消息頭包含如下字段:
STUN Message Type:STUN消息類型,長度為14比特。當(dāng)前僅支持STUN捆綁請求和STUN捆綁響應(yīng)兩種類型的消息。
Message Length:STUN消息長度,長度為16比特(不包括消息頭長度)。
Magic Cookie:魔術(shù)字,長度為32比特。魔術(shù)字包含固定值0x2112A442,用于STUN服務(wù)器檢測STUN客戶端是否可以識別特定屬性。此外,當(dāng)STUN與其他協(xié)議使用相同的端口號時,通過魔術(shù)字可以將STUN和其他協(xié)議區(qū)分開。
Transaction ID:事務(wù)ID,長度為96比特,用于唯一標(biāo)識一次STUN探測。事務(wù)ID由STUN客戶端來選擇。在一次STUN探測中,STUN服務(wù)器收到STUN客戶端發(fā)送的STUN捆綁請求消息后,回復(fù)的STUN捆綁響應(yīng)消息的事務(wù)ID與STUN捆綁請求消息的事務(wù)ID相同。同時,STUN服務(wù)器根據(jù)事務(wù)ID來唯一標(biāo)識STUN客戶端的不同探測請求。
STUN消息屬性采用TLV(Type/Length/Value,類型/長度/值)格式,結(jié)構(gòu)如圖所示。其中,Type和Length字段的長度均為16比特,Value字段的長度可變。
圖STUN消息屬性結(jié)構(gòu)
常見的STUN消息屬性包括如下幾種:
CHANGE-REQUEST:捆綁請求中攜帶的消息屬性,STUN客戶端使用此屬性來請求STUN服務(wù)器改變發(fā)送捆綁響應(yīng)報文的IP地址、端口號。
MAPPED-ADDRESS:捆綁響應(yīng)中攜帶的消息屬性,表示經(jīng)過地址轉(zhuǎn)換后的STUN客戶端的IP地址和端口。
XOR-MAPPED-ADDRESS:捆綁響應(yīng)中攜帶的消息屬性,表示經(jīng)過地址轉(zhuǎn)換后的STUN客戶端的IP地址和端口。與MAPPED-ADDRESS不同的是,XOR-MAPPED-ADDRESS屬性中攜帶的IP地址經(jīng)過了異或(XOR)處理。
RESPONSE-ORIGIN:捆綁響應(yīng)中攜帶的消息屬性,表示STUN服務(wù)器發(fā)送數(shù)據(jù)的IP地址和端口。
OTHER-ADDRESS:捆綁響應(yīng)中攜帶的消息屬性,表示STUN服務(wù)器的另一個IP地址和端口號。假設(shè)STUN服務(wù)器的IP地址為Y1,替代IP地址為Y2,端口號為YP1,替代端口號為YP2。Da表示STUN客戶端發(fā)送捆綁請求的目的IP地址,Dp表示STUN客戶端發(fā)送捆綁請求的目的端口號。如果Da為Y1,那么OTHER-ADDRESS中的IP地址為Y2;如果Da為Y2,那么OTHER-ADDRESS中的IP地址為Y1。如果Dp為YP1,那么OTHER-ADDRESS中的端口號為YP2;如果Dp為YP2,那么OTHER-ADDRESS中的端口號為YP1。當(dāng)STUN客戶端要求STUN服務(wù)器使用不同的IP地址發(fā)送捆綁響應(yīng)時,如果Da為Y1,則捆綁響應(yīng)報文OTHER-ADDRESS中的IP地址為Y2;如果Da為Y2,則OTHER-ADDRESS中的IP地址為Y1。類似地,當(dāng)STUN客戶端要求STUN服務(wù)器使用不同的端口號發(fā)送捆綁響應(yīng)時,如果Dp為YP1,那么OTHER-ADDRESS中的端口號為YP2;如果Dp為YP2,那么OTHER-ADDRESS中的端口號為YP1。
STUN工作機制
STUN客戶端通過和STUN服務(wù)器交互STUN協(xié)議報文,探測網(wǎng)絡(luò)中NAT設(shè)備上的NAT映射的類型和NAT過濾的方式,并根據(jù)探測結(jié)果判斷NAT類型。
1.NAT映射類型探測
假設(shè)STUN服務(wù)器進行STUN探測使用的IP地址為Y1、Y2,端口號為YP1、YP2。STUN客戶端的IP地址和端口號為(X,XP)。STUN進行NAT映射探測的流程如下圖所示,具體步驟為:
(1)STUN客戶端以Endpoint(X,XP)為源地址和源端口向STUN服務(wù)器的外網(wǎng)Endpoint(Y1,YP1)發(fā)送捆綁請求。STUN服務(wù)器使用Endpoint(Y1,YP1)給STUN客戶端發(fā)送捆綁響應(yīng),響應(yīng)內(nèi)容包括:STUN客戶端經(jīng)過NAT映射后的外網(wǎng)Endpoint(X1,XP1),以及STUN服務(wù)器的另一個外網(wǎng)Endpoint(Y2,YP2)。
(2)STUN客戶端收到STUN服務(wù)器發(fā)送的捆綁響應(yīng)報文后,判斷NAT映射后的Endpoint(X1,XP1)是否與內(nèi)網(wǎng)Endpoint(X,XP)相同:
a. 如果Endpoint(X1,XP1)與Endpoint(X,XP)相同,則SUTN客戶端認(rèn)為不存在NAT映射。
b. 如果Endpoint(X1,XP1)與Endpoint(X,XP)不同,則STUN客戶端使用第(3)步進行探測。
(3)STUN客戶端以Endpoint(X,XP)向STUN服務(wù)器的外網(wǎng)Endpoint(Y2,YP1)發(fā)送捆綁請求。STUN服務(wù)器使用Endpoint(Y2,YP1)向STUN客戶端發(fā)送捆綁響應(yīng),響應(yīng)內(nèi)容包括:STUN客戶端經(jīng)過NAT映射后的外網(wǎng)Endpoint(X2,XP2)。
(4)STUN客戶端收到STUN服務(wù)器發(fā)送的捆綁響應(yīng)報文后,判斷NAT映射后的Endpoint(X2,XP2)是否與第(1)步中NAT映射后的Endpoint(X1,XP1)相同:
a. 如果Endpoint(X2,XP2)與Endpoint(X1,XP1)相同,則STUN客戶認(rèn)為NAT映射類型為EIM。
b. 如果Endpoint(X2,XP2)與Endpoint(X1,XP1)不同,則STUN客戶端使用第(5)步進行探測。
(5)STUN客戶端以Endpoint(X,XP)向STUN服務(wù)器的外網(wǎng)Endpoint(Y2,YP2)發(fā)送捆綁請求。STUN服務(wù)器使用Endpoint(Y2,YP2)向STUN客戶端發(fā)送捆綁響應(yīng),響應(yīng)內(nèi)容包括:STUN客戶端經(jīng)過NAT映射后的外網(wǎng)Endpoint(X3,XP3)。
(6)STUN客戶端收到STUN服務(wù)器發(fā)送的捆綁響應(yīng)報文后,判斷NAT映射后的Endpoint(X3,XP3)是否與第(3)步中NAT映射后的Endpoint(X2,XP2)相同:
a. 如果Endpoint(X3,XP3)與Endpoint(X2,XP2)相同,則STUN客戶認(rèn)為NAT映射類型為ADM。
b. 如果Endpoint(X3,XP3)與Endpoint(X2,XP2)不同,則STUN客戶認(rèn)為NAT映射類型為APDM。
NAT映射類型探測流程圖
2.NAT過濾方式探測
假設(shè)STUN服務(wù)器的IP地址為Y1,替代IP地址為Y2,端口號為YP1,替代端口號為YP2。STUN客戶端的IP地址和端口號為(X,XP)。STUN進行NAT映射探測的流程如下圖所示,具體步驟為:
(1)STUN客戶端以Endpoint(X,XP)為源地址和源端口向STUN服務(wù)器的外網(wǎng)Endpoint(Y1,YP1)發(fā)送捆綁請求,請求報文中攜帶CHANGE-REQUEST屬性,要求STUN服務(wù)器改變IP地址和端口號來發(fā)送捆綁響應(yīng)。STUN服務(wù)器使用Endpoint(Y2,YP2)向STUN客戶端發(fā)送捆綁響應(yīng)。
(2)STUN客戶端根據(jù)是否能收到響應(yīng)報文進行如下判斷:
a. 如果STUN客戶端收到了捆綁響應(yīng)報文,則STUN客戶端認(rèn)為NAT過濾類型為EIF。
b. 如果STUN客戶端未收到捆綁響應(yīng)報文,則STUN客戶端使用第(3)步進行探測。
(3)STUN客戶端以Endpoint(X,XP)向STUN服務(wù)器的外網(wǎng)Endpoint(Y1,YP1)發(fā)送捆綁請求,請求報文中攜帶CHANGE-REQUEST屬性,要求STUN服務(wù)器改變端口號來發(fā)送捆綁響應(yīng)。STUN服務(wù)器使用Endpoint(Y1,YP2)給STUN客戶端發(fā)送捆綁響應(yīng)。
(4)STUN客戶端根據(jù)是否能收到響應(yīng)報文進行如下判斷:
a. 如果STUN客戶端收到了捆綁響應(yīng)報文,則STUN客戶端認(rèn)為NAT過濾類型為ADF。
b. 如果STUN客戶端未收到捆綁響應(yīng)報文,則STUN客戶端認(rèn)為NAT過濾類型為APDF。
圖NAT過濾方式探測流程圖
STUN客戶端重傳機制
STUN基于UDP傳輸協(xié)議報文,STUN協(xié)議報文有可能在傳輸過程中被丟棄。通過STUN客戶端的重傳機制可以提高STUN協(xié)議報文傳輸?shù)目煽啃?。具體機制如下:
(1)STUN客戶端發(fā)送捆綁請求報文后,如果在一定時間沒有收到捆綁響應(yīng)報文,STUN客戶端會以一定的時間間隔重傳捆綁請求報文。
(2) 當(dāng)STUN客戶端收到捆綁響應(yīng)報文,或者STUN報文的重傳次數(shù)達到最大,STUN客戶端將停止重傳。
(3) 如果STUN客戶端重傳STUN報文的次數(shù)達到最大后,還未收到捆綁響應(yīng)報文,則STUN客戶端認(rèn)為捆綁請求報文傳輸失敗,無法進行STUN探測。
(部分內(nèi)容素材來源網(wǎng)絡(luò),侵權(quán)請聯(lián)系刪除)
審核編輯 黃昊宇
-
NAT
+關(guān)注
關(guān)注
0文章
141瀏覽量
16205 -
sdwan
+關(guān)注
關(guān)注
2文章
124瀏覽量
7210
發(fā)布評論請先 登錄
相關(guān)推薦
評論