1、組成StoneOS應用負載網關係統架構的基本元素包括:安全
安全域:``
域是一個邏輯實體,將網絡劃分爲不一樣部分,應用了安全策略的域稱爲「安全域」。例如,trust安全域一般爲內網等可信任網絡,untrust安全域一般爲互聯網等存在安全威脅的不可信任網絡。網絡
接口:`
接口是流量進出安全域的通道,接口必須綁定到某個安全域才能工做。默認狀況下,接口都不能互相訪問,只有經過策略規則,才能容許流量在接口之間傳輸。架構
虛擬交換機(VSwitch):
具備交換機功能。VSwitch工做在二層,將二層安全域綁定到VSwitch上後,綁定到安全域的接口也被綁定到該VSwitch上。一個VSwitch就是一個二層轉發域,每一個VSwitch都有本身獨立的MAC地址表,所以設備的二層轉發在VSwitch中實現。而且,流量能夠經過VSwitch接口,實現二層與三層之間的轉發。ide
虛擬路由器(VRouter):簡稱爲VR。
VRouter具備路由器功能,不一樣VR擁有各自獨立的路由表。
系統中有一個默認VR,名爲trust-vr,默認狀況下,全部三層安全域都將會自動綁定到trust-vr上。系統支持多VR功能且不一樣硬件平臺支持的最大VR數不一樣。多VR將設備劃分紅多個虛擬路由器,每一個虛擬路由器使用和維護各自徹底獨立的路由表,此時一臺設備能夠充當多臺路由器使用。多VR使設備可以實現不一樣路由域的地址隔離與不一樣VR間的地址重疊,同時可以在必定程度上避免路由泄露,增長網絡的路由安全。學習
策略:接口
策略是設備的基本功能,控制安全域間/不一樣地址段間的流量轉發。默認狀況下,設備會拒絕設備上全部安全域/接口/地址段之間的信息傳輸。策略規則(Policy Rule)決定從安全域到另外一個安全域,或從一個地址段到另外一個地址段的哪些流量該被容許,哪些流量該被拒絕。路由
綁定關係:it
StoneOS系統的架構中,安全域、接口、虛擬路由器和虛擬交換機之間具備從屬關係,也稱爲「綁定關係」。 接口綁定到安全域,安全域綁定到VSwitch或VRouter,進而,接口也就綁定到了某個VSwitch或VRouter。一個接口只能綁定到一個安全域上,一個安全域能夠綁定多個接口。二層安全域只能綁定到VSwitch上,三層安全域只能綁定到VRouter上。系統架構
安全策略規則class
默認狀況下,全部的接口之間的流量都是拒絕的。不一樣的安全域之間、相同的安全域以內的接口流量均不能互訪。要實現接口的互訪,只有經過建立策略規則,才能將流量放行。 若是既有從源到目的的訪問,又有反方向的主動訪問,那麼就要建立兩條策略規則,容許雙方向的流量經過;若是隻有單方向的主動訪問,而反方向只回包便可,那麼只須要建立源到目的的一條單方向的策略。
根據接口所屬的安全域、VSwtich或VRouter的不一樣,要建立不一樣的策略才能容許接口互訪,具體的規則以下:
一、屬於同一個安全域的兩個接口實現互訪:
須要建立一條源和目的均爲該安全域的策略。
例如,要實現上圖中的eth0/0與eth0/1的互訪,須要建立從L3-zone1到L3-zone1的容許流量經過的策略;或者,要實現eth0/3與eth0/4的互訪,要建立源和目的均爲L2-zone2的策略。
二、兩個二層接口所在的安全域屬於同一VSwitch,實現接口互訪:
須要建立兩條策略,第一條策略容許從一個安全域到另外一個安全域流量放行,第二條策略容許反方向的流量經過。
例如,要實現上圖中的eth0/2與eth0/3的互訪,須要建立從L2-zone1到L2-zone2的策略和L2-zone2到L2-zone1這兩條策略。
三、兩個二層接口所在的安全域屬於不一樣的VSwtich的,實現接口互訪:
每一個VSwtich都具備惟一的一個VSwtich接口(VSwitchIF),該VSwtichIF與某個三層安全域綁定。要實現互訪,須要建立放行策略,源是一個VswichIF所屬的三層安全域,目的是另外一個VSwtichIF所屬的三層安全域。同時,還須要建立反方向的策略。
四、兩個三層接口所在的安全域屬於同一VRouter,實現接口互訪:
須要建立策略容許從一個安全域到另外一個安全域的流量放行。例如,要實現eth0/0和eth0/5的互訪,要建立從L3-zone1到L3-zone2的容許流量經過的策略,而後再建立反方向的策略。
五、兩個三層接口所在的安全域從屬於不一樣的VRouter的,實現接口互訪:
若要實現接口互訪,須要建立策略規則,容許從一個VRouter到另外一個VRouter之間的流量放行。
六、同一VRouter下的二層接口和三層接口,實現互訪:
建立容許流量經過的策略,策略的源是二層接口的VSwtichIF所綁定的三層安全域,策略的目的是三層接口所屬的三層安全域。而後,再建立反向策略。
例如,要實現eth0/0與eth0/2的互訪,須要建立從L3-zone1到L2-zone1的策略,以及反向策略。
2、數據包處理流程
一、二層轉發域中的轉發規則
在一個VSwitch,即一個二層轉發域中,應用負載網關StoneOS經過源地址學習創建MAC地址轉發表。每一個VSwitch都有本身的MAC地址轉發表。StoneOS根據數據包的類型(IP數據包、ARP包和非IP且非ARP包),分別進行不一樣的處理。
二、對於IP數據包,StoneOS遵循如下轉發規則:
1)收到數據包。
2)學習源地址,更新MAC地址轉發表。
3)若是目的MAC地址是單播地址,則根據目的MAC地址查找出接口。這時又有如下兩種狀況:
a)若是目的MAC地址爲VSwitch接口的MAC地址,而且VSwitch接口有IP地址,則按照路由轉發規則進行轉發;
b)若VSwitch接口沒有IP地址,則丟棄。
4)根據目的MAC地址找到出接口。若是找到的出接口是數據包的源接口,則丟棄該數據報,不然從出接口繼續轉發數據包。
5)若是在MAC地址表中沒有找到出接口(未知單播),直接跳到第6步。
6)根據入接口和出接口肯定源域和目的安全域。
7)查找策略規則。若是策略規則容許則轉發數據包;若是策略規則不容許,則丟棄數據包。
8)若是在MAC地址轉發表中沒有找到出接口(未知單播),StoneOS則嘗試將數據包發給VSwitch中的全部其它二層接口,此時的操做流程爲:把其它的每個二層接口作爲出接口,二層接口所在的二層安全域做爲目的域,查詢策略規則,若是策略容許,則在該二層接口轉發數據包,若是策略不容許,則丟棄數據包。歸納地說,對未知單播的轉發即爲策略限制下的廣播。對於廣播和多播IP包的處理相似於對未知單播的處理,不一樣的是廣播和多播IP包會被同時拷貝一份進行三層處理。
9)對於ARP包,廣播包和未知單播包轉發到VSwitch中的其它全部接口,同時,複製一份由ARP模塊進行處理。
三、三層轉發域的轉發規則
1)識別數據包的邏輯入接口,多是通常無標籤接口,也多是子接口。從而肯定數據包的源安全域。
2)StoneOS對數據包進行合法性檢查。若是源安全域配置了防禦功能,系統會在這一步同時進行防禦功能檢查。
3)會話查詢。若是該數據包屬於某個已創建會話,則跳過4到10,直接進行第11步。
4)目的NAT(DNAT)操做。若是可以查找到相匹配的DNAT規則,則爲包作DNAT標記。由於路由查詢須要DNAT轉換的IP地址,因此先進行DNAT操做。
說明:若是系統配置靜態一對一BNAT規則,那麼先查找匹配的BNAT規則。數據包匹配了BNAT規則以後,按照BNAT的設定進行處理,再也不查找普通的DNAT規則。
5)路由查詢。系統的路由查詢順序從前到後依次爲:策略路由(PBR)> 源接口路由(SIBR)> 源路由(SBR)> 目的路由(DBR)> ISP路由。此時,系統獲得了數據包的邏輯出接口和目的安全域。
6)源NAT(SNAT)操做。若是可以查找到相匹配的SNAT規則,則爲包作SNAT標記。
說明:若是系統配置靜態一對一BNAT規則,那麼先查找匹配的BNAT規則。數據包匹配了BNAT規則以後,按照BNAT的設定進行處理,再也不查找普通的DNAT規則。
7)下一跳VR查詢。若是下一跳爲VR,則繼續查看指定的下一跳VR是否超出最大VR數限制(當前版本系統僅容許數據包最多經過3個VR),若是超過則丟棄數據包,若是未超過,返回4;若是下一跳不是VR,則繼續進行下一步策略查詢。
8)策略查詢。系統根據數據包的源安全域、目的安全域、源IP地址和端口號、目的IP地址和端口號以及協議,查找策略規則。若是找不到匹配的策略規則,則丟棄數據包;若是找到匹配的策略規則,則根據規則指定的行爲進行處理,分別是:
容許(Permit):容許數據包經過。拒絕(Deny):拒絕數據包經過。隧道(Tunnel):將數據包轉發到指定的隧道。是否來自隧道(Fromtunnel):檢查數據包是否來自指定的隧道,若是是,則容許經過,若是不是,則丟棄。Web認證(WebAuth):對符合條件的流量進行Web認證。9)第一次應用類型識別。系統根據策略規則中配置的端口號和服務,嘗試識別應用類型。10)會話創建。若是須要,進行第二次應用類型識別。根據數據包的內容和流量行爲再次對應用類型進行精確識別。11)應用層行爲(ALG)控制。爲特定的複雜協議實施自適應處理。12)根據會話中記錄的信息,例如NAT標記等,執行相應的處理操做。13)將數據包轉發到出接口。