lvs集群系統(tǒng)網(wǎng)絡(luò)核心原理分析

lvs集群系統(tǒng)網(wǎng)絡(luò)核心原理分析

ID:9507055

大?。?9.50 KB

頁數(shù):8頁

時間:2018-05-01

lvs集群系統(tǒng)網(wǎng)絡(luò)核心原理分析_第1頁
lvs集群系統(tǒng)網(wǎng)絡(luò)核心原理分析_第2頁
lvs集群系統(tǒng)網(wǎng)絡(luò)核心原理分析_第3頁
lvs集群系統(tǒng)網(wǎng)絡(luò)核心原理分析_第4頁
lvs集群系統(tǒng)網(wǎng)絡(luò)核心原理分析_第5頁
資源描述:

《lvs集群系統(tǒng)網(wǎng)絡(luò)核心原理分析》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫

1、LVS集群系統(tǒng)網(wǎng)絡(luò)核心原理分析  1、LVS結(jié)構(gòu)與工作原理  LVS由前端的負(fù)載均衡器(LoadBalancer,LB)和后端的真實服務(wù)器(RealServer,RS)群組成。RS間可通過局域網(wǎng)或廣域網(wǎng)連接。LVS的這種結(jié)構(gòu)對用戶是透明的,用戶只能看見一臺作為LB的虛擬服務(wù)器(VirtualServer),而看不到提供服務(wù)的RS群?! ‘?dāng)用戶的請求發(fā)往虛擬服務(wù)器,LB根據(jù)設(shè)定的包轉(zhuǎn)發(fā)策略和負(fù)載均衡調(diào)度算法將用戶請求轉(zhuǎn)發(fā)給RS。RS再將用戶請求結(jié)果返回給用戶。同請求包一樣,應(yīng)答包的返回方式也與包轉(zhuǎn)發(fā)策略有關(guān)?! VS的包轉(zhuǎn)發(fā)策略有三種:  NAT(Netpty(nf_ho

2、oks[(pf)][(hook)])?(okfn)(skb):nf_hook_sloheredo;/*Hooksareorderedinascendingpriority.*/intpriority;};  其實,類似LVS的做法就是生成一個structnf_hook_ops結(jié)構(gòu)的實例,并用nf_register_hook將其HOOK上。其中l(wèi)123下一頁....,。ist項要初始化為{NULL,NULL};由于一般在IP層工作,pf總是PF_I;hooknum就是HOOK點;一個HOOK點可能掛多個處理函數(shù),誰先誰后,便要看優(yōu)先級,即priority的指定了。filte

3、r_ipv4.h中用一個枚舉類型指定了內(nèi)置的處理函數(shù)的優(yōu)先級:enumnf_ip_hook_priorities{NF_IP_PRI_FIRST=INT_MIN,NF_IP_PRI_CONNTRACK=-200,NF_IP_PRI_MANGLE=-150,NF_IP_PRI_NAT_DST=-100,NF_IP_PRI_FILTER=0,NF_IP_PRI_NAT_SRC=100,NF_IP_PRI_LAST=INT_MAX,};  hook是提供的處理函數(shù),也就是我們的主要工作,其原型為:unsignedintnf_hookfn(unsignedinthooknum,s

4、tructsk_buff**skb,conststruct_device*in,conststruct_device*out,int(*okfn)(structsk_buff*));  它的五個參數(shù)將由NFHOOK宏傳進(jìn)去?! ∫陨鲜荖etFillter編寫自己模塊時的一些基本用法,接下來,我們來看一下LVS中是如何實現(xiàn)的?! ?、LVS中Netfiler的實現(xiàn)  利用Netfilter,LVS處理數(shù)據(jù)報從左邊進(jìn)入系統(tǒng),進(jìn)行IP校驗以后,數(shù)據(jù)報經(jīng)過第一個鉤子函數(shù)NF_IP_PRE_ROUTING[HOOK1]進(jìn)行處理;然后進(jìn)行路由選擇,決定該數(shù)據(jù)報是需要轉(zhuǎn)發(fā)還是發(fā)給本機(jī);

5、若該數(shù)據(jù)報是發(fā)被本機(jī)的,則該數(shù)據(jù)經(jīng)過鉤子函數(shù)NF_IP_LOCAL_IN[HOOK2]處理后傳遞給上層協(xié)議;若該數(shù)據(jù)報應(yīng)該被轉(zhuǎn)發(fā),則它被NF_IP_FORP數(shù)據(jù)報包頭的ip地址,并重新計算和修改各個包頭中的檢驗和,之后查找路由調(diào)用ip_send()發(fā)送修改過的數(shù)據(jù)報,并返回NF_STOLEN(退出數(shù)據(jù)報的處理過程)?! p_vs_in()調(diào)用的函數(shù)ip_vs_schedule()為虛擬服務(wù)器調(diào)度可用的RS并建立相應(yīng)連接。它將根據(jù)虛擬服務(wù)器綁定的調(diào)度算法分配一個RS,如果成功,則調(diào)用ip_vs_conn_neit()、ip_vs_tunnel_xmit()、ip_vs_d

6、r_xmit()。例如ip_vs_nat_xmit()的主要操作是:修改報文的目的地址和目的端口為RS信息,重新計算并設(shè)置檢驗和,調(diào)用ip_send()發(fā)送修改后的數(shù)據(jù)報?! ?.2NF_IP_FORp數(shù)據(jù)報則直接調(diào)用ip_vs_out_icmp();其次判斷是否為tcp/udp數(shù)據(jù)報,如果不是這二者則返回NF_ACCEPT。余下就是tcp/udp數(shù)據(jù)報的處理。首先,調(diào)用ip_vs_header_check()檢查報頭,如果異常上一頁123下一頁....,。則返回NF_DROP。其次,調(diào)用ip_vs_conn_out_get()判斷是否存在相應(yīng)的連接。若不存在相應(yīng)連接:調(diào)

7、用ip_vs_lookup_real_service()去哈希表中查找發(fā)送數(shù)據(jù)報的RS是否仍然存在,如果RS存在且報文是tcp非復(fù)位報文或udp報文,則調(diào)用icmp_send()給RS發(fā)送目的不可達(dá)icmp報文并返回NF_STOLEN;其余情況下均返回NF_ACCEPT。若存在相應(yīng)連接:檢查數(shù)據(jù)報的檢驗和,如果錯誤則返回NF_DROP,如果正確,修改數(shù)據(jù)報,將源地址修改為虛擬服務(wù)器ip地址,源端口修改為虛擬服務(wù)器端口號,重新計算并設(shè)置檢驗和,并返回NF_ACCEPT?! p_vs_out_icmp()的流程與ip_vs_in

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。