專利名稱:鏈路聚合的制作方法
背景技術(shù):
網(wǎng)絡(luò)交換機(jī)從多個(gè)與交換機(jī)連接的入口端口接收數(shù)據(jù)分組,并且向與交換機(jī)連接的多個(gè)出口端口提供數(shù)據(jù)分組。交換機(jī)按照包括在數(shù)據(jù)分組中的目的地址決定數(shù)據(jù)分組被提供給的出口端口。
一般地,目的地通過一個(gè)物理鏈路與交換機(jī)中的一個(gè)出口端口連接。在目的地的入口端口接收的數(shù)據(jù)分組經(jīng)過交換機(jī)轉(zhuǎn)發(fā)給出口端口。所述目的地可以是計(jì)算機(jī)、另一個(gè)交換機(jī)或者路由器。
為了增加目的地的帶寬;即,一定數(shù)量的數(shù)據(jù)分組經(jīng)過交換機(jī)轉(zhuǎn)發(fā)到目的地,所述的目的地可以通過多個(gè)物理鏈路與超過一個(gè)的出口端口連接,其中每個(gè)物理鏈路都終止于出口端口。所述多個(gè)物理鏈路是交換機(jī)與目的地之間邏輯鏈路的成員。
向目的地提供多個(gè)物理鏈路稱為鏈路聚合或中繼(trunking)。IEEE802.3ad組在http//grouper.ieee.org/groups/802/3/trunk-study/tutorial公開的指南中對(duì)IEEE 802.3的鏈路聚合進(jìn)行了說明。
到達(dá)交換機(jī)入口端口的數(shù)據(jù)分組可以通過交換機(jī)按照邏輯鏈路中的任何一個(gè)物理鏈路轉(zhuǎn)發(fā)到目的地。因此,由于在物理鏈路中分配目的地的數(shù)據(jù)分組的緣故,鏈路帶寬增加。為了獲得邏輯鏈路的最大帶寬利用率,去向目的地的數(shù)據(jù)分組必須在物理鏈路中均勻地分配給目的地。
但是,當(dāng)在物理鏈路中分配接收的數(shù)據(jù)分組時(shí),數(shù)據(jù)流中的數(shù)據(jù)分組不能通過交換機(jī)來變?yōu)闊o序。
數(shù)據(jù)流在存儲(chǔ)于接收數(shù)據(jù)的報(bào)頭中的目的地址和源地址中編碼。源地址和目的地址可以是Ethernet(以太網(wǎng))源地址和目的地址、IP源地址和目的地址、UDP源端口地址和目的端口地址或者TCP源端口地址和目的端口地址。
所述交換機(jī)包括在交換機(jī)中選擇與所述物理鏈路相應(yīng)的端口的向量合成邏輯。按照邏輯端口轉(zhuǎn)發(fā)向量和集合端口項(xiàng)的組合來選擇所述端口。
圖1A示出了根據(jù)本發(fā)明的原理,連接目的地與交換機(jī)的邏輯鏈路;圖1B示出了如圖1A所述的交換機(jī),其包括用來按照連接目的地和交換機(jī)的邏輯鏈路中多個(gè)鏈路之一來轉(zhuǎn)發(fā)在入口端口接收的數(shù)據(jù)分組的轉(zhuǎn)發(fā)邏輯;圖2A示出了可以在與交換機(jī)相連的入口端口接收的已有技術(shù)數(shù)據(jù)分組;圖2B示出了可以包括在如圖2A所示的數(shù)據(jù)分組中的已有技術(shù)Ethernet數(shù)據(jù)鏈路層(L2)報(bào)頭;圖2C示出了可以包括在如圖2A所示的數(shù)據(jù)分組中的已有技術(shù)網(wǎng)際協(xié)議(網(wǎng)絡(luò)層(L3))報(bào)頭;圖3示出了如圖1B所示的轉(zhuǎn)發(fā)邏輯;圖4是如圖3所示的流散列邏輯中執(zhí)行功能的流程圖;圖5示出了如圖3所示的中繼端口選擇器表;圖6示出了如圖5所示的中繼端口選擇器項(xiàng)之一,組成員表向量項(xiàng)和邏輯端口轉(zhuǎn)發(fā)向量項(xiàng)的組合;
圖7是使用中繼組成員向量的內(nèi)容更新存儲(chǔ)在轉(zhuǎn)發(fā)數(shù)據(jù)庫304中的邏輯端口轉(zhuǎn)發(fā)向量的步驟流程圖。
圖1A示出了根據(jù)本發(fā)明的原理,連接目的地112c和交換機(jī)100的邏輯鏈路134。邏輯鏈路或者中繼組134包括物理鏈路132c-e。目的地112c通過物理鏈路132c-e與交換機(jī)相連。目的地112c的接收數(shù)據(jù)分組從三個(gè)物理鏈路132c-e中之一轉(zhuǎn)發(fā)到目的地112c。所述交換機(jī)100包括與邏輯鏈路134中每個(gè)物理鏈路132c-e相對(duì)應(yīng)的入口端口隊(duì)列130a-c。交換機(jī)將從信源102a接收的數(shù)據(jù)分組轉(zhuǎn)發(fā)到出口端口隊(duì)列130a-c。
存儲(chǔ)接收數(shù)據(jù)分組的出口端口隊(duì)列130a-c在轉(zhuǎn)發(fā)到相應(yīng)的物理鏈路132c-e之前取決于數(shù)據(jù)流,即;包括在數(shù)據(jù)分組中的源地址和目的地址。通過按照源地址和目的地址來選擇物理鏈路,相同數(shù)據(jù)流的數(shù)據(jù)分組總按照相同的鏈路來轉(zhuǎn)發(fā),并且因此在交換機(jī)中不會(huì)變得無序。
例如,交換機(jī)從信源102a接收要轉(zhuǎn)發(fā)到目的地112c的數(shù)據(jù)分組140a-c。每個(gè)數(shù)據(jù)分組140a-c包括信源102a的源地址和目的地112c的目的地址。交換機(jī)根據(jù)存儲(chǔ)在數(shù)據(jù)分組132c-e中的源地址和目的地址來確定數(shù)據(jù)流。隨著每個(gè)數(shù)據(jù)分組140a-c被接收并存儲(chǔ)在交換機(jī)中,按照在出口端口隊(duì)列130a中接收的順序?qū)?shù)據(jù)分組的地址存儲(chǔ)在存儲(chǔ)器中。每個(gè)數(shù)據(jù)分組140a-c由物理鏈路132c轉(zhuǎn)發(fā)到目的地112c。因此,從信源102a到目的地112c的數(shù)據(jù)流中的數(shù)據(jù)分組140a-c按照交換機(jī)100接收的順序傳輸?shù)侥康牡刂?12。
圖1B示出了如圖1A所示的交換機(jī)100,其包括用來按照連接目的地和交換機(jī)的邏輯鏈路中多個(gè)鏈路132c-e之一來轉(zhuǎn)發(fā)在入口端口接收的數(shù)據(jù)分組的轉(zhuǎn)發(fā)邏輯128。所述交換機(jī)100包括入口端口引擎104,分組存儲(chǔ)管理器106,段緩沖存儲(chǔ)器108和出口端口引擎110。物理鏈路132c-e是連接目的地112c和交換機(jī)100的邏輯鏈路134的成員。物理鏈路132f-g是連接目的地112d和交換機(jī)100的邏輯鏈路140的成員。單一物理鏈路132a連接目的地112a和交換機(jī)100,而單一物理鏈路132b連接目的地112b和交換機(jī)100。因此,如果所有的物理鏈路的速度相同,邏輯鏈路140向目的地112b提供的帶寬是單一物理鏈路132a向目的地112a提供的帶寬的二倍,而邏輯鏈路134向目的地112b提供的帶寬是單一物理鏈路132b向目的地112b提供的帶寬的三倍。
交換機(jī)100可以包括去向目的地112的單一物理鏈路和邏輯鏈路的任何組合。邏輯鏈路可以包括任何數(shù)目的物理鏈路。邏輯鏈路中的物理鏈路可以將不連續(xù)的端口與目的地112相連,例如,邏輯鏈路134將不連續(xù)的出口端口(出口端口2136c,出口端口3136d,和出口端口5136f)與目的地112c相連。另一種選擇是,邏輯鏈路140可以將連續(xù)的出口端口(出口端口6136g,出口端口7136h)與目的地112d相連。
因此,所有的出口端口136a-h都可以成為同一邏輯鏈路的成員,每個(gè)出口端口136a-h可以是單一的物理鏈路,或者出口端口136a-h可以按照目的地112a-d的邏輯鏈路和單一物理鏈路的組合來配置。
邏輯鏈路的成員并不局限于相同速度的物理鏈路132a-h。例如,1G比特Ethernet出口端口可以成為作為100M比特Ethernet出口端口的相同邏輯鏈路的成員。
在入口端口138a-c從信源102a-c接收的數(shù)據(jù)分組按照入口端口引擎104中的轉(zhuǎn)發(fā)邏輯128產(chǎn)生的轉(zhuǎn)發(fā)向量114轉(zhuǎn)發(fā)到一個(gè)或者多個(gè)出口端口136a-h。轉(zhuǎn)發(fā)向量114取決于在轉(zhuǎn)發(fā)邏輯128中實(shí)現(xiàn)的轉(zhuǎn)發(fā)數(shù)據(jù)庫中存儲(chǔ)的邏輯端口轉(zhuǎn)發(fā)向量。
分組存儲(chǔ)管理器106將接收的入口數(shù)據(jù)116存儲(chǔ)在段緩沖存儲(chǔ)器108的數(shù)據(jù)分組中。分組存儲(chǔ)管理器106還按照轉(zhuǎn)發(fā)向量114的狀態(tài)將接收的入口數(shù)據(jù)116的地址存儲(chǔ)在一個(gè)或者多個(gè)出口端口隊(duì)列130的段緩沖存儲(chǔ)器108中。對(duì)段緩沖存儲(chǔ)器108中數(shù)據(jù)分組的存儲(chǔ)的說明見美國專利申請(qǐng)流水號(hào)為09/386,589、標(biāo)題為“用于交錯(cuò)式無阻塞分組緩沖器的方法和裝置”(Method and apparatus for an Interleaved Non-BlockingPacket Buffer)的待審美國專利申請(qǐng),它由David A.Brown于1999年8月31日遞交,其整個(gè)技術(shù)在此引入作為參考。
出口引擎110通過選擇信號(hào)120選擇出口隊(duì)列,從所述的隊(duì)列開始將接收的入口數(shù)據(jù)116的地址轉(zhuǎn)發(fā)到段緩沖存儲(chǔ)器108。存儲(chǔ)在段緩沖存儲(chǔ)器108中的入口數(shù)據(jù)116按照出口數(shù)據(jù)118轉(zhuǎn)發(fā)到出口端口136a-h。出口數(shù)據(jù)118應(yīng)該轉(zhuǎn)發(fā)到哪一個(gè)出口端口136a-h取決于轉(zhuǎn)發(fā)向量114。
轉(zhuǎn)發(fā)向量114選擇出口端口隊(duì)列130,以便將地址存儲(chǔ)在存儲(chǔ)了數(shù)據(jù)分組的段緩沖存儲(chǔ)器108中。出口端口引擎110通過選擇信號(hào)120選擇出口端口隊(duì)列130。所述的地址122轉(zhuǎn)發(fā)到段緩沖存儲(chǔ)器108。所述存儲(chǔ)在地址122的出口數(shù)據(jù)118轉(zhuǎn)發(fā)到所述出口端口引擎110,以及按照選擇的出口端口隊(duì)列130從出口端口引擎110轉(zhuǎn)發(fā)到出口端口136a-h。
目的地112c通過物理鏈路132c-e與三個(gè)出口端口(端口2,端口3,端口5)相連。所述物理鏈路132c-e是邏輯鏈路或者中繼組134的成員。邏輯鏈路134的成員并不局限于示出的三個(gè)入口端口136c-e。邏輯鏈路134的成員可以包括交換機(jī)100中出口端口136a-h的任何組合。轉(zhuǎn)發(fā)向量114包括每個(gè)出口端口136a-h的比特,接收的數(shù)據(jù)分組經(jīng)過它來轉(zhuǎn)發(fā)。目的地112c的接收數(shù)據(jù)分組可以按照三個(gè)物理鏈路132c-e之一轉(zhuǎn)發(fā)到目的地112c。轉(zhuǎn)發(fā)邏輯128選擇目的地112c的三個(gè)物理鏈路之一,以致于從一個(gè)信源到目的地的數(shù)據(jù)流的數(shù)據(jù)分組總按照相同的物理鏈路132c-e轉(zhuǎn)發(fā)到目的地112c。例如,可以選擇物理鏈路132e,用于將從信源102a接收的所有數(shù)據(jù)分組轉(zhuǎn)發(fā)到目的地112c。
圖2A示出了可以在與交換機(jī)100(圖1B)相連的入口端口136a-c(圖1B)接收的已有技術(shù)數(shù)據(jù)分組200。圖2B示出了可以包括在如圖2A所示的數(shù)據(jù)分組200中的已有技術(shù)Ethernet報(bào)頭。圖2C示出了可以包括在如圖2A所示的數(shù)據(jù)分組200中的已有技術(shù)網(wǎng)際協(xié)議(“IP”)報(bào)頭。
圖2A示出了已有技術(shù)的數(shù)據(jù)分組200。數(shù)據(jù)分組200包括數(shù)據(jù)凈負(fù)荷210和形成網(wǎng)絡(luò)層202,204,206,208的報(bào)頭。示出的是OSI模型四個(gè)層的報(bào)頭,物理層(L1)報(bào)頭202,數(shù)據(jù)鏈路層(L2)報(bào)頭204,網(wǎng)絡(luò)層(L3)報(bào)頭206和傳輸層(L4)報(bào)頭208。例如,數(shù)據(jù)鏈路層(L2)報(bào)頭204可以是Ethernet,而網(wǎng)絡(luò)層(L3)報(bào)頭206可以是IP。數(shù)據(jù)分組200也包括檢查和212。
圖2B示出了已有技術(shù)Ethernet數(shù)據(jù)鏈路(L2)報(bào)頭204的格式。Ethernet數(shù)據(jù)鏈路(L2)報(bào)頭204包括目的節(jié)點(diǎn)104的裝置地址(圖1B);即,L2目的地址214,和源節(jié)點(diǎn)102的裝置地址(圖1B);即,L2源地址216,可選擇的虛擬局域網(wǎng)標(biāo)識(shí)(“VLAN ID”)字段218和長度/類型字段220。VLAN ID 218包括標(biāo)記協(xié)議標(biāo)識(shí)符(Tag Protocol Identifier-“TPI”)字段218a和標(biāo)記控制信息(Tag Control Information-“TCI”)字段218b。所述VLAN ID字段218按照IEEE 802.1Q置標(biāo)記和IEEE802.ID 1988(802.1p)優(yōu)先權(quán)等級(jí)為VLAN交換提供支持。
圖2C示出了已有技術(shù)IP網(wǎng)絡(luò)層(L3)報(bào)頭206的格式。所述IP網(wǎng)絡(luò)層(L3)報(bào)頭206包括源節(jié)點(diǎn)102a-c(圖1B)網(wǎng)絡(luò)地址,這就是說,IP目的地址246。IP網(wǎng)絡(luò)層報(bào)頭206的其它字段包括版本(Version)222,HLEN224,服務(wù)類型(Type of Service-“TOS”)226,總長度228,標(biāo)識(shí)230,標(biāo)志232,段偏移234,存活時(shí)間(Time to live-“TTL”)236,協(xié)議地址240,報(bào)頭檢查和242,選項(xiàng)248和填充250。
從源節(jié)點(diǎn)102a-c(圖1B)接收的數(shù)據(jù)分組200(圖2A)在入口端口按照存儲(chǔ)在Ethernet數(shù)據(jù)鏈路(L2)報(bào)頭204(圖2A)中的目的地址(圖2B)橋接在一個(gè)或者多個(gè)出口端口136a-h(圖1B)上,或者按照存儲(chǔ)在IP網(wǎng)絡(luò)層(L3)報(bào)頭206中的IP目的地址246路由到一個(gè)或者多個(gè)出口端口136a-h(圖1B)。
圖3示出了如圖1B所示的轉(zhuǎn)發(fā)邏輯128。轉(zhuǎn)發(fā)邏輯128包括轉(zhuǎn)發(fā)數(shù)據(jù)庫304。轉(zhuǎn)發(fā)數(shù)據(jù)庫304按照搜索關(guān)鍵字316的內(nèi)容選擇邏輯端口轉(zhuǎn)發(fā)向量314。對(duì)轉(zhuǎn)發(fā)數(shù)據(jù)庫的說明見美國專利申請(qǐng)流水號(hào)為09/409,184、標(biāo)題為“用于四路散列表的方法和裝置”(Method andApparatus for Four-Way Hash Table)的待審美國專利申請(qǐng),它由David A.Brown于1999年9月30日遞交,其整個(gè)技術(shù)在此引入作為參考。
邏輯端口轉(zhuǎn)發(fā)向量314包括交換機(jī)100(圖1B)中每個(gè)出口端口136a-h(1B)的出口端口比特。出口端口比特設(shè)置為“1”就能夠轉(zhuǎn)發(fā)到各自的出口端口136a-h(圖1B),而設(shè)置為“0”就不能轉(zhuǎn)發(fā)到各自的出口端口136a-h(圖1B),從而指示出數(shù)據(jù)分組應(yīng)該轉(zhuǎn)發(fā)到的所有端口。因此,在目的地112c(圖1B)出口端口2的邏輯端口轉(zhuǎn)發(fā)向量314中,出口端口3和出口端口5的比特設(shè)置為“1”,以能夠?qū)⒁D(zhuǎn)發(fā)的數(shù)據(jù)分組轉(zhuǎn)發(fā)到與目的地112c(圖1B)相連的出口端口136c,136d和136f(圖1B)。
中繼端口選擇器邏輯302按照流散列邏輯300產(chǎn)生的流散列選擇中繼端口選擇器向量312。中繼端口選擇器312在邏輯端口轉(zhuǎn)發(fā)向量314中選擇啟用的出口端口(端口2,端口3和端口5)136c-e之一,通過它來將接收的數(shù)據(jù)分組轉(zhuǎn)發(fā)到目的地112c(圖1B)。
中繼組成員表318包括交換機(jī)100中每個(gè)入口端口138(圖2)的中繼組成員向量320。中繼組成員向量320包括交換機(jī)100中每個(gè)端口的比特。在中繼組成員向量中,比特設(shè)置為“1”表示相同中繼組中的其它端口。如果入口端口不是中繼組的成員,則入口端口的比特僅僅是中繼組成員向量中設(shè)置為“1”的比特。
在支持中繼的交換機(jī)中,主機(jī)可以在任何與存在主機(jī)的中繼相關(guān)的端口發(fā)送和接收數(shù)據(jù)分組。需要確定哪一個(gè)端口應(yīng)該屬于與接收分組的相同的中繼分組。因此,入口端口用來索引中繼組成員表,以便保證消除回波,這就是說,保證即將到來的分組不會(huì)轉(zhuǎn)發(fā)到相同的端口或者特定中繼組的其它端口。例如,如果入口端口0是包括端口0,端口2,端口3的中繼端口的成員,因?yàn)樗鼈兌际窍嗤欣^組的所有部分,所以即將到來的數(shù)據(jù)分組不會(huì)轉(zhuǎn)發(fā)到端口0,端口2,端口3。中繼組成員表318存儲(chǔ)這個(gè)組成員信息,并且保證不會(huì)發(fā)生這種回波。
接收數(shù)據(jù)分組的入口端口按照入口端口號(hào)322轉(zhuǎn)發(fā)到中繼組成員表318。入口端口號(hào)322是中繼組成員表318中中繼成員向量320的索引。中繼組成員向量320轉(zhuǎn)發(fā)到向量合成邏輯306。
通過修改,更新,或者在轉(zhuǎn)發(fā)數(shù)據(jù)庫304中添加邏輯端口轉(zhuǎn)發(fā)向量314,中繼組成員向量320可以用于執(zhí)行硬件學(xué)習(xí)。學(xué)習(xí)端口號(hào)324與轉(zhuǎn)發(fā)數(shù)據(jù)庫中存儲(chǔ)的每個(gè)邏輯端口轉(zhuǎn)發(fā)向量314一起存儲(chǔ)。學(xué)習(xí)端口號(hào)324識(shí)別學(xué)習(xí)的源地址的入口端口。學(xué)習(xí)端口號(hào)324轉(zhuǎn)發(fā)到中繼組成員表318。中繼組成員表318確定是否源地址的邏輯端口轉(zhuǎn)發(fā)向量要隨學(xué)習(xí)端口號(hào)324而修改。如果這樣,中繼組成員表將更新的邏輯端口轉(zhuǎn)發(fā)向量326轉(zhuǎn)發(fā)到轉(zhuǎn)發(fā)數(shù)據(jù)庫304。聯(lián)系圖7對(duì)確定是否邏輯端口轉(zhuǎn)發(fā)向量要進(jìn)行更新的步驟進(jìn)行了說明。
向量合成邏輯306對(duì)中繼端口選擇器向量312,邏輯端口轉(zhuǎn)發(fā)向量314,和中繼成員向量320進(jìn)行組合。中繼端口選擇器向量312為邏輯轉(zhuǎn)發(fā)向量314提供掩碼,以便選擇啟用的出口端口之一,通過它來將接收的數(shù)據(jù)分組轉(zhuǎn)發(fā)到目的地112c。
數(shù)據(jù)分組報(bào)頭308的一部分轉(zhuǎn)發(fā)到流散列邏輯300。所述數(shù)據(jù)分組報(bào)頭308的部分內(nèi)容取決于在接收的數(shù)據(jù)分組中解碼的網(wǎng)絡(luò)協(xié)議。如果接收的數(shù)據(jù)分組包括第3層報(bào)頭,例如,IP網(wǎng)絡(luò)層(L3)報(bào)頭206(圖2C),所述數(shù)據(jù)分組報(bào)頭308的部分包括IP源地址244(圖2C),IP目的地址246(圖2C),協(xié)議字段240(圖2C)。如果數(shù)據(jù)分組沒有包括第3層報(bào)頭;例如,如果數(shù)據(jù)分組是Ethernet協(xié)議數(shù)據(jù)分組,則所述數(shù)據(jù)分組報(bào)頭308的部分包括L2源地址216(圖2B)和L2目的地址214(圖2B)。因此,所述數(shù)據(jù)分組報(bào)頭308的部分內(nèi)容指示了從信源102a-c(圖1B)到目的地112a-c(圖1B)的數(shù)據(jù)流,以便相同數(shù)據(jù)流的數(shù)據(jù)分組(從信源到目的地)經(jīng)過相同的出口端口136a-h(圖1B)按照相同的物理鏈路132c-e(圖1B)轉(zhuǎn)發(fā)到目的地112c。
圖4是在如圖3所示的流散列邏輯300中執(zhí)行功能的流程圖。流散列邏輯300(圖3)按照數(shù)據(jù)分組報(bào)頭308(圖1B)的所述部分的內(nèi)容產(chǎn)生循環(huán)冗余校驗(yàn)(“CRC”)。從數(shù)據(jù)分組報(bào)頭中選擇數(shù)據(jù)分組報(bào)頭308所述部分的內(nèi)容,并且將之轉(zhuǎn)發(fā)到流散列邏輯300(圖3)。參考圖3對(duì)流程圖進(jìn)行了說明。
在步驟400,在產(chǎn)生CRC之前,將CRC變量初始化為無效值。可以通過將CRC中所有的變量設(shè)置為“1”來產(chǎn)生所述的無效值。流程轉(zhuǎn)入步驟402。
在步驟402,流散列邏輯300檢查數(shù)據(jù)鏈路(L2)報(bào)頭204(圖2B)的L2長度/類型字段220(圖2B)的內(nèi)容。如果長度/類型字段220(圖2B)是網(wǎng)際協(xié)議版本4(“IPv4”),則數(shù)據(jù)分組包括IP網(wǎng)絡(luò)層(L3)報(bào)頭206(圖2C),并且流程轉(zhuǎn)入步驟404,否則,流程轉(zhuǎn)入步驟410。
在步驟404,流散列邏輯300(圖3)檢查IP網(wǎng)絡(luò)層(L3)報(bào)頭206(圖2C)中的長度字段228(圖2C)和協(xié)議字段240。如果長度字段228(圖2C)的內(nèi)容為“五”,并且協(xié)議字段240存儲(chǔ)用戶數(shù)據(jù)報(bào)協(xié)議(UserDatagram Protocol-“UDP”)或者傳輸控制協(xié)議(Transport Control Protocol-“TCP”),則流程轉(zhuǎn)入步驟406,否則流程轉(zhuǎn)入步驟408。
在步驟406,流散列邏輯300(圖3)使用IP網(wǎng)絡(luò)層(L3)報(bào)頭206(圖2C)中的IP源地址字段244(圖2C),IP目的地址字段246(圖2C)的內(nèi)容,包括在數(shù)據(jù)分組報(bào)頭中的傳輸層(L4)報(bào)頭208(圖2A)中的L4源端口地址字段(未示出)的內(nèi)容和L4目的端口地址字段(未示出)的內(nèi)容來產(chǎn)生CRC。在產(chǎn)生CRC并存儲(chǔ)在CRC變量中之后,流程轉(zhuǎn)入步驟412。
在步驟408,流散列邏輯300(圖3)使用包括在數(shù)據(jù)分組報(bào)頭中IP網(wǎng)絡(luò)層(L3)報(bào)頭206(圖2C)中的IP源地址字段244(圖2C)和IP目的地址字段246(圖2C)的內(nèi)容產(chǎn)生CRC,在產(chǎn)生CRC并存儲(chǔ)在CRC變量中之后,流程轉(zhuǎn)入步驟412。
在步驟410,流散列邏輯300(圖3)使用包括在數(shù)據(jù)分組報(bào)頭中數(shù)據(jù)鏈路層(L2)報(bào)頭206(圖2B)中的L2源地址字段(圖2B)和產(chǎn)生L2目的地址字段(圖2B)的內(nèi)容產(chǎn)生CRC。在產(chǎn)生CRC并存儲(chǔ)在CRC變量中之后,流程轉(zhuǎn)入步驟412。
在步驟412,流散列邏輯300(圖3)選擇作為流散列比特310(圖3)存儲(chǔ)在CRC變量中的最低有效位(“LSB”)。將流散列比特310(圖3)轉(zhuǎn)發(fā)到中繼選擇器表302(圖3)。六個(gè)流散列比特3 10允許選擇存儲(chǔ)在中繼端口選擇器表302(圖3)中的六十四個(gè)中繼端口選擇器表項(xiàng)之一。
通過按照包括在數(shù)據(jù)分組報(bào)頭中的源地址和目的地址產(chǎn)生流散列比特310,相同數(shù)據(jù)流(從信源102(圖1B)到目的地112(圖1B))的數(shù)據(jù)分組在中繼端口選擇器表302(圖3)中選擇相同中繼端口選擇器表項(xiàng)。同樣,通過按照源地址和目的地址來選擇中繼選擇器表項(xiàng),將數(shù)據(jù)流分配給與目的地112c(圖1B)相連的多個(gè)物理鏈路132c-e(圖1B)中。
圖5示出了如圖3所示的中繼端口選擇器表302。中繼端口選擇器表302包括多個(gè)中繼端口選擇器表項(xiàng)500a-f。圖5示出了六個(gè)中繼端口選擇器表項(xiàng)500a-f。六個(gè)流散列比特210是存儲(chǔ)在中繼選擇器表項(xiàng)302中六十四個(gè)包括500a-f的中繼端口選擇表項(xiàng)的索引。每個(gè)中繼端口表項(xiàng)500a-h包括交換機(jī)100(圖1B)中每個(gè)出口端口136a-h各自的出口端口比特502a-h。
中繼端口選擇器表項(xiàng)500a具有八個(gè)出口端口比特502aa-ah;即,交換機(jī)100(圖1B)中每個(gè)出口端口136a-h的出口端口比特502aa-ah。本發(fā)明并不局限于帶有八個(gè)出口端口136a-h(圖1B)的交換機(jī),通過為中繼端口選擇器表項(xiàng)500a-h中的每個(gè)出口端口設(shè)置一個(gè)比特就可以支持任何數(shù)目的出口端口136(圖1B)。中繼端口表項(xiàng)500中的出口端口比特狀態(tài)決定數(shù)據(jù)分組是否要轉(zhuǎn)發(fā)到各自的出口端口136a-h(圖1B)。在如圖5所示的實(shí)施例中,如果中繼端口選擇器表項(xiàng)500a中各自的出口端口比特502設(shè)置為“1”,數(shù)據(jù)分組就可以轉(zhuǎn)發(fā)到出口端口136a-h(圖1B)。在另一個(gè)實(shí)施例中,如果中繼端口選擇器表項(xiàng)500a中各自的出口端口比特502設(shè)置為“0”,數(shù)據(jù)分組就可以轉(zhuǎn)發(fā)到出口端口136a-h(圖1B)。
與出口端口136c,136d,136f(圖1B)有關(guān)的出口端口比特502ac,502ad和502af都是中繼組134(圖1B)的成員。在每個(gè)中繼端口選擇器表項(xiàng)500中,隨著各自的出口端口比特502設(shè)置為“1”,就啟用了中繼組134(圖1B)的成員之一。在中繼端口選擇器表項(xiàng)500a中,出口端口比特502ac設(shè)置為“1”就啟用了邏輯鏈路134(圖1B)中的出口端口2136c(圖1B)。在中繼端口選擇器表項(xiàng)500b中,出口端口比特502bd設(shè)置為“1”就啟用了邏輯鏈路134(圖1B)中的出口端口3136d(圖1B)。在如圖5所示的實(shí)施例中,中繼端口選擇器表項(xiàng)500c中的出口端口5136f(圖1B)得到啟用,中繼端口選擇器表項(xiàng)500d中的出口端口2136c(圖1B)得到啟用,中繼端口選擇器表項(xiàng)500e中的出口端口3136d(圖1B)得到啟用,中繼端口選擇器表項(xiàng)500f中的出口端口5136f(圖1B)得到啟用。
端口選擇器表中端口選擇器表項(xiàng)500的分配決定了通過每個(gè)邏輯鏈路中的物理鏈路來轉(zhuǎn)發(fā)數(shù)據(jù)分組的數(shù)目。如果所有的物理鏈路以相同的速度傳輸數(shù)據(jù)分組,按照所述數(shù)目的端口選擇器表項(xiàng)500啟用邏輯鏈路中的每個(gè)物理鏈路,就可以均勻地分配數(shù)據(jù)分組。
另一選擇是,按照所述數(shù)目的端口選擇器表項(xiàng)500啟用邏輯鏈路中的物理鏈路,較大百分比的數(shù)據(jù)分組按照邏輯鏈路中特定的物理鏈路來轉(zhuǎn)發(fā)。對(duì)于通過邏輯鏈路與交換機(jī)相連的目的地,較大百分比的數(shù)據(jù)分組按照所述邏輯鏈路中速度最快的物理鏈路來轉(zhuǎn)發(fā)。
例如,如果物理鏈路132c是1G比特每秒的鏈路,而物理鏈路132d-e是100M比特每秒的鏈路,就可以產(chǎn)生存儲(chǔ)在中繼端口選擇器302中的中繼端口選擇器表項(xiàng)500,以致于80%的數(shù)據(jù)分組按照物理鏈路132c來轉(zhuǎn)發(fā),而10%的數(shù)據(jù)分組按照每個(gè)物理鏈路132d-e來轉(zhuǎn)發(fā)。
因此,按照邏輯鏈路中特定物理鏈路傳輸?shù)臄?shù)據(jù)分組比例取決于端口選擇器表302中端口選擇器表項(xiàng)500的分配。
圖6示出了如圖5所示的每個(gè)中繼端口選擇器項(xiàng)500的組合,邏輯端口轉(zhuǎn)發(fā)向量項(xiàng)600,為目的地112c從源端口102a(圖1)接收的數(shù)據(jù)分組的中繼組成員向量項(xiàng)604。中繼端口選擇器項(xiàng)500a按照中繼端口選擇器向量312轉(zhuǎn)發(fā)到向量合成邏輯306。邏輯端口轉(zhuǎn)發(fā)向量項(xiàng)600按照邏輯端口轉(zhuǎn)發(fā)向量314轉(zhuǎn)發(fā)到向量合成邏輯306。中繼組成員向量項(xiàng)604按照中繼組成員向量320轉(zhuǎn)發(fā)到向量合成邏輯306。
中繼組成員向量項(xiàng)604是為源端口102a(圖1)選擇的向量。源端口102a(圖1)與入口端口0 138a相連,在這個(gè)示例中,它是單一物理鏈路。因此,比特604a設(shè)置為“1”,用來指示源端口102a應(yīng)該與哪一個(gè)端口相連。
邏輯端口轉(zhuǎn)發(fā)向量項(xiàng)600具有設(shè)置為“1”的比特600f,600d,600c,以使得數(shù)據(jù)分組轉(zhuǎn)發(fā)到出口端口136c,136d,136f(圖1B);即邏輯鏈路134中所有的出口端口136。所有其它的比特600g,600h,600e,600a,600b都設(shè)置為“0”,使得數(shù)據(jù)分組轉(zhuǎn)發(fā)到各自的出口端口136(圖1B)。中繼端口選擇器項(xiàng)500a具有設(shè)置為“1”的比特502ac,以便選擇出口端口2136c(圖1B)。
向量合成邏輯306將中繼組成員向量項(xiàng)604反相,并執(zhí)行比特級(jí)的邏輯“AND”功能,以便合成中繼端口選擇器項(xiàng)500a,和反相的中繼組成員向量項(xiàng)604。合成得到的轉(zhuǎn)發(fā)向量項(xiàng)602具有設(shè)置為“1”的比特602,使得要轉(zhuǎn)發(fā)的數(shù)據(jù)流的數(shù)據(jù)分組轉(zhuǎn)發(fā)到出口端口2136c(圖1B)。
使中繼組成員向量604反相是為了消除回波,即如果邏輯鏈路接收到數(shù)據(jù)分組,就不轉(zhuǎn)發(fā)邏輯鏈路上的數(shù)據(jù)分組。例如,因?yàn)槿肟诙丝?138c和出口端口5136f是相同的邏輯鏈路134的成員,所以在入口端口2138c接收的數(shù)據(jù)分組不從出口端口5136f轉(zhuǎn)發(fā)。
因此,邏輯端口轉(zhuǎn)發(fā)向量314啟用了邏輯鏈路134(圖1B)中所有的入口端口,并且中繼端口選擇器向量312選擇邏輯鏈路134(圖1B)中物理鏈路之一。通過合成中繼端口選擇器向量312,中繼組成員向量320和邏輯端口轉(zhuǎn)發(fā)向量314,向量合成邏輯306產(chǎn)生轉(zhuǎn)發(fā)向量114。
圖7是使用中繼組成員向量320的內(nèi)容修改存儲(chǔ)在轉(zhuǎn)發(fā)數(shù)據(jù)庫304中的邏輯端口轉(zhuǎn)發(fā)向量314的步驟的流程圖?,F(xiàn)參考如圖3所示的方框圖對(duì)所述步驟進(jìn)行說明。
在步驟700,將包括在接收的數(shù)據(jù)分組中并包括源地址的搜索關(guān)鍵字316轉(zhuǎn)發(fā)到轉(zhuǎn)發(fā)數(shù)據(jù)庫。同樣,在其中收到接收的數(shù)據(jù)分組的入口端口成員322被轉(zhuǎn)發(fā)到中繼組成員表318。流程轉(zhuǎn)入步驟702。
在步驟702,轉(zhuǎn)發(fā)數(shù)據(jù)庫確定是否存在與搜索關(guān)鍵字316相對(duì)應(yīng)的項(xiàng)。如果存在,流程轉(zhuǎn)入步驟704,否則,流程轉(zhuǎn)入步驟708。
在步驟704,存儲(chǔ)在轉(zhuǎn)發(fā)數(shù)據(jù)庫項(xiàng)中與搜索關(guān)鍵字316相對(duì)應(yīng)的學(xué)習(xí)端口號(hào)324被轉(zhuǎn)發(fā)到中繼組成員表318。學(xué)習(xí)端口號(hào)324是包括在接收的數(shù)據(jù)分組中的源地址在這個(gè)地方被學(xué)習(xí)的入口端口。流程轉(zhuǎn)入步驟706。
在步驟706,檢查中繼組成員表318,以看與學(xué)習(xí)端口號(hào)324相對(duì)應(yīng)的比特是否在源端口號(hào)322的中繼組成員向量320中設(shè)置為“1”。如果設(shè)置為“1”,因?yàn)闆]有在新的端口收到接收的數(shù)據(jù)分組,處理過程結(jié)束。否則,流程轉(zhuǎn)入步驟708。
在步驟708,接收的數(shù)據(jù)分組到達(dá)除了第一次學(xué)習(xí)的入口端口之外的端口,或者除了數(shù)據(jù)分組第一次從源地址被接收的入口端口之外的端口。因此,需要使用入口端口號(hào)322和與所述入口端口號(hào)322相同的中繼組成員的其它端口來更新邏輯端口轉(zhuǎn)發(fā)向量314。與入口端口號(hào)322相對(duì)應(yīng)的中繼組成員向量320按照更新326來轉(zhuǎn)發(fā),以致于轉(zhuǎn)發(fā)數(shù)據(jù)庫304可以修改或者更新與源地址相對(duì)應(yīng)的邏輯端口轉(zhuǎn)發(fā)向量314。流程結(jié)束。
盡管參照優(yōu)選的實(shí)施例對(duì)本發(fā)明進(jìn)行了描述,但是本領(lǐng)域的技人員應(yīng)認(rèn)識(shí)到,形式上和細(xì)節(jié)上的變化都不會(huì)超出所附權(quán)利要求限定的本發(fā)明的范圍。
權(quán)利要求
1.一種交換機(jī),包括連接目的地和交換機(jī)的邏輯鏈路,所述邏輯鏈路包括與交換機(jī)中多個(gè)端口相連的多個(gè)物理鏈路;流散列邏輯,按照包括在接收數(shù)據(jù)中的目的地址和源地址來為接收數(shù)據(jù)的流散列做索引;中繼端口選擇器邏輯,按照流散列選擇中繼端口項(xiàng),所述的中繼端口項(xiàng)提供多個(gè)物理鏈路之一,其用于將接收數(shù)據(jù)轉(zhuǎn)發(fā)到目的地。
2.根據(jù)權(quán)利要求1所述的交換機(jī),其特征在于從交換機(jī)中可用端口中隨機(jī)選擇多個(gè)端口。
3.根據(jù)權(quán)利要求1所述的交換機(jī),其特征在于所述目的地址是Ethernet目的地址,所述源地址是Ethernet源地址。
4.根據(jù)權(quán)利要求1所述的交換機(jī),其特征在于所述目的地址是IP目的地址,所述源地址是IP源地址。
5.根據(jù)權(quán)利要求1所述的交換機(jī),其特征在于所述目的地址是TCP目的端口地址,所述源地址是TCP源端口地址。
6.根據(jù)權(quán)利要求1所述的交換機(jī),其特征在于所述目的地址是UDP目的端口地址,所述源地址是UDP源端口地址。
7.根據(jù)權(quán)利要求1所述的交換機(jī),其特征在于還包括向量合成邏輯,按照邏輯端口轉(zhuǎn)發(fā)向量和和中繼端口項(xiàng)的組合來選擇交換機(jī)中的端口,以便按照邏輯鏈路中多個(gè)物理鏈路之一來轉(zhuǎn)發(fā)接收的數(shù)據(jù)。
8.根據(jù)權(quán)利要求7所述的交換機(jī),其特征在于向量合成邏輯按照中繼組成員向量來選擇端口。
9.根據(jù)權(quán)利要求8所述的交換機(jī),其特征在于如果在邏輯鏈路中多個(gè)物理鏈路之一收到接收數(shù)據(jù),則不選擇端口。
10.一種交換機(jī),包括連接目的地和交換機(jī)的邏輯鏈路,所述邏輯鏈路包括與多個(gè)端口相連的多個(gè)物理鏈路;按照接收數(shù)據(jù)中的目的地址和源地址來為接收數(shù)據(jù)選擇流散列的裝置;和按照流散列選擇中繼端口項(xiàng)的裝置,所述中繼端口項(xiàng)選擇多個(gè)驅(qū)力鏈路之一,用來將接收數(shù)據(jù)轉(zhuǎn)發(fā)到目的地。
11.根據(jù)權(quán)利要求10所述的交換機(jī),其特征在于從交換機(jī)中可用端口中隨機(jī)選擇多個(gè)端口。
12.根據(jù)權(quán)利要求10所述的交換機(jī),其特征在于所述目的地址是Ethernet目的地址,所述源地址是Ethernet源地址。
13.根據(jù)權(quán)利要求10所述的交換機(jī),其特征在于所述目的地址是IP目的地址,所述源地址是IP源地址。
14.根據(jù)權(quán)利要求10所述的交換機(jī),其特征在于所述目的地址是TCP目的端口地址,所述源地址是TCP源端口地址。
15.根據(jù)權(quán)利要求10所述的交換機(jī),其特征在于所述目的地址是UDP目的端口地址,所述源地址是UDP源端口地址。
16.根據(jù)權(quán)利要求10所述的交換機(jī),還包括端口選擇裝置,按照邏輯端口轉(zhuǎn)發(fā)向量和和中繼端口項(xiàng)來選擇端口,以便按照邏輯鏈路中多個(gè)物理鏈路之一來轉(zhuǎn)發(fā)接收數(shù)據(jù)。
17.根據(jù)權(quán)利要求16所述的交換機(jī),其特征在于向量合成邏輯按照中繼組成員向量來選擇端口。
18.根據(jù)權(quán)利要求17所述的交換機(jī),其特征在于如果在邏輯鏈路中多個(gè)物理鏈路之一收到接收數(shù)據(jù),則不選擇端口。
19.一種通過交換機(jī)來轉(zhuǎn)發(fā)接收數(shù)據(jù)的方法,其包括以下步驟提供連接目的地和交換機(jī)的邏輯鏈路,所述邏輯鏈路包括與交換機(jī)中多個(gè)端口相連的多個(gè)物理鏈路;流散列邏輯按照包括在接收數(shù)據(jù)中的目的地址和源地址來為接收數(shù)據(jù)選擇流散列;中繼端口選擇器邏輯按照流散列選擇中繼端口項(xiàng)來選擇中繼端口項(xiàng);和中繼端口項(xiàng)提供多個(gè)物理鏈路之一,用來將接收數(shù)據(jù)轉(zhuǎn)發(fā)到目的地。
20.根據(jù)權(quán)利要求19所述的交換機(jī),其特征在于從交換機(jī)中可得到的端口中隨機(jī)選擇多個(gè)端口。
21.根據(jù)權(quán)利要求19所述的交換機(jī),其特征在于所述目的地址是Ethernet目的地址,所述源地址是Ethernet源地址。
22.根據(jù)權(quán)利要求19所述的交換機(jī),其特征在于所述目的地址是IP目的地址,所述源地址是IP源地址。
23.根據(jù)權(quán)利要求19所述的交換機(jī),其特征在于所述目的地址是TCP目的端口地址,所述源地址是TCP源端口地址。
24.根據(jù)權(quán)利要求19所述的交換機(jī),其特征在于所述目的地址是UDP目的端口地址,所述源地址是UDP源端口地址。
25.根據(jù)權(quán)利要求19所述的交換機(jī),其特征在于還包括向量合成邏輯按照邏輯端口轉(zhuǎn)發(fā)向量和和中繼端口項(xiàng)的組合來選擇交換機(jī)中的端口,以便按照邏輯鏈路中多個(gè)物理鏈路之一來轉(zhuǎn)發(fā)接收數(shù)據(jù)。
26.根據(jù)權(quán)利要求25所述的交換機(jī),其特征在于向量合成邏輯按照中繼組成員向量來選擇端口。
27.根據(jù)權(quán)利要求26所述的交換機(jī),其特征在于如果在邏輯鏈路中多個(gè)物理鏈路之一收到接收數(shù)據(jù),則不選擇端口。
28.一種數(shù)據(jù)網(wǎng)絡(luò)交換機(jī),包括流散列邏輯,按照包括在交換機(jī)接收的數(shù)據(jù)中的信源信息和目的地信息來產(chǎn)生流散列;存儲(chǔ)邏輯端口轉(zhuǎn)發(fā)向量的轉(zhuǎn)發(fā)數(shù)據(jù)庫,每個(gè)邏輯端口轉(zhuǎn)發(fā)向量包括轉(zhuǎn)發(fā)信息;存儲(chǔ)中繼組成員向量的中繼組成員表,每個(gè)中繼組成員向量指示哪一個(gè)端口屬于中繼組;和向量合成邏輯,將邏輯端口轉(zhuǎn)發(fā)向量,中繼端口選擇向量和中繼組成員向量組合,以便選擇接收的數(shù)據(jù)轉(zhuǎn)發(fā)的端口。
29.根據(jù)權(quán)利要求28所述的數(shù)據(jù)網(wǎng)絡(luò)交換機(jī),其特征在于,向量合成邏輯按照與接收數(shù)據(jù)的端口有關(guān)的中繼組成員向量來選擇單一端口。
30.根據(jù)權(quán)利要求29所述的交換機(jī),其特征在于如果從所述單一端口或者所述單一端口所屬的中繼組的任何其它成員中收到接收數(shù)據(jù),則不選擇單一端口。
31.根據(jù)權(quán)利要求28所述的交換機(jī),其特征在于使用中繼組成員向量來修改項(xiàng)對(duì)應(yīng)的邏輯端口轉(zhuǎn)發(fā)向量。
32.根據(jù)權(quán)利要求28所述的交換機(jī),其特征在于使用中繼組成員向量來將邏輯端口轉(zhuǎn)發(fā)向量添加在轉(zhuǎn)發(fā)數(shù)據(jù)庫中。
全文摘要
在帶有多個(gè)去向目的地的物理鏈路的交換機(jī)中,通過跨過物理鏈路分配接收的數(shù)據(jù)來將數(shù)據(jù)轉(zhuǎn)發(fā)到目的地。按照包括在接收數(shù)據(jù)中的目的地址和源地址來為接收數(shù)據(jù)的數(shù)據(jù)流選擇流散列。流散列選擇去向目的地的物理鏈路之一,而不是不同數(shù)據(jù)流的潛在不同物理鏈路,從而通過跨過物理鏈路分配接收的數(shù)據(jù)來轉(zhuǎn)發(fā)接收的數(shù)據(jù),同時(shí)保持?jǐn)?shù)據(jù)流中幀的順序。
文檔編號(hào)H04L12/44GK1406423SQ01805838
公開日2003年3月26日 申請(qǐng)日期2001年1月17日 優(yōu)先權(quán)日2000年2月29日
發(fā)明者理查德·M·懷亞特 申請(qǐng)人:睦塞德技術(shù)公司