1. 程式人生 > >簡單分析DMVPN應用於HUB-SPOKE網路結構之中

簡單分析DMVPN應用於HUB-SPOKE網路結構之中

DMVPN:動態多點VPN; VPN:虛擬專線的效果; 1.DMVPN的優點:不需要運營商過多的介入(配置及維護全靠企業自己,運營商只需要提供IP地址即可,運營商過多的介入是需要考慮成本的),自己架設VPN裝置來進行配置即可。 2.DMVPN的缺點:因為VPN的是以封裝的思想來穿越公網實現私網間通訊的,所以他是需要公網來承載的,承載於公網那麼他的穩定性就不是很好。 3.DMVPN一般的應用場景: 1>在公網上解決多站點的互通問題(一種比較廉價的解決方案); 2>企業可以使用DMVPN來為公司的專線做冗餘(有總比沒有好)。 DMVPN的理解: MGRE(封裝技術) + NHRP(解決多點通訊的問題) +IPSEC(解決加密問題) DMVPN的部署:

1.單層級部署DMVPN: 在這裡插入圖片描述 如圖所示,在此環境中部署DMVPN: 1>總公司用MGRE與兩個分公司之間構建虛擬專線。 2>通過NHRP協議在總公司形成分公司MGRE隧道口地址與公網口地址之間的對映關係表(總公司收集到了去往所有分公司的對映關係,形成對映表)。 3>分公司與分公司間需要互相訪問時,去總公司copy一份對映關係表,從而獲取到目的分公司的私網口地址對應公網口地址,以目的公網口IP地址來組建封裝,當資料包到達對方的公網口時,解下第一層封裝,裝置會看到內層的目的地址,直接轉發到達目的地。 DMVPN構建的三個重要階段: 第一階段:通過NHRP把我要去的站點的公網地址和私網隧道口的地址形成對映關係。 第二階段:通過調整動態協議(主要是圍繞著下一跳問題)來解決分支到分支直接通訊的問題。 第二階段探討------無組播的情況下:
動態路由協議如何建立鄰居關係以及路由如何傳遞的問題? 單播建立鄰居關係,分公司只與企業總部構建鄰居關係,但是這樣不同的動態協議也存在著不同的問題。 1)對於RIP/EIGRP(距離向量型路由協議)來講: 在這裡插入圖片描述 如圖2所示,對於分部與總部構建的MGRE通道在總部是隻有一個通道口的,那麼由於RIP/EIGRP的防環原則之一-----水平分割的存在,分公司R4將自己的私網路由A交給企業總部後,總部是不會轉發到分公司R3上的,這就意味著我們需要在總公司的通道口打破水平分割(打破了水平分割機制就意味著環路風險問題的存在),那麼分公司R4給的私網A就能傳遞到分公司R3上了,但是注意環路問題的存在。 解決了距離向量型路由協議的路由傳遞問題我們又迎來了一個新的問題如圖3所示,當分公司R3與分公司R4進行通訊的時候,流量沒必要大老遠的來到企業總部從同一個介面進入又從同一個介面發出吧(除非企業要求所有的分部之間通訊的流量都要由總部控制),這就是下來我們需要探討的路由在傳遞時的下一跳問題。 下一跳問題的解決方案
:關閉EIGRP自動修改路由下一跳的功能,我們可以這樣來理解------EIGRP擁有一個預設修改下一跳的開關的並且這個開關預設是開啟的,我們可以關閉掉這個開關,那麼EIGRP便不會自動的修改路由的下一跳。 命令:no ip next-hop-self 關閉自動修改下一跳的功能(切記:僅在DMVPN的應用場景下我們才不需要EIGRP自動的修改路由的下一跳,一般情況下,我們都需要EIGRP來自動的修改路由傳遞時的下一跳的)。 RIP同EIGRP一樣。 2)OSPF(鏈路狀態型路由協議): 對於OSPF協議來說,他不會存在像距離向量型路由協議的水平分割問題,分公司R4交給總公司的A路由,總公司是會傳遞給分公司R3的。而他存在的問題是:分公司R3去往分公司R4的A時,他是如何走的,通過實驗我們可以發現,他的路徑是R3-R1-R4。那麼,為什麼R3拿到了對映關係他卻不能直接通過R4到達目標呢?產生這個問題是因為OSPF預設的網路工作模式是POINT-TO-POINT(OSPF可是一個認拓撲的路由協議,只有當所有的拓撲資訊構建完畢,他才運轉選路)而point-to-point的網路型別在OSPF協議的Router LSA(Router LSA可是攜帶拓撲資訊的)中會被認為連線的是stub網段------即連線的是一個節點,所以他構建的拓撲圖如下: 在這裡插入圖片描述 從圖中我們可以發現分公司R3是無法感知到分公司R4的存在的,他只會認為這個路由是總公司給的並且這條路由的下一跳也是總公司,自己也只有總公司一個鄰居存在,以至於他去往分公司R4的路徑是R3-R1-R4。 解決方案:當OSPF預設的網路型別為NBMA網路型別時,那麼對應的OSPF的Router LSA會認自己連線的是一個傳輸網段(Transit網段型別),所有我們可以通過修改OSPF協議預設的網路型別來解決路徑問題,那麼他構建的網路拓撲圖如下: 在這裡插入圖片描述 企業總部和分部通過Router LSA來構建自己的拓撲圖,都會認為自己連線在一個傳輸網路N1上,相當於分公司R3是可以感知分公司R4 的存在的,會認為他們是直連關係,並且雙方能形成鄰居關係,分公司R4將自己的路由傳遞給鄰居分公司R3,那麼R3因為從R4那裡學習到了去往分公司R4的路由,並且去往分公司R4路由的下一跳地址是分公司R4的隧道口地址,所以他通過R4的公網口IP地址組建封裝去往分公司R4,其路徑是R3->R4,路徑正確。 總結:在無組播的環境下對於DMVPN中使用OSPF協議的應用使用OSPF的NBMA網路型別最為合適,同時將企業分部的優先順序設為0,控制僅總部能成為DR,分部只能是DRother。 3)在無組播的環境下采用BGP(路徑向量型路由協議): BGP協議不會向IGP協議一樣存在著各種各樣的問題,部署BGP的話,所有的分公司僅與總部構建BGP鄰居關係,將他們部署在一個BGP的一個區域之內,那麼我們只需要解決從一個IBGP鄰居處學習來的路由是不會傳遞給下一個IBGP鄰居的問題(在總公司做路由反射器即可),而對於下一跳的問題,因為BGP是一個AS-BY-AS的協議,在一個AS之內,路由的屬性是不會發生變化的,所有當分部R4的路由傳遞到分部R3上時,路由的下一跳仍是R4。 第二階段探討------在有組播的情況下: 如何實現企業分部到企業分部的通訊問題? 組播存在時存在的主要問題是DMVPN不會對組播產生封裝,那麼解決這個問題我們可以通過命令專門讓隧道來為組播產生封裝即可,給組播寫一條靜態對映,告訴組播應該去哪個公網即可(要跟誰建鄰,拿誰的公網口地址來封裝),這也會存在這樣一個問題:那就是可能需要寫的組播對映過多,會比較煩。 解決方案:所有的分公司組播對映的封裝都用總公司的公網口地址,總公司就可以收集到所有的組播包那麼動態協議便可自動建鄰。 2.多層級部署DMVPN: 在這裡插入圖片描述 如圖所示,企業總部下設定一級分部A和B以及二級(一級分部A的)a和b(一級分部B的)a和b;一級分部A的分部b的私網路由如何能與一級分部B的分部a的私網路由正常通訊呢?癥結所在:二層分部b與二層分部a要通訊的癥結就是因為他們沒有對映表。在這種情況下,我們利用動態協議已無法解決這個問題,就要藉助於DMVPN的第三階段來解決這個問題。 第三階段------藉助NHRP的作用,而非動態協議(動態協議已經無法解決這個問題) 兩個方面來解決第三階段的問題:1>對映變得特殊了 2>中轉特殊請求。 1.二層分部的內網路由需要通訊會產生特殊的對映(內網及隧道的對映)。 2.HUB上開啟轉發操作 (HUB上開啟重定向redrict<可以中轉特殊的請求>); 3.Spoke上發出NHRP的查詢 (Spoke上通過命令ip nhrp shortcut開啟特殊的對映請求功能,這樣就可以發出請求了<要觸發這個請求就得發一個包出來,就比如我們發一個ping包出來,那麼就必須得有路由,接下來我們再來從協議層面上來分析一下,並研究研究這條路由又該如何得到呢?>); 協議層面分析: EIGRP(切記水平分割問題)->需要三步: 1)放預設(在總部HUB上做) (因為大量的關閉EIGRP的水平分割,會增大整個網路的環路風險,這是使用預設路由便是頂著雷往上衝,所以建議採用預設路由); 2)企業總部上開啟重定向; 3)企業分部上開啟NHRP的特殊查詢 ; 藉助預設路由請求得到的主機路由會直接加入路由表之中,路由表裡會出現一條打H的路由,是NHRP給的,當第二個包發出的時候他就可以直接以目的地的公網口路由進行封裝了。 OSPF->兩步即可: 1.企業總部上開啟重定向; 2.企業分部上開啟NHRP的特殊查詢; 請求回來得到的路由會出來一個特殊的標識%(這因為NHRP修改了OSPF的下一跳),而我們需要操作的是參考OSPF中的FA地址(FA地址存在時,OSPF會選擇相信FA地址,而不是去相信拓撲),讓OSPF協議選擇NHRP給他的路由而不相信他自己根據拓撲算出來的路由。 總結:在DMVPN環境中應用網路型別用點到多點(其實也就跟點到點差不多),然後通過NHRP的特殊查詢和中轉特殊請求的功能來解決掉各種動態協議在DMVPN&HUB-SPOKE中出現的各類問題,最終如若是OSPF協議,那麼路由表裡出現打 % 號的路由,因為被重定向過;如若是EIGRP/RIP協議,路由表中會出現一條打H的路由,這是NHRP協議給的。我們可以通過命令show ip cef來檢視路由被重定向過的下一跳是誰。