專利名稱:收集邊界網(wǎng)關(guān)協(xié)議路由選擇協(xié)議消息的方法
技術(shù)領(lǐng)域:
根據(jù)本發(fā)明的實(shí)施方式一般地涉及交換式分組網(wǎng)絡(luò),更具體地說,本發(fā)明涉及收集并記錄在交換式因特網(wǎng)協(xié)議(IP)網(wǎng)絡(luò)中的邊界網(wǎng)關(guān)協(xié)議(BGP)路由選擇協(xié)議消息。
背景技術(shù):
分組交換數(shù)字網(wǎng)絡(luò)是因特網(wǎng)的骨干。在分組交換因特網(wǎng)協(xié)議(IP)網(wǎng)絡(luò)中,從源流向目的地的數(shù)字信息被分割為一序列分組。通過大量路由器和交換機(jī),這些分組被路由通過網(wǎng)絡(luò)。但是并不能保證所有的分組都途經(jīng)相同的路由。路由選擇(routing)(也叫路由管理)控制著分組所途經(jīng)的路由,以及這些路由如何改變、適應(yīng)諸如加載和故障之類的網(wǎng)絡(luò)條件并對(duì)其作出響應(yīng)。
分組流量在路由器之間交換。路由器是一種將硬件和軟件組合在一起的計(jì)算機(jī)連網(wǎng)設(shè)備,用于將數(shù)據(jù)分組轉(zhuǎn)發(fā)到它們的目的地。路由器在使用邊界網(wǎng)關(guān)協(xié)議(BGP)連接到其他路由器時(shí),這些路由器稱作對(duì)等方。這種初始對(duì)等關(guān)系一般是通過手工配置來建立的。每個(gè)路由器都保存一份網(wǎng)絡(luò)或前綴表,所述前綴指定了網(wǎng)絡(luò)的可到達(dá)性。對(duì)等的路由器通過交換根據(jù)在RFC 1771中規(guī)定的邊界網(wǎng)關(guān)協(xié)議(BGP)的消息來管理這些表。
路由管理是因特網(wǎng)業(yè)界中一個(gè)活躍的研究領(lǐng)域,也是網(wǎng)絡(luò)服務(wù)提供者(NSP)感興趣的領(lǐng)域。通過監(jiān)控并管理路由選擇,可以跟蹤傳統(tǒng)網(wǎng)絡(luò)元件和服務(wù)監(jiān)控未發(fā)現(xiàn)的問題,同時(shí)收集在評(píng)價(jià)對(duì)等關(guān)系時(shí)有用的信息。為了進(jìn)行符合邊界網(wǎng)關(guān)協(xié)議(BGP)的有意義的路由選擇管理,有必要從對(duì)等路由器收集各自的路由選擇更新。
記錄路由選擇信息的軟件工具至少可以從兩個(gè)來源處獲得。第一個(gè)是Zebra或Quagga,其是一種全功能路由選擇協(xié)議套件,它剛好具有記錄路由選擇更新的能力。Mrtd作為來自密歇根大學(xué)的MRT包的一部分,也能夠記錄路由選擇更新。在用作網(wǎng)絡(luò)設(shè)施時(shí)這兩種工具都有自己的問題。首先,它們被構(gòu)造來遠(yuǎn)非僅僅用于記錄路由,而是完成更多的功能。這兩種工具都能夠執(zhí)行完整的BGP路由選擇功能,并且主要是由于這種添加的處理而導(dǎo)致不能很好地?cái)U(kuò)展。其次,這些工具的行為干擾它們正試圖記錄的測(cè)量結(jié)果。當(dāng)從遵循BGP規(guī)范的對(duì)等方接收到任何錯(cuò)誤時(shí),上面提到的兩種工具都將拆除BGP對(duì)等會(huì)話。
發(fā)明內(nèi)容
根據(jù)本發(fā)明,邊界網(wǎng)關(guān)協(xié)議(BGP)路由記錄儀(BRR)記錄所有的進(jìn)入BGP消息和外出BGP消息,并且對(duì)這些消息加時(shí)間戳。對(duì)等會(huì)話可以被保持越過錯(cuò)誤,并且BRR僅被允許被動(dòng)地監(jiān)聽對(duì)等會(huì)話初始化。
通過在結(jié)合附圖閱讀時(shí)參考下面的本發(fā)明實(shí)施方式的詳細(xì)描述,將最好地理解本發(fā)明,其中圖1圖示了在本發(fā)明實(shí)施方式中使用的有限狀態(tài)機(jī)。
具體實(shí)施例方式
本發(fā)明涉及在分組交換IP網(wǎng)絡(luò)中邊界網(wǎng)關(guān)協(xié)議(BGP)消息的記錄。給出下面的描述以使本領(lǐng)域的技術(shù)人員能夠?qū)崿F(xiàn)并使用本發(fā)明,并且這些描述是在專利申請(qǐng)及其需求的環(huán)境中給出的。對(duì)所公開的實(shí)施方式進(jìn)行的各種修改對(duì)本領(lǐng)域的技術(shù)人員是顯而易見的,并且其中的一般原則可以應(yīng)用到其他實(shí)施方式。因此,本發(fā)明不是要受限于所示的實(shí)施方式,而是要被賦予與所附權(quán)利要求一致的最廣范圍,并且符合這里所描述的原則和特征。
BGP路由器的操作在RFC 1771中定義。RFC 1771的當(dāng)前版本是于1995年3月公布的BGP-4,將其結(jié)合于此用作參考,并且稱作RFC1771。
根據(jù)RFC 1771,兩個(gè)對(duì)等方形成彼此之間的連接。它們交換BGP消息以打開并確認(rèn)它們之間的連接參數(shù)。取決于單個(gè)路由器的配置,最初的數(shù)據(jù)流是整個(gè)BGP路由選擇表。當(dāng)路由選擇表改變時(shí),發(fā)送遞增的周期性更新。BGP不要求周期性地刷新整個(gè)BGP路由選擇表。因此,在連接期間,BGP系統(tǒng)必須保留由每個(gè)對(duì)等方發(fā)送的所有BGP路由選擇表的總體概況,并且跟蹤來自每個(gè)對(duì)等方的表版本號(hào)。KeepAlive消息被周期性地發(fā)送以確保連接的活性。如果連接遇到錯(cuò)誤條件,則發(fā)送通知消息并關(guān)閉該連接。
應(yīng)當(dāng)注意,根據(jù)RFC 1771,如果連接遇到錯(cuò)誤條件就關(guān)閉對(duì)等方之間的連接。當(dāng)首次打開連接或者從錯(cuò)誤中恢復(fù)過來而重新打開連接時(shí),根據(jù)RFC 1771,發(fā)送預(yù)定前往對(duì)等方的整個(gè)BGP路由選擇表。這樣的錯(cuò)誤包括沒有及時(shí)響應(yīng)KeepAlive消息、消息頭部錯(cuò)誤(類型1)、更新錯(cuò)誤(類型3)、保持定時(shí)器期滿錯(cuò)誤(類型4)和有限狀態(tài)機(jī)錯(cuò)誤(類型5)。
諸如Zebra和Mrtd之類的現(xiàn)有路由選擇套件具有記錄某些BGP流量的能力,但是不能記錄所有BGP流量。因?yàn)檫@種記錄能力已被添加到具有完整BGP路由選擇功能的現(xiàn)有程序中,所以它們?cè)谒涗浀腂GP流量中引入了噪聲和錯(cuò)誤。
本發(fā)明的實(shí)施方式提供了一種BGP路由記錄儀(BRR),其記錄來自對(duì)等方的所有BGP消息。根據(jù)本發(fā)明的BRR不產(chǎn)生BGP更新,而是記錄來自對(duì)等系統(tǒng)的BGP消息,以及其自身的KeepAlive、Notification和Close消息。特別有意義的是BRR將記錄它要發(fā)送的Notification消息,但是沒有實(shí)際發(fā)送上述Notification消息。Notification消息包含錯(cuò)誤發(fā)生的原因。因此,接收到Update錯(cuò)誤時(shí)的BRR行為例如會(huì)是將原始的Update消息象它被接收時(shí)一樣記錄下來,并且根據(jù)所述錯(cuò)誤來記錄正確類型的Notification消息,在這種情形中是類型3錯(cuò)誤,但是BRR絕不會(huì)發(fā)送該Notification,也不會(huì)拆除會(huì)話。這種行為是可配置的,因?yàn)檫B續(xù)重復(fù)出現(xiàn)錯(cuò)誤條件而沒有逃離(escape)也是一種危險(xiǎn)情況,所以在一種實(shí)施方式中,在實(shí)際發(fā)送Notification消息并且拆除會(huì)話之前可被接收的錯(cuò)誤次數(shù)可以由用戶來配置。
在本發(fā)明的一種實(shí)施方式中,優(yōu)選地在網(wǎng)絡(luò)通信棧的套接字層對(duì)BGP消息盡早加時(shí)間戳。在諸如Zebra和Mrtd之類的系統(tǒng)中,加時(shí)間戳發(fā)生在消息將被寫入磁盤的時(shí)刻,這可以是在它們被接收到之后許多分鐘時(shí)。
諸如Zebra和Mrtd之類的系統(tǒng)的主要功能是作為路由器;GBP記錄則是附加的功能。當(dāng)路由選擇操作和路由流量占用了系統(tǒng)容量的相當(dāng)大部分時(shí),可以不記錄BGP消息。實(shí)際上,諸如Zebra和Mrtd等系統(tǒng)的已知問題在于在負(fù)載較重的情況下,它們可能不能生成與對(duì)等方之間的BGPKeepAlive消息,這導(dǎo)致與對(duì)等方之間的會(huì)話被復(fù)位并被拆除。然后,自動(dòng)重建會(huì)話,并且重傳用于對(duì)等方的完整表。這不僅在試圖測(cè)量BGP協(xié)議活動(dòng)時(shí)引入了噪聲,而且也可能在設(shè)備由于復(fù)位會(huì)話并接收用于每個(gè)對(duì)等方的完整路由選擇更新而增加負(fù)載,從而加重記錄設(shè)備上的負(fù)擔(dān)時(shí)導(dǎo)致一連串故障的發(fā)生。由于當(dāng)前的方法使用實(shí)現(xiàn)了完整路由選擇套件的程序,所以這些程序必須在每個(gè)路由被接收到時(shí)保留該路由并對(duì)其做出路由選擇決定。本發(fā)明的實(shí)現(xiàn)方案提供了一種專門構(gòu)造的測(cè)量?jī)x器,這種測(cè)量?jī)x器只加時(shí)間戳和記錄路由選擇消息,并且不需要使用路由選擇算法或者保留路由選擇表;這提供了極大的性能改善,并且極大地節(jié)省了硬件需求。另外,當(dāng)諸如Zebra或Mrtd之類的路由器接收錯(cuò)誤的消息時(shí),或者向其對(duì)等方報(bào)告錯(cuò)誤時(shí),這些BGP消息不被記錄,或者用空字段來記錄。不記錄消息,尤其是不記錄那些指示錯(cuò)誤或者導(dǎo)致錯(cuò)誤的消息對(duì)于儀器使用和測(cè)量來說都是不好的事情。而根據(jù)本發(fā)明的BRR捕捉所有的BGP消息,包括那些表示或?qū)е洛e(cuò)誤的BGP消息。
根據(jù)RFC 1771,當(dāng)站點(diǎn)啟動(dòng)時(shí),該站點(diǎn)試圖打開與所有已配置對(duì)等方之間的BGP連接。當(dāng)每個(gè)會(huì)話被打開時(shí),與對(duì)等方之間交換BGP路由選擇表。如果有大量的對(duì)等方,這可能意味著相當(dāng)大的流量。根據(jù)本發(fā)明的BRR表現(xiàn)出不同于RFC 1771中所規(guī)定的行為。根據(jù)本發(fā)明的BRR以被動(dòng)模式啟動(dòng),監(jiān)聽并記錄流量,但是等待對(duì)等方打開BGP會(huì)話。
圖1圖示了適于在本發(fā)明的實(shí)施方式中使用的有限狀態(tài)機(jī)。在運(yùn)行中,對(duì)于每個(gè)對(duì)等的連接存在有限狀態(tài)機(jī)的一個(gè)實(shí)例(instance)。
代表一個(gè)對(duì)等連接的有限狀態(tài)機(jī)的每個(gè)實(shí)例都已將其關(guān)聯(lián)到一個(gè)當(dāng)前狀態(tài)。所有狀態(tài)機(jī)都開始于空閑狀態(tài)1。圖1所示的有限狀態(tài)機(jī)具有6個(gè)狀態(tài)1 空閑2 連接(未使用的)3 活動(dòng)的4 OpenSent5 OpenConfirm6 已建立在記錄會(huì)話的結(jié)束處的退出處理在圖1中被示作7。與每個(gè)狀態(tài)相關(guān)聯(lián)的是一組事件和轉(zhuǎn)移表。適于圖1中所示的有限狀態(tài)機(jī)的一組狀態(tài)、事件和轉(zhuǎn)移表作為附錄1給出。注意,雖然這些狀態(tài)和事件與在RFC 1771中描述的相同,但是本發(fā)明使用的轉(zhuǎn)移表不同于RFC中的那些。
與圖1的有限狀態(tài)機(jī)相關(guān)聯(lián)的事件集合為1 BGP開始2 BGP停止3 BGP傳輸連接打開4 BGP傳輸連接關(guān)閉5 BGP傳輸連接打開故障6 BGP傳輸致命錯(cuò)誤7 ConnectRetry定時(shí)器期滿8 保持定時(shí)器期滿9 KeepAlive定時(shí)器期滿10 接收Open消息11 接收KeepAlive消息12 接收Update消息13 接收Notification消息在每種狀態(tài)中,附錄1中的關(guān)聯(lián)轉(zhuǎn)移表指定哪些事件轉(zhuǎn)移到哪些狀態(tài),并且詳細(xì)描述在處理事件時(shí)發(fā)生的其他處理。所有BGP消息(進(jìn)入消息和外出消息)都被記錄,通知也是如此。并非在每個(gè)狀態(tài)中都允許所有事件,這在有限狀態(tài)機(jī)的實(shí)現(xiàn)中是常見的。在符合RFC 1771的路由器中,錯(cuò)誤和/或禁止的轉(zhuǎn)移導(dǎo)致BGP對(duì)等會(huì)話被終止。在根據(jù)本發(fā)明的BGP路由記錄儀(BRR)中,這種錯(cuò)誤被記入日志。根據(jù)本發(fā)明的BRR可被配置來在發(fā)生錯(cuò)誤時(shí)保持與BGP對(duì)等方之間的鏈接。
所有對(duì)等的連接,因而用于每個(gè)對(duì)等連接的狀態(tài)機(jī)都開始于空閑狀態(tài)1。BGP開始事件使?fàn)顟B(tài)機(jī)轉(zhuǎn)移至活動(dòng)狀態(tài)3。對(duì)于任何其他事件,狀態(tài)機(jī)仍停留在空閑狀態(tài)1中。
根據(jù)本發(fā)明的BRR不使用連接狀態(tài)2,但是遵循RFC 1771的BGP路由器使用。
在活動(dòng)狀態(tài)3中,接收到BGP開始事件使?fàn)顟B(tài)機(jī)仍停留在活動(dòng)狀態(tài)3中。接收到BGP停止事件使?fàn)顟B(tài)機(jī)轉(zhuǎn)移至空閑狀態(tài)1。接收到BGP傳輸連接打開事件使得打開過程開始,并且使?fàn)顟B(tài)機(jī)轉(zhuǎn)移至OpenSent狀態(tài)4。接收到BGP傳輸連接打開故障事件使?fàn)顟B(tài)機(jī)仍停留在活動(dòng)狀態(tài)3中。所有其他事件都使?fàn)顟B(tài)機(jī)轉(zhuǎn)移至空閑狀態(tài)1。
OpenSent狀態(tài)4是建立完整的BGP對(duì)等會(huì)話過程的下一部分。接收到BGP開始事件使?fàn)顟B(tài)機(jī)停留在OpenSent狀態(tài)4中。接收到BGP停止事件使?fàn)顟B(tài)機(jī)在通知和清除之后轉(zhuǎn)移至空閑狀態(tài)1。接收到BGP傳輸連接關(guān)閉、連接打開故障或者致命錯(cuò)誤事件使?fàn)顟B(tài)機(jī)轉(zhuǎn)移至活動(dòng)狀態(tài)3。接收到保持定時(shí)器期滿事件或KeepAlive定時(shí)器期滿事件使?fàn)顟B(tài)機(jī)仍停留在OpenSent狀態(tài)4。接收到打開事件使?fàn)顟B(tài)機(jī)轉(zhuǎn)移至OpenConfirm狀態(tài)5(發(fā)送Open消息和KeepAlive消息,并且啟動(dòng)KeepAlive定時(shí)器和保持定時(shí)器),或者使?fàn)顟B(tài)機(jī)在錯(cuò)誤通知之后轉(zhuǎn)移至空閑狀態(tài)1。接收到其他事件則產(chǎn)生通知并轉(zhuǎn)移到空閑狀態(tài)1。
OpenConfirm狀態(tài)5繼續(xù)處理BGP對(duì)等會(huì)話。接收到BGP開始、保持定時(shí)器期滿、KeepAlive定時(shí)器期滿、或者Update事件使?fàn)顟B(tài)機(jī)仍停留在OpenConfirm狀態(tài)5,并且伴隨著附錄1中所示的其他動(dòng)作。接收到BGP停止事件導(dǎo)致所示的通知和清除動(dòng)作,并且轉(zhuǎn)移至空閑狀態(tài)1。接收到保持定時(shí)器期滿事件使得通知并重啟保持定時(shí)器,并且狀態(tài)機(jī)仍停留在OpenConfirm狀態(tài)5中。接收到KeepAlive定時(shí)器期滿事件使得重啟KeepAlive定時(shí)器,向BGP對(duì)等方發(fā)送KeepAlive消息,并且使?fàn)顟B(tài)機(jī)仍停留在OpenConfirm狀態(tài)5中。當(dāng)接收到KeepAlive事件時(shí),重啟保持定時(shí)器,并且使?fàn)顟B(tài)機(jī)轉(zhuǎn)移至已建立狀態(tài)6。
已建立狀態(tài)6代表已建立的BGP對(duì)等會(huì)話。接收到BGP停止或者通知事件引發(fā)通知、清除,并且轉(zhuǎn)移至空閑狀態(tài)1。接收到其他事件使?fàn)顟B(tài)機(jī)仍停留在已建立狀態(tài)6中,并且伴隨著如附錄所示的處理。
前面提供的本發(fā)明的詳細(xì)描述是為了說明目的,而不是窮盡性的,也不是要將本發(fā)明限制于所公開的具體實(shí)施方式
。因此,本發(fā)明的范圍由所附權(quán)利要求定義。
附錄1BGP路由記錄儀FSM狀態(tài)轉(zhuǎn)移和動(dòng)作本附錄討論響應(yīng)于BGP事件而在BGP FSM中的狀態(tài)之間的轉(zhuǎn)移。下面是當(dāng)協(xié)商后的保持時(shí)間值為非零值時(shí)這些狀態(tài)和事件的列表。
BGP狀態(tài)1-空閑2-連接(未使用的)3-活動(dòng)的4-OpenSent5-OpenConfirm6-已建立BGP事件1-BGP開始2-BGP停止3-BGP傳輸連接打開4-BGP傳輸連接關(guān)閉5-BGP傳輸連接打開故障6-BGP傳輸致命錯(cuò)誤7-ConnectRetry定時(shí)器期滿(未使用的)8-保持定時(shí)器期滿9-KeepAlive定時(shí)器期滿10 -接收OPEN消息11 -接收KEEPALIVE消息12 -接收UPDATE消息13 -接收NOTIFICATION消息下面的表格描述BGP FSM的狀態(tài)轉(zhuǎn)移,以及由這些轉(zhuǎn)移觸發(fā)的動(dòng)作。
空閑(1)
連接(2)從不使用這種狀態(tài)。
活動(dòng)的(3)
OpenSent(4)
OpenConfirm(5)
已建立(6)
權(quán)利要求
1.一種記錄來自邊界網(wǎng)關(guān)協(xié)議對(duì)等方的邊界網(wǎng)關(guān)協(xié)議消息的方法,所述方法包括建立與邊界網(wǎng)關(guān)協(xié)議對(duì)等方之間的被動(dòng)鏈接,在來自邊界網(wǎng)關(guān)協(xié)議對(duì)等方的邊界網(wǎng)關(guān)協(xié)議消息到達(dá)時(shí),對(duì)所有這些消息加時(shí)間戳并記錄所有這些消息,以及保持與邊界網(wǎng)關(guān)協(xié)議對(duì)等方之間的鏈接越過所選定的邊界網(wǎng)關(guān)協(xié)議錯(cuò)誤。
2.如權(quán)利要求1所述的方法,其中,“保持與邊界網(wǎng)關(guān)協(xié)議對(duì)等方之間的鏈接越過所選定的邊界網(wǎng)關(guān)協(xié)議錯(cuò)誤”的步驟相對(duì)于邊界網(wǎng)關(guān)協(xié)議錯(cuò)誤是可配置的。
3.如權(quán)利要求1所述的方法,其中,外出的邊界網(wǎng)關(guān)協(xié)議消息被加時(shí)間戳并被記錄。
4.一種改進(jìn)的邊界網(wǎng)關(guān)協(xié)議路由記錄儀,用于記錄來自邊界網(wǎng)關(guān)協(xié)議對(duì)等方的邊界網(wǎng)關(guān)協(xié)議消息,包括用于建立與邊界網(wǎng)關(guān)協(xié)議對(duì)等方之間的被動(dòng)鏈接的裝置,用于接收來自邊界網(wǎng)關(guān)協(xié)議對(duì)等方的邊界網(wǎng)關(guān)協(xié)議消息的裝置,用于在來自邊界網(wǎng)關(guān)協(xié)議對(duì)等方的邊界網(wǎng)關(guān)協(xié)議消息到達(dá)時(shí),對(duì)所有這些消息加時(shí)間戳并記錄所有這些消息的裝置,和用于保持與邊界網(wǎng)關(guān)協(xié)議對(duì)等方之間的鏈接越過所選定的邊界網(wǎng)關(guān)協(xié)議錯(cuò)誤的裝置。
5.一種包括可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì),所述指令用于在邊界網(wǎng)關(guān)協(xié)議路由記錄儀中處理邊界網(wǎng)關(guān)協(xié)議消息流量,所述計(jì)算機(jī)可讀介質(zhì)包括用于在所述邊界網(wǎng)關(guān)協(xié)議路由記錄儀和邊界網(wǎng)關(guān)協(xié)議對(duì)等方之間建立被動(dòng)鏈接的代碼,用于接收來自邊界網(wǎng)關(guān)協(xié)議對(duì)等方的邊界網(wǎng)關(guān)協(xié)議消息的代碼,用于在來自邊界網(wǎng)關(guān)協(xié)議對(duì)等方的邊界網(wǎng)關(guān)協(xié)議消息到達(dá)時(shí),對(duì)所有這些消息加時(shí)間戳并記錄所有這些消息的代碼,和用于保持與邊界網(wǎng)關(guān)協(xié)議對(duì)等方之間的鏈接越過所選定的邊界網(wǎng)關(guān)協(xié)議錯(cuò)誤的代碼。
全文摘要
本發(fā)明公開了一種收集邊界網(wǎng)關(guān)協(xié)議路由選擇協(xié)議消息的方法。BGP路由記錄儀(BRR)捕捉并轉(zhuǎn)儲(chǔ)從BGP對(duì)等方接收到的邊界網(wǎng)關(guān)協(xié)議(BGP)消息。在BRR和BGP對(duì)等方之間建立被動(dòng)鏈接。所有進(jìn)入消息和外出消息都被記錄并加時(shí)間戳。當(dāng)遇到錯(cuò)誤時(shí)不是拆除BGP對(duì)等會(huì)話,而是將錯(cuò)誤條件記錄下來,并且BRR可被配置來保持鏈接越過所選定的BGP錯(cuò)誤。
文檔編號(hào)H04L12/56GK1767533SQ200510082759
公開日2006年5月3日 申請(qǐng)日期2005年7月7日 優(yōu)先權(quán)日2004年10月26日
發(fā)明者勞斯·塔特曼 申請(qǐng)人:安捷倫科技有限公司