路由器ip地址-路由器IP指派DHCP和BOOTP不同之處

  • A+
所屬分類:路由器限速

配置路由器通過6IN4隧道在小區(qū)動(dòng)態(tài)IP寬帶上用IPV6[ASUS-MERLINWRT/RT-N66U]

注意:對(duì)于動(dòng)態(tài)IP用戶,如想自動(dòng)更新Client EndPoint地址,需要開啟路由器的SSH服務(wù),也就是MiBoys等路由器玩家常說的“獲取路由器root權(quán)限”(哈哈哈哈)。退而求其次,如果路由器的管理頁面內(nèi)允許設(shè)置開機(jī)啟動(dòng)腳本,也可以。或者,如果家里有另一臺(tái)永遠(yuǎn)不關(guān)機(jī)的電腦的話,也可以設(shè)置一個(gè)定時(shí)任務(wù),但這里不說。

都不行的話,就只能把自己的瀏覽器主頁設(shè)置成更新頁的API了(什么是更新頁API,后面會(huì)說)……

16/01/31更新:如果路由器的DDNS設(shè)置有內(nèi)置tunnelbroker DDNS模板的話,可以直接使用,方便省力:https://mirrochou.com/2016/01/how-to-use-tunnelbroker-ddns/

好了,下面是正文。

很久以前就了解到了tunnelbroker這么一個(gè)神奇的東西,畢竟啊, ipv6資源那么多(各大高校的pt站),而ISP因?yàn)槟承┍娝苤脑蚨虝r(shí)間內(nèi)是不會(huì)上ipv6設(shè)備的,所以通過別的方法訪問tcp6網(wǎng)絡(luò)也就成了無奈的辦法。之前折騰過很久也沒有成功。然而好在shadowsocks-rss和anyconnect都支持使用tcp4協(xié)議傳輸tcp6內(nèi)容,所以ipv6資源也是照看不誤。剛才看到了PeterCai的一篇寫于去年的Blog大受啟發(fā),摩拳擦掌決定再嘗試一番。這一段時(shí)間內(nèi),路由器還是用了三年的ASUS RT-N66U,不過固件從DD-WRT換成了OpenWRT又換成了TomatoUSB到現(xiàn)在的Merlin-WRT。Merlin-WRT是基于ASUSWRT更改的第三方固件,UI與原版固件無異,但是增加了很多喜聞樂見的功能(比如JFFS2掛載、SSH登陸等),而且還有向NETGEAR等品牌型號(hào)的移植版。扯遠(yuǎn)了,對(duì)于要折騰路由器,那首先就是要先看一看SSH登陸打開了沒有,各種固件的操作大多大同小異:設(shè)置(Settings)或管理(Administration)頁面中的SSH登陸,由于安全考量一般是關(guān)閉的,打開,允許密碼登陸(或是有安全強(qiáng)迫癥也可以選擇使用密鑰登陸,至于怎樣生成私鑰我沒有嘗試過,所以并不清楚)。

開啟后就可以使用遠(yuǎn)程終端連接和管理路由器了,大部分固件都不帶sftp服務(wù),有需要可以使用ipkg或opkg安裝,對(duì)于沒有安裝optware的固件可以參考之前的文章https://mirrochou.com/2016/01/install-opt-and-sftp-on-tomatousb-asus-rt-n66u/這篇文章中的內(nèi)容不需要使用sftp或是optware,所以以上內(nèi)容只限軟廣之用。然后將路由器DNS更改為支持ipv6的DNS,如8.8.8.8,DNS的內(nèi)容設(shè)置大多在路由器的WAN配置頁,如果8.8.8.8在當(dāng)?shù)乇缓椭C了,也可以使用本地ISP提供的DNS,不過對(duì)于ipv6解析是否會(huì)存在問題并不保證。路由器弄了這么多,接下來該去尋找IPv6隧道服務(wù)商了,在這里推薦Hurricane Electric的TunnelBroker服務(wù)(也是老牌子了),進(jìn)入https://www.tunnelbroker.net/注冊(cè)一個(gè)賬號(hào),然后選擇左側(cè)的“Create Regular Tunnel”

這個(gè)步驟中EndPoint(本地客戶端終點(diǎn))是必填的,也就是自己當(dāng)前的ip,去ip138之類的網(wǎng)站或者ipconfig(Linux下是ifconfig)一下都可以看到,注意要先配置路由器的防火墻允許接收ping(允許ICMP包)。選擇一個(gè)服務(wù)器,推薦使用亞洲的,據(jù)說速度或者ping會(huì)更快一些,然而我還沒有寫腳本的能力去實(shí)時(shí)測(cè)試每個(gè)服務(wù)器的連接速度……所以我果斷聽信了據(jù)說選擇了香港的。下一個(gè)頁面將會(huì)給出一份詳細(xì)的設(shè)置內(nèi)容

這時(shí)我們打開路由器的IPv6頁,各個(gè)固件的進(jìn)入方法大致相同,有的是直接進(jìn)入,有的是隱藏在WAN中,有的隱藏在Basic中,對(duì)于較老版本的Openwrt沒有內(nèi)置ipv6可以使用Tunnelbroker.net提供的Example Configurations(配置樣例)頁面中的Openwrt的配置方法使用終端(建議PuTTY)手動(dòng)配置。

首先將IPv6類型選為ipv6in4 (Tunnel 6in4),看準(zhǔn),是6in4不是6to4,然后將tunnelbroker.net提供的配置信息填入路由器的IPv6配置中。

可以發(fā)現(xiàn),Server IPv6 Address 對(duì)應(yīng) 服務(wù)器IPv6地址,Server IPv4 Address 對(duì)應(yīng) 服務(wù)器IPv4地址,Client IPv6 Address 對(duì)應(yīng) 用戶端IPv6地址,Client IPv4 Address在Tunnelbroker頁面中是可以點(diǎn)擊的控件,點(diǎn)擊后可以編輯然后刷新。Routed IPv6 Prefixes對(duì)應(yīng)IPv6內(nèi)部網(wǎng)絡(luò)設(shè)置,有些固件允許在填寫配置時(shí)將長(zhǎng)度“/64”填寫在IP地址后面,有些則不允許,各種固件慢慢嘗試吧,反正MerlinWRT不允許,需要在填寫前綴長(zhǎng)度的地方表明長(zhǎng)度。DNS服務(wù)器也是,MerlinWRT只允許填寫ipv6地址的DNS服務(wù)器。

填寫完成后點(diǎn)擊應(yīng)用設(shè)置,等待啟動(dòng)完成后嘗試訪問http://ipv6-test.com/或者h(yuǎn)ttp://test-ipv6.com/,應(yīng)該已經(jīng)可以檢測(cè)到由hurricane electric提供的IPv6服務(wù)了。如果不行,看一看是不是因?yàn)橹貑⒙酚善鞲淖兞吮镜豬pv4地址,如果改變了返回tunnelbroker.net的隧道信息設(shè)置頁更新一下Client IPv4 Address。還不行的話嘗試更改隧道的MTU或在路由器的ipv6設(shè)置配置中進(jìn)行排查。

這時(shí)應(yīng)該就可以成功訪問IPv6資源了,但由于家庭寬帶的動(dòng)態(tài)IP分配特殊性,每次重啟路由器都要重新在tunnelbroker.net進(jìn)行配置也未免太過麻煩,所以最好能夠路由器實(shí)時(shí)檢測(cè)ip的變化并反饋給tunnelbroker.net,還好tunnelbroker.net已經(jīng)想到了這個(gè)問題,在隧道詳情的頁面中有一個(gè)Advanced選項(xiàng)卡,里面會(huì)有意想不到的事情哦。

首先是MTU設(shè)置,由于我家這邊的ISP的上層設(shè)備原因,最大的數(shù)據(jù)包的MTU只能到1462,而tunnelbroker默認(rèn)的是1480,為了避免出現(xiàn)問題,我主動(dòng)設(shè)置為了1460,然后就是下面的Example Update URL了。好奇的話可以將這段URL復(fù)制進(jìn)瀏覽器看一看是什么效果,正常的話會(huì)反饋回一個(gè)IP地址外加ok字樣,IP地址就是本機(jī)當(dāng)前的ip地址了,而在tunnelbroker的服務(wù)器上則會(huì)因?yàn)檫@次訪問而回自動(dòng)將服務(wù)器上的隧道配置中的客戶端IPv4地址自動(dòng)更新為剛剛訪問的ip。

這里,我們通過crontab與cURL(curl)達(dá)到路由器每隔一分鐘訪問一次上述更新API的效果。配置好路由器上的SSH后用PuTTY連接路由器,輸入用戶名與密碼。

首先檢測(cè)命令是否有效(小貼士,在PuTTY中右鍵相當(dāng)于粘貼)curl tunnelbroker提供的更新URL如果有問題的話嘗試curl -k tunnelbroker提供的更新URL-k命令的作用是忽略不信任的ssl證書,由于時(shí)間長(zhǎng)之后可能會(huì)遇到長(zhǎng)城的中間人攻擊,所以建議加上-k,畢竟更新ip地址總比被看了已經(jīng)知道的ip地址重要……

如果能夠返回nochg+本機(jī)ip的話則指令是有效的,如果提示command not found,考慮用optware安裝一個(gè)curl吧,如果超時(shí)的話,可能是tunnelbroker.net在當(dāng)?shù)乇缓椭C了,請(qǐng)?jiān)时?br />
接下來使用crontab。crontab是一個(gè)定時(shí)計(jì)劃任務(wù)模板,具體詳情不多介紹,在終端中輸入crontab -e然后應(yīng)該會(huì)遇到如下頁面

那么恭喜,你進(jìn)入了固件自帶的vi文本編輯器頁面,注意,什么都不要?jiǎng)樱裁炊疾灰獎(jiǎng)樱裁炊疾灰獎(jiǎng)樱。ň哲碾S意吧,當(dāng)然菊苣也不會(huì)看這篇文章……)按一下鍵盤上的“I”進(jìn)入編輯模式,輸入如下內(nèi)容* * * * * curl -k 你自己的更新API網(wǎng)址完成后按“ESC”退出編輯模式,然后按“:”(沒錯(cuò)就是鍵盤的Shift + ;)進(jìn)入命令模式,輸入“w”并回車保存文檔,再次輸入“:”進(jìn)入命令模式輸入“q”退出,輸入“wq”保存并退出,如果兩條命令不起作用可以嘗試“w!”或“q!”強(qiáng)制保存與退出。事已至此,讓我們愉快的重啟一遍路由器,享受原生IPv6的生活吧。====== 16/01/31更新 ======由于路由器內(nèi)部存儲(chǔ)的特殊性,直到路由器工作了兩晚我才發(fā)現(xiàn)重啟之后crontab的配置變量會(huì)消失,再附上一個(gè)寫入文件到nvram中的句子。nvram save/var/spool/cron/crontabs/{創(chuàng)建crontab時(shí)使用的用戶名,比如我的是admin}nvram commit這個(gè)時(shí)候可以重啟一下試試了。不清楚自己用戶名的可以先cd到/var/spool/cron/crontabs然后使用 ls -l 命令查看。貌似不同固件的NVRAM用法不一樣,這里就不一一舉例了。

Verizon被指幫助網(wǎng)絡(luò)犯罪分子路由數(shù)百萬被盜的IP地址

看來Verizon需要好好解釋一下了:來自The Spamhaus Project的一份報(bào)告指責(zé)該公司通過路由四百多萬IP地址的方式為網(wǎng)絡(luò)犯罪分子提供幫助。

The Spamhaus Project是一家非營利性國際組織,多年來一直維護(hù)一份垃圾郵件黑名單,也跟執(zhí)法部門一道打擊垃圾郵件發(fā)送人員以及一些互聯(lián)網(wǎng)垃圾郵件操作行為。

該組織的代表BarryBranagh指出,最近IPv4地址塊的耗盡狀況迫使網(wǎng)絡(luò)犯罪分子從還未使用這些地址或者還未為這些IP設(shè)置路由的公司的公司IP池中竊取IP范圍。“設(shè)置路由”就是說一個(gè)網(wǎng)絡(luò)服務(wù)提供商(ISP)會(huì)告知其它ISP稱在自己的服務(wù)器上發(fā)現(xiàn)了某個(gè)IP地址塊。當(dāng)垃圾郵件發(fā)送者發(fā)現(xiàn)很好竊取IP地址塊或者從黑市上很容易就能買到從而設(shè)置路由時(shí),他們就需要以獨(dú)立系統(tǒng)(AS)注冊(cè)并獲取一個(gè)獨(dú)立系統(tǒng)號(hào)碼(ASN)。

Verizon并未捕獲那些想在服務(wù)器上路由IP地址的AS

由于Verizon設(shè)置ASN的流程簡(jiǎn)單,網(wǎng)絡(luò)犯罪分子發(fā)現(xiàn)很容易就能將偽造文檔提交給Verizon并且將偷來的IP地址塊通過Verizon的服務(wù)器路由。Branagh表示,超過400萬個(gè)IP地址被以這種方式從Verizon網(wǎng)絡(luò)路由,隨后這種方式被用于向用戶發(fā)送垃圾郵件。通過這種技巧,垃圾郵件發(fā)送者在不同的位置使用多個(gè)地址發(fā)送垃圾郵件。而這種技巧讓諸如Spamhaus等組織很難識(shí)別并追蹤更大型的垃圾郵件活動(dòng),而且還能逃避被列入黑名單。

Verizon沒跟Spamhaus好好合作

Branagh指出,像Verizon這樣的大型美國ISP能被輕易說服路由大量被分配給亞太地區(qū)的IP地址塊這件事聽起來很奇怪。這些地址塊并不能被日常活動(dòng)的噪音所掩蓋。這些活動(dòng)看起來很異常,用戶應(yīng)當(dāng)立即被告知。

Spamhaus官方表示,Verizon看似認(rèn)為這件事無所謂。他表示自2015年7月起,該組織就想盡辦法跟Verizon的多個(gè)部門取得聯(lián)系,其中包括高層管理人員但均未果。

此外,那些IP地址被竊取的中國和韓國企業(yè)或者已經(jīng)消失,或者并不理解這件事情,或者被垃圾郵件發(fā)送者所控制。雖然Verizon并未做出回應(yīng),但它的這種行為為網(wǎng)絡(luò)犯罪提供了方便,而且在必要時(shí)必須向執(zhí)法部門提供解釋。


63、電腦無法連接外網(wǎng),ping不通網(wǎng)關(guān),路由器中檢測(cè)不到電腦IP的解決辦法

今天,公司一臺(tái)電腦突然無法打開網(wǎng)頁。

檢查時(shí)發(fā)現(xiàn)本地連接正常,未提示IP沖突等問題。內(nèi)網(wǎng)的ERP也能正常打開。說明內(nèi)部的網(wǎng)絡(luò)是正常的。

ping網(wǎng)關(guān),不通。

檢查路由器,在ARP綁定中,發(fā)現(xiàn)沒有獲取到這臺(tái)電腦的IP地址。

再檢查這臺(tái)電腦上已打開的軟件,發(fā)現(xiàn)網(wǎng)關(guān)是手動(dòng)綁定的。

查看詳細(xì)信息,發(fā)現(xiàn)這里綁定的MAC地址與現(xiàn)在路由器的MAC地址不一致。

終于找到問題了,這個(gè)防火墻軟件里,以前綁定了網(wǎng)關(guān)和MAC地址,昨天公司路由器出故障,更換了新路由,由于新路由的MAC地址與這臺(tái)電腦安裝的防火墻軟件綁定的MAC地址不一致,導(dǎo)致新路由無法獲取這臺(tái)電腦的MAC和IP地址,最終導(dǎo)致無法連接外網(wǎng)。

把手動(dòng)設(shè)置網(wǎng)關(guān)改為自動(dòng)獲取網(wǎng)關(guān),稍等一下,再ping網(wǎng)關(guān),就正常了。

如果還不正常,可以重啟電腦或卸載防火墻,就可以了。

再登錄路由器,發(fā)現(xiàn)已經(jīng)可以獲取到這臺(tái)電腦的IP和MAC地址了。打開網(wǎng)頁,正常了。


路由器IP指派DHCP和BOOTP不同之處

目前路由器進(jìn)行IP指派主要有DHCP和BOOTP,DHCP也就是動(dòng)態(tài)主機(jī)分配協(xié)議,它的前身是BOOTP,BOOTP原本是用于無磁盤主機(jī)連接的網(wǎng)絡(luò)上面的,以下分析這兩種方式的不同之處。

一、DHCP可以說是BOOTP的增強(qiáng)版本,它分為兩個(gè)部份:一個(gè)是服務(wù)器端,而另一個(gè)是客戶端。所有的IP網(wǎng)絡(luò)設(shè)定數(shù)據(jù)都由DHCP服務(wù)器集中管理,并負(fù)責(zé)處理客戶端的DHCP要求;

而客戶端則會(huì)使用從服務(wù)器分配下來的IP環(huán)境數(shù)據(jù)。比較起B(yǎng)OOTP,DHCP透過"租約"的概念,有效且動(dòng)態(tài)的分配客戶端的TCP/IP設(shè)定,而且,作為兼容考慮,DHCP也完全照顧了BOOTP Client的需求。

二、必須至少有一臺(tái)DHCP工作在網(wǎng)絡(luò)上面,它會(huì)監(jiān)聽網(wǎng)絡(luò)的DHCP請(qǐng)求,并與客戶端搓商TCP/IP的設(shè)定環(huán)境。它提供兩種IP定位方式:

1、自動(dòng)分配,其情形是:一旦DHCP客戶端第一次成功的從DHCP服務(wù)器端租用到IP地址之后,就永遠(yuǎn)使用這個(gè)地址。

2、動(dòng)態(tài)分配,當(dāng)DHCP第一次從HDCP服務(wù)器端租用到IP地址之后,并非永久的使用該地址,只要租約到期,客戶端就得釋放(release)這個(gè)IP地址,以給其它工作站使用。當(dāng)然,客戶端可以比其它主機(jī)更優(yōu)先的更新(renew)租約,或是租用其它的IP地址。

三、DHCP除了能動(dòng)態(tài)的設(shè)定IP地址之外,還可以將一些IP保留下來給一些特殊用途的機(jī)器使用,它可以按照硬件地址來固定的分配IP地址,這樣可以給您更大的設(shè)計(jì)空間。

同時(shí),DHCP還可以幫客戶端指定router、netmask、DNS Server、WINS Server、等等項(xiàng)目,您在客戶端上面,除了將DHCP選項(xiàng)打勾之外,幾乎無需做任何的IP環(huán)境設(shè)定。

四、尋找Server,當(dāng)DHCP客戶端第一次登錄網(wǎng)絡(luò)的時(shí)候,也就是客戶發(fā)現(xiàn)本機(jī)上沒有任何IP數(shù)據(jù)設(shè)定,它會(huì)向網(wǎng)絡(luò)發(fā)出一個(gè)DHCP DISCOVER封包。

因?yàn)榭蛻舳诉€不知道自己屬于哪一個(gè)網(wǎng)絡(luò),所以封包的來源地址會(huì)為0.0.0.0,而目的地址則為255.255.255.255,然后再附上DHCP discover的信息,向網(wǎng)絡(luò)進(jìn)行廣播。

五、提供IP租用地址。當(dāng)DHCP 服務(wù)器監(jiān)聽到客戶端發(fā)出的 DHCP discover 廣播后,它會(huì)從那些還沒有租出的地址范圍內(nèi),選擇最前面的空置IP,連同其它TCP/IP設(shè)定,響應(yīng)給客戶端一個(gè)DHCP OFFER封包,由于客戶端在開始的時(shí)候還沒有IP地址,所以在其DHCP discover封包內(nèi)會(huì)帶有其MAC地址信息。

六、接受IP租約。如果客戶端收到網(wǎng)絡(luò)上多臺(tái)DHCP服務(wù)器的響應(yīng),只會(huì)挑選其中一個(gè)DHCP offer而已,并且會(huì)向網(wǎng)絡(luò)發(fā)送一個(gè)DHCP request廣播封包,告訴所有DHCP服務(wù)器它將指定接受哪一臺(tái)服務(wù)器提供的IP地址,客戶端還會(huì)向路由器發(fā)送一個(gè)ARP封包,查詢網(wǎng)絡(luò)上面有沒有其它機(jī)器使用該IP地址;

如果發(fā)現(xiàn)該IP已經(jīng)被占用,客戶端則會(huì)送出一個(gè)DHCPDECLINE封包給DHCP服務(wù)器,拒絕接受其DHCP offer,并重新發(fā)送DHCP discover信息。

七、當(dāng)DHCP服務(wù)器接收到客戶端的DHCP request之后,會(huì)向客戶端發(fā)出一個(gè)DHCPACK響應(yīng),以確認(rèn)IP租約的正式生效,也就結(jié)束了一個(gè)完整的DHCP工作過程,一旦DHCP客戶端成功地從服務(wù)器哪里取得DHCP租約之后,除非其租約已經(jīng)失效并且IP地址也重新設(shè)定回0.0.0.0,否則就無需再發(fā)送DHCP discover信息了,而會(huì)直接使用已經(jīng)租用到的IP地址向之前之DHCP服務(wù)器發(fā)出DHCP request信息,DHCP服務(wù)器會(huì)盡量讓客戶端使用原來的IP地址,如果沒問題的話,直接響應(yīng)DHCPack來確認(rèn)則可。

從前面描述的過程中,我們不難發(fā)現(xiàn):DHCDISCOVER是以廣播方式進(jìn)行的,其情形只能在同一網(wǎng)絡(luò)之內(nèi)進(jìn)行,因?yàn)閞outer是不會(huì)將廣播傳送出去的。但如果DHCP服務(wù)器安設(shè)在其它的網(wǎng)絡(luò)上面呢?

由于DHCP客戶端還沒有IP環(huán)境設(shè)定,所以也不知道Router地址,而且有些Router也不會(huì)將DHCP廣播封包傳遞出去,因此這情形下DHCP DISCOVER是永遠(yuǎn)沒辦法抵達(dá)DHCP服務(wù)器那端的,當(dāng)然也不會(huì)發(fā)生OFFER及其它動(dòng)作了。


一個(gè)報(bào)文的路由器之旅——IP單播轉(zhuǎn)發(fā)流程

端到端的IPv4單播轉(zhuǎn)發(fā)過程

以大家熟悉的以太幀為例,先來回顧下IP單播端到端的轉(zhuǎn)發(fā)流程。

下圖是個(gè)最簡(jiǎn)單的IP轉(zhuǎn)發(fā)場(chǎng)景,某局域網(wǎng)的主機(jī)A發(fā)送報(bào)文給另一局域網(wǎng)的主機(jī)B,中間經(jīng)過一臺(tái)路由器,那么這臺(tái)路由器就是PC-A的網(wǎng)關(guān)。

由主機(jī)PC-A向主機(jī)PC-B發(fā)送IP報(bào)文,那么該報(bào)文的目的IP地址就是PC-B的IP地址,源IP地址就是主機(jī)PC-A的IP地址,目標(biāo)MAC地址就是其網(wǎng)關(guān)路由器Port1的MAC地址,源MAC地址就是PC-A的MAC地址。

路由器轉(zhuǎn)發(fā)過程:

1、路由器收到這個(gè)報(bào)文,發(fā)現(xiàn)其目的MAC為本機(jī)Port1端口的,表明需要本機(jī)來進(jìn)行進(jìn)一步解析(如果目的MAC不是本機(jī),表明直接進(jìn)行二層轉(zhuǎn)發(fā),不需要再解析幀的其他內(nèi)容了);

2、路由器進(jìn)一步解析報(bào)文,得知該幀所承載的協(xié)議類型為IPv4(協(xié)議類型值=0x800),即需要進(jìn)行IPv4轉(zhuǎn)發(fā);

3、查IP轉(zhuǎn)發(fā)表(FIB表),得知該報(bào)文并不是發(fā)給自己的,而是需要送往出端口Port2,因此,路由器不再繼續(xù)分析IP頭后面的內(nèi)容。

4、路由器將目的MAC更換成PC-B的MAC,將源MAC更換為出接口Port2的MAC,并將報(bào)文從Port2發(fā)送出去。

路由器的IPv4轉(zhuǎn)發(fā)全流程

IPv4轉(zhuǎn)發(fā)全流程如下圖所示。需要關(guān)注的地方在于查表轉(zhuǎn)發(fā)和獲取封裝信息兩個(gè)環(huán)節(jié)(其他環(huán)節(jié)在本系列的前1~6貼中已描述,不再贅述)。

(1)查表轉(zhuǎn)發(fā)詳細(xì)流程

流程說明:

步驟1:判斷報(bào)文的目的MAC是否等于本機(jī)MAC,如果不是,則做L2轉(zhuǎn)發(fā);是則繼續(xù)下一步驟。

步驟2:判斷報(bào)文的協(xié)議類型是否為IPv4(例如以太幀,eth_type = 0x800),如果不是,則進(jìn)入其他轉(zhuǎn)發(fā)流程;是則繼續(xù)下一步驟。

步驟3:檢查報(bào)文的長(zhǎng)度、IP地址、Checksum字段是否正確,如果不正確,則丟棄報(bào)文,否則繼續(xù)下一步驟。

步驟4:判斷目的IP地址是否為單播地址,如果不是單播則其他轉(zhuǎn)發(fā)處理,是則進(jìn)入繼續(xù)下一步驟。

步驟5:用目的IP地址查FIB表得到的下一跳IP、出接口等信息(如果是公網(wǎng)的報(bào)文,查公網(wǎng)FIB表,如果是VPN報(bào)文,則查對(duì)應(yīng)VPN的FIB表)。

如果是負(fù)載分擔(dān),會(huì)查到多份這樣的信息,于是根據(jù)負(fù)載分擔(dān)哈希算法選取其中的一份。

如果是FRR(FastReroute)狀態(tài),則會(huì)根據(jù)出接口狀態(tài)做主備路由選擇,如果出接口正常工作,則會(huì)選擇主路由;否則選擇FRR備份路由。

如果出接口為Trunk接口,會(huì)再根據(jù)Trunk負(fù)載分擔(dān)哈希算法,選擇Trunk成員口中的其中一個(gè)作為最終的出接口。

步驟6:如果使能了URPF檢查,則用源IP地址查FIB表,如果命中,對(duì)于松散的URPF檢查只要出接口為真實(shí)的外部接口則檢查通過(對(duì)于出接口為CPU、NULL接口、TE接口、IPv4 Tunnel接口則松散的URPF檢查不通過);對(duì)應(yīng)嚴(yán)格的URPF檢查,用報(bào)文的入端口信息與源IP地址查FIB表得到的出口信息進(jìn)行比較,相等則通過,不等則丟棄(對(duì)于入接口為VLAN子接口,出接口為入端口信息,同時(shí)出接口VLANID也要等于入口的VLANID,則檢查才會(huì)通過)。

?說明:

URPF(Unicast Reverse Path Forwarding),是一種單播逆向路由查找技術(shù),用來預(yù)防偽造源地址攻擊的手段。之所以稱為逆向,是針對(duì)正常的路由查找而言的。一般情況下路由器接收到報(bào)文,獲取報(bào)文的目的地址,針對(duì)目的地址查找路由。如果找到了進(jìn)行正常的轉(zhuǎn)發(fā),否則丟棄該報(bào)文。

URPF的實(shí)現(xiàn)原理:通過獲取報(bào)文的源地址和入接口,以源地址為目的地址,在轉(zhuǎn)發(fā)表中查找源地址對(duì)應(yīng)的接口是否與入接口匹配。如果不匹配認(rèn)為源地址是偽裝的,丟棄該報(bào)文。通過這種方式,能有效地防范網(wǎng)絡(luò)中通過修改源地址而進(jìn)行的惡意攻擊行為的發(fā)生。

然而,有的場(chǎng)景(例如負(fù)載分擔(dān))同一目的地址在路由表中存在有多條路由表項(xiàng),同一目的IP地址的報(bào)文發(fā)送的接口不唯一,即非對(duì)稱路由。此時(shí)若應(yīng)用URPF時(shí),報(bào)文會(huì)異常丟棄。因此,URPF出現(xiàn)了嚴(yán)格模式和松散模式。嚴(yán)格模式要求接口匹配;而松散模式,不檢查接口是否匹配,只要路由表項(xiàng)中存在針對(duì)源地址的路由,數(shù)據(jù)報(bào)文就通過URPF檢查。

步驟7:如果目的IP為非本機(jī)IP,則報(bào)文頭的TTL減1,并重新計(jì)算并修改Checksum值,繼續(xù)執(zhí)行后續(xù)的CAR等公共處理。如果目的IP為本機(jī)(查表發(fā)現(xiàn)下一跳為127.0.0.1),則直接送入上行TM部件。

之后的處理中,交換網(wǎng)根據(jù)出接口信息(出接口信息包含了目的單板和目的出接口)信息將報(bào)文發(fā)送到正確的下行單板。

(2)獲取封裝信息

到了下行,下行包轉(zhuǎn)發(fā)引擎PFE用下一跳IP或目的IP和VLANID查ARP表項(xiàng),獲取目的MAC信息,根據(jù)出接口信息查出接口表項(xiàng)獲取端口MAC。因?yàn)椋酚善餍枰獙?bào)文的目的MAC更換成下一跳設(shè)備的MAC,將源MAC更換成自己出接口的MAC。

如果查ARP表項(xiàng)沒有命中,則啟動(dòng)ARP學(xué)習(xí)功能,過程如下:

1) 發(fā)送ARP請(qǐng)求報(bào)文,此報(bào)文的目的MAC為廣播地址,目的地址為下一跳IP,源IP為自己的IP。

2)由于是MAC廣播報(bào)文,在局域網(wǎng)內(nèi)的設(shè)備或主機(jī)都能收到,因此下一跳設(shè)備也能收到。于是下一跳設(shè)備解析報(bào)文發(fā)現(xiàn)目的IP為自己,便發(fā)送ARP回應(yīng)報(bào)文,里面攜帶了自己的MAC地址。

3)路由器收到回應(yīng)報(bào)文,得到下一跳的MAC地址,添加到ARP表項(xiàng)中。

通過ARP學(xué)習(xí)后,重新查ARP表項(xiàng)獲取下一跳MAC信息,便可繼續(xù)后續(xù)的處理。

(3)出口檢查和封裝

對(duì)于目的IP為本機(jī)的,在出口處理模塊處上送到接口板CPU,再上送給主控板CPU。

對(duì)于目的地址非本機(jī)的,則在出接口處理模塊時(shí),根據(jù)需要進(jìn)行MTU檢查。如果報(bào)文長(zhǎng)度不超過MTU,則將報(bào)文發(fā)送給接口卡。接口卡用待發(fā)送的數(shù)據(jù)幀內(nèi)容計(jì)算幀檢驗(yàn)序列FCS,然后對(duì)數(shù)據(jù)幀加封裝幀間隙、前導(dǎo)碼、幀開始界定符和FCS,并將數(shù)據(jù)幀轉(zhuǎn)換成光/電信號(hào),再發(fā)送到出接口線路上。

如果報(bào)文長(zhǎng)度超過MTU,則判斷報(bào)文頭DF位,如果DF位置0,則分片后再發(fā)送給接口卡;若DF置1,表示報(bào)文源端不允許該報(bào)文分片,所以將報(bào)文做CP-CAR檢查后上送接口板CPU,再上送主控板CPU,以便回應(yīng)ICMP Too-Big消息給源端。

IPv6單播轉(zhuǎn)發(fā)流程

IPv6轉(zhuǎn)發(fā)流程與IPv4基本相同,不同點(diǎn)在于:

- 所查的表項(xiàng)不同,IPv4查FIBv4表,而IPv6查的是FIBv6表;IPv4查ARP表,而IPv6則是查鄰居表。

- IPv6 MTU檢查時(shí),超過接口IPv6 MTU時(shí)不進(jìn)行分片,而是上送CPU并返回ICMPv6 Too-big消息給源端(這符合IPv6協(xié)議標(biāo)準(zhǔn))。

濟(jì)南博賽網(wǎng)絡(luò)技術(shù)有限公司是一家集IT產(chǎn)品銷售、高端IT技術(shù)服務(wù)、技術(shù)培訓(xùn)為一體的綜合性高新技術(shù)企業(yè),與全球多家IT企業(yè)建立了長(zhǎng)期合作伙伴關(guān)系,在產(chǎn)品技術(shù)服務(wù)領(lǐng)域、高端IT認(rèn)證培訓(xùn)領(lǐng)域以及產(chǎn)品銷售方面都有深層次的合作。
路由器WAN口IP顯示為10、100、172開頭,網(wǎng)絡(luò)被電信運(yùn)營商做了NAT轉(zhuǎn)發(fā)

1、表現(xiàn)形式:

路由器撥號(hào)獲得的公網(wǎng)IP變成了一個(gè)以100開頭的IP(或者是10、172開頭),而打開www.ip138.com查詢卻又是另外一個(gè)IP,將100開頭的這個(gè)IP到百度去查詢下則顯示所在區(qū)域?yàn)槊绹蝻@示為本地局域網(wǎng);

路由器上顯示的ip:

這都是被限制了的線路,別以為能上QQ、看視頻、開網(wǎng)頁就是正常的了,您的線路進(jìn)行其他網(wǎng)絡(luò)應(yīng)用的權(quán)利已經(jīng)在您不知情的情況下被剝奪了。

正常的網(wǎng)絡(luò)應(yīng)該是路由器里面的WAN口IP與www.ip138.com上面顯示的是一致的,不一致的話則說明該網(wǎng)絡(luò)被電信或者聯(lián)通做了NAT轉(zhuǎn)發(fā),導(dǎo)致您獲取到了一個(gè)虛假的IP地址,無法用于外網(wǎng)訪問;您已經(jīng)處于電信或者聯(lián)通構(gòu)建的一個(gè)大型局域網(wǎng)里面了,不是真正的互聯(lián)網(wǎng),動(dòng)態(tài)域名也只能解析到運(yùn)營商公用網(wǎng)關(guān)的那個(gè)IP地址。

2、產(chǎn)生原因:

在當(dāng)前IPV4下,公網(wǎng)IP作為不可再生資源已經(jīng)捉襟見肘,而上網(wǎng)用戶和上網(wǎng)設(shè)備越來越多,所以運(yùn)營商已經(jīng)無法給新用戶提供充足的IP地址資源了,因此運(yùn)營商只能通過NAT轉(zhuǎn)發(fā)技術(shù)(網(wǎng)絡(luò)地址轉(zhuǎn)換)的方法,使部分用戶都處于一個(gè)大局域網(wǎng)內(nèi),公用少量的外網(wǎng)出口,從而緩解IP壓力,就好比小區(qū)一樣,您和同小區(qū)的所有居民公用一個(gè)小區(qū)大門。

3、解決方法

方法一:找電信(10000號(hào))或者聯(lián)通(10010)投訴,報(bào)故障,要求隨機(jī)分配一個(gè)國內(nèi)的動(dòng)態(tài)公網(wǎng)ip,說現(xiàn)在路由器解析出來的ip不對(duì),如果客服不懂,就要求轉(zhuǎn)技術(shù),維護(hù)您的合法權(quán)益。

你可以這樣對(duì)電信或聯(lián)通的客服投訴說:原來我們上網(wǎng)后,可以設(shè)置外部來訪問我上網(wǎng)的路由器,可以做監(jiān)控。現(xiàn)在不行了,經(jīng)檢查發(fā)現(xiàn)是你們給了我一個(gè)虛擬的IP地址,現(xiàn)在嚴(yán)重影響到我們正常工作,請(qǐng)立刻幫我們恢復(fù)。如果你不能明白我的意思,請(qǐng)把我的投訴向上提交。

方法二:將服務(wù)器托管到IDC機(jī)房,IDC機(jī)房一般都有固定IP,而且網(wǎng)絡(luò)環(huán)境比較好,缺點(diǎn)是成本比較高,這個(gè)不建議。

方法三:購買管家婆專用NAT域名,將所有客戶端組建成一個(gè)局域網(wǎng)使用,費(fèi)用880元/年

注:電信或聯(lián)通一般會(huì)說要花錢換成專線才有固定的公網(wǎng)ip,但建議不需要這樣做,只要他們?cè)诤笈_(tái)調(diào)下線路就好了,如果您需要更好的網(wǎng)絡(luò)體現(xiàn),才考慮更換網(wǎng)絡(luò)。

摘要:針對(duì)IP骨干網(wǎng)路由規(guī)模大、路徑多、重疊度高而易繞轉(zhuǎn)的問題,在分析傳統(tǒng)BGP路由選路機(jī)制缺陷的基礎(chǔ)上,采用SDN控制技術(shù),提出了一種支持傳統(tǒng)路由設(shè)備和OpenFlow設(shè)備的路由反射優(yōu)化方法,并給出了具體實(shí)現(xiàn)算法及部署方案。典型應(yīng)用場(chǎng)景的測(cè)試結(jié)果表明,國際訪問時(shí)延平均縮短了30%,驗(yàn)證了方法的有效性。

關(guān)鍵詞:軟件定義網(wǎng)絡(luò);OpenFlow;邊界網(wǎng)關(guān)協(xié)議;OpenDaylight

中圖分類號(hào):TN915.41

文獻(xiàn)標(biāo)識(shí)碼:A

doi: 10.11959/j.issn.1000-0801.2016112

Route optimization method for BGP based on

SDN in large-scale IP network

TANG Hong, ZHU Huahong, CAO Weihua, ZOU Jie

Guangzhou Research Institute of China Telecom Co.,Ltd., Guangzhou 510630, China

Abstract: Aiming at rotation problem of route because of large-scale, multi-path, overlap in IP backbone networks, an optimization method for route reflection supported by both traditional routing devices and OpenFlow devices based on SDN controller technology was proposed. At first, the defects of traditional BGP routing mechanism was analyzed in detail. Then, a specific algorithm implementation and deployment scenarios were given. Test results of typical application scenarios demonstrate the validity of the proposed method. The average delay of international access reduces by 30%.

Key words: software defined networking, OpenFlow, border gateway protocol, OpenDaylight

1 引言

近年來,隨著產(chǎn)業(yè)變革和新技術(shù)的發(fā)展,互聯(lián)網(wǎng)迅速成為影響社會(huì)經(jīng)濟(jì)發(fā)展、改善人民生活品質(zhì)的重要基石。互聯(lián)網(wǎng)應(yīng)用不斷豐富,寬帶用戶數(shù)高速增長(zhǎng),尤其是“寬帶中國”戰(zhàn)略進(jìn)一步促進(jìn)了寬帶網(wǎng)絡(luò)能力的躍升,網(wǎng)絡(luò)流量每年以60%的速度高速增長(zhǎng),給IP骨干網(wǎng)運(yùn)營帶來巨大的挑戰(zhàn)。互聯(lián)網(wǎng)路由條目數(shù)不斷增加,但受限于傳統(tǒng)分布式的路由算法以及匱乏的整體網(wǎng)絡(luò)拓?fù)洌罅康闹丿B路由導(dǎo)致流量繞轉(zhuǎn)、用戶感知下降等問題。因此,隨著骨干網(wǎng)規(guī)模的增加及流量的增長(zhǎng),如何優(yōu)化路由選路策略成為一個(gè)重要而有價(jià)值的研究課題。

軟件定義網(wǎng)絡(luò)(software defined networking,SDN)技術(shù)[1]為骨干網(wǎng)路由優(yōu)化提供了有效手段,但骨干網(wǎng)設(shè)備數(shù)量多、改造成本高,全網(wǎng)設(shè)備的升級(jí)替換較為困難,需要考慮兼容現(xiàn)有設(shè)備能力的解決方案。本文在分析現(xiàn)有路由反射器選路機(jī)制缺陷的基礎(chǔ)上,提出了一種基于源和目的地址的路由反射優(yōu)化方法,并給出了骨干網(wǎng)部署方案。最后,在典型應(yīng)用場(chǎng)景下進(jìn)行測(cè)試,驗(yàn)證了方法的有效性。

2 傳統(tǒng)路由反射器路由選路機(jī)制

邊界網(wǎng)關(guān)協(xié)議(border gateway protocol,BGP)[2]是一種自治系統(tǒng)間的動(dòng)態(tài)路由發(fā)現(xiàn)協(xié)議,它的基本功能是在自治系統(tǒng)間自動(dòng)交換無環(huán)路的路由信息,通過交換帶有自治系統(tǒng)號(hào)(AS)序列屬性的路徑可達(dá)信息,構(gòu)造自治區(qū)域的拓?fù)鋱D,從而消除路由環(huán)路并實(shí)施用戶配置的路由策略。在大規(guī)模網(wǎng)絡(luò)中,通過部署路由反射器來減少對(duì)等體連接關(guān)系,1所示。路由反射器收到多個(gè)指向同一IP 地址前綴但下一跳不同的路由信息,路由反射器按照BGP路由選擇機(jī)制來確定最優(yōu)路由,也就是選擇下一跳,然后轉(zhuǎn)發(fā)給客戶機(jī)和非客戶機(jī)。選路的規(guī)則如下[3]:

(1)如果next-hop無法到達(dá),則不考慮;

(2)首選具有最大weight的路由(Cisco特有);

(3)如果路由具有相同weight,則使用本地優(yōu)先級(jí)最高的路由;

(4)如果具有相同本地優(yōu)先級(jí),則首選來自本身路由器的BGP路由;

(5)如果沒有來自本身路由器上的BGP路由,則選擇AS長(zhǎng)度最短的路由;

(6)如果所有的路由具有相同的AS長(zhǎng)度,則選擇具有最低origin code的路由;

(7)如果origin code相同,則選擇MED值最小的路由;

(8)如果MED相同,則首選外部路由,而不是內(nèi)部路由;

(9)如果仍然相同,選擇最近的IGP鄰居的路由;

(10)如果仍然相同,選路由器ID最小的路由;

(11)如果仍然相同,選cluster_list最短的路由。

因此,從客戶機(jī)角度看,經(jīng)過路由反射器選擇后的下一跳可能不是最佳選擇——只是距離路由反射器最近的路由,而不是源和目的地址間距離最近的路由,導(dǎo)致次優(yōu)路由的產(chǎn)生,2所示。

圖2中,上海客戶機(jī)和廣州客戶機(jī)1都有ICP的路由prefix 1,并將該條路由向路由反射器進(jìn)行通告。路由反射器根據(jù)BGP選路規(guī)則進(jìn)行選路,當(dāng)(1)~(8)的屬性都相同,無法判斷時(shí),根據(jù)規(guī)則(9)選擇距離自身IGP最近的上海客戶機(jī)作為下一跳反射給所有客戶機(jī),導(dǎo)致廣州客戶機(jī)2接入的用戶經(jīng)上海訪問prefix 1,造成路由繞轉(zhuǎn)。

3 基于源和目的地址的路由反射方法

3.1 基于源和目的地址的路由反射方法

傳統(tǒng)路由反射器的選路規(guī)則在(9)中是從路由反射器自身角度計(jì)算到下一跳的IGP最短距離,因此所有的客戶機(jī)都將收到同樣的路由,對(duì)于某些客戶機(jī)來說,該路由并非最優(yōu)路徑。在很多情況下,可能導(dǎo)致流量的繞轉(zhuǎn),造成時(shí)延增大,用戶感知下降。針對(duì)該問題,IETF也有相關(guān)草案,路由器支持add-path功能[4],反射器反射多條路由,由客戶機(jī)自行計(jì)算最佳路由。考慮目前互聯(lián)網(wǎng)路由數(shù)量超過50萬條[5],且波動(dòng)較大,因此,對(duì)反射器的性能要求較高,客戶機(jī)需要接收的路由條目也較多,實(shí)際應(yīng)用中實(shí)施困難。為此,對(duì)該條選路規(guī)則進(jìn)行修改,路由反射器反射路由時(shí),對(duì)不同的客戶機(jī)計(jì)算客戶機(jī)到下一跳的IGP最短距離,從而選擇源和目的地址間的路徑最短路由。基于OpenFlow技術(shù)[6],在網(wǎng)絡(luò)中部署OpenFlow控制器,對(duì)不同的設(shè)備下發(fā)不同的流表實(shí)現(xiàn)最優(yōu)路徑的選擇。圖3為OpenFlow 1.3[7]的流表結(jié)構(gòu),對(duì)于相同的路由前綴,針對(duì)不同的客戶機(jī)計(jì)算其與各下一跳之間的IGP距離,選擇距離最小的下一跳作為最優(yōu)路由下發(fā)流表。

然而,在骨干網(wǎng)中,仍然存在大量傳統(tǒng)路由設(shè)備,對(duì)OpenFlow的支持有限。為了在現(xiàn)網(wǎng)中實(shí)現(xiàn)該方法,依然需要考慮基于BGP對(duì)網(wǎng)絡(luò)設(shè)備進(jìn)行控制。控制器主要包含狀態(tài)信息采集、數(shù)據(jù)中心、策略管理、網(wǎng)絡(luò)建模、統(tǒng)一計(jì)算以及指令適配模塊,具體4所示。

狀態(tài)信息采集模塊采集IP骨干網(wǎng)拓?fù)浼熬W(wǎng)絡(luò)基礎(chǔ)設(shè)施和互聯(lián)網(wǎng)業(yè)務(wù)路由、業(yè)務(wù)流量流向和業(yè)務(wù)質(zhì)量等信息數(shù)據(jù),同時(shí)將這一系列的大數(shù)據(jù)入庫到數(shù)據(jù)中心;統(tǒng)一計(jì)算模塊從BGP路由表中選出上述選路規(guī)則中(1)~(8)全相同的路由條目,同時(shí)計(jì)算設(shè)備間IGP metric矩陣,并對(duì)不同的客戶機(jī)計(jì)算下一跳IGP最短的最優(yōu)路徑;經(jīng)路由仿真模塊驗(yàn)證策略后,最后進(jìn)行統(tǒng)一下發(fā)。主要算法實(shí)現(xiàn)如下所示。

步驟1 從當(dāng)前BGP路由表查找選路規(guī)則(1)~(8)中路由屬性相同(如local-preference、MED、AS path length)的路由,即經(jīng)過路由反射器可能產(chǎn)生非優(yōu)選的路由。

步驟2 將步驟1中查到的路由數(shù)據(jù)復(fù)制到數(shù)據(jù)表BGP prefix中(先清空BGP prefix中已有數(shù)據(jù),再寫入)。

步驟3 由于BGP路由更新頻繁,為了便于比較更新的路由,數(shù)據(jù)表prefixSnap用于存放以前采用步驟1獲取的路由。將BGP prefix表中的prefix與數(shù)據(jù)表prefixSnap中的prefix進(jìn)行比較,如果相同,說明路由沒有更新,不做處理;如果不同,則將BGP prefix表中的prefix增量更新到數(shù)據(jù)表prefixSnap中。

步驟4 采集當(dāng)前網(wǎng)絡(luò)中IGP拓?fù)湫畔ⅲ稍O(shè)備間IGP metric矩陣。

步驟5 獲取當(dāng)前控制器的客戶機(jī)列表igpDevMetric,為了便于比較更新的拓?fù)洌琾eerIpMetricSnap用于存放以前采集的客戶機(jī)列表。將igpDevMetric與peerIpMetricSnap進(jìn)行比較,如果相同,說明拓?fù)錄]有更新,不做處理;如果不同,則將igpDevMetric增量更新到peerIpMetricSnap中。

步驟6 獲取peerIpMetricSnap中的客戶機(jī)列表,針對(duì)每個(gè)客戶機(jī),分別以該客戶機(jī)為根節(jié)點(diǎn),基于IGP metric矩陣,采用SPF算法,對(duì)數(shù)據(jù)表prefixSnap中的相同prefix計(jì)算根節(jié)點(diǎn)到各下一跳的metric,將metric最小的下一跳作為該prefix的優(yōu)選路由。

步驟7 無論是否需要進(jìn)行配置下發(fā),都將上述最優(yōu)路由進(jìn)行統(tǒng)計(jì),并將其放入數(shù)據(jù)表WorkStatus中。

3.2 網(wǎng)絡(luò)部署方案

軟件定義網(wǎng)絡(luò)技術(shù)為傳統(tǒng)IP的優(yōu)化提供了重要手段,然而,IP網(wǎng)絡(luò)全面實(shí)現(xiàn)軟件自主定義還有很長(zhǎng)的過程。首先是技術(shù)的成熟度還不適合大規(guī)模現(xiàn)網(wǎng)運(yùn)營的要求,如高可靠性、高安全性以及電信級(jí)SLA要求;其次,現(xiàn)網(wǎng)設(shè)備的技術(shù)支持能力也成為應(yīng)用推廣的關(guān)鍵。考慮到骨干網(wǎng)仍然以傳統(tǒng)網(wǎng)絡(luò)設(shè)備為主及新技術(shù)引入的可能風(fēng)險(xiǎn),網(wǎng)絡(luò)中的部署方案以增量疊加為主:在網(wǎng)絡(luò)中部署SDN控制器,支持OpenFlow和BGP,對(duì)傳統(tǒng)設(shè)備采用BGP的更新方式,對(duì)OpenFlow設(shè)備下發(fā)流表進(jìn)行控制。其部署方案5所示。

控制器與路由反射器、相關(guān)的客戶機(jī)建立IBGP鄰居關(guān)系,并僅接收路由反射器反射的路由,同時(shí)獲取IGP metric矩陣信息。結(jié)合BGP路由數(shù)據(jù)庫及鏈路狀態(tài)數(shù)據(jù)庫,提取多路徑路由,計(jì)算源到路由接收段之間的SPF計(jì)算,針對(duì)不同的客戶機(jī)提取最優(yōu)路徑,經(jīng)校驗(yàn)路由可達(dá)后分別對(duì)不同的客戶機(jī)反射相關(guān)路由,或者下發(fā)流表,具體算法見第3.1節(jié)中的描述。客戶機(jī)同時(shí)收到傳統(tǒng)路由反射器及控制器的路由,根據(jù)BGP選路信息可以進(jìn)一步得到最佳路徑,放入路由表。該部署方案的好處在于,如果控制器發(fā)生故障或者計(jì)算錯(cuò)誤,可以直接退出服務(wù),原有IP地址仍然起效,不會(huì)對(duì)網(wǎng)絡(luò)運(yùn)營造成巨大影響。為了更好地對(duì)全網(wǎng)路由進(jìn)行維護(hù)和監(jiān)控,系統(tǒng)提供了相關(guān)的展示功能,6所示。

路由表中的數(shù)據(jù)可以按“路由前綴”(prefix字段)、歸屬AS(destAS字段)、next-hop進(jìn)行查詢及顯示,方便人員進(jìn)行操作。

4 測(cè)試結(jié)果分析

SDN控制器主要是一個(gè)軟件實(shí)體,目前主流的開源控制器主要有NOX、POX、Ryu等。本文提出的控制器主要基于OpenDaylight開源平臺(tái)[8]實(shí)現(xiàn),采用OSGI框架和Java開發(fā),南向支持SNMP、BGP、OpenFlow等協(xié)議,北向提供RESTful接口[9],便于實(shí)現(xiàn)開放性。

測(cè)試的典型場(chǎng)景5所示,大量ICP會(huì)在多地接入骨干網(wǎng),例如從上海、廣州兩地的ASBR均擁有ICP的路由,經(jīng)骨干網(wǎng)路由反射器后只優(yōu)選一條下一跳為上海節(jié)點(diǎn)的路由進(jìn)行反射,導(dǎo)致廣州接入段的用戶需要繞轉(zhuǎn)到上海節(jié)點(diǎn)訪問ICP,造成時(shí)延增加,用戶體驗(yàn)下降。尤其在國際網(wǎng)絡(luò)環(huán)境下,繞轉(zhuǎn)的距離將大幅度增加,從而裂化訪問質(zhì)量。在骨干網(wǎng)(100多臺(tái)路由器,50萬多條互聯(lián)網(wǎng)路由)中部署SDN控制器,采用本文所提方法采集全網(wǎng)拓?fù)湫畔⒑吐酚蓴?shù)據(jù),針對(duì)廣州客戶機(jī)2,計(jì)算出到達(dá)ICP的最優(yōu)路徑為廣州客戶機(jī)1,于是對(duì)廣州客戶機(jī)2下發(fā)下一跳為廣州客戶機(jī)1的ICP路由,實(shí)現(xiàn)路由最優(yōu)化,降低單向訪問時(shí)延約15 ms,7所示。進(jìn)一步地,國際訪問時(shí)延平均可降低30%。測(cè)試結(jié)果表明,本文方法可實(shí)現(xiàn)路由端到端優(yōu)化,提高互聯(lián)網(wǎng)訪問質(zhì)量,驗(yàn)證了方法的可行性。

5 結(jié)束語

SDN作為一種優(yōu)化和簡(jiǎn)化網(wǎng)絡(luò)操作的體系結(jié)構(gòu)方式,具有更大的靈活性和敏捷性,為基礎(chǔ)互聯(lián)網(wǎng)設(shè)施提供了智能化選擇,成為當(dāng)前網(wǎng)絡(luò)領(lǐng)域最熱門和最具發(fā)展前途的技術(shù)之一。本文針對(duì)BGP的缺陷導(dǎo)致IP骨干網(wǎng)路由不佳、流量繞轉(zhuǎn)問題,提出了一種基于SDN的路由反射方法,并給出了網(wǎng)絡(luò)規(guī)模部署方案。測(cè)試結(jié)果表明,新方法可減少流量繞轉(zhuǎn)情況,國際互聯(lián)網(wǎng)訪問質(zhì)量可大幅度提升,證明了方法的有效性。然而,SDN作為一項(xiàng)系統(tǒng)工程,仍有大量的技術(shù)研發(fā)及實(shí)例化工作,后續(xù)將進(jìn)一步完善控制器功能,實(shí)現(xiàn)網(wǎng)絡(luò)的高質(zhì)量運(yùn)營。

參考文獻(xiàn):

[1]張朝昆, 崔勇, 唐翯祎, 等. 軟件定義網(wǎng)絡(luò)(SDN)研究進(jìn)展[J]. 軟件學(xué)報(bào), 2015, 26(1): 62-81.

ZHANG C K, CUI Y, TANG H Y, et al. State-of-the-art survey on software-defined networking (SDN)[J]. Journal of Software, 2015, 26(1): 62-81.

[2]李道豐, 王高才, 王志偉, 等. 標(biāo)準(zhǔn)模型下可證明安全的BGP路由屬性保護(hù)機(jī)制[J]. 計(jì)算機(jī)學(xué)報(bào), 2015, 38(4): 859-871.

LI D F, WANG G C, WANG Z W, et al. Provable secure mechanism for BGP path protection in the standard model[J]. Chinese Journal of Computers, 2015, 38(4): 859-871.

[3]徐建鋒, 朱華虹. 改進(jìn)BGP實(shí)現(xiàn)大型復(fù)雜IP網(wǎng)絡(luò)的負(fù)載均衡[J]. 電信科學(xué), 2004, 20(10): 15-19.

XU J F, ZHU H H. Load sharing implementation in large complicated IP networks by improving BGP[J]. Telecommunications Science, 2004, 20(10): 15-19.

[4]SCUDDER J, RETANA A, WALTON D, et al. Advertisement of multiple paths in BGP[EB/OL]. [2012-12-30]. http://xueshu.baidu.com/s?wd=Advertisement+of+Multiple+Paths+in+BGP&rsv_bp=0&tn=SE_baiduxueshu_c1gjeupa&rsv_spt=3&ie=utf-8&f=8&rsv_sug2=1&sc_f_para=sc_tasktype%3D%7BfirstSimpleSearch%7D&rsv_n=2.

[5]辛喆. 一種基于SDN的IP骨干網(wǎng)流量調(diào)度方案的研究與實(shí)現(xiàn)[D]. 北京: 北京郵電大學(xué), 2015.

XIN Z. Research and realization of IP backbone network traffic scheduling program based on OpenFlow[D]. Beijing: Beijing University of Posts and Telecommunications, 2015.

[6]左青云, 陳鳴, 趙廣松, 等. 基于OpenFlow的 SDN技術(shù)研究[J]. 軟件學(xué)報(bào), 2013, 24(5): 1078-1097.

ZUO Q Y, CHEN M, ZHAO G S, et al. SDN technology research based on OpenFlow[J]. Journal of Software, 2013, 24(5): 1078-1097.

[7]徐秋伊. 基于SDN的路由映射算法的設(shè)計(jì)與實(shí)現(xiàn)[D]. 北京: 北京郵電大學(xué), 2015.

XU Q Y. Design and realization of route mapping algorithm based on SDN[D]. Beijing: Beijing University of Posts and Telecommunications, 2015.

[8]AHMED S, MARTINI B, GHARBAOUI M, et al. Orchestration algorithms for network-assisted virtual machine migrations using OpenDaylight controller[C]// 2015 2nd International Conference on Electrical Information and Communication Technology (EICT), December 10-12, 2015, Khulna, Bangladesh. New Jersey: IEEE Press, 2015.

[9]WEI Z, LI L, MIN L, et al. REST API design patterns for SDN northbound API[C]// 2014 28th International Conference on Advanced Information Networking and Applications Workshops (WAINA), May 13-16, 2014, Victoria, BC, USA. New Jersey: IEEE Press, 2014: 358-365.

[作者簡(jiǎn)介]

唐宏(1974-),男,中國電信股份有限公司廣州研究院高級(jí)工程師,主要研究方向?yàn)镮P網(wǎng)絡(luò)技術(shù)、SDN技、移動(dòng)互聯(lián)網(wǎng)技術(shù)。

朱華虹(1978-),女,中國電信股份有限公司廣州研究院高級(jí)工程師,主要研究方向?yàn)镮P路由技術(shù)、SDN技術(shù)。

曹維華(1976-),女,中國電信股份有限公司廣州研究院高級(jí)工程師,主要研究方向?yàn)镮P技術(shù)、移動(dòng)互聯(lián)網(wǎng)技術(shù)。

鄒潔(1975-),女,中國電信股份有限公司廣州研究院高級(jí)工程師,主要研究方向?yàn)镮P技術(shù)、SDN技術(shù)。


兩個(gè)路由器ip地址沖突怎么解決?

問:兩個(gè)路由器IP地址沖突怎么解決?家里路由器A、路由器B兩個(gè)無線路由器,路由器A連接寬帶能夠正常上網(wǎng),把路由器B連接到路由器A上,總是提示IP地址沖突,請(qǐng)問這個(gè)問題應(yīng)該怎么解決。

答:兩個(gè)路由器連接上網(wǎng)時(shí),由于2個(gè)路由器的IP地址都是:192.168.1.1,這時(shí)候就會(huì)存在IP地址沖突的問題。解決辦法就是修改路由器B的IP地址的,如何路由器B的IP地址?和路由器A、B之間的連接有關(guān)系的,下面進(jìn)行詳細(xì)的介紹。一、路由器A的LAN連接路由器B的WAN

如果是路由器A的LAN口(1、2、3、4)連接路由器B的WAN口,這時(shí)候路由器B的IP地址要修改為與路由器A的不在同一個(gè)網(wǎng)段。有用戶反映不明白,路由器B與路由器A的IP地址不在同一個(gè)網(wǎng)段是什么意思,下面舉例進(jìn)行說明。

路由器A的LAN連接路由器B的WAN

如果路由器A的IP地址是:192.168.1.1或者192.168.0.1,那么路由器B的IP地址可以修改為:192.168.2.1,192.168.3.1,192.168.4.1,192.168.5.1等等。

修改方法:

在路由器B的設(shè)置界面,點(diǎn)擊“網(wǎng)絡(luò)參數(shù)”——>“LAN口設(shè)置”——>“IP地址”修改為:192.168.2.1——>點(diǎn)擊“保存”,之后會(huì)提示重啟路由器。

路由器B的IP地址修改為:192.168.2.1

溫馨提示:路由器B重啟之后,需要在瀏覽器中輸入修改后的IP(本例是:192.168.2.1)重新登錄到路由器B的設(shè)置界面的。二、路由器A的LAN連接路由器B的LAN

如果路由器A的LAN(1、2、3、4)口連接路由器B的LAN(1、2、3、4)口,這時(shí)候需要是路由器B的IP地址,與路由器A的IP地址在同一個(gè)網(wǎng)段,下面舉例說明。

路由器A的LAN連接路由器B的LAN

(1)、如果路由器A的IP地址是:192.168.1.1,則路由器B的IP地址可以修改為:192.168.1.2,192.168.1.3,192.168.1.4,192.168.1.5,最大可以修改為:192.168.1.254。

(2)、如果路由器A的IP地址是:192.168.0.1,則路由器B的IP地址可以修改為:192.168.0.2,192.168.0.3,192.168.0.4,192.168.0.5,最大可以修改為:192.168.0.254。

總結(jié):也就是路由器A與路由器BIP地址的前3段要保持一致,最后一段不一樣。

修改方法

在路由器B的設(shè)置界面,點(diǎn)擊“網(wǎng)絡(luò)參數(shù)”——>“LAN口設(shè)置”——>“IP地址”修改為:192.168.1.200——>點(diǎn)擊“保存”,之后會(huì)提示重啟路由器。

路由器B的IP地址修改為:192.168.1.200

溫馨提示:路由器B重啟之后,需要在瀏覽器中輸入修改后的IP(本例是:192.168.1.200)重新登錄到路由器B的設(shè)置界面的。

以上就是兩個(gè)路由器IP地址沖突的解決辦法,大家應(yīng)該先確定路由器A和路由器B之間的連接,然后在修改一下路由器B的IP地址即可。

在修改路由器B的IP地址的時(shí)候需要注意,路由器A的LAN連接路由器B的WAN時(shí),路由器B的IP地址修改為與路由器A的IP地址不在同一個(gè)網(wǎng)段。路由器A的LAN連接路由器B的LAN時(shí),路由器B的IP地址要修改為與路由器A的IP地址在同一個(gè)網(wǎng)段。

IP通信有三種典型的方式:

? 第一種是單播(unicast),是在一臺(tái)源IP主機(jī)和一臺(tái)目的IP主機(jī)之間進(jìn)行。網(wǎng)絡(luò)上絕大部分的數(shù)據(jù)都是以單播的形式傳輸?shù)模纾娮余]件收發(fā)、網(wǎng)頁瀏覽、優(yōu)酷/土豆等的視頻點(diǎn)播,都是采用單播實(shí)現(xiàn)的。單播屬于一對(duì)一(點(diǎn)對(duì)點(diǎn))的通訊方式,同時(shí)只有一個(gè)發(fā)送者和一個(gè)接收者,中間的交換機(jī)和路由器對(duì)數(shù)據(jù)只進(jìn)行轉(zhuǎn)發(fā)不進(jìn)行復(fù)制。

? 第二種是廣播(broadcast),在一臺(tái)源IP主機(jī)和網(wǎng)絡(luò)中所有其它的IP主機(jī)之間進(jìn)行。廣播屬于一對(duì)所有的通訊方式,無路由過程,中間的交換機(jī)和路由器對(duì)數(shù)據(jù)進(jìn)行無條件的復(fù)制和轉(zhuǎn)發(fā),所有主機(jī)都可以接收到(不管是否需要)。廣播不僅會(huì)將信息發(fā)送給不需要的主機(jī)而浪費(fèi)帶寬,也可能由于路由回環(huán)引起嚴(yán)重的廣播風(fēng)暴,所以廣播數(shù)據(jù)被限制在二層交換的局域網(wǎng)范圍內(nèi),禁止其穿過路由器,防止廣播數(shù)據(jù)影響大面積的主機(jī)。但I(xiàn)P網(wǎng)絡(luò)中,廣播也是不可少的,如客戶機(jī)通過DHCP自動(dòng)獲得IP地址的過程,通過ARP請(qǐng)求獲得某IP地址對(duì)應(yīng)的MAC地址的過程,都需要使用廣播。

? 第三種是組播(Multicast),在一臺(tái)源IP主機(jī)和網(wǎng)絡(luò)中多臺(tái)(一組)IP主機(jī)之間進(jìn)行。組播是一對(duì)多(點(diǎn)對(duì)多點(diǎn))的通訊方式,同時(shí)有一個(gè)發(fā)送者和多個(gè)接收者,中間的交換機(jī)和路由器根據(jù)接收者的需要,有選擇性地對(duì)數(shù)據(jù)進(jìn)行復(fù)制和轉(zhuǎn)發(fā)。視頻/音頻會(huì)議、網(wǎng)絡(luò)電視、股票行情發(fā)布等,便是采用組播形式。

可能有讀者會(huì)有疑問,網(wǎng)頁瀏覽和網(wǎng)絡(luò)視頻點(diǎn)播,雖然不是所有人都想看,但觀看的人數(shù)不少,假設(shè)有1000個(gè)人想看同一個(gè)網(wǎng)頁/視頻,采用單播,服務(wù)器就得逐一傳送,重復(fù)1000次相同工作,那為什么采用單播不是組播呢?

那是因?yàn)椋皇撬锌蛻舳际峭粫r(shí)間想看同一內(nèi)容,單播能夠針對(duì)每個(gè)客戶的及時(shí)響應(yīng);如果采用組播,用戶便有“過了這個(gè)村就沒那個(gè)點(diǎn)“的煩惱。視頻/音頻會(huì)議、股票行情發(fā)布,實(shí)時(shí)性很高,用戶在同一時(shí)間看同一內(nèi)容,就很適合采用組播。

組播對(duì)于網(wǎng)絡(luò)而言還是很有魅力的,比如下圖所示場(chǎng)景,一目了然,組播比單播更能節(jié)約網(wǎng)絡(luò)資源,也極大減輕了服務(wù)器的負(fù)擔(dān)。

組播分發(fā)樹

上圖右側(cè)所示的網(wǎng)絡(luò)流量轉(zhuǎn)發(fā)路徑,像不像一棵倒長(zhǎng)的樹?這棵樹稱為”組播分發(fā)樹“,樹根是服務(wù)器(稱為組播源);樹葉是客戶端(稱為組播接收者)。只是,組播分發(fā)樹有個(gè)特別之處,從根到葉子都是一樣粗,也就是說,網(wǎng)絡(luò)負(fù)載不會(huì)隨著組播接收者(客戶端)數(shù)量的增加而增加,這就是組播的魅力所在。

那么,IP網(wǎng)絡(luò)是如何將報(bào)文從組播源沿著組播分發(fā)樹發(fā)送給眾多接收者呢?如下圖中的Router-X收到組播數(shù)據(jù)后,該如何轉(zhuǎn)發(fā)呢?

按照傳統(tǒng)IP的尋址轉(zhuǎn)發(fā)機(jī)制,首先Router-X要到轉(zhuǎn)發(fā)表去匹配目的接收者的地址,找到對(duì)應(yīng)的出接口。上圖中,組播的目的地址是組播接收者1、接收者2、……,接收者7;出接口是接口A、接口B。那么,Router-X在轉(zhuǎn)發(fā)組播數(shù)據(jù)時(shí),是拿數(shù)據(jù)包去逐一匹配目的地址(組播接收者1、接收者2、……,接收者7)嗎?這顯然效率太低了。如果組播接收者的數(shù)量非常巨大,尤其是越靠近組播源的節(jié)點(diǎn),其組播接收者越多。這么大量的組播接收者,如果都在組播轉(zhuǎn)發(fā)表項(xiàng)中都列出來,轉(zhuǎn)發(fā)時(shí)逐一去匹配,是不大現(xiàn)實(shí)的。為此,誕生了“組播組“這個(gè)詞。

組播組

“組播組“用來表示一群組播接收者,即組播接收者的集合。組播組并不代表網(wǎng)絡(luò)上的具體主機(jī),僅僅代表相應(yīng)的接收者組成的集合,只用于組播報(bào)文從組播源往接收者方向發(fā)送,是單向的。“組播組”如同電視頻道,組播源如同電視臺(tái)。電視臺(tái)向某頻道內(nèi)發(fā)送數(shù)據(jù);觀眾想看該頻道的節(jié)目,就打開電視機(jī)切換到該頻道即可。

組播組地址

為了讓組播數(shù)據(jù)在網(wǎng)絡(luò)中能被正確的尋址轉(zhuǎn)發(fā),需要給“組播組”分配地址。

組播報(bào)文在三層(IP)層轉(zhuǎn)發(fā)時(shí),使用的是D類IP地址,即224.0.0.0至239.255.255.255之間的IP地址。協(xié)議規(guī)定,其中的224.0.0.0至224.0.0.255為保留的組播地址,給本地網(wǎng)絡(luò)協(xié)議使用,比如224.0.0.5和224.0.0.6這兩個(gè)是OSPF協(xié)議使用的組播地址,路由器對(duì)收到的目的地址在此范圍內(nèi)的報(bào)文,不管報(bào)文的TTL值是多少,都不能進(jìn)行轉(zhuǎn)發(fā)。

當(dāng)組播報(bào)文在以太二層網(wǎng)絡(luò)轉(zhuǎn)發(fā)時(shí),需要用到組播MAC地址。組播MAC地址同單播MAC地址一樣,都是48bit,一般用6字節(jié)的十六進(jìn)制來表示,如XX-XX-XX-XX-XX。IEEE 802.3規(guī)定,MAC的第0字節(jié)的末位(The last bit of the first byte)用于表示這個(gè)地址是組播/廣播地址還是單播地址,如果這一位是0,表示此MAC地址是單播地址,如果這位是1,表示此MAC地址是多播地址或廣播地址。其中,廣播地址只有一個(gè),即FF-FF-FF-FF-FF-FF。到目前為止,大部分組播MAC地址都是以0x01-00-5E開頭,即01-00-5E-XX-XX-XX。

組播轉(zhuǎn)發(fā)表四要素

如下圖,按照傳統(tǒng)IP的尋址轉(zhuǎn)發(fā)機(jī)制,Router-X收到組播數(shù)據(jù),到轉(zhuǎn)發(fā)表去匹配目的接收者的地址,找到對(duì)應(yīng)的出接口。根據(jù)前面描述,組播轉(zhuǎn)發(fā)表的目的接收者的地址是“組播組地址”,出接口列表為{出接口A、出接口B}。如果有匹配的組播組地址,則將組播數(shù)據(jù)從出接口A和出接口B發(fā)送。這樣就完美了嗎?

其實(shí)不然。組播報(bào)文是發(fā)送給一組接收者的,如果轉(zhuǎn)發(fā)了不該轉(zhuǎn)發(fā)的數(shù)據(jù),造成的影響很大,比如下圖中,正確的組播轉(zhuǎn)發(fā)應(yīng)該是藍(lán)色箭頭所示的方向。如果由于某種原因,Router-X把組播數(shù)據(jù)錯(cuò)發(fā)了一份給RouterY(入紅色箭頭標(biāo)識(shí)的流量),那么就會(huì)多出好多流量,浪費(fèi)大量網(wǎng)絡(luò)資源。如果存在路由環(huán)路,影響則更大。

為了能確保正確發(fā)送組播數(shù)據(jù),組播必須嚴(yán)格沿著組播分發(fā)樹轉(zhuǎn)發(fā),即,沿著遠(yuǎn)離組播源的方向進(jìn)行轉(zhuǎn)發(fā)。為了做到這點(diǎn),組播技術(shù)引入了RPF(Reverse Path Forwarding,逆向路徑轉(zhuǎn)發(fā))檢查機(jī)制,路由器轉(zhuǎn)發(fā)組播數(shù)據(jù)時(shí),執(zhí)行RPF檢查,確保組播數(shù)據(jù)流能夠沿組播轉(zhuǎn)發(fā)樹正確的傳輸,同時(shí)可以避免轉(zhuǎn)發(fā)路徑上環(huán)路的產(chǎn)生。RPF檢查的過程是:在接收到報(bào)文后,在單播轉(zhuǎn)發(fā)表中,查找到組播源地址的路由,如果該路由的出接口就是報(bào)文的入接口,則檢查通過,否則不通過。也就是說,組播轉(zhuǎn)發(fā)時(shí),不僅要關(guān)心數(shù)據(jù)要到哪里去,還要關(guān)心它從哪里來。

但在實(shí)際組播數(shù)據(jù)轉(zhuǎn)發(fā)過程中,如果對(duì)每一份接收到的組播數(shù)據(jù)報(bào)文都通過查找單播路由表進(jìn)行RPF檢查,會(huì)給路由器帶來很大負(fù)擔(dān)。因此,URPF檢查應(yīng)該放在轉(zhuǎn)發(fā)表項(xiàng)生成之前進(jìn)行,也就是路由器在生成路由表的過程中進(jìn)行URPF檢查,得到“組播源”及“到組播源的接口”,并將這兩個(gè)信息也放入轉(zhuǎn)發(fā)表項(xiàng)。這樣,在轉(zhuǎn)發(fā)組播報(bào)文時(shí),匹配組播報(bào)文的源地址是否為轉(zhuǎn)發(fā)表的“組播源”,報(bào)文的目的地址是否為轉(zhuǎn)發(fā)表的“組播組地址”,如果匹配上,則判斷接收?qǐng)?bào)文的入接口是否就是“到組播源的接口”,如果是,表面數(shù)據(jù)是安全無誤的,可以轉(zhuǎn)發(fā),如果接收?qǐng)?bào)文的入接口不是“到組播源的接口”,則丟棄報(bào)文。

所以,組播轉(zhuǎn)發(fā)表有四要素:“組播源”、“組播組”、“到組播源的接口”、“出接口列表”,其中組播源和組播組作為匹配對(duì)象,是個(gè)組合,通常表示為(S,G)。其中,S是Source首字母,表示組播源;G是Group的首字母,表示組播組。如下圖的Router-X的組播轉(zhuǎn)發(fā)表項(xiàng)為:(10.1.1.1, 255.1.1.1), GE1/0/0, {GE2/0/0, GE3/0/0}。

IP組播轉(zhuǎn)發(fā)流程

IP組播轉(zhuǎn)發(fā)流程如下圖所示。需要關(guān)注的地方在于查表轉(zhuǎn)發(fā)環(huán)節(jié)(其他環(huán)節(jié)在本系列的前1~7帖中已描述,不再贅述)。

查表轉(zhuǎn)發(fā)流程:

步驟1 判斷報(bào)文的目的MAC是否為組播MAC,如果不是,則做單播轉(zhuǎn)發(fā);是則繼續(xù)下一步驟。

步驟2 判斷報(bào)文的協(xié)議類型是否為IP,如果不是,則進(jìn)入其他轉(zhuǎn)發(fā)流程;是則繼續(xù)下一步驟。

步驟3 檢查報(bào)文的長(zhǎng)度、IP地址、Checksum字段是否正確,如果不正確,則丟棄報(bào)文,否則繼續(xù)下一步驟。

步驟4 判斷是否為組播IP地址,如果不是組播則丟棄報(bào)文,是則進(jìn)入繼續(xù)下一步驟。

步驟5 檢查入接口是否使能IP組播,如果不是則丟棄報(bào)文,是則繼續(xù)下一步驟。

步驟6 在組播FIB(MFIB)表(如果是公網(wǎng)的報(bào)文,查公網(wǎng)MFIB表,如果是VPN報(bào)文,則查對(duì)應(yīng)VPN的MFIB表)查找是否存在匹配的(S,G)表項(xiàng):

? 如果存在匹配的(S,G)表項(xiàng),并且接收該報(bào)文的接口與轉(zhuǎn)發(fā)表項(xiàng)的入接口一致,則繼續(xù)步驟7的處理。特殊地,對(duì)于Register狀態(tài)的出接口,表明本設(shè)備為源DR但還沒收到RP的Register-Stop消息,這時(shí)需要將收到的組播上送CPU(的組播協(xié)議模塊),將組播報(bào)文封裝在注冊(cè)消息發(fā)送給RP。

? 如果存在匹配的(S,G)表項(xiàng),但入接口不一致,將報(bào)文上送CPU處理。CPU進(jìn)行RPF檢查:對(duì)照單播路由表,若到組播源的接口與(S,G)表項(xiàng)的入接口一致,則說明(S,G)表項(xiàng)正確,報(bào)文來源路徑錯(cuò)誤,將報(bào)文丟棄;否則說明(S,G)表項(xiàng)已過時(shí),于是根據(jù)單播路由表更新(S,G)表項(xiàng)中的入接口,并刷新轉(zhuǎn)發(fā)表。然后再檢查收到報(bào)文的接口是否就是更新后的接口,是則繼續(xù)步驟7的處理,否則將其丟棄。

? 如果不存在匹配的(S,G)表項(xiàng),有兩種場(chǎng)景:

一種場(chǎng)景是本路由器是源DR,收到組播源發(fā)送的第1個(gè)組播報(bào)文,此時(shí)還沒有(S,G)表項(xiàng),需要將報(bào)文上送CPU處理,將報(bào)文封裝成Register消息發(fā)給RP,同時(shí)CPU下發(fā)出接口為空的(S,G)表項(xiàng),等收到RP的注冊(cè)報(bào)文再添加出接口。如果注冊(cè)失敗,則為了減少上報(bào)對(duì)CPU的負(fù)擔(dān),后續(xù)的組播數(shù)據(jù)流就會(huì)進(jìn)行轉(zhuǎn)發(fā),但是因(S,G)表項(xiàng)出接口為空,實(shí)際上是把報(bào)文丟棄了。

另一種場(chǎng)景是組播組的第1個(gè)報(bào)文從RP向接收者方向發(fā)送時(shí),由于共享樹上(除RP外)的路由器只有(*,G)表項(xiàng),沒有(S,G)表項(xiàng),此時(shí)收到的組播報(bào)文也上送CPU處理,CPU生成(S,G)表項(xiàng),其出接口列表從(*,G)表項(xiàng)拷貝。接著CPU對(duì)報(bào)文進(jìn)行RPF檢查,如果檢查失敗則丟棄報(bào)文,否則繼續(xù)步驟7的處理。

步驟7 檢查匹配的(S,G)表項(xiàng)是否有對(duì)應(yīng)的組成員,即檢查對(duì)應(yīng)的出接口列表是否為空,如果為空,則報(bào)文丟棄;,否則繼續(xù)下一步驟。

步驟8 檢查報(bào)文的入接口與(S,G)表項(xiàng)的入接口是否一致,如果不一致則丟棄報(bào)文,否則繼續(xù)下一步驟。

步驟9 進(jìn)行組播復(fù)制等后續(xù)處理,如上行TM進(jìn)行板間組播復(fù)制,下行TM進(jìn)行板內(nèi)組播復(fù)制。詳細(xì)處理過程在本系列的前1~7帖中已描述,不再贅述,如您遺忘了,快戳下方的鏈接復(fù)習(xí)一下吧:)

本系列漫談一個(gè)報(bào)文的路由器之旅,您將看到:

0、開篇引言(轉(zhuǎn)發(fā)全景圖)(點(diǎn)擊可打開鏈接)

1、交換與尋址轉(zhuǎn)發(fā)(點(diǎn)擊可打開鏈接)

2、報(bào)文收發(fā)、解析與封裝(點(diǎn)擊可打開鏈接)

3、流量控制(反壓、隊(duì)列、限速) (點(diǎn)擊可打開鏈接)

4、QoS基礎(chǔ)(上篇) (點(diǎn)擊可打開鏈接)

5、QoS基礎(chǔ)(下篇) (點(diǎn)擊可打開鏈接)

6、QoS處理流程 (點(diǎn)擊可打開鏈接)

7、轉(zhuǎn)發(fā)層面的其他處理(組播復(fù)制、NAT、包過濾、策略路由等)(點(diǎn)擊可打開鏈接)

8、協(xié)議報(bào)文之旅(點(diǎn)擊可打開鏈接)

9、IP單播轉(zhuǎn)發(fā)流程(點(diǎn)擊可打開鏈接)

10、L2橋接轉(zhuǎn)發(fā)流程(點(diǎn)擊可打開鏈接)

11、IP組播轉(zhuǎn)發(fā)流程(本貼)

12、MPLS轉(zhuǎn)發(fā)流程

迫不及待想看到全部的技術(shù)帖么?莫急莫急,猛戳閱讀原文,開啟您個(gè)人的路由器探秘之旅吧!

【NE探秘】一個(gè)報(bào)文的路由器之旅-(8)IP單播轉(zhuǎn)發(fā)流程【原創(chuàng)】

嗨,親愛的朋友們,NE探秘系列技術(shù)帖又與您相約了,有沒有很期待?

本系列的前1~7帖介紹了一個(gè)報(bào)文在轉(zhuǎn)發(fā)層面的處理流程,該流程中最重要的處理就是轉(zhuǎn)發(fā)流程。不同業(yè)務(wù)有不同的轉(zhuǎn)發(fā)流程,本系列后面幾帖將分別介紹各類業(yè)務(wù)的轉(zhuǎn)發(fā)流程,本帖介紹IP單播的轉(zhuǎn)發(fā)流程,包括IPv4單播和IPv6單播。

一個(gè)報(bào)文的路由器之旅

——(8)IP單播轉(zhuǎn)發(fā)流程

IP單播轉(zhuǎn)發(fā)流程

端到端的IPv4單播轉(zhuǎn)發(fā)過程

以大家熟悉的以太幀為例,先來回顧下IP單播端到端的轉(zhuǎn)發(fā)流程。

下圖是個(gè)最簡(jiǎn)單的IP轉(zhuǎn)發(fā)場(chǎng)景,某局域網(wǎng)的主機(jī)A發(fā)送報(bào)文給另一局域網(wǎng)的主機(jī)B,中間經(jīng)過一臺(tái)路由器,那么這臺(tái)路由器就是PC-A的網(wǎng)關(guān)。

由主機(jī)PC-A向主機(jī)PC-B發(fā)送IP報(bào)文,那么該報(bào)文的目的IP地址就是PC-B的IP地址,源IP地址就是主機(jī)PC-A的IP地址,目標(biāo)MAC地址就是其網(wǎng)關(guān)路由器Port1的MAC地址,源MAC地址就是PC-A的MAC地址。

路由器轉(zhuǎn)發(fā)過程:

1、路由器收到這個(gè)報(bào)文,發(fā)現(xiàn)其目的MAC為本機(jī)Port1端口的,表明需要本機(jī)來進(jìn)行進(jìn)一步解析(如果目的MAC不是本機(jī),表明直接進(jìn)行二層轉(zhuǎn)發(fā),不需要再解析幀的其他內(nèi)容了);

2、路由器進(jìn)一步解析報(bào)文,得知該幀所承載的協(xié)議類型為IPv4(協(xié)議類型值=0x800),即需要進(jìn)行IPv4轉(zhuǎn)發(fā);

3、查IP轉(zhuǎn)發(fā)表(FIB表),得知該報(bào)文并不是發(fā)給自己的,而是需要送往出端口Port2,因此,路由器不再繼續(xù)分析IP頭后面的內(nèi)容。

4、路由器將目的MAC更換成PC-B的MAC,將源MAC更換為出接口Port2的MAC,并將報(bào)文從Port2發(fā)送出去。

路由器的IPv4轉(zhuǎn)發(fā)全流程

IPv4轉(zhuǎn)發(fā)全流程如下圖所示。需要關(guān)注的地方在于查表轉(zhuǎn)發(fā)和獲取封裝信息兩個(gè)環(huán)節(jié)(其他環(huán)節(jié)在本系列的前1~6貼中已描述,不再贅述)。

1)查表轉(zhuǎn)發(fā)詳細(xì)流程

流程說明:

步驟1、判斷報(bào)文的目的MAC是否等于本機(jī)MAC,如果不是,則做L2轉(zhuǎn)發(fā);是則繼續(xù)下一步驟。

步驟2、判斷報(bào)文的協(xié)議類型是否為IPv4(例如以太幀,eth_type = 0x800),如果不是,則進(jìn)入其他轉(zhuǎn)發(fā)流程;是則繼續(xù)下一步驟。

步驟3、檢查報(bào)文的長(zhǎng)度、IP地址、Checksum字段是否正確,如果不正確,則丟棄報(bào)文,否則繼續(xù)下一步驟。

步驟4、判斷目的IP地址是否為單播地址,如果不是單播則其他轉(zhuǎn)發(fā)處理,是則進(jìn)入繼續(xù)下一步驟。

步驟5、用目的IP地址查FIB表得到的下一跳IP、出接口等信息(如果是公網(wǎng)的報(bào)文,查公網(wǎng)FIB表,如果是VPN報(bào)文,則查對(duì)應(yīng)VPN的FIB表)。

如果是負(fù)載分擔(dān),會(huì)查到多份這樣的信息,于是根據(jù)負(fù)載分擔(dān)哈希算法選取其中的一份。

如果是FRR(FastReroute)狀態(tài),則會(huì)根據(jù)出接口狀態(tài)做主備路由選擇,如果出接口正常工作,則會(huì)選擇主路由;否則選擇FRR備份路由。

如果出接口為Trunk接口,會(huì)再根據(jù)Trunk負(fù)載分擔(dān)哈希算法,選擇Trunk成員口中的其中一個(gè)作為最終的出接口。

步驟6、如果使能了URPF檢查,則用源IP地址查FIB表,如果命中,對(duì)于松散的URPF檢查只要出接口為真實(shí)的外部接口則檢查通過(對(duì)于出接口為CPU、NULL接口、TE接口、IPv4 Tunnel接口則松散的URPF檢查不通過);對(duì)應(yīng)嚴(yán)格的URPF檢查,用報(bào)文的入端口信息與源IP地址查FIB表得到的出口信息進(jìn)行比較,相等則通過,不等則丟棄(對(duì)于入接口為VLAN子接口,出接口為入端口信息,同時(shí)出接口VLANID也要等于入口的VLANID,則檢查才會(huì)通過)。

說明:

URPF(Unicast Reverse Path Forwarding),是一種單播逆向路由查找技術(shù),用來預(yù)防偽造源地址攻擊的手段。之所以稱為逆向,是針對(duì)正常的路由查找而言的。一般情況下路由器接收到報(bào)文,獲取報(bào)文的目的地址,針對(duì)目的地址查找路由。如果找到了進(jìn)行正常的轉(zhuǎn)發(fā),否則丟棄該報(bào)文。

URPF的實(shí)現(xiàn)原理:通過獲取報(bào)文的源地址和入接口,以源地址為目的地址,在轉(zhuǎn)發(fā)表中查找源地址對(duì)應(yīng)的接口是否與入接口匹配。如果不匹配認(rèn)為源地址是偽裝的,丟棄該報(bào)文。通過這種方式,能有效地防范網(wǎng)絡(luò)中通過修改源地址而進(jìn)行的惡意攻擊行為的發(fā)生。

然而,有的場(chǎng)景(例如負(fù)載分擔(dān))同一目的地址在路由表中存在有多條路由表項(xiàng),同一目的IP地址的報(bào)文發(fā)送的接口不唯一,即非對(duì)稱路由。此時(shí)若應(yīng)用URPF時(shí),報(bào)文會(huì)異常丟棄。因此,URPF出現(xiàn)了嚴(yán)格模式和松散模式。嚴(yán)格模式要求接口匹配;而松散模式,不檢查接口是否匹配,只要路由表項(xiàng)中存在針對(duì)源地址的路由,數(shù)據(jù)報(bào)文就通過URPF檢查。

步驟7、如果目的IP為非本機(jī)IP,則報(bào)文頭的TTL減1,并重新計(jì)算并修改Checksum值,繼續(xù)執(zhí)行后續(xù)的CAR等公共處理。如果目的IP為本機(jī)(查表發(fā)現(xiàn)下一跳為127.0.0.1),則直接送入上行TM部件。

之后的處理中,交換網(wǎng)根據(jù)出接口信息(出接口信息包含了目的單板和目的出接口)信息將報(bào)文發(fā)送到正確的下行單板。

2)獲取封裝信息

到了下行,下行包轉(zhuǎn)發(fā)引擎PFE用下一跳IP或目的IP和VLANID查ARP表項(xiàng),獲取目的MAC信息,根據(jù)出接口信息查出接口表項(xiàng)獲取端口MAC。因?yàn)椋酚善餍枰獙?bào)文的目的MAC更換成下一跳設(shè)備的MAC,將源MAC更換成自己出接口的MAC。

如果查ARP表項(xiàng)沒有命中,則啟動(dòng)ARP學(xué)習(xí)功能,過程如下:

1) 發(fā)送ARP請(qǐng)求報(bào)文,此報(bào)文的目的MAC為廣播地址,目的地址為下一跳IP,源IP為自己的IP。

2)由于是MAC廣播報(bào)文,在局域網(wǎng)內(nèi)的設(shè)備或主機(jī)都能收到,因此下一跳設(shè)備也能收到。于是下一跳設(shè)備解析報(bào)文發(fā)現(xiàn)目的IP為自己,便發(fā)送ARP回應(yīng)報(bào)文,里面攜帶了自己的MAC地址。

3)路由器收到回應(yīng)報(bào)文,得到下一跳的MAC地址,添加到ARP表項(xiàng)中。

通過ARP學(xué)習(xí)后,重新查ARP表項(xiàng)獲取下一跳MAC信息,便可繼續(xù)后續(xù)的處理。

3)出口檢查和封裝

對(duì)于目的IP為本機(jī)的,在出口處理模塊處上送到接口板CPU,再上送給主控板CPU。

對(duì)于目的地址非本機(jī)的,則在出接口處理模塊時(shí),根據(jù)需要進(jìn)行MTU檢查。如果報(bào)文長(zhǎng)度不超過MTU,則將報(bào)文發(fā)送給接口卡。接口卡用待發(fā)送的數(shù)據(jù)幀內(nèi)容計(jì)算幀檢驗(yàn)序列FCS,然后對(duì)數(shù)據(jù)幀加封裝幀間隙、前導(dǎo)碼、幀開始界定符和FCS,并將數(shù)據(jù)幀轉(zhuǎn)換成光/電信號(hào),再發(fā)送到出接口線路上。

如果報(bào)文長(zhǎng)度超過MTU,則判斷報(bào)文頭DF位,如果DF位置0,則分片后再發(fā)送給接口卡;若DF置1,表示報(bào)文源端不允許該報(bào)文分片,所以將報(bào)文做CP-CAR檢查后上送接口板CPU,再上送主控板CPU,以便回應(yīng)ICMP Too-Big消息給源端。

IPv6單播轉(zhuǎn)發(fā)流程

IPv6轉(zhuǎn)發(fā)流程與IPv4基本相同,不同點(diǎn)在于:

- 所查的表項(xiàng)不同,IPv4查FIBv4表,而IPv6查的是FIBv6表;IPv4查ARP表,而IPv6則是查鄰居表。

- IPv6 MTU檢查時(shí),超過接口IPv6 MTU時(shí)不進(jìn)行分片,而是上送CPU并返回ICMPv6 Too-big消息給源端(這符合IPv6協(xié)議標(biāo)準(zhǔn))。

本系列漫談一個(gè)報(bào)文的路由器之旅,您將看到:

0、開篇引言(轉(zhuǎn)發(fā)全景圖)(點(diǎn)擊可打開鏈接)

1、交換與尋址轉(zhuǎn)發(fā)(點(diǎn)擊可打開鏈接)

2、報(bào)文收發(fā)、解析與封裝(點(diǎn)擊可打開鏈接)

3、流量控制(反壓、隊(duì)列、限速)(點(diǎn)擊可打開鏈接)

4、QoS基礎(chǔ)(上篇)(點(diǎn)擊可打開鏈接)

5、QoS基礎(chǔ)(下篇)(點(diǎn)擊可打開鏈接)

6、QoS處理流程(點(diǎn)擊可打開鏈接)

7、轉(zhuǎn)發(fā)層面的其他處理(組播復(fù)制、NAT、包過濾、策略路由等)(點(diǎn)擊可打開鏈接)

8、協(xié)議報(bào)文之旅(點(diǎn)擊可打開鏈接)

9、IP單播轉(zhuǎn)發(fā)流程(本帖)

10、L2橋接轉(zhuǎn)發(fā)流程

11、IP組播轉(zhuǎn)發(fā)流程

12、MPLS轉(zhuǎn)發(fā)流程

迫不及待想看到全部的技術(shù)帖么?莫急莫急,猛戳閱讀原文,開啟您個(gè)人的路由器探秘之旅吧!

發(fā)表評(píng)論

您必須才能發(fā)表評(píng)論!