專(zhuān)利名稱:一種基于nat的報(bào)文轉(zhuǎn)發(fā)方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信領(lǐng)域,尤其涉及一種基于NAT的報(bào)文轉(zhuǎn)發(fā)方法和設(shè)備。
背景技術(shù):
NAT (Network Address Translation,網(wǎng)絡(luò)地址轉(zhuǎn)換)是將IP數(shù)據(jù)報(bào)文頭中的IP地址轉(zhuǎn)換為另一個(gè)IP地址的過(guò)程。在實(shí)際應(yīng)用中,NAT主要用于實(shí)現(xiàn)私有網(wǎng)絡(luò)訪問(wèn)公共網(wǎng)絡(luò)的功能。這種通過(guò)使用少量的公網(wǎng)IP地址代表較多的私網(wǎng)IP地址的方式,將有助于減緩可用IP地址空間的枯竭。圖1描述了一種基本的NAT應(yīng)用,其地址轉(zhuǎn)換的基本過(guò)程包括:(I)內(nèi)網(wǎng)用戶主機(jī)Host (192.168.1.3)向外網(wǎng)服務(wù)器Server (1.1.1.2)發(fā)送的IP數(shù)據(jù)報(bào)文通過(guò)NAT設(shè)備。(2) NAT設(shè)備查看IP數(shù)據(jù)報(bào)文的報(bào)頭內(nèi)容,發(fā)現(xiàn)該報(bào)文是發(fā)往外網(wǎng)的,將其源IP地址字段的私網(wǎng)地址192.168.1.3轉(zhuǎn)換成一個(gè)可在Internet上選路的公網(wǎng)地址20.1.1.1,并將該報(bào)文發(fā)送給外網(wǎng)服務(wù)器,并在NAT設(shè)備的網(wǎng)絡(luò)地址轉(zhuǎn)換表中記錄這一地址轉(zhuǎn)換前后的映射關(guān)系。(3)外網(wǎng)服務(wù)器給內(nèi)網(wǎng)用戶發(fā)送的應(yīng)答報(bào)文(其初始目的IP地址為20.11.1)到達(dá)NAT設(shè)備后,NAT設(shè)備查看報(bào)頭內(nèi)容,然后查找網(wǎng)絡(luò)地址轉(zhuǎn)換表的記錄,用對(duì)應(yīng)的內(nèi)網(wǎng)私有地址192.168.1.3替換初始的目的IP地址。上述的NAT過(guò)程對(duì)終端(如圖1中的Host和Server)來(lái)說(shuō)是透明的。對(duì)外網(wǎng)服務(wù)器而言,它認(rèn)為內(nèi)網(wǎng)用戶主機(jī)的IP地址就是20.1.1.1,并不知道有192.168.1.3這個(gè)地址。地址轉(zhuǎn)換的優(yōu)點(diǎn)在于,在為內(nèi)部網(wǎng)絡(luò)主機(jī)提供了“隱私”保護(hù)的前提下,實(shí)現(xiàn)了內(nèi)部網(wǎng)絡(luò)的主機(jī)通過(guò)該功能訪問(wèn)外部網(wǎng)絡(luò)的資源。通常情況下,NAT設(shè)備上連接到用戶內(nèi)部網(wǎng)絡(luò)的接口稱為NAT內(nèi)部接口,連接到外部網(wǎng)絡(luò)(如Internet)的接口稱為NAT外部接口。在實(shí)際應(yīng)用中,NAT設(shè)備上可能存在多個(gè)NAT外部接口,并且形成等價(jià)路由。如圖2所示,當(dāng)用戶從用戶內(nèi)部網(wǎng)絡(luò)訪問(wèn)外部網(wǎng)絡(luò)時(shí),NAT設(shè)備有可能有多個(gè)外部接口形成等價(jià)路由。此種情況下,如果外部接口連接的單板不是做NAT轉(zhuǎn)換的單板,則經(jīng)過(guò)NAT轉(zhuǎn)換后的報(bào)文經(jīng)過(guò)該外部接口所在的單板后,會(huì)再次進(jìn)行路由查找,由于外部接口的路由是等價(jià)路由,因此按照等價(jià)路由負(fù)載分擔(dān)的算法,比如HASH(哈希)算法,從等價(jià)路由中選擇一路由,并從對(duì)應(yīng)的外部接口將報(bào)文轉(zhuǎn)發(fā)出去,這樣,對(duì)于該用戶的網(wǎng)絡(luò)訪問(wèn)過(guò)程,在NAT設(shè)備上將無(wú)法保證從外網(wǎng)-> 內(nèi)網(wǎng)的請(qǐng)求報(bào)文的入接口,與從內(nèi)網(wǎng)_>外網(wǎng)的應(yīng)答報(bào)文的出接口保持一致。因此,亟需一種技術(shù),能夠保證在這種情況下,在NAT設(shè)備上實(shí)現(xiàn)從外部接口進(jìn)來(lái)的報(bào)文經(jīng)過(guò)NAT轉(zhuǎn)換后仍然從該外部接口轉(zhuǎn)發(fā)出去
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供了一種基于NAT的報(bào)文轉(zhuǎn)發(fā)方法和設(shè)備,用于在NAT設(shè)備的外部接口有等價(jià)路由存在的情況下,實(shí)現(xiàn)從外部接口進(jìn)來(lái)的報(bào)文返回的時(shí)候也從該外部接口發(fā)送出去。本發(fā)明實(shí)施例提供的一種基于NAT的報(bào)文轉(zhuǎn)發(fā)方法,該方法包括:NAT設(shè)備的NAT模塊從內(nèi)部接口接收?qǐng)?bào)文并進(jìn)行NAT轉(zhuǎn)換,根據(jù)地址轉(zhuǎn)換表查詢對(duì)應(yīng)的外部接口,查詢所述外部接口所在的ARP表中的IP地址,將查詢到的IP地址轉(zhuǎn)換MAC地址并用該MAC地址替換該報(bào)文的源MAC地址,將該報(bào)文發(fā)送給連接外部接口的硬件轉(zhuǎn)發(fā)模塊;連接外部接口的硬件轉(zhuǎn)發(fā)模塊根據(jù)NAT模塊發(fā)來(lái)的報(bào)文的源MAC地址匹配策略路由,根據(jù)匹配到的策略路由所重定向到的目的IP地址查詢對(duì)應(yīng)的ARP表項(xiàng)中的出接口,將該報(bào)文的源MAC地址更新為所述出接口的MAC地址,從所述出接口轉(zhuǎn)發(fā)該報(bào)文。其中,所述策略路由的配置過(guò)程包括:所述NAT設(shè)備的路由協(xié)議模塊向連接外部接口的硬件轉(zhuǎn)發(fā)模塊配置路由時(shí),查詢路由的下一跳IP地址的屬性,若路由的下一跳IP地址為指向外部接口學(xué)習(xí)過(guò)來(lái)的直連路由,則將所述下一跳IP地址轉(zhuǎn)換為MAC地址,并根據(jù)轉(zhuǎn)換后的MAC地址在所述硬件轉(zhuǎn)發(fā)模塊中配置策略路由,所述策略路由用于將源MAC地址與所述轉(zhuǎn)換后的MAC地址匹配的報(bào)文重定向到所述下一跳IP地址?;蛘?,所述策略路由的配置過(guò)程包括:所述NAT設(shè)備的ARP模塊從外部接口學(xué)習(xí)到ARP表項(xiàng)后,將所述ARP表項(xiàng)中的IP地址轉(zhuǎn)換為MAC地址,并根據(jù)轉(zhuǎn)換后的MAC地址在連接外部接口的硬件轉(zhuǎn)發(fā)模塊中配置策略路由,所述策略路由用于將源MAC地址與所述轉(zhuǎn)換后的MAC地址匹配的報(bào)文重定向到所述ARP表項(xiàng)中的IP地址。本發(fā)明實(shí)施例提供的一種NAT設(shè)備,包括:NAT模塊,用于對(duì)從本設(shè)備內(nèi)部接口接收到的報(bào)文進(jìn)行NAT轉(zhuǎn)換后,根據(jù)地址轉(zhuǎn)換表查詢對(duì)應(yīng)的外部接口,查詢所述外部接口所在的ARP表項(xiàng)中的IP地址,將查詢到的IP地址轉(zhuǎn)換為MAC地址并用該MAC地址替換該報(bào)文的源MAC地址,將該報(bào)文發(fā)送給連接外部接口的硬件轉(zhuǎn)發(fā)模塊;硬件轉(zhuǎn)發(fā)模塊,用于根據(jù)NAT模塊發(fā)來(lái)的報(bào)文的源MAC地址匹配策略路由,根據(jù)匹配到的策略路由所重定向到的目的IP地址查詢對(duì)應(yīng)的ARP表項(xiàng)中的出接口,將該報(bào)文的源MAC地址更新為所述出接口的MAC地址,從所述出接口轉(zhuǎn)發(fā)該報(bào)文。進(jìn)一步的,該設(shè)備還包括:路由協(xié)議模塊,用于在向連接外部接口的硬件轉(zhuǎn)發(fā)模塊配置路由時(shí),查詢路由的下一跳IP地址的屬性,若路由的下一跳IP地址為指向外部接口學(xué)習(xí)過(guò)來(lái)的直連路由,則將所述下一跳IP地址轉(zhuǎn)換為MAC地址,并根據(jù)轉(zhuǎn)換后的MAC地址在所述硬件轉(zhuǎn)發(fā)模塊中配置策略路由,所述策略路由用于將源MAC地址與所述轉(zhuǎn)換后的MAC地址匹配的報(bào)文重定向到所述下一跳IP地址。進(jìn)一步的,該設(shè)備還包括:ARP模塊,用于從外部接口學(xué)習(xí)到ARP表項(xiàng)后,將所述ARP表項(xiàng)中的IP地址轉(zhuǎn)換為MAC地址,并根據(jù)轉(zhuǎn)換后的MAC地址在連接外部接口的硬件轉(zhuǎn)發(fā)模塊中配置策略路由,所述策略路由用于將源MAC地址與所述轉(zhuǎn)換后的MAC地址匹配的報(bào)文重定向到所述ARP表項(xiàng)中的IP地址。本發(fā)明的上述實(shí)施例中,NAT設(shè)備中的NAT模塊在從本設(shè)備內(nèi)部接口接收到報(bào)文并進(jìn)行NAT轉(zhuǎn)換后,根據(jù)地址轉(zhuǎn)換表查詢對(duì)應(yīng)的外部接口,根據(jù)ARP表查詢?cè)撏獠拷涌趯?duì)應(yīng)的IP地址,將該IP地址轉(zhuǎn)換MAC地址并用該MAC地址替換該報(bào)文的源MAC地址,將該報(bào)文發(fā)送給連接外部接口的硬件轉(zhuǎn)發(fā)模塊,以使連接外部接口的硬件轉(zhuǎn)發(fā)模塊根據(jù)NAT模塊發(fā)來(lái)的報(bào)文的源MAC地址匹配策略路由,根據(jù)匹配到的策略路由所重定向到的目的IP地址查詢對(duì)應(yīng)的ARP表項(xiàng)中的出接口,從該出接口轉(zhuǎn)發(fā)該報(bào)文,從而實(shí)現(xiàn)從外部接口進(jìn)來(lái)的報(bào)文經(jīng)過(guò)NAT轉(zhuǎn)換后仍然從該外部接口轉(zhuǎn)發(fā)出去。
圖1為現(xiàn)有技術(shù)中NAT轉(zhuǎn)換的示意圖;圖2為現(xiàn)有技術(shù)中NAT設(shè)備上存在多個(gè)外部接口的示意圖;圖3為本發(fā)明實(shí)施例中的基于NAT的報(bào)文轉(zhuǎn)發(fā)示意圖;圖4A、圖4B、圖4C分別為本發(fā)明實(shí)施例提供的NAT設(shè)備的結(jié)構(gòu)示意圖。
具體實(shí)施例方式下面結(jié)合符合對(duì)本發(fā)明實(shí)施例進(jìn)行詳細(xì)描述。實(shí)施例一NAT設(shè)備的路由協(xié)議模塊在連接外部接口的單板上的硬件轉(zhuǎn)發(fā)模塊中配置路由時(shí),查詢?cè)撀酚梢玫南乱惶膶傩?,如果該路由的下一跳是指向NAT設(shè)備外部接口學(xué)習(xí)過(guò)來(lái)的外部接口直連路由,則將該下一跳IP地址轉(zhuǎn)換為MAC地址形式,并根據(jù)該MAC地址向硬件轉(zhuǎn)發(fā)模塊配置一條策略路由,用以將源MAC地址與該MAC地址匹配的報(bào)文重定向到該下一跳IP地址。當(dāng)NAT設(shè)備從內(nèi)部網(wǎng)絡(luò)接收到報(bào)文后,根據(jù)匹配的地址轉(zhuǎn)換表項(xiàng)確定對(duì)應(yīng)的外部接口,查詢?cè)撏獠拷涌谒贏RP表項(xiàng)中的IP地址,將該IP地址轉(zhuǎn)換為MAC地址形式并替換報(bào)文中的源MAC地址,并將報(bào)文發(fā)送給連接外部接口的單板;連接外部接口的單板上的硬件轉(zhuǎn)發(fā)模塊根據(jù)該報(bào)文的源MAC地址匹配該硬件轉(zhuǎn)發(fā)模塊上的策略路由,并根據(jù)匹配的策略路由所重定向到的目的IP地址查詢ARP表項(xiàng),從查詢到的ARP表項(xiàng)中的出接口轉(zhuǎn)發(fā)該報(bào)文。本發(fā)明實(shí)施例中所涉及的NAT設(shè)備可以是集中式NAT設(shè)備,也可以是分布式架構(gòu)的NAT設(shè)備。下面以圖3所示的架構(gòu)為例,對(duì)本實(shí)施例的具體實(shí)現(xiàn)過(guò)程進(jìn)行詳細(xì)描述。如圖3所示,NAT設(shè)備的外部接口 port I和port2是NAT設(shè)備連接外部網(wǎng)絡(luò)(公網(wǎng))的接口。port I對(duì)應(yīng)的路由和port2對(duì)應(yīng)的路由為等價(jià)路由。portl 連接設(shè)備 I,設(shè)備 I 的 IP 地址為 1.1.1.1,MAC 地址為 χχ-χχ-χχ-χχ-χχ-χχ,port2 連接設(shè)備 2,設(shè)備 2 的 IP 地址為 2.2.2.2, MAC 地址為 yy-yy-yy-yy-yy-yy,portO 為NAT設(shè)備連接用戶內(nèi)部網(wǎng)絡(luò)(私網(wǎng))的內(nèi)部接口。portl、port2所連接的單板不做NAT轉(zhuǎn)換,該單板上的ASIC (ApplicationSpecific Integrated Circuit,特定用途集成電路)芯片上配置硬件轉(zhuǎn)發(fā)表項(xiàng),負(fù)責(zé)轉(zhuǎn)發(fā)報(bào)文。當(dāng)NAT設(shè)備從portl收到發(fā)往用戶內(nèi)部網(wǎng)絡(luò)的報(bào)文時(shí),portl所連接的單板學(xué)習(xí)到表I所示的ARP表項(xiàng),并生成對(duì)應(yīng)的直連路由:1.1.1.1/32->1.1.1.1。NAT設(shè)備對(duì)該報(bào)文進(jìn)行NAT轉(zhuǎn)換,生成如表2所示的地址轉(zhuǎn)換表項(xiàng),并將轉(zhuǎn)換后的報(bào)文通過(guò)portO發(fā)送到用戶內(nèi)部網(wǎng)絡(luò)。表I
權(quán)利要求
1.一種基于網(wǎng)絡(luò)地址轉(zhuǎn)換NAT的報(bào)文轉(zhuǎn)發(fā)方法,其特征在于,該方法包括: NAT設(shè)備的NAT模塊從內(nèi)部接口接收?qǐng)?bào)文并進(jìn)行NAT轉(zhuǎn)換,根據(jù)地址轉(zhuǎn)換表查詢對(duì)應(yīng)的外部接口,查詢所述外部接口所在的ARP表中的IP地址,將查詢到的IP地址轉(zhuǎn)換MAC地址并用該MAC地址替換該報(bào)文的源MAC地址,將該報(bào)文發(fā)送給連接外部接口的硬件轉(zhuǎn)發(fā)模塊; 連接外部接口的硬件轉(zhuǎn)發(fā)模塊根據(jù)NAT模塊發(fā)來(lái)的報(bào)文的源MAC地址匹配策略路由,根據(jù)匹配到的策略路由所重定向到的目的IP地址查詢對(duì)應(yīng)的ARP表項(xiàng)中的出接口,將該報(bào)文的源MAC地址更新為所述出接口的MAC地址,從所述出接口轉(zhuǎn)發(fā)該報(bào)文。
2.如權(quán)利要求1所述的方法,其特征在于,所述策略路由的配置過(guò)程包括: 所述NAT設(shè)備的路由協(xié)議模塊向連接外部接口的硬件轉(zhuǎn)發(fā)模塊配置路由時(shí),查詢路由的下一跳IP地址的屬性,若路由的下一跳IP地址為指向外部接口學(xué)習(xí)過(guò)來(lái)的直連路由,則將所述下一跳IP地址轉(zhuǎn)換為MAC地址,并根據(jù)轉(zhuǎn)換后的MAC地址在所述硬件轉(zhuǎn)發(fā)模塊中配置策略路由,所述策略路由用于將源MAC地址與所述轉(zhuǎn)換后的MAC地址匹配的報(bào)文重定向到所述下一跳IP地址。
3.如權(quán)利要求2所述的方法,其特征在于,所述路由協(xié)議模塊將所述下一跳IP地址轉(zhuǎn)換為MAC地址時(shí)所使用的規(guī)則,與所述NAT模塊將IP地址轉(zhuǎn)換為MAC地址時(shí)所使用的規(guī)則相同。
4.如權(quán)利要求1所述的方法,其特征在于,所述策略路由的配置過(guò)程包括: 所述NAT設(shè)備的ARP模塊從外部接口學(xué)習(xí)到ARP表項(xiàng)后,將所述ARP表項(xiàng)中的IP地址轉(zhuǎn)換為MAC地址,并根據(jù)轉(zhuǎn)換后的MAC地址在連接外部接口的硬件轉(zhuǎn)發(fā)模塊中配置策略路由,所述策略路由用于將源M AC地址與所述轉(zhuǎn)換后的MAC地址匹配的報(bào)文重定向到所述ARP表項(xiàng)中的IP地址。
5.如權(quán)利要求4所述的方法,其特征在于,所述ARP模塊將所述ARP表項(xiàng)中的IP地址轉(zhuǎn)換為MAC地址時(shí)所使用的規(guī)則,與所述NAT模塊將IP地址轉(zhuǎn)換為MAC地址時(shí)所使用的規(guī)則相同。
6.—種NAT設(shè)備,其特征在于,包括: NAT模塊,用于對(duì)從本設(shè)備內(nèi)部接口接收到的報(bào)文進(jìn)行NAT轉(zhuǎn)換后,根據(jù)地址轉(zhuǎn)換表查詢對(duì)應(yīng)的外部接口,查詢所述外部接口所在的ARP表項(xiàng)中的IP地址,將查詢到的IP地址轉(zhuǎn)換為MAC地址并用該MAC地址替換該報(bào)文的源MAC地址,將該報(bào)文發(fā)送給連接外部接口的硬件轉(zhuǎn)發(fā)模塊; 硬件轉(zhuǎn)發(fā)模塊,用于根據(jù)NAT模塊發(fā)來(lái)的報(bào)文的源MAC地址匹配策略路由,根據(jù)匹配到的策略路由所重定向到的目的IP地址查詢對(duì)應(yīng)的ARP表項(xiàng)中的出接口,將該報(bào)文的源MAC地址更新為所述出接口的MAC地址,從所述出接口轉(zhuǎn)發(fā)該報(bào)文。
7.如權(quán)利要求6所述的設(shè)備,其特征在于,還包括: 路由協(xié)議模塊,用于在向連接外部接口的硬件轉(zhuǎn)發(fā)模塊配置路由時(shí),查詢路由的下一跳IP地址的屬性,若路由的下一跳IP地址為指向外部接口學(xué)習(xí)過(guò)來(lái)的直連路由,則將所述下一跳IP地址轉(zhuǎn)換為MAC地址,并根據(jù)轉(zhuǎn)換后的MAC地址在所述硬件轉(zhuǎn)發(fā)模塊中配置策略路由,所述策略路由用于將源MAC地址與所述轉(zhuǎn)換后的MAC地址匹配的報(bào)文重定向到所述下一跳IP地址。
8.如權(quán)利要求7所述的設(shè)備,其特征在于,所述路由協(xié)議模塊將所述下一跳IP地址轉(zhuǎn)換為MAC地址時(shí)所使用的規(guī)則,與所述NAT模塊將IP地址轉(zhuǎn)換為MAC地址時(shí)所使用的規(guī)則相同。
9.如權(quán)利要求6所述的設(shè)備,其特征在于,還包括: ARP模塊,用于從外部接口學(xué)習(xí)到ARP表項(xiàng)后,將所述ARP表項(xiàng)中的IP地址轉(zhuǎn)換為MAC地址,并根據(jù)轉(zhuǎn)換后的MAC地址在連接外部接口的硬件轉(zhuǎn)發(fā)模塊中配置策略路由,所述策略路由用于將源MAC地址與所述轉(zhuǎn)換后的MAC地址匹配的報(bào)文重定向到所述ARP表項(xiàng)中的IP地址。
10.如權(quán)利要求9所述的設(shè)備,其特征在于,所述ARP模塊將所述ARP表項(xiàng)中的IP地址轉(zhuǎn)換為MAC地址時(shí)所使用的 規(guī)則,與所述NAT模塊將IP地址轉(zhuǎn)換為MAC地址時(shí)所使用的規(guī)則相同。
全文摘要
本發(fā)明公開(kāi)了NAT的報(bào)文轉(zhuǎn)發(fā)方法和設(shè)備。該方法包括NAT設(shè)備的路由協(xié)議模塊向連接外部接口的硬件轉(zhuǎn)發(fā)模塊配置路由時(shí),對(duì)于下一跳屬性為指向外部接口學(xué)習(xí)過(guò)來(lái)的直連路由的路由,將該下一跳IP地址封裝為MAC地址,并在硬件轉(zhuǎn)發(fā)模塊中配置策略路由,用于將源MAC地址與所述MAC地址匹配的報(bào)文重定向到該下一跳IP地址對(duì)應(yīng)的外部接口;當(dāng)所述NAT設(shè)備的NAT模塊從內(nèi)部接口接收到報(bào)文并進(jìn)行NAT轉(zhuǎn)換后,先后根據(jù)地址轉(zhuǎn)換表和ARP表匹配到外部接口對(duì)應(yīng)的IP地址,將該IP地址轉(zhuǎn)換為MAC地址并替換報(bào)文的源MAC地址,發(fā)送給連接外部接口的硬件轉(zhuǎn)發(fā)模塊;硬件轉(zhuǎn)發(fā)模塊根據(jù)報(bào)文的源MAC地址匹配策略路由,根據(jù)匹配到的策略路由將該報(bào)文重定向到指定的外部接口進(jìn)行轉(zhuǎn)發(fā)。
文檔編號(hào)H04L29/12GK103152269SQ20131006053
公開(kāi)日2013年6月12日 申請(qǐng)日期2013年2月26日 優(yōu)先權(quán)日2013年2月26日
發(fā)明者覃志祥, 顧錦楓 申請(qǐng)人:杭州華三通信技術(shù)有限公司