作者: Colin Jao 饒康立 – VMware資深技術顧問,主要負責VMware NSX產品線,目前致力於網路虛擬化暨分散式安全防護技術方案的介紹與推廣。 

 

複習一下前幾篇網誌對於Edge Service Gateway的說明:Edge Service Gateway是一個獨立具備網路與安全功能的虛擬機器,可以提供第三層網路路由的功能,可以提供第四層防火牆的功能,也可以提供第七層的網路服務功能如負載平衡器或VPN等等。我們的路由功能不僅僅是靜態路由,也可以支援OSPF / BGP等動態路由協定。我們的防火牆是完整的第四層防火牆,負載平衡器也是功能齊全的負載平衡器,啊不就好棒棒~

 

問一個問題:一般來說,大家有看過Cisco路由器上面有支援L4 Firewall / Load Balancer,或是F5的負載平衡器上面有支援OSPF或BGP嗎?為什麼他們不做呢,有個網路設備什麼功能都有,不是很好嗎?

 

但實際上,路由器與L4以上的網路服務設備,比如說防火牆或是負載平衡器,本來就有一個本質上的不同:是否具備連線(session)的概念。路由器本身是負責底層的封包轉送,封包送到目的地就好,去與回的封包,或是同樣出去的封包,是走同樣的路徑或不同路徑,是無所謂的。但是防火牆必須要有session table,封包進出時首先不是與防火牆規則比對,而是確認這個封包的”連線”是不是已經在session table以內,如果有就放人。負載平衡器也需要有persistent table,或更進一步需要知道http / https表頭的相關資訊。此時,如果一個連線的去與回是走不同路徑,是很可能會出問題的。

 

我們用下面這張圖來做個說明。左邊是Edge Gateway完全只跑Routing的狀況,右邊的圖則是同時跑路由與Firewall的狀況。VM與Physical Machine互相連通時,在DLR與Physical Router上,透過動態路由協定的溝通,到目的地網段都會有兩條同成本的路徑:通過Edge A或Edge B均可。

 

如果是左邊的純路由狀況,應該是沒有什麼問題。去與回的Traffic就算是走不同的路徑,只要有走到目的地,來源與目的地的機器是不關心中間的網路封包怎麼走的。但是如果是右邊防火牆的狀況就複雜了,封包往上走的時候如果選左邊,此時session table僅是在左邊這台防火牆有建立連線紀錄。如果同連線回應的封包是從右邊路徑回來,右邊的防火牆連線表內沒有記錄允許通過,此時網路封包與防火牆規則比對,很可能就被擋掉了。

 

因此通常我們會看到如防火牆的狀況部署會像下圖這樣:兩台設備採用Active-Standby模式,也就是我們在前幾篇網誌討論到的Edge Gateway High-Availability的機制。由於同時只有一台Gateway為Active,因此在上面的Physical Router與下面的Distributed Router進行路由交換後,都只會看到單條的路徑到目的地網段(左邊的路)。此時路由功能當然沒問題,防火牆運作也正常:平常進出的Traffic都走左邊防火牆同樣的session table。當左邊防火牆失效,右邊防火牆啟動,同時Session Table會sync到右邊,現有的連線也仍可以保留。

 

看起來完全沒有問題了齁,沒那麼單純,還要考慮失效發生時,收斂時間的問題。考慮下圖是都僅考慮路由收斂時間。左邊是採用兩台獨立路由器,右邊則是用Active-Standby模式的差異,於上方的Physical Router / 中間的Edge Service Gateway / 下面的Distributed Router間跑的路由協定把hello timer調到僅有1秒,dead timer則調到3秒。

 

此時在左邊的純路由架構,當Edge Router A掛掉時,整個底層路由環境會影響多少秒?此時前後的Physical Router與DLR由於沒有收到Router A的hello,於三秒後會自動將來自左邊路由器的路由抽離。但原本因為就是有雙路徑,因此此時的影響只是路由表變更為所有的traffic均僅能走右邊而已。整個影響的時間應該是三秒鐘(偵測Router A掛掉的dead timer的時間),而受到影響的網路流約一半(原本進出走左邊的網路流)

 

在右邊的Active-Standby架構,當Edge Router A掛掉時,此時

 

  • 本來就只有單路徑,因此所有網路流斷線,同時Physical Router / DLR的路由表過三秒後清掉路由

 

  • 要過至少6秒,或是預設的15秒,Standby的Router B才會啟動

 

  • 啟動的過程要過約10~15秒才完成

 

  • 也就是說Physical Router / DLR要等個15~30秒才重新收到啟動的Router B的路徑更新,恢復路由表,恢復網路Traffic。這邊,總共的影響時間總共可能約15~30秒,而且所有的網路流全部受影響

 

這邊我們要和大家表達的是什麼呢?Edge Service Gateway拿來當成純Router,或是用標準的Active-Standby模式(開啟Firewall / Load-Balancing等功能),這兩種模式,是各自有自己的好處與缺點的,也就是說,

 

  • 純路由模式內,Edge Gateway失效時網路收斂快(如果設計上有多路徑),但不能啟動防火牆 / Load Balancer等等上層服務機制

 

  • Active-Standby模式內,我們必須要忍受在單台Gateway虛機失效時可能會有15~30秒的失效時間,但這台設備除了提供路由功能外,也可以擔任防火牆 或是Load Balancer功能

 

預設上Edge Service Gateway採用的是Active-Standby模式。但如果在網路架構設計上,我們需要在虛擬環境與實體環境間介接的底層網路能達成快速收斂、高頻寬等等的特性,此時我們可以把Edge Service Gateway當作純粹的路由器用。這時候

 

  • 我們應該設計有多台Edge Service Gateway平行提供多路徑功能

 

  • 我們應該把Edge Service Gateway內所有的Firewall / Load-Balancer / VPN / High-Availability等等功能都關閉

 

  • 應該啟用OSPF / BGP等路由協定,並且將Edge Service Gateway以及前後Physical Router / DLR上路由協定的hello timer與dead timer都壓低(到最低的1 sec / 3 sec)

 

  • 在Edge Service Gateway與DLR上都把ECMP (Equal Cost Multiple Path) 功能打開。此功能打開後,Edge Service Gateway與DLR的路由表內才能針對同一目的網段,有兩個以上的路徑可以連接

 

一個完整的多路徑設計會長的像下圖。NSX可以同時提供平行8台Edge Gateway進行路由交換,也就是說,比如說由Core連到下圖的Web環境內,可以有8條不同的同成本路徑。任何一台Edge Gateway失效,仍有其他七條路徑可連線。

 

我們暫時結束對於Edge Service Gateway的討論。接下來要開始談論NSX內的另一個功能重點:虛擬機器安全防護機制以及Micro-Segmentation (微切分)架構