欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種多接口網(wǎng)關(guān)設(shè)備數(shù)據(jù)發(fā)送實現(xiàn)方法

文檔序號:7869006閱讀:516來源:國知局

專利名稱::一種多接口網(wǎng)關(guān)設(shè)備數(shù)據(jù)發(fā)送實現(xiàn)方法
技術(shù)領(lǐng)域
:本發(fā)明涉及一種數(shù)據(jù)發(fā)送實現(xiàn)方法,尤其涉及一種多接口網(wǎng)關(guān)設(shè)備數(shù)據(jù)發(fā)送實現(xiàn)方法。
背景技術(shù)
:網(wǎng)絡(luò)運營商一般會對接入網(wǎng)絡(luò)按照業(yè)務(wù)類型進行劃分成多個子網(wǎng),比如在中國電信的光接入網(wǎng)絡(luò)里,根據(jù)VLAN將網(wǎng)絡(luò)劃分成上網(wǎng)、TR069、VOIP和IPTV四個子網(wǎng)。上網(wǎng)子網(wǎng)承載用戶訪問INTERNET的數(shù)據(jù),如網(wǎng)頁、聊天、在線視頻等;TR069子網(wǎng)承載ACS服務(wù)器管理網(wǎng)關(guān)設(shè)備的數(shù)據(jù);V0IP子網(wǎng)承載語音業(yè)務(wù)的數(shù)據(jù);IPTV子網(wǎng)承載電信IPTV業(yè)務(wù)的數(shù)據(jù)。對于網(wǎng)關(guān)設(shè)備的技術(shù)實現(xiàn)而言,各種類型的上行數(shù)據(jù)(網(wǎng)關(guān)設(shè)備發(fā)向運營商接入網(wǎng)絡(luò)的數(shù)據(jù))只能走運營商指定的通道,不能互竄。而對于網(wǎng)關(guān)設(shè)備上的一些應(yīng)用進程,比如sntp客戶端、DNS客戶端、TR069客戶端、VOIP客戶端等等,必須選擇正確的子網(wǎng)向運營商網(wǎng)絡(luò)發(fā)送數(shù)據(jù),才能符合運營商的要求。在基于Linux實現(xiàn)的網(wǎng)關(guān)設(shè)備上,一般的實現(xiàn)方法是每個子網(wǎng)對應(yīng)于一個網(wǎng)絡(luò)接口,發(fā)送·上行數(shù)據(jù)時選擇子網(wǎng)就是要選擇對應(yīng)的網(wǎng)絡(luò)接口。目前設(shè)備廠商一般使用靜態(tài)路由的方法來實現(xiàn)應(yīng)用進程和網(wǎng)絡(luò)接口的綁定,但該方法有下面幾個缺陷1.不夠靈活,在同一個路由表中操作,增加了系統(tǒng)路由表規(guī)劃的復(fù)雜度;2.在某些網(wǎng)絡(luò)環(huán)境里,不能解決問題,比如當(dāng)TR069服務(wù)器和VOIP服務(wù)器的地址相同時,必然有一個進程無法正確選路;3.對于訪問的資源是URL時,需要在DNS解析到地址后動態(tài)更新路由表,實現(xiàn)過程復(fù)雜,增加系統(tǒng)開銷。
發(fā)明內(nèi)容針對現(xiàn)有技術(shù)中所存在的技術(shù)問題,本發(fā)明提供了一種多接口網(wǎng)關(guān)設(shè)備數(shù)據(jù)發(fā)送實現(xiàn)方法,以解決上述的系統(tǒng)開銷大,無法正確選路等問題。具體技術(shù)方案如下所示一種多接口網(wǎng)關(guān)設(shè)備數(shù)據(jù)發(fā)送實現(xiàn)方法,其中,具體包括如下步驟步驟1.為所述網(wǎng)關(guān)設(shè)備連接每個子網(wǎng)的網(wǎng)絡(luò)接口分配一策略路由表;步驟2.為所述網(wǎng)關(guān)設(shè)備上要求不同子網(wǎng)的應(yīng)用進程分配不同的轉(zhuǎn)發(fā)標(biāo)記;步驟3.將所述轉(zhuǎn)發(fā)標(biāo)記設(shè)置為所述網(wǎng)關(guān)設(shè)備內(nèi)核策略路由機制中,數(shù)據(jù)包數(shù)據(jù)結(jié)構(gòu)的轉(zhuǎn)發(fā)標(biāo)記;步驟4.將所述內(nèi)核策略路由機制中的轉(zhuǎn)發(fā)標(biāo)記和所述策略路由表關(guān)聯(lián)映射;步驟5.當(dāng)所述網(wǎng)關(guān)設(shè)備獲取所述子網(wǎng)的地址信息時,將所述網(wǎng)絡(luò)接口對應(yīng)網(wǎng)段的路由作為默認(rèn)路由添加到相應(yīng)的所述策略路由表中;步驟6.所述網(wǎng)關(guān)設(shè)備根據(jù)策略路由機制,自動將待轉(zhuǎn)發(fā)數(shù)據(jù)包的數(shù)據(jù)結(jié)構(gòu)中的轉(zhuǎn)發(fā)標(biāo)記字段匹配所述策略路由表,并根據(jù)所述策略路由表中的默認(rèn)路由轉(zhuǎn)發(fā)數(shù)據(jù)包。上述的多接口網(wǎng)關(guān)設(shè)備數(shù)據(jù)發(fā)送實現(xiàn)方法,其中,所述網(wǎng)關(guān)設(shè)備基于Linux操作系統(tǒng)。上述的多接口網(wǎng)關(guān)設(shè)備數(shù)據(jù)發(fā)送實現(xiàn)方法,其中,所述步驟3中,包括步驟3.1.當(dāng)所述網(wǎng)關(guān)設(shè)備上需要轉(zhuǎn)發(fā)的數(shù)據(jù)包為從網(wǎng)絡(luò)接口接收的數(shù)據(jù)包時,根據(jù)所述轉(zhuǎn)發(fā)標(biāo)記設(shè)置Linux內(nèi)核策略路由機制中一數(shù)據(jù)包數(shù)據(jù)結(jié)構(gòu)sk_buff的轉(zhuǎn)發(fā)標(biāo)記。上述的多接口網(wǎng)關(guān)設(shè)備數(shù)據(jù)發(fā)送實現(xiàn)方法,其中,所述步驟3中,還包括步驟3.2.當(dāng)所述網(wǎng)關(guān)設(shè)備上需要轉(zhuǎn)發(fā)的數(shù)據(jù)包為本地應(yīng)用進程產(chǎn)生的數(shù)據(jù)包時,在Linux操作系統(tǒng)內(nèi)核中根據(jù)所述轉(zhuǎn)發(fā)標(biāo)記,擴展設(shè)置一Skjnark字段;步驟3.3根據(jù)所述Skjnark字段設(shè)置Linux內(nèi)核策略路由機制中所述數(shù)據(jù)包數(shù)據(jù)結(jié)構(gòu)sk_buff的轉(zhuǎn)發(fā)標(biāo)記。本發(fā)明的積極進步效果在于使網(wǎng)關(guān)設(shè)備上的進程能夠方便地實現(xiàn)正確選路,減低了系統(tǒng)開銷。為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。如圖1所示為本發(fā)明一種多接口網(wǎng)關(guān)設(shè)備數(shù)據(jù)發(fā)送實現(xiàn)方法實施例的流程示意圖。具體實施例方式下面結(jié)合附圖和具體實施例對本發(fā)明作進一步說明,但不作為本發(fā)明的限定。如圖1所示為本發(fā)明一種多接口網(wǎng)關(guān)設(shè)備數(shù)據(jù)發(fā)送實現(xiàn)方法實施例的流程示意圖,其中,具體包括如下步驟步驟1.為網(wǎng)關(guān)設(shè)備連接每個子網(wǎng)的網(wǎng)絡(luò)接口分配策略路由表;于上述技術(shù)方案的基礎(chǔ)上,分別為INTERNET子網(wǎng)、TR069子網(wǎng)、VOIP子網(wǎng)各分配一個路由表tbl_internet、tbl_tr069和tbl_voip。步驟2.為網(wǎng)關(guān)設(shè)備上要求不同子網(wǎng)的應(yīng)用進程分配不同的轉(zhuǎn)發(fā)標(biāo)記;于上述技術(shù)方案的基礎(chǔ)上,設(shè)置轉(zhuǎn)發(fā)標(biāo)記(forwardmark)0x10000對應(yīng)INTERNET子網(wǎng)、0x20000對應(yīng)TR069子網(wǎng)、0x30000對應(yīng)VOIP子網(wǎng)。步驟3.將轉(zhuǎn)發(fā)標(biāo)記設(shè)置為網(wǎng)關(guān)設(shè)備內(nèi)核策略路由機制中,數(shù)據(jù)包數(shù)據(jù)結(jié)構(gòu)的轉(zhuǎn)發(fā)標(biāo)記;步驟4.將內(nèi)核策略路由機制中的轉(zhuǎn)發(fā)標(biāo)記和策略路由表關(guān)聯(lián)映射;于上述技術(shù)方案的基礎(chǔ)上,利用iprule命令建立forwardmark和具體策略路由表間的關(guān)系,具體實現(xiàn)如下ipruleaddfwmarkOxlOOOO/OxffffOOOOtabletbl_internetipruleaddfwmark0x20000/0xffff0000tabletbl_tr069ipruleaddfwmark0x30000/0xffff0000tabletbl_voip;步驟5.當(dāng)網(wǎng)關(guān)設(shè)備獲取子網(wǎng)的地址信息時,將網(wǎng)絡(luò)接口對應(yīng)網(wǎng)段的路由作為默認(rèn)路由添加到相應(yīng)的策略路由表中;于上述技術(shù)方案的基礎(chǔ)上,在初始化設(shè)置完成后,tbl_internet>tbl_tr069和tbl_voip路由表是空的,當(dāng)對應(yīng)的網(wǎng)絡(luò)接口獲取到地址信息后,可以通過使用iproute命令將到該網(wǎng)絡(luò)接口對應(yīng)網(wǎng)段的路由做為默認(rèn)路由加到對應(yīng)的策略路由表中;步驟6.網(wǎng)關(guān)設(shè)備根據(jù)策略路由機制,自動將待轉(zhuǎn)發(fā)數(shù)據(jù)包的數(shù)據(jù)結(jié)構(gòu)中的轉(zhuǎn)發(fā)標(biāo)記字段匹配策略路由表,并根據(jù)策略路由表中的默認(rèn)路由轉(zhuǎn)發(fā)數(shù)據(jù)包。于上述技術(shù)方案的基礎(chǔ)上,對于Linux系統(tǒng)而言,完成上面的工作后,只要數(shù)據(jù)包的sk_buff的forwardmark字段和OxffffOOOO做與運算,其結(jié)果如果等于0x10000該數(shù)據(jù)包查路由表時,就會自動查找tbl_internet中的記錄;如果等于0x20000就會查找tbl_tr069中的記錄;如果等于0x30000就會查找tbl_voip中的記錄。因為這三個路由表中把相應(yīng)接口的路由配置成了默認(rèn)路由,所以數(shù)據(jù)包就會發(fā)送到運營商要求的子網(wǎng)絡(luò)中。本發(fā)明的一種多接口網(wǎng)關(guān)設(shè)備數(shù)據(jù)發(fā)送實現(xiàn)方法具體實施例中,網(wǎng)關(guān)設(shè)備基于Linux操作系統(tǒng)。本發(fā)明的一種多接口網(wǎng)關(guān)設(shè)備數(shù)據(jù)發(fā)送實現(xiàn)方法具體實施例中,步驟3中,包括步驟3.1.當(dāng)網(wǎng)關(guān)設(shè)備上需要轉(zhuǎn)發(fā)的數(shù)據(jù)包為從網(wǎng)絡(luò)接口接收的數(shù)據(jù)包時,根據(jù)轉(zhuǎn)發(fā)標(biāo)記設(shè)置Linux內(nèi)核策略路由機制中數(shù)據(jù)包數(shù)據(jù)結(jié)構(gòu)sk_buff的轉(zhuǎn)發(fā)標(biāo)記。于上述技術(shù)方案的基礎(chǔ)上,Linux系統(tǒng)中對于從一個網(wǎng)絡(luò)接口接收由另一個網(wǎng)絡(luò)接口發(fā)送的數(shù)據(jù)包,可以通過ebtables或iptables工具設(shè)置相應(yīng)的規(guī)則,讓內(nèi)核模塊給該數(shù)據(jù)包設(shè)置上forwardmark,保證查路由時可以查指定表中的記錄。本發(fā)明的一種多接口網(wǎng)關(guān)設(shè)備數(shù)據(jù)發(fā)送實現(xiàn)方法具體實施例中,步驟3中,還包括步驟3.2.當(dāng)網(wǎng)關(guān)設(shè)備上需要轉(zhuǎn)發(fā)的數(shù)據(jù)包為本地應(yīng)用進程產(chǎn)生的數(shù)據(jù)包時,在Linux操作系統(tǒng)內(nèi)核中根據(jù)轉(zhuǎn)發(fā)標(biāo)記,擴展設(shè)置Skjnark字段;對于由本地應(yīng)用進程發(fā)送數(shù)據(jù)包時,上述通過ebtables或iptables工具設(shè)置相應(yīng)的規(guī)則的方式不能完成此工作,所以需要對內(nèi)核機制做擴充。于上述技術(shù)方案的基礎(chǔ)上,Linux系統(tǒng)中應(yīng)用進程發(fā)送數(shù)據(jù)包是通過socket接口實現(xiàn)的,在調(diào)用socketO函數(shù)成功創(chuàng)建socket后,會返回該socket的句柄,下文用fd表示。該機制的擴充是,在獲得socket句柄后,通過setsockopt系統(tǒng)調(diào)用根據(jù)綁定要求設(shè)置sk_mark字段的值(sk_mark是內(nèi)核描述socket的數(shù)據(jù)結(jié)構(gòu)中的一個成員)。實現(xiàn)如下unsignedintnfmark_internet=0xl0000;setsockopt(fd,S0L_S0CKET,S0_MARK,(void*)&nfmark_internet,sizeof(unsignedint));unsignedintnfmark_tr069=0x20000;setsockopt(fd,S0L_S0CKET,S0_MARK,(void*)&nfmark_tr069,sizeof(unsignedint));unsignedintnfmark_voip=0x30000;setsockopt(fd,S0L_S0CKET,S0_MARK,(void*)&nfmark_voip,sizeof(unsignedint));上述實現(xiàn)方式表明對于INTERNET子網(wǎng)用第一段代碼;TR069子網(wǎng)用第二段代碼;VOIP子網(wǎng)用第三段代碼。步驟3.3根據(jù)Skjnark字段設(shè)置Linux內(nèi)核策略路由機制中數(shù)據(jù)包數(shù)據(jù)結(jié)構(gòu)sk_buff的轉(zhuǎn)發(fā)標(biāo)記。在內(nèi)核里socket將數(shù)據(jù)包向網(wǎng)絡(luò)層發(fā)送時,需要根據(jù)Skjnark設(shè)置對應(yīng)sk_buff的forwardmark字段,需要分別在文件net/ipv4/udp.c的函數(shù)udp_sendmsg()、文件net/ipv4/udp.c的函數(shù)raw_send_hdrinc()、函數(shù)raw_sendmsg()、文件net/ipv4/ip_output.c的函數(shù)ip_build_and_send_pkt()、函數(shù)ip_queue_xmit()、函數(shù)ip_push_pending_frames()、文件net/ipv4/inet_connection_sock.c的函數(shù)inet_csk_route_req()、文件net/ipv4/icmp.c的函數(shù)icmp_send()、文件include/net/route.h的函數(shù)ip_route_connect()、文件net/ipv6/datagram,c的函數(shù)ip6_datagram_connect()、文件net/ipv6/ip6_output.c的函數(shù)ip6_xmit()、函數(shù)ip6_push_pending_frames()、文件net/ipv6/raw.c的函數(shù)rawv6_send_hdrinc()、函數(shù)rawv6_sendmsg()、文件net/ipv6/udp.c的函數(shù)udpv6_sendmsg()等相應(yīng)位置做出修改,例如在文件net/ipv4/udp.c中對函數(shù)udp_sendmsg()的改動權(quán)利要求1.一種多接口網(wǎng)關(guān)設(shè)備數(shù)據(jù)發(fā)送實現(xiàn)方法,其特征在于,具體包括如下步驟步驟1.為所述網(wǎng)關(guān)設(shè)備連接每個子網(wǎng)的網(wǎng)絡(luò)接口分配一策略路由表;步驟2.為所述網(wǎng)關(guān)設(shè)備上要求不同子網(wǎng)的應(yīng)用進程分配不同的轉(zhuǎn)發(fā)標(biāo)記;步驟3.將所述轉(zhuǎn)發(fā)標(biāo)記設(shè)置為所述網(wǎng)關(guān)設(shè)備內(nèi)核策略路由機制中,數(shù)據(jù)包數(shù)據(jù)結(jié)構(gòu)的轉(zhuǎn)發(fā)標(biāo)記;步驟4.將所述內(nèi)核策略路由機制中的轉(zhuǎn)發(fā)標(biāo)記和所述策略路由表關(guān)聯(lián)映射;步驟5.當(dāng)所述網(wǎng)關(guān)設(shè)備獲取所述子網(wǎng)的地址信息時,將所述網(wǎng)絡(luò)接口對應(yīng)網(wǎng)段的路由作為默認(rèn)路由添加到相應(yīng)的所述策略路由表中;步驟6.所述網(wǎng)關(guān)設(shè)備根據(jù)策略路由機制,自動將待轉(zhuǎn)發(fā)數(shù)據(jù)包的數(shù)據(jù)結(jié)構(gòu)中的轉(zhuǎn)發(fā)標(biāo)記字段匹配所述策略路由表,并根據(jù)所述策略路由表中的默認(rèn)路由轉(zhuǎn)發(fā)數(shù)據(jù)包。2.如權(quán)利要求1所述的多接口網(wǎng)關(guān)設(shè)備數(shù)據(jù)發(fā)送實現(xiàn)方法,其特征在于,所述網(wǎng)關(guān)設(shè)備基于Linux操作系統(tǒng)。3.如權(quán)利要求2所述的多接口網(wǎng)關(guān)設(shè)備數(shù)據(jù)發(fā)送實現(xiàn)方法,其特征在于,所述步驟3中,包括步驟3.1.當(dāng)所述網(wǎng)關(guān)設(shè)備上需要轉(zhuǎn)發(fā)的數(shù)據(jù)包為從網(wǎng)絡(luò)接口接收的數(shù)據(jù)包時,根據(jù)所述轉(zhuǎn)發(fā)標(biāo)記設(shè)置Linux內(nèi)核策略路由機制中一數(shù)據(jù)包數(shù)據(jù)結(jié)構(gòu)sk_buff的轉(zhuǎn)發(fā)標(biāo)記。4.如權(quán)利要求3所述的多接口網(wǎng)關(guān)設(shè)備數(shù)據(jù)發(fā)送實現(xiàn)方法,其特征在于,所述步驟3中,還包括步驟3.2.當(dāng)所述網(wǎng)關(guān)設(shè)備上需要轉(zhuǎn)發(fā)的數(shù)據(jù)包為本地應(yīng)用進程產(chǎn)生的數(shù)據(jù)包時,在Linux操作系統(tǒng)內(nèi)核中根據(jù)所述轉(zhuǎn)發(fā)標(biāo)記,擴展設(shè)置一Skjnark字段;步驟3.3根據(jù)所述Skjnark字段設(shè)置Linux內(nèi)核策略路由機制中所述數(shù)據(jù)包數(shù)據(jù)結(jié)構(gòu)sk_buff的轉(zhuǎn)發(fā)標(biāo)記。全文摘要本發(fā)明公開了一種多接口網(wǎng)關(guān)設(shè)備數(shù)據(jù)發(fā)送實現(xiàn)方法,屬于一種數(shù)據(jù)發(fā)送實現(xiàn)方法,其中,包括如下步驟S1.為網(wǎng)關(guān)設(shè)備連接每個子網(wǎng)的網(wǎng)絡(luò)接口分配策略路由表;S2.為要求不同子網(wǎng)的應(yīng)用進程分配不同的轉(zhuǎn)發(fā)標(biāo)記;S3.將轉(zhuǎn)發(fā)標(biāo)記設(shè)置為網(wǎng)關(guān)設(shè)備內(nèi)核策略路由機制中,數(shù)據(jù)報數(shù)據(jù)結(jié)構(gòu)的轉(zhuǎn)發(fā)標(biāo)記;S4.將轉(zhuǎn)發(fā)標(biāo)記和策略路由表關(guān)聯(lián)映射;S5.當(dāng)網(wǎng)關(guān)設(shè)備獲取子網(wǎng)的地址信息時,將網(wǎng)絡(luò)接口對應(yīng)網(wǎng)段的路由作為默認(rèn)路由添加到相應(yīng)的策略路由表中;S6.網(wǎng)關(guān)設(shè)備根據(jù)策略路由規(guī)則,自動將待轉(zhuǎn)發(fā)數(shù)據(jù)包的數(shù)據(jù)結(jié)構(gòu)中的轉(zhuǎn)發(fā)標(biāo)記字段匹配策略路由表,并根據(jù)策略路由表中的默認(rèn)路由轉(zhuǎn)發(fā)數(shù)據(jù)包。本發(fā)明的有益效果是使網(wǎng)關(guān)設(shè)備上的進程能夠方便地實現(xiàn)選路問題,減低了系統(tǒng)開銷。文檔編號H04L12/741GK103036788SQ20121054636公開日2013年4月10日申請日期2012年12月14日優(yōu)先權(quán)日2012年12月14日發(fā)明者管建智申請人:上海斐訊數(shù)據(jù)通信技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
南康市| 湘潭市| 乐昌市| 萝北县| 莱芜市| 溧水县| 分宜县| 承德市| 贞丰县| 元朗区| 昌江| 昌宁县| 广水市| 榆树市| 苍南县| 方正县| 嘉义市| 江永县| 凤山市| 拜泉县| 保德县| 上思县| 陇南市| 延吉市| 元朗区| 甘泉县| 宣武区| 衡南县| 龙海市| 滨海县| 榆中县| 台南市| 巨鹿县| 遂溪县| 太原市| 宝山区| 安丘市| 江都市| 栾川县| 泽州县| 伊金霍洛旗|