本發(fā)明涉及通信技術(shù)領(lǐng)域,特別涉及一種報(bào)文轉(zhuǎn)發(fā)方法及交換設(shè)備。
背景技術(shù):
Linux虛擬服務(wù)器(Linux Virtual Server,LVS)是一種集群技術(shù),采用IP負(fù)載均衡技術(shù)和基于內(nèi)容請(qǐng)求分發(fā)技術(shù),將一組服務(wù)器構(gòu)成一個(gè)實(shí)現(xiàn)可伸縮的、高可用網(wǎng)絡(luò)服務(wù)的服務(wù)器集群。目前,LVS集群中常用的三種IP負(fù)載均衡技術(shù)包括VS/NAT、VS/TUN、VS/DR。
其中,VS/NAT指調(diào)度器將用戶請(qǐng)求報(bào)文做目的地址轉(zhuǎn)換(Destination Network Address Translation,DNAT),即將報(bào)文的目的IP地址轉(zhuǎn)換為選定的服務(wù)器IP地址,服務(wù)器IP地址可以是私網(wǎng),但是服務(wù)器應(yīng)答報(bào)文也必須經(jīng)過(guò)調(diào)度器做源地址轉(zhuǎn)換(Source Address Translation,SNAT),當(dāng)集群規(guī)模變大時(shí),調(diào)度器可能成為系統(tǒng)的瓶頸。VS/TUN是指調(diào)度器利用IP TUNNEL技術(shù)(一種基于TUNNEL協(xié)議的技術(shù))在用戶請(qǐng)求報(bào)文的基礎(chǔ)上再封裝一層IP頭部,轉(zhuǎn)發(fā)給服務(wù)器。而服務(wù)器應(yīng)答報(bào)文則無(wú)需經(jīng)過(guò)調(diào)度器,這樣可以極大提高系統(tǒng)的吞吐量,但是需要服務(wù)器必須支持IP TUNNEL,且需要消耗解封裝報(bào)文性能。而VS/DR是指調(diào)度器直接修改報(bào)文的媒體訪問(wèn)控制(Media Access Control,MAC),即目的MAC地址,將報(bào)文發(fā)送給服務(wù)器,服務(wù)器應(yīng)答報(bào)文也不需要經(jīng)過(guò)調(diào)度器,無(wú)需支持TUNNEL以及解封裝消耗,但其要求調(diào)度器與服務(wù)器在同一局域網(wǎng)內(nèi)。
綜上可知,現(xiàn)有技術(shù)中實(shí)現(xiàn)負(fù)載均衡的局限性較大的技術(shù)問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供一種報(bào)文轉(zhuǎn)發(fā)方法及交換設(shè)備,用于解決現(xiàn)有技術(shù)中IP負(fù)載均衡技術(shù)的局限性的技術(shù)問(wèn)題。
第一方面,本發(fā)明實(shí)施例提供一種報(bào)文轉(zhuǎn)發(fā)方法,包括以下步驟:
交換設(shè)備接收來(lái)自終端設(shè)備的第一報(bào)文,所述第一報(bào)文包括內(nèi)層IP地址和外層IP地址,其中,所述內(nèi)層IP地址包括與所述終端設(shè)備對(duì)應(yīng)的第一源IP地址及與虛擬服務(wù)器對(duì)應(yīng)的第一目的IP地址,所述外層IP地址包括與所述虛擬服務(wù)器對(duì)應(yīng)的第二源IP地址及與目標(biāo)服務(wù)器對(duì)應(yīng)的第二目的IP地址;
確定解封裝表項(xiàng)中存在與所述外層IP地址一致的IP地址,丟棄所述第一報(bào)文的外層IP地址,并將所述內(nèi)層IP地址中的第一目的IP地址修改為所述第二目的IP地址,獲得與所述第一報(bào)文對(duì)應(yīng)的第二報(bào)文;其中,所述解封裝表項(xiàng)記錄有與待解封裝的報(bào)文相應(yīng)的至少一個(gè)IP地址;
按照所述第二目的IP地址,將所述第二報(bào)文轉(zhuǎn)發(fā)給所述目標(biāo)服務(wù)器。
可選的,在按照所述第一目的IP地址,將所述第二報(bào)文轉(zhuǎn)發(fā)給所述目標(biāo)服務(wù)器之后,所述方法還包括:
所述交互設(shè)備接收來(lái)自所述目標(biāo)服務(wù)器的第三報(bào)文,所述第三報(bào)文包括所述目標(biāo)服務(wù)器對(duì)應(yīng)的第三源IP地址,及與所述終端設(shè)備對(duì)應(yīng)的第三目的IP地址;
將所述第三報(bào)文中的第三源IP地址修改為與所述虛擬服務(wù)器對(duì)應(yīng)的第二源IP地址;
按照所述第三目的IP地址將所述第三報(bào)文發(fā)送給所述終端設(shè)備。
可選的,在將所述第三報(bào)文中的第三源IP地址修改為與所述虛擬服務(wù)器對(duì)應(yīng)的第二源IP地址之前,所述方法還包括:
確定地址轉(zhuǎn)換表項(xiàng)中是否存在與所述第三目的IP地址一致的IP地址,所述地址轉(zhuǎn)換表項(xiàng)包括至少一個(gè)白名單報(bào)文的IP地址;
若確定所述地址轉(zhuǎn)換表項(xiàng)中不存在所述第三目的IP地址,將所述第三報(bào)文中的第三源IP地址修改為與所述虛擬服務(wù)器對(duì)應(yīng)的第二源IP地址。
可選的,在確定地址轉(zhuǎn)換表項(xiàng)中是否存在與所述第三目的IP地址一致的IP地址之后,還包括:
若確定所述地址轉(zhuǎn)換表項(xiàng)中存在所述第三目的IP地址,不修改所述第三報(bào)文的IP地址;
按照所述第三目的IP地址對(duì)所述第三報(bào)文進(jìn)行轉(zhuǎn)發(fā)。
可選的,在將所述內(nèi)層IP地址中的第一目的IP地址修改為所述外層IP地址中的第二目的IP地址之前,還包括:
對(duì)所述第一報(bào)文進(jìn)行第一標(biāo)記;
將所述內(nèi)層IP地址中的第一目的IP地址修改為所述外層IP地址中的第二目的IP地址,包括:
基于所述第一標(biāo)記,將所述內(nèi)層IP地址中的第一目的IP地址修改為所述外層IP地址中的第二目的IP地址。
第二方面,本發(fā)明實(shí)施例提供一種交換設(shè)備,包括:
接收模塊,用于接收來(lái)自終端設(shè)備的第一報(bào)文,所述第一報(bào)文包括內(nèi)層IP地址和外層IP地址,其中,所述內(nèi)層IP地址包括與所述終端設(shè)備對(duì)應(yīng)的第一源IP地址及與虛擬服務(wù)器對(duì)應(yīng)的第一目的IP地址,所述外層IP地址包括與所述虛擬服務(wù)器對(duì)應(yīng)的第二源IP地址及與目標(biāo)服務(wù)器對(duì)應(yīng)的第二目的IP地址;
處理模塊,用于確定解封裝表項(xiàng)中存在與所述外層IP地址一致的IP地址,丟棄所述第一報(bào)文的外層IP地址,并將所述內(nèi)層IP地址中的第一目的IP地址修改為所述第二目的IP地址,獲得與所述第一報(bào)文對(duì)應(yīng)的第二報(bào)文;其中,所述解封裝表項(xiàng)記錄有與待解封裝的報(bào)文相應(yīng)的至少一個(gè)IP地址;
轉(zhuǎn)發(fā)模塊,用于按照所述第二目的IP地址,將所述第二報(bào)文轉(zhuǎn)發(fā)給所述目標(biāo)服務(wù)器。
可選的,所述接收模塊還用于在按照所述第一目的IP地址,將所述第二報(bào)文轉(zhuǎn)發(fā)給所述目標(biāo)服務(wù)器之后,接收來(lái)自所述目標(biāo)服務(wù)器的第三報(bào)文,所述第三報(bào)文包括所述目標(biāo)服務(wù)器對(duì)應(yīng)的第三源IP地址,及與所述終端設(shè)備對(duì)應(yīng)的第三目的IP地址;
所述處理模塊還用于將所述第三報(bào)文中的第三源IP地址修改為與所述虛擬服務(wù)器對(duì)應(yīng)的第二源IP地址;
所述轉(zhuǎn)發(fā)模塊用于按照所述第三目的IP地址將所述第三報(bào)文發(fā)送給所述終端設(shè)備。
可選的,所述交換設(shè)備還包括:
確定模塊,用于在將所述第三報(bào)文中的第三源IP地址修改為與所述虛擬服務(wù)器對(duì)應(yīng)的第二源IP地址之前,確定地址轉(zhuǎn)換表項(xiàng)中是否存在與所述第三目的IP地址一致的IP地址,所述地址轉(zhuǎn)換表項(xiàng)包括至少一個(gè)白名單報(bào)文的IP地址;
所述處理模塊用于若確定所述地址轉(zhuǎn)換表項(xiàng)中不存在所述第三目的IP地址,將所述第三報(bào)文中的第三源IP地址修改為與所述虛擬服務(wù)器對(duì)應(yīng)的第二源IP地址。
可選的,所述處理模塊還用于:
在確定地址轉(zhuǎn)換表項(xiàng)中是否存在與所述第三目的IP地址一致的IP地址之后,若確定所述地址轉(zhuǎn)換表項(xiàng)中存在所述第三目的IP地址,不修改所述第三報(bào)文的IP地址;
所述轉(zhuǎn)發(fā)模塊用于按照所述第三目的IP地址對(duì)所述第三報(bào)文進(jìn)行轉(zhuǎn)發(fā)。
可選的,所述交換設(shè)備還包括:
標(biāo)記模塊,用于在將所述內(nèi)層IP地址中的第一目的IP地址修改為所述外層IP地址中的第二目的IP地址之前,對(duì)所述第一報(bào)文進(jìn)行第一標(biāo)記;
所述處理模塊用于基于所述第一標(biāo)記,將所述內(nèi)層IP地址中的第一目的IP地址修改為所述外層IP地址中的第二目的IP地址。
本發(fā)明實(shí)施例中,由于交換設(shè)備通過(guò)接收來(lái)自終端設(shè)備的第一報(bào)文,該第一報(bào)文包括內(nèi)層IP地址和外層IP地址,且內(nèi)層IP地址包括與終端設(shè)備對(duì)應(yīng)的第一源IP地址及與虛擬服務(wù)器對(duì)應(yīng)的第一目的IP地址,外層IP地址包括與虛擬服務(wù)器對(duì)應(yīng)的第二源IP地址及與目標(biāo)服務(wù)器對(duì)應(yīng)的第二目的IP地址,進(jìn)而,若確定解封裝表項(xiàng)中存在與外層IP地址一致的IP地址,該解封裝表項(xiàng)記錄有與待解封裝的報(bào)文相應(yīng)的至少一個(gè)IP地址,那么丟棄第一報(bào)文的外層IP地址,即對(duì)第一報(bào)文進(jìn)行解封裝,并將內(nèi)層IP地址中的第一目的IP地址修改為第二目的IP地址,即對(duì)第一報(bào)文進(jìn)行目的地址轉(zhuǎn)換,獲得與第一報(bào)文對(duì)應(yīng)的第二報(bào)文,進(jìn)而可以按照第二目的IP地址,將第二報(bào)文轉(zhuǎn)發(fā)給目標(biāo)服務(wù)器,故實(shí)現(xiàn)在交換設(shè)備中完成對(duì)報(bào)文的解封裝和目的地址轉(zhuǎn)換,以將報(bào)文直接轉(zhuǎn)發(fā)給目標(biāo)服務(wù)器,具有VS/NAT模式服務(wù)器透明性的同時(shí),還能保證VS/TUN模式的擴(kuò)展性和高性能,使得服務(wù)器的吞吐量提高,同時(shí)避免了因解封裝導(dǎo)致的性能損耗。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)本發(fā)明實(shí)施例中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面所介紹的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例中的報(bào)文轉(zhuǎn)發(fā)方法的流程圖;
圖2為本發(fā)明實(shí)施例中交換設(shè)備對(duì)報(bào)文進(jìn)行解封裝和目的地址轉(zhuǎn)換示意圖;
圖3為本發(fā)明實(shí)施例中交換設(shè)備對(duì)應(yīng)答報(bào)文進(jìn)行源地址轉(zhuǎn)換的示意圖;
圖4為本發(fā)明實(shí)施例中的交換設(shè)備的結(jié)構(gòu)框圖。
具體實(shí)施方式
為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
請(qǐng)參見(jiàn)圖1,本發(fā)明實(shí)施例提供一種報(bào)文轉(zhuǎn)發(fā)方法,該方法應(yīng)用在交換設(shè)備中,該交換設(shè)備可以是交換機(jī),甚至還可以是路由設(shè)備或其它中轉(zhuǎn)設(shè)備,該方法的過(guò)程可以描述如下。
S11:交換設(shè)備接收來(lái)自終端設(shè)備的第一報(bào)文,第一報(bào)文包括內(nèi)層IP地址和外層IP地址,其中,內(nèi)層IP地址包括與終端設(shè)備對(duì)應(yīng)的第一源IP地址及與虛擬服務(wù)器對(duì)應(yīng)的第一目的IP地址,外層IP地址包括與虛擬服務(wù)器對(duì)應(yīng)的第二源IP地址及與目標(biāo)服務(wù)器對(duì)應(yīng)的第二目的IP地址;
S12:確定解封裝表項(xiàng)中存在與外層IP地址一致的IP地址,丟棄第一報(bào)文的外層IP地址,并將內(nèi)層IP地址中的第一目的IP地址修改為第二目的IP地址,獲得與第一報(bào)文對(duì)應(yīng)的第二報(bào)文;其中,解封裝表項(xiàng)記錄有與待解封裝的報(bào)文相應(yīng)的至少一個(gè)IP地址;
S13:按照第二目的IP地址,將第二報(bào)文轉(zhuǎn)發(fā)給目標(biāo)服務(wù)器。
本發(fā)明實(shí)施例中,交換設(shè)備接收的第一報(bào)文為包括內(nèi)層IP地址和外層IP地址,即為采用VS/TUN模式的報(bào)文,通過(guò)確定解封裝表項(xiàng)中存在與外層IP地址一致的IP地址,此時(shí),交換設(shè)備可以對(duì)第一報(bào)文進(jìn)行解封裝,即將第一報(bào)文的外層IP地址進(jìn)行丟棄,并將解封裝后的第一報(bào)文的內(nèi)層IP地址中的第一目的IP地址修改為第二目的IP地址,即進(jìn)行目的地址轉(zhuǎn)換,獲得與第一報(bào)文對(duì)應(yīng)的第二報(bào)文,故第二報(bào)文中的目的IP地址即為指向目標(biāo)服務(wù)器的IP地址,故利用交換機(jī)的TUNNEL解封裝和網(wǎng)絡(luò)地址轉(zhuǎn)換(Network Address Translation,NAT)功能,可以實(shí)現(xiàn)報(bào)文的硬件線速轉(zhuǎn)發(fā),無(wú)需目標(biāo)服務(wù)器對(duì)其進(jìn)行解封裝,從而實(shí)現(xiàn)提高服務(wù)器集群的擴(kuò)展性和性能。
在實(shí)際應(yīng)用中,交換設(shè)備接收的包括內(nèi)層IP地址和外層IP地址的第一報(bào)文即為采用VS/TUN模式對(duì)報(bào)文的IP報(bào)頭進(jìn)行了封裝的報(bào)文,交換設(shè)備可以通過(guò)虛擬服務(wù)器獲得的第一報(bào)文。通常來(lái)說(shuō),終端設(shè)備可以向服務(wù)器發(fā)送用戶請(qǐng)求報(bào)文,該服務(wù)器通常是指虛擬服務(wù)器,例如用戶上網(wǎng)訪問(wèn)百度,如點(diǎn)擊“www.baidu.com”,那么通過(guò)域名解析可以得到一個(gè)IP地址,即百度對(duì)外提供服務(wù)的虛擬IP地址,但這個(gè)IP地址通常是指一個(gè)服務(wù)器集群,即LVS集群,其包括多個(gè)服務(wù)器,可以訪問(wèn)同一個(gè)虛擬IP地址均衡發(fā)送給多臺(tái)服務(wù)器進(jìn)行處理,每個(gè)服務(wù)器處理一部分流量,這樣集群中的服務(wù)器數(shù)量越多就能提供給更多的人同時(shí)使用。
因此,在終端設(shè)備將用戶請(qǐng)求報(bào)文發(fā)送給虛擬服務(wù)器后,虛擬服務(wù)器即對(duì)報(bào)文進(jìn)行封裝,并將封裝后的報(bào)文發(fā)送到交換設(shè)備,交換設(shè)備獲得第一報(bào)文。
在實(shí)際應(yīng)用中,報(bào)文封裝即為在普通報(bào)文的IP頭部的基礎(chǔ)上再加上一層IP頭部。例如,普通以太網(wǎng)IP報(bào)文,其結(jié)構(gòu)為“以太網(wǎng)頭部+IP頭部(包括源IP地址和目的IP地址)”,而基于TUNNEL協(xié)議則會(huì)為報(bào)文封裝一層IP頭部,即“以太網(wǎng)頭部+外層IP頭部(包括源IP地址和目的IP地址)+內(nèi)層IP頭部(包括源IP地址和目的IP地址)”。
本發(fā)明實(shí)施例中,第一報(bào)文即為封裝后的報(bào)文,其包括兩層IP地址(即兩層IP頭部),因此交換設(shè)備接收的第一報(bào)文即是隧道報(bào)文。其中,內(nèi)層IP地址包括與終端設(shè)備對(duì)應(yīng)的第一源IP地址及與虛擬服務(wù)器對(duì)應(yīng)的第一目的IP地址,外層IP地址包括與虛擬服務(wù)器對(duì)應(yīng)的第二源IP地址及與目標(biāo)服務(wù)器對(duì)應(yīng)的第二目的IP地址;其中,虛擬服務(wù)器可以是指LVS集群的主機(jī),目標(biāo)服務(wù)器可以是LVS集群中的服務(wù)器,虛擬服務(wù)器可以為報(bào)文分配相應(yīng)的用于執(zhí)行任務(wù)的服務(wù)器,即為目標(biāo)服務(wù)器。
例如,客戶端發(fā)送的用戶請(qǐng)求報(bào)文對(duì)應(yīng)的IP地址可以表示為:IP<C-SIP,V-DIP>,其中,SIP(Source IP,源IP)用于表示報(bào)文發(fā)送的源IP地址,C-SIP即表示報(bào)文由源客戶端發(fā)送;DIP(Destination,目的IP)表示報(bào)文發(fā)送的目的IP地址,V-DIP即表示報(bào)文的目的IP地址指向虛擬服務(wù)器。
若對(duì)該報(bào)文進(jìn)行封裝,則封裝后的報(bào)文具有的外層IP地址即為IP<LVS-SIP,RS-DIP>,其中,LVS-SIP即表示報(bào)文由虛擬服務(wù)器發(fā)送,RS-DIP表示報(bào)文對(duì)應(yīng)的目標(biāo)服務(wù)器為虛擬服務(wù)器為其分配的用于進(jìn)行數(shù)據(jù)處理的真實(shí)服務(wù)器。
可選的,交換設(shè)備在獲得第一報(bào)文后,可以對(duì)第一報(bào)文進(jìn)行解封裝,并對(duì)解封裝后的報(bào)文進(jìn)行目的地址轉(zhuǎn)換。在實(shí)際應(yīng)用中,用戶可以在交換芯片TUNNEL表中設(shè)置一條匹配DIP網(wǎng)段的表項(xiàng),從而通過(guò)該表項(xiàng)即可對(duì)相應(yīng)的報(bào)文進(jìn)行解封裝,將其外層IP地址進(jìn)行丟棄。
例如,一個(gè)基于TUNNEL協(xié)議轉(zhuǎn)發(fā)的報(bào)文,其外層DIP是1.1.1.1,若用戶設(shè)置一條TUNNEL表項(xiàng),匹配外層DIP為1.1.1.1的報(bào)文,那么,當(dāng)這個(gè)TUNNEL報(bào)文經(jīng)過(guò)TUNNEL解封裝表,通過(guò)IP地址的匹配就會(huì)被命中,然后剝掉外層IP頭部,即對(duì)該報(bào)文進(jìn)行解封裝。
進(jìn)一步,為了感知特定的服務(wù)的報(bào)文,可以使用特殊的標(biāo)記來(lái)標(biāo)記需要進(jìn)行DNAT的報(bào)文。其中,特定的服務(wù)通常是指由用戶配置的,比如說(shuō)希望部署LVS集群提供如百度百科的服務(wù),那么就匹配百度百科對(duì)外的虛IP地址作為報(bào)文的IP頭部。一個(gè)虛IP地址通常代表一種服務(wù),比如用戶訪問(wèn)的百度文庫(kù)是一種服務(wù),而訪問(wèn)百度貼吧又是另一種服務(wù),每種服務(wù)可以有多臺(tái)服務(wù)器一起提供。
本發(fā)明實(shí)施例中,第一報(bào)文即可以為用戶設(shè)置的用于請(qǐng)求特定的服務(wù)的報(bào)文,那么,第一報(bào)文在通過(guò)匹配TUNNEL表項(xiàng)后,內(nèi)部可以帶上第一標(biāo)記,如tun_class_id,那么在對(duì)第一報(bào)文解封裝后,可以基于第一標(biāo)記對(duì)解封裝后的報(bào)文進(jìn)行目的地址轉(zhuǎn)換,即替換第一報(bào)文的目的IP地址(DIP),將內(nèi)層IP地址中的第一目的IP地址“DIP(V_DIP)”修改為外層IP地址中的第二目的IP地址,即“DIP(RS-DIP)”。
由于不是所有的隧道報(bào)文經(jīng)過(guò)三層交換機(jī)都要解封裝,一般會(huì)匹配一些外層IP信息(如SIP或DIP)發(fā)現(xiàn)這個(gè)是隧道的終點(diǎn),然后才解封裝。在硬件有專門(mén)的TUNNEL解封裝表項(xiàng),用來(lái)匹配這些信息,如果匹配得上,芯片就會(huì)把報(bào)文的外層IP地址剝?nèi)?,剩下?nèi)層IP地址來(lái)轉(zhuǎn)發(fā)。
需要說(shuō)明的是,在實(shí)際應(yīng)用中,替換報(bào)文的目的IP地址的功能可以通過(guò)交換芯片的IFP指定修改DIP功能實(shí)現(xiàn),IFP(輸入報(bào)文過(guò)濾)是交換芯片中的一個(gè)硬件表項(xiàng),該組件的功能就是可以一下報(bào)文字段或者內(nèi)部信息,然后進(jìn)行設(shè)置的動(dòng)作。比如匹配DIP為1.1.1.1的報(bào)文,行為是將其進(jìn)行丟棄或者替換DIP為2.2.2.2。
因此,為了實(shí)現(xiàn)TUN-NAT,需要把隧道報(bào)文的內(nèi)層DIP(V_DIP)替換成外層DIP(RS_DIP),而交換芯片可能只在VFP(交換芯片中的表項(xiàng))能匹配隧道外層DIP,故需要利用其它標(biāo)記,如特殊的vfp_class_id以區(qū)分報(bào)文,該標(biāo)識(shí)可以是與外層DIP對(duì)應(yīng)的,進(jìn)而將報(bào)文外層DIP信息傳遞到IFP。即在VFP中匹配tun_class_id和DIP,行為是特殊的vfp_class_id,此時(shí)vfp_class_id即代表外層報(bào)文RS-DIP。TUN-NAT對(duì)交換機(jī)的需求就是將報(bào)文的外層DIP替換內(nèi)層的DIP,并解封裝,即剝掉報(bào)文的外層IP頭部。
因此,當(dāng)用戶請(qǐng)求的TUNNEL報(bào)文進(jìn)來(lái)時(shí),通過(guò)匹配TUNNEL表項(xiàng),對(duì)報(bào)文進(jìn)行解封裝并帶上特殊的tun_class_id。在VFP匹配中,帶上特殊的vfp_class_id,在IFP匹配,故將報(bào)文送到軟件處理,解析出V-DIP和RS-DIP對(duì)應(yīng)關(guān)系,并根據(jù)RS-IP分配特殊的vfp_class_id下發(fā)表項(xiàng),故通過(guò)查詢相應(yīng)的表項(xiàng)即可確定需要替換的。
由于一些交換芯片路由行為在IFP之前,而DNAT之后需要用新的DIP重新路由,故在IFP匹配vfp_class_id和內(nèi)層V-DIP,其行為除了修改DIP,還需要指定新的路由下一跳,即RS-DIP。
而對(duì)于未命中表項(xiàng)的報(bào)文,需要送CPU進(jìn)行軟件學(xué)習(xí)內(nèi)外層DIP信息,因此,VFP中最后一條表項(xiàng)只匹配tun_class_id,設(shè)置特殊的vfp_class_id;在IFP,最后一條匹配特殊的vfp_class_id。
在實(shí)際應(yīng)用中,V-DIP就是對(duì)外提供服務(wù)的IP地址,RS_DIP是真正提供服務(wù)的服務(wù)器的實(shí)際IP地址。比如,百度百科對(duì)外提供服務(wù)的IP地址是1.1.1.1,其實(shí)是有多個(gè)服務(wù)器在處理,這些服務(wù)器對(duì)應(yīng)的實(shí)際IP地址可能是192.168.0.1、192.168.0.2等等。
因此,通過(guò)交換設(shè)備對(duì)第一報(bào)文進(jìn)行的解封裝和DNAT,即可得到IP地址指向目標(biāo)服務(wù)器的第二報(bào)文。
例如,如圖2所示,客戶端發(fā)送的報(bào)文的IP地址為:IP<C-SIP,V-DIP>,報(bào)文到達(dá)虛擬服務(wù)器進(jìn)行封裝,封裝后的隧道報(bào)文的外層IP地址即為IP<LVS-SIP,RS-DIP>,在隧道報(bào)文到達(dá)交換機(jī)后,交換機(jī)通過(guò)對(duì)其進(jìn)行解封裝,并依據(jù)標(biāo)記對(duì)其進(jìn)行DNAT,即將內(nèi)層IP地址中的目的IP地址修改為外層IP地址中的目的IP地址,獲得的第二報(bào)文即為IP<C_SIP,RS-DIP>。
進(jìn)而,按照第二報(bào)文中的目的IP地址即可將報(bào)文轉(zhuǎn)發(fā)給相應(yīng)的目的IP地址。
本發(fā)明實(shí)施中,在S13之后,交換設(shè)備接收來(lái)自目標(biāo)服務(wù)器的第三報(bào)文,第三報(bào)文包括目標(biāo)服務(wù)器對(duì)應(yīng)的第三源IP地址,及與終端設(shè)備對(duì)應(yīng)的第三目的IP地址,將第三報(bào)文中的第三源IP地址修改為與虛擬服務(wù)器對(duì)應(yīng)的第二源IP地址,并按照第三目的IP地址將所述第三報(bào)文轉(zhuǎn)發(fā)給終端設(shè)備。
其中,第三報(bào)文即為目標(biāo)服務(wù)器在接收到第二報(bào)文之后所反饋的應(yīng)答報(bào)文。
可選的,在交換設(shè)備接收到第三報(bào)文后,可以判斷地址轉(zhuǎn)換表項(xiàng)中是否存在與第三目的IP地址一致的IP地址,該地址轉(zhuǎn)換表項(xiàng)包括至少一個(gè)白名單報(bào)文的IP地址。
若確定地址轉(zhuǎn)換表項(xiàng)中不存在第三目的IP地址,將第三報(bào)文中的第三源IP地址修改為與虛擬服務(wù)器對(duì)應(yīng)的第二源IP地址。在交換設(shè)備對(duì)應(yīng)答報(bào)文做SNAT時(shí),即將應(yīng)答報(bào)文的SIP由“RS_SIP”替換成“V_SIP”,從而可以將應(yīng)答報(bào)文轉(zhuǎn)發(fā)到目的IP地址相應(yīng)的終端設(shè)備,如圖3所示。
在實(shí)際應(yīng)用中,由于有些終端設(shè)備還是需要知道RS_SIP的,例如LVS service ping RS_IP,因此需要設(shè)置一些白名單網(wǎng)段(即DIP),這些DIP網(wǎng)段報(bào)文不進(jìn)行SIP的替換。因此,若確定地址轉(zhuǎn)換表項(xiàng)中存在第三目的IP地址,則無(wú)需修改第三報(bào)文的IP地址,即不進(jìn)行SNAT替換,可按照第三目的IP地址對(duì)第三報(bào)文進(jìn)行轉(zhuǎn)發(fā)。
本發(fā)明實(shí)施例中,在不改變VS/TUN部署的基礎(chǔ)上,實(shí)現(xiàn)兼有VS/NAT透明性,及VS/TUN可擴(kuò)展性和高性能,同時(shí)不需要VS/TUN模式服務(wù)器的解封裝性能消耗,故利用交換機(jī)的TUNNEL解封裝和NAT功能,可以實(shí)現(xiàn)報(bào)文的硬件線速轉(zhuǎn)發(fā)。
請(qǐng)參見(jiàn)圖4,本發(fā)明實(shí)施例還提供一種交換設(shè)備,該交換設(shè)備可以是交換機(jī),或者也可以是路由器等其它設(shè)備。該交換設(shè)備可以包括接收模塊201、處理模塊202和轉(zhuǎn)發(fā)模塊203。
接收模塊201可以用于接收來(lái)自終端設(shè)備的第一報(bào)文,所述第一報(bào)文包括內(nèi)層IP地址和外層IP地址,其中,所述內(nèi)層IP地址包括與所述終端設(shè)備對(duì)應(yīng)的第一源IP地址及與虛擬服務(wù)器對(duì)應(yīng)的第一目的IP地址,所述外層IP地址包括與所述虛擬服務(wù)器對(duì)應(yīng)的第二源IP地址及與目標(biāo)服務(wù)器對(duì)應(yīng)的第二目的IP地址。
處理模塊202可以用于確定解封裝表項(xiàng)中存在與所述外層IP地址一致的IP地址,丟棄所述第一報(bào)文的外層IP地址,并將所述內(nèi)層IP地址中的第一目的IP地址修改為所述第二目的IP地址,獲得與所述第一報(bào)文對(duì)應(yīng)的第二報(bào)文;其中,所述解封裝表項(xiàng)記錄有與待解封裝的報(bào)文相應(yīng)的至少一個(gè)IP地址。
轉(zhuǎn)發(fā)模塊203可以用于按照所述第二目的IP地址,將所述第二報(bào)文轉(zhuǎn)發(fā)給所述目標(biāo)服務(wù)器。
可選的,所述接收模塊201還可以用于在按照所述第一目的IP地址,將所述第二報(bào)文轉(zhuǎn)發(fā)給所述目標(biāo)服務(wù)器之后,接收來(lái)自所述目標(biāo)服務(wù)器的第三報(bào)文,所述第三報(bào)文包括所述目標(biāo)服務(wù)器對(duì)應(yīng)的第三源IP地址,及與所述終端設(shè)備對(duì)應(yīng)的第三目的IP地址。
所述處理模塊202還用于將所述第三報(bào)文中的第三源IP地址修改為與所述虛擬服務(wù)器對(duì)應(yīng)的第二源IP地址。
所述轉(zhuǎn)發(fā)模塊203還可以用于按照所述第三目的IP地址將所述第三報(bào)文發(fā)送給所述終端設(shè)備。
可選的,所述交換設(shè)備還包括確定模塊,用于在將所述第三報(bào)文中的第三源IP地址修改為與所述虛擬服務(wù)器對(duì)應(yīng)的第二源IP地址之前,確定地址轉(zhuǎn)換表項(xiàng)中是否存在與所述第三目的IP地址一致的IP地址,所述地址轉(zhuǎn)換表項(xiàng)包括至少一個(gè)白名單報(bào)文的IP地址;
所述處理模塊202可以用于若確定所述地址轉(zhuǎn)換表項(xiàng)中不存在所述第三目的IP地址,將所述第三報(bào)文中的第三源IP地址修改為與所述虛擬服務(wù)器對(duì)應(yīng)的第二源IP地址。
可選的,所述處理模塊202還可以用于在確定地址轉(zhuǎn)換表項(xiàng)中是否存在與所述第三目的IP地址一致的IP地址之后,若確定所述地址轉(zhuǎn)換表項(xiàng)中存在所述第三目的IP地址,不修改所述第三報(bào)文的IP地址;
所述轉(zhuǎn)發(fā)模塊203可以用于按照所述第三目的IP地址對(duì)所述第三報(bào)文進(jìn)行轉(zhuǎn)發(fā)。
可選的,所述交換設(shè)備還包括標(biāo)記模塊,用于在將所述內(nèi)層IP地址中的第一目的IP地址修改為所述外層IP地址中的第二目的IP地址之前,對(duì)所述第一報(bào)文進(jìn)行第一標(biāo)記;此時(shí),所述處理模塊203可以用于基于所述第一標(biāo)記,將所述內(nèi)層IP地址中的第一目的IP地址修改為所述外層IP地址中的第二目的IP地址。
本發(fā)明實(shí)施例中的交換設(shè)備中的各個(gè)模塊可以配置用于執(zhí)行圖1所示的報(bào)文轉(zhuǎn)發(fā)方法,由于本發(fā)明實(shí)施例中的交換設(shè)備與圖1所示的實(shí)施例所提供的方法解決問(wèn)題的原理相似,因此本發(fā)明實(shí)施例中交換設(shè)備的實(shí)施可以參見(jiàn)圖1所示的實(shí)施例所提供的方法的實(shí)施,在此不再贅述。
所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡(jiǎn)潔,僅以上述各功能模塊的劃分進(jìn)行舉例說(shuō)明,實(shí)際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將裝置的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。
在本發(fā)明所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng),裝置和方法,可以通過(guò)其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述模塊或單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過(guò)一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。
所述作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開(kāi)的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。
另外,在本申請(qǐng)各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。
所述集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中?;谶@樣的理解,本申請(qǐng)的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)或處理器執(zhí)行本申請(qǐng)各個(gè)實(shí)施例所述方法的全部或部分步驟。
以上所述,以上實(shí)施例僅用以對(duì)本申請(qǐng)的技術(shù)方案進(jìn)行了詳細(xì)介紹,但以上實(shí)施例的說(shuō)明只是用于幫助理解本發(fā)明的方法及其核心思想,不應(yīng)理解為對(duì)本發(fā)明的限制。本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。