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

ID:9507055

大小:59.50 KB

頁(yè)數(shù):8頁(yè)

時(shí)間:2018-05-01

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

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

1、LVS集群系統(tǒng)網(wǎng)絡(luò)核心原理分析  1、LVS結(jié)構(gòu)與工作原理  LVS由前端的負(fù)載均衡器(LoadBalancer,LB)和后端的真實(shí)服務(wù)器(RealServer,RS)群組成。RS間可通過(guò)局域網(wǎng)或廣域網(wǎng)連接。LVS的這種結(jié)構(gòu)對(duì)用戶是透明的,用戶只能看見一臺(tái)作為L(zhǎng)B的虛擬服務(wù)器(VirtualServer),而看不到提供服務(wù)的RS群?! ‘?dāng)用戶的請(qǐng)求發(fā)往虛擬服務(wù)器,LB根據(jù)設(shè)定的包轉(zhuǎn)發(fā)策略和負(fù)載均衡調(diào)度算法將用戶請(qǐng)求轉(zhuǎn)發(fā)給RS。RS再將用戶請(qǐng)求結(jié)果返回給用戶。同請(qǐng)求包一樣,應(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;};  其實(shí),類似LVS的做法就是生成一個(gè)structnf_hook_ops結(jié)構(gòu)的實(shí)例,并用nf_register_hook將其HOOK上。其中l(wèi)123下一頁(yè)....,。ist項(xiàng)要初始化為{NULL,NULL};由于一般在IP層工作,pf總是PF_I;hooknum就是HOOK點(diǎn);一個(gè)HOOK點(diǎn)可能掛多個(gè)處理函數(shù),誰(shuí)先誰(shuí)后,便要看優(yōu)先級(jí),即priority的指定了。filte

3、r_ipv4.h中用一個(gè)枚舉類型指定了內(nèi)置的處理函數(shù)的優(yōu)先級(jí):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*));  它的五個(gè)參數(shù)將由NFHOOK宏傳進(jìn)去。  以上是NetFillter編寫自己模塊時(shí)的一些基本用法,接下來(lái),我們來(lái)看一下LVS中是如何實(shí)現(xiàn)的?! ?、LVS中Netfiler的實(shí)現(xiàn)  利用Netfilter,LVS處理數(shù)據(jù)報(bào)從左邊進(jìn)入系統(tǒng),進(jìn)行IP校驗(yàn)以后,數(shù)據(jù)報(bào)經(jīng)過(guò)第一個(gè)鉤子函數(shù)NF_IP_PRE_ROUTING[HOOK1]進(jìn)行處理;然后進(jìn)行路由選擇,決定該數(shù)據(jù)報(bào)是需要轉(zhuǎn)發(fā)還是發(fā)給本機(jī);

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

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

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

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

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

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