galileo二三層轉(zhuǎn)發(fā)芯片的工作原理_第1頁(yè)
galileo二三層轉(zhuǎn)發(fā)芯片的工作原理_第2頁(yè)
galileo二三層轉(zhuǎn)發(fā)芯片的工作原理_第3頁(yè)
galileo二三層轉(zhuǎn)發(fā)芯片的工作原理_第4頁(yè)
galileo二三層轉(zhuǎn)發(fā)芯片的工作原理_第5頁(yè)
已閱讀5頁(yè),還剩51頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、GALILEO 二三層轉(zhuǎn)發(fā)芯片的工作原理1內(nèi)容概要芯片的種類設(shè)備號(hào)的劃分虛設(shè)備的引入芯片的BUFFER芯片之間進(jìn)行通信的過程芯片中的VLAN表芯片中的VLAN表項(xiàng)的建立芯片中的MAC地址表軟件上如何得到FDB數(shù)據(jù)包如何進(jìn)行轉(zhuǎn)發(fā)Prefix tree的匹配同VLAN內(nèi)數(shù)據(jù)通信的過程不同VLAN間數(shù)據(jù)通信的過程2芯片的種類二層芯片: 該種芯片不具備路由功能,對(duì)應(yīng)到我們的實(shí)際應(yīng)用中就是只能在位于同一個(gè)VLAN內(nèi)的端口間進(jìn)行通信。如果兩個(gè)二層芯片的位于不同VLAN內(nèi)的端口要進(jìn)行通信,必須要借助三層芯片的路由功能或者由CPU來處理。350:8個(gè)100M電口360:一個(gè)1000M光口三層芯片:510:8個(gè)

2、100M電口520:一個(gè)1000M光口3設(shè)備號(hào)的劃分對(duì)應(yīng)于一個(gè)轉(zhuǎn)發(fā)芯片,我們要給該芯片分配一個(gè)設(shè)備號(hào)來唯一的標(biāo)志該芯片,以便以后用該設(shè)備號(hào)來訪問相應(yīng)的芯片。由于芯片的設(shè)計(jì),決定了系統(tǒng)中最多有32個(gè)設(shè)備,031。CPU也相當(dāng)于一個(gè)設(shè)備,也要占用一個(gè)設(shè)備號(hào)。在實(shí)際的通信中,可以將CPU看做是一個(gè)能夠進(jìn)行數(shù)據(jù)處理和轉(zhuǎn)發(fā)的芯片。4FLEX上設(shè)備的劃分:FLEX上的crossbar芯片是48303,共有一個(gè)PCI端口和6個(gè)GLINK端口。PCI端口用于連接CPU,GLINK端口用于連接實(shí)際的轉(zhuǎn)發(fā)設(shè)備。因?yàn)镕LEX上只有一個(gè)crossbar,所以在設(shè)備號(hào)的劃分上沒有什么限制,只要在031之間就可以。現(xiàn)在系

3、統(tǒng)中用了5個(gè)GLINK端口,設(shè)備號(hào)為04,CPU占用的設(shè)備號(hào)為7。5BIG800上設(shè)備的劃分:BIG800上的crossbar芯片是48302,共有一個(gè)PCI端口和8個(gè)GLINK端口。BIG800上最多可以插8個(gè)插板,每個(gè)插板都有一個(gè)302crossbar。各個(gè)插板之間的通信要通過背板,備板上共有4個(gè)302crossbar。 在物理上,每個(gè)插板都要將自己的crossbar的1,2,6,7共4個(gè)GLINK端口分別與備板上的4個(gè)crossbar進(jìn)行連接已保證插板間的通信。6由于備板上的crossbar的8個(gè)GLINK端口的缺省配置以及物理上的連接方式,決定了各個(gè)插板上的設(shè)備號(hào)缺省按如下的方式分布:

4、1:各個(gè)插板上都只有4個(gè)設(shè)備2:設(shè)備號(hào)的范圍為slot*4(slot+1)*4-1)3:slot0/slot1可以作為主控板。如果作為主 控板,要給CPU分配一個(gè)設(shè)備號(hào)。由于 插板上只有4個(gè)設(shè)備號(hào)可用,所以實(shí)際中 主控板上只有3個(gè)轉(zhuǎn)發(fā)芯片。slot0上的 CPU分配的設(shè)備號(hào)為0,slot1上為4。7BIG400上設(shè)備的劃分:BIG400上的crossbar芯片是48302/48304,共有一個(gè)PCI端口和8/12個(gè)GLINK端口。BIG400上最多可以插4個(gè)插板,每個(gè)插板都有一個(gè)302/304crossbar。各個(gè)插板之間的通信要通過背板,備板上共有2個(gè)302crossbar。 在物理上,每個(gè)

5、插板都要將自己的crossbar的1,2,6,7共4個(gè)GLINK端口分別與備板上的2個(gè)crossbar進(jìn)行連接已保證插板間的通信。每?jī)蓚€(gè)GLINK端口連接到一個(gè)備板。8由于備板上的crossbar的8個(gè)GLINK端口的缺省配置以及物理上的連接方式,決定了各個(gè)插板上的設(shè)備號(hào)按如下的方式分布:1:各個(gè)插板上都有8個(gè)設(shè)備號(hào)。如果 crossbar是302則有4個(gè)設(shè)備,304則有8 個(gè)設(shè)備。2:設(shè)備號(hào)的范圍為 slot0:03,2831 slot1:411 slot2:1219 slot3:20273:slot0為主控板。CPU分配的設(shè)備號(hào)為0。9虛設(shè)備的引入 由于二層芯片不具有三層芯片的路由功能,所

6、以三層芯片在設(shè)計(jì)時(shí)提供了允許二層芯片借助它的路由功能的特性(當(dāng)然,二層芯片也可以通過CPU來實(shí)現(xiàn)三層的轉(zhuǎn)發(fā),但速度要慢得多)。但前提是此三層設(shè)備除了本身已經(jīng)占有的設(shè)備號(hào)之外還要再分配給它另外一個(gè)設(shè)備號(hào),我們稱這個(gè)設(shè)備號(hào)為虛設(shè)備號(hào)。 如果我們?yōu)槟硞€(gè)三層設(shè)備分配了一個(gè)虛設(shè)備號(hào)并使能借助路由功能,則該三層設(shè)備將二層設(shè)備以此虛設(shè)備為目的設(shè)備號(hào)送到它的數(shù)據(jù)包送到它的路由單元,然后進(jìn)行轉(zhuǎn)發(fā)。10FLEX上虛設(shè)備的引入因?yàn)镕LEX上只有一個(gè)crossbar,所以占用的設(shè)備號(hào)最多有7個(gè)(6個(gè)GLINK端口和一個(gè)PCI端口)。所以我們可以從剩余的設(shè)備號(hào)中任意挑選一個(gè)作為一個(gè)三層設(shè)備的虛設(shè)備號(hào)。目前選擇的虛設(shè)備號(hào)

7、是8。11BIG800上虛設(shè)備的引入由于BIG800上可以插8個(gè)插板,而每個(gè)板上有4個(gè)設(shè)備,所以如果BIG800滿插的話則32個(gè)設(shè)備號(hào)都被占了,將無法再獲得一個(gè)虛設(shè)備號(hào)。所以,程序上目前的處理是看slot7是否有插板。如果有,三層設(shè)備將不向二層設(shè)備提供路由功能;如果沒有插則提供路由功能。目前二層芯片借助的三層芯片是主控板上的一個(gè)設(shè)備。如果是slot0則借用的三層設(shè)備是3,如果是slot1則設(shè)備號(hào)為7。無論主控在哪個(gè)插板使用的虛設(shè)備都是原來在slot7上的30設(shè)備號(hào)。(要對(duì)主控板和備板的crossbar進(jìn)行一些設(shè)置的改變)12BIG400上虛設(shè)備的引入由于BIG400上的主控板上有8個(gè)設(shè)備號(hào)可以

8、用,而實(shí)際上只有4個(gè)設(shè)備存在(占用的設(shè)備號(hào)為03),所以我們可以將沒有使用的30做為虛設(shè)備號(hào)分配給主控板上的3設(shè)備(要對(duì)主控板的crossbar進(jìn)行一些設(shè)置的改變,但備板不需要變化)。對(duì)于400上的虛設(shè)備的借用沒有800上的限制。13芯片的BUFFER二層與三層芯片都有GLINK BUFFER和網(wǎng)絡(luò)端口BUFFER。 BUFFER與我們軟件中的BUFFER實(shí)際上是一樣的,用來存儲(chǔ)傳輸?shù)臄?shù)據(jù)。GLINK BUFFER與網(wǎng)絡(luò)端口BUFFER是一個(gè)芯片的數(shù)據(jù)傳輸?shù)膬蓚€(gè)方向的BUFFER。 GLINK BUFFER:用于存儲(chǔ)向端口傳輸?shù)臄?shù)據(jù)。 網(wǎng)絡(luò)端口BUFFER:用于存儲(chǔ)從端口接收的數(shù)據(jù)。14350

9、:GLINK與網(wǎng)絡(luò)端口共用160個(gè)BUFFER,它們 之間不能共享,但它的8個(gè)網(wǎng)絡(luò)端口之間可以 共享BUFFER。這就是說8個(gè)端口的BUFFER的 總和可以大于整個(gè)分配給端口的BUFFER。360:GLINK與網(wǎng)絡(luò)端口共用80個(gè)BUFFER,之間不 能共享。510:GLINK與網(wǎng)絡(luò)端口各有2K個(gè)BUFFER,8個(gè)網(wǎng) 絡(luò)端口之間可以共享BUFFER。520:GLINK與網(wǎng)絡(luò)端口各有2K個(gè)BUFFER。15芯片之間進(jìn)行通信的過程假設(shè)我們有A向B發(fā)送數(shù)據(jù),流程如下:首先向設(shè)備A發(fā)送數(shù)據(jù)包,這時(shí)要看A設(shè)備的對(duì)應(yīng)的端口的port buffer pool中是否還有可用的buffer。如果沒有,則數(shù)據(jù)包在此

10、端口就將被drop掉。如果有,則此數(shù)據(jù)包將被存放在port buffer pool中。然后準(zhǔn)備向目的方B進(jìn)行傳輸。16在向B發(fā)送數(shù)據(jù)之前要先看B端是否有BUFFER可以進(jìn)行接收。因此,A要先向B發(fā)送一個(gè)buffer request的請(qǐng)求。在將此buffer request請(qǐng)求放到B端的buffer request queue中之前要看queue中是否已經(jīng)滿了。如果queue已經(jīng)滿了,則B將向A發(fā)送一個(gè)packet reject消息。A端在接收到此消息之后將drop掉已經(jīng)存儲(chǔ)在port buffer pool中的數(shù)據(jù)包,并釋放占用的buffer。如果B端的buffer request queue

11、沒有滿,則還要看port transmit queue中的還沒有傳輸?shù)年?duì)列的長(zhǎng)度是否已經(jīng)達(dá)到了我們?cè)O(shè)置的threshold的值:HOLhead of line。如果已經(jīng)達(dá)到了HOL的值,B端也會(huì)同樣向A端發(fā)送packet reject消息,A端也會(huì)進(jìn)行同樣的操作。如果沒有達(dá)到HOL的值,則此buffer request請(qǐng)求才會(huì)被放到buffer request queue中。17放入buffer request queue中并不意味著立即就可以得到處理。因?yàn)橹挥挟?dāng)B端的GLINK buffer pool中有可用的空間并且已經(jīng)分配還沒有釋放的buffer的數(shù)量小于我們?cè)O(shè)置的GLINK buffe

12、r的threshold的值時(shí),B端才會(huì)從buffer request queue中取出一個(gè)消息來進(jìn)行處理:分配buffer,并向A端發(fā)送start of packet消息。A端接到此消息后,會(huì)將數(shù)據(jù)包發(fā)送到B端的GLINK分配的buffer中,并釋放在本地的port buffer pool中占有的buffer?,F(xiàn)在數(shù)據(jù)包已經(jīng)在B端的GLINK buffer pool中。此時(shí)B要看port transmit queue中的隊(duì)列的長(zhǎng)度是否小于HOL的值。如果不小于,則此數(shù)據(jù)包將仍舊在GLINK buffer pool中存放,直到port transmit queue中的隊(duì)列的長(zhǎng)度小于HOL。然后,

13、對(duì)應(yīng)此數(shù)據(jù)包的描述符會(huì)發(fā)送到port transmit queue中,準(zhǔn)備向外傳輸。但此時(shí)GLINK buffer pool中的被此數(shù)據(jù)包占用的buffer并沒有釋放。18當(dāng)port transmit queue處理到數(shù)據(jù)包對(duì)應(yīng)的描述符時(shí),此數(shù)據(jù)包將最終從目的端口傳送出去,在GLINK buffer pool中占用的buffer也將被釋放。對(duì)于二層的芯片,我們要使用芯片提供的buffer aging的檢測(cè)機(jī)制。因?yàn)樵谀承┨囟ǖ那闆r下會(huì)將buffer用光,比如GLINK buffer。這樣,其他發(fā)向本設(shè)備的buffer request請(qǐng)求都將被存放到buffer request queue中而得

14、不到處理,從而導(dǎo)致發(fā)送端的port buffer pool中的buffer得不到釋放,最終可能會(huì)導(dǎo)致發(fā)送端的port buffer pool被用光,則后續(xù)的所有的包都將在接收端口就被drop掉。對(duì)于三層芯片沒有提供自動(dòng)的buffer aging機(jī)制,需要用程序來模擬消息來釋放buffer。19 兩個(gè)SWITCH之間的數(shù)據(jù)轉(zhuǎn)發(fā)流程圖crossbarBuffer requestPacket transferEnd of packetBuffer request queueGLINK buffer poolport transmit queueBAPort buffer pool20芯片中的VLAN

15、表不同的芯片中支持的VLAN entry的數(shù)量350:支持4095個(gè)VLAN entry360:支持4096個(gè)VLAN entry510:支持4095的VLAN entry520:支持4095的VLAN entry21VLAN entry的組成 芯片中的VLAN表與我們軟件上用SHOW VLAN命令看到的內(nèi)容實(shí)際上是一樣的,主要的內(nèi)容如下:Valid:VLAN entry是否有效Port:當(dāng)前設(shè)備位于此VLAN內(nèi)的本地端口號(hào)PFORMAT:本地端口號(hào)是以tag還是非tag模式屬于此 VLANDEV:位于此VLAN內(nèi)的其他的設(shè)備號(hào)這樣,在此設(shè)備上產(chǎn)生的新地址消息就會(huì)根據(jù)此VLAN表項(xiàng)的DEV域發(fā)

16、送到其他的設(shè)備;而數(shù)據(jù)包也將根據(jù)DEV和port域轉(zhuǎn)發(fā)到本地端口和其他的設(shè)備,到其他設(shè)備的數(shù)據(jù)包將根據(jù)所在設(shè)備的此VLAN表項(xiàng)中的port轉(zhuǎn)發(fā)到該設(shè)備在VLAN中的本地端口,這樣數(shù)據(jù)包就被轉(zhuǎn)發(fā)到一個(gè)VLAN內(nèi)的所有端口。22芯片中的VLAN表項(xiàng)的建立芯片中VLAN的建立是通過我們執(zhí)行CREATE VLAN來建立的,并通過添加/刪除端口對(duì)其中的DEV,PORT,PFORMAT等域進(jìn)行相應(yīng)的變化。對(duì)于我們軟件上創(chuàng)建的每一個(gè)VLAN,在所有的設(shè)備中都存在一個(gè)對(duì)應(yīng)于該VLAN的自己的表項(xiàng)。軟件上會(huì)將命令行中加入/刪除的端口轉(zhuǎn)化為實(shí)際的設(shè)備與設(shè)備上的端口號(hào),然后以tag或非tag對(duì)entry進(jìn)行設(shè)置的改

17、變。每一次對(duì)VLAN的改變都會(huì)導(dǎo)致對(duì)所有的設(shè)備的該VLAN的表項(xiàng)進(jìn)行重新的設(shè)置。23芯片中的MAC地址表不同的芯片中支持的地址entry的數(shù)量350:支持8K個(gè)地址entry360:支持8K個(gè)地址entry510:支持24K的地址entry520:支持64K的地址entry24地址entry的組成 芯片中的MAC地址表與我們軟件上用SHOW FDB命令看到的內(nèi)容實(shí)際上是一樣的,主要的內(nèi)容如下:Valid:地址entry是否有效Aging:地址是否老化。1:正常;2:老化Address:MAC地址VID:VLAN的IDDEV:設(shè)備號(hào)PORT:端口號(hào)ST:是否是靜態(tài)的地址。1:靜態(tài);0:動(dòng)態(tài)對(duì)于三

18、層芯片,還有下面一個(gè)重要的內(nèi)容:Route:目的地址匹配此entry的數(shù)據(jù)包是否送到路由 單元。1:送;0:不送25地址的學(xué)習(xí)地址的學(xué)習(xí)都是指源地址而不是目的地址的學(xué)習(xí)。一個(gè)地址是否是新地址要由4部分來決定:MAC,VID,DEV,PORT。當(dāng)一個(gè)數(shù)據(jù)包到達(dá)端口之后,端口要取出包中的源地址和VID在地址表中進(jìn)行匹配。VID的獲得通過下面的途徑: 1:如果數(shù)據(jù)包是tag的并且VID域不為0,則就用此 VID的值。2:如果數(shù)據(jù)包是tag的并且VID域?yàn)?或者數(shù)據(jù)包是非 tag的,則VID取端口的缺省的VID值。該值由軟件對(duì)端口的寄存器進(jìn)行設(shè)置,對(duì)應(yīng)的值為此端口以非tag模式屬于的VLAN的ID。2

19、6在取得VID之后,用源MAC和VID在地址表中進(jìn)行匹配的查找,如果沒有找到匹配的表項(xiàng) 或找到匹配的表項(xiàng)當(dāng)表項(xiàng)中的DEV和PORT不是接收此數(shù)據(jù)包的DEV和PORT,則此地址就是一個(gè)新地址,要根據(jù)當(dāng)前端口所處的狀態(tài)進(jìn)行如下的操作:端口處于LOCK模式:則僅僅發(fā)送新地址消息到CPU,之后地址是否要學(xué)習(xí)由軟件來實(shí)現(xiàn)。如果要學(xué)習(xí),則先將此地址存放在軟件的數(shù)據(jù)結(jié)構(gòu)中,然后再寫入設(shè)備中。端口處于非LOCK模式:在地址表中創(chuàng)建一個(gè)新的地址表項(xiàng)或者修改已經(jīng)存在的地址表項(xiàng)中的DEV和PORT,同時(shí)向與該設(shè)備在同一個(gè)VLAN內(nèi)的所有的設(shè)備發(fā)送新地址消息(如果CPU在此VLAN中也要發(fā)向CPU),這樣其他的設(shè)備的

20、地址表項(xiàng)中也會(huì)自動(dòng)產(chǎn)生與此設(shè)備一樣的地址表項(xiàng)。27 否則,如果找到匹配的表項(xiàng)并且表項(xiàng)中的DEV 和 PORT 與接收包的DEV和PORT是一樣的,則此數(shù)據(jù)包就不會(huì)產(chǎn)生一個(gè)新地址消息,而只是將aging標(biāo)志為設(shè)置為1,以防止該地址表項(xiàng)被老化。28地址的老化我們現(xiàn)在采用的地址老化機(jī)制是由完全由設(shè)備來自動(dòng)實(shí)現(xiàn)的。由程序在設(shè)備的寄存器中設(shè)置好時(shí)間間隔,然后每隔一個(gè)間隔設(shè)備就會(huì)自動(dòng)將所有地址表項(xiàng)的aging標(biāo)志設(shè)置為0。如果在下一次檢查時(shí)aging標(biāo)記仍然為0則次地址就將被老化掉。一旦地址老化之后,新地址消息將會(huì)由源設(shè)備發(fā)向系統(tǒng)中所有的設(shè)備(包括CPU),而不再區(qū)分VLAN的關(guān)系。這樣,所有設(shè)備中的該地

21、址表項(xiàng)的skip位都將被設(shè)置為1,從而達(dá)到該地址的老化。地址表項(xiàng)的aging位的set/reset只能由產(chǎn)生此新地址的特定設(shè)備的特定端口來設(shè)置。如果我們將地址老化時(shí)間設(shè)置為0,則地址將不會(huì)老化,就象靜態(tài)地址一樣。29軟件上如何得到FDB 軟件上處理FDB的方式在FLEX與BIG上不同,處理的方式如下:FLEX:CPU存在于所有的VLAN中,所以所有的新地址消息(包括老化消息)都會(huì)送到CPU。軟件上開辟了一塊內(nèi)存區(qū)域,并將該區(qū)域的首地址寫到crossbar中,這樣硬件上產(chǎn)生的新地址消息就會(huì)自動(dòng)放到這個(gè)區(qū)域中,從而軟件能得到由硬件產(chǎn)生的新地址消息。 30BIG:CPU只與一個(gè)我們稱做自環(huán)的設(shè)備在所

22、有的VLAN內(nèi),而自環(huán)設(shè)備相當(dāng)于FLEX中CPU的位置,存在于所有其他設(shè)備的不同的VLAN中。這樣,所有的新地址消息(不包括老化的)在自環(huán)設(shè)備中都存在,但卻不會(huì)向CPU發(fā)送新地址消息。所以,對(duì)于這些新地址消息不會(huì)放到軟件開辟的空間中,而是由軟件通過一個(gè)任務(wù)不斷的到這個(gè)設(shè)備中去查找來獲得這些新地址(所以,對(duì)于新地址的處理,F(xiàn)LEX上要比BIG上快)。對(duì)于老化的新地址消息的處理與FLEX上是一樣的,這些新地址消息將被放到軟件為他們開辟的空間中。31數(shù)據(jù)包如何進(jìn)行轉(zhuǎn)發(fā)首先我們要根據(jù)DA+VID/SA+VID在設(shè)備的地址表中進(jìn)行查找。如果DA是一個(gè)單播地址并且地址entry存在:1:如果此地址entr

23、y中的DEV和PORT號(hào)就是當(dāng)前接 收數(shù)據(jù)包的設(shè)備和端口,則丟棄。2:否則數(shù)據(jù)將按照entry中的內(nèi)容轉(zhuǎn)發(fā)到DEV設(shè)備的 PORT號(hào)端口。32 如果DA是一個(gè)單播地址并且地址entry沒有發(fā)現(xiàn)(也就是說這是一個(gè)未知單播包),則設(shè)備將根據(jù)包中的VID找到此設(shè)備中的對(duì)應(yīng)的VLAN表項(xiàng),然后轉(zhuǎn)發(fā)數(shù)據(jù)包到所有的在此VLAN中的端口(當(dāng)然這些端口在設(shè)置上必須允許未知單播包向它們轉(zhuǎn)發(fā)才可以)。如果CPU也在此VLAN中并且此設(shè)備在設(shè)置上可以向CPU發(fā)送未知單播包,則數(shù)據(jù)包也將發(fā)向CPU。程序中現(xiàn)在的設(shè)置未知單播包不會(huì)送到CPU。33如果DA是一個(gè)多播地址并且地址entry沒有發(fā)現(xiàn),則設(shè)備將根據(jù)包中的VID

24、找到此設(shè)備中的對(duì)應(yīng)的VLAN表項(xiàng),然后轉(zhuǎn)發(fā)數(shù)據(jù)包到所有的在此VLAN中的端口。如果CPU也在VLAN中,數(shù)據(jù)包也將向CPU轉(zhuǎn)發(fā)。如果DA是一個(gè)多播地址并且地址entry存在,則設(shè)備將根據(jù)entry中的VIDX域(而不是VID)找到此設(shè)備中的對(duì)應(yīng)的VLAN表項(xiàng),然后轉(zhuǎn)發(fā)數(shù)據(jù)包到所有的在此VLAN中的端口。如果CPU也在VLAN中,數(shù)據(jù)包也將向CPU轉(zhuǎn)發(fā)。34Prefix tree的匹配IP route entry這些entry就是在best match模式下的next-hop entry。主要內(nèi)容如下:VALID:route entry是否有效TRG_DEV:要轉(zhuǎn)發(fā)到的設(shè)備TRG_PORT:要轉(zhuǎn)

25、發(fā)到的端口MAC_SA:轉(zhuǎn)發(fā)的數(shù)據(jù)包中要設(shè)置的源MACMAC_DA:轉(zhuǎn)發(fā)的數(shù)據(jù)包中要設(shè)置的目的MACDA_CMD:000-正常路由 001-路由后送到流分類單元 100-drop數(shù)據(jù)包 101-送到CPU對(duì)于DA_CMA,如果包是送到CPU則對(duì)應(yīng)的值為101;在BIG上為0,并且TRG_DEV=2, TRG_PORT=0。也就是說送到自環(huán)設(shè)備然后再送到CPU,而不是直接送到CPU。35PREFIX TREE NODE的內(nèi)容VALID:next-hop被發(fā)現(xiàn)LEN:匹配節(jié)點(diǎn)的真實(shí)長(zhǎng)度NEXT-HOP:next-hop entry的index對(duì)于level1與level2節(jié)點(diǎn)還有CON:還可以進(jìn)行

26、比當(dāng)前更長(zhǎng)的匹配MIN:在更長(zhǎng)的匹配中的最小的index值MAX:在更長(zhǎng)的匹配中的最大的index值level1節(jié)點(diǎn)有L2-BASE:當(dāng)CON為1時(shí)*8是二層表的起始地址level2節(jié)點(diǎn)有L3-BASE:當(dāng)CON為1時(shí)*8是三層表的起始地址36level1level3node在設(shè)備中的分布。level1共有64K(256*256)的entry,在每個(gè)三層設(shè)備的寄存器中有一個(gè)基地址,entry的查找直接用DIP的前16bit在此基地址上進(jìn)行索引。所有的level2和level3表都是被動(dòng)態(tài)分配的。 37PREFIX TREE的匹配過程匹配是一個(gè)最多為3步(從level1到level3)的過程。L

27、evel1用DIP的前16bit,level2用1724bits,level3用2532bits。在進(jìn)行匹配之前,next-hop為缺省路由的entry。每次如果一個(gè)有效的節(jié)點(diǎn)在tree中被發(fā)現(xiàn)則將取代前一個(gè)next-hop。匹配總是從level1用DIP的前16開始,如果發(fā)現(xiàn)匹配的節(jié)點(diǎn)并且節(jié)點(diǎn)是有效的,則next-hop為節(jié)點(diǎn)中的next-hop的值。然后看此節(jié)點(diǎn)的continue是否為1:如果為1,并且DIP的1724對(duì)應(yīng)的值在該節(jié)點(diǎn)的MIN和MAX之間,則說明有可能(可能沒有,因?yàn)閘evel1節(jié)點(diǎn)只是指明在level2表中有節(jié)點(diǎn),這些節(jié)點(diǎn)在MIN和MAX之間,但并不一定之間所有的值都存在

28、)有更長(zhǎng)的可以匹配。然后會(huì)根據(jù)在level1節(jié)點(diǎn)的L2_BASE中記錄的level2的基地址以DIP的1724對(duì)應(yīng)的值進(jìn)行索引。如果存在并且節(jié)點(diǎn)是有效的,則用此level2中的next-hop的值取代在level1中的next-hop。然后在level2中進(jìn)行同樣的操作。最后,按next-hop指定的entry的內(nèi)容進(jìn)行指定的操作。38在三層設(shè)備中設(shè)置prefix tree的過程sh vlVLAN ID : 2047Name : defaultVLAN Type : NormalIP Address : 10.5.4.249/24Mac address : 00:05:3b:00:00:00T

29、agged Ports : Untagged Ports : 0:1 0:2 4:1 4:2 4:3 4:4 4:5 4:6 4:7 4:8 4:9 4:10 4:11 4:12 4:13 4:14 4:15 4:16 4:17 4:18 4:19 4:20 4:21 4:22 4:23 4:24 4:25 4:26 4:27 4:28 4:29 4:30 4:31 4:32 39Harbour(config)# sh pre l1index valid cont len nextHop min max hPtr 2565 0 1 0 0 4 4 0 x18bfe8Harbour(config

30、)# sh pre l2 2565level1 entry:index valid cont len nextHop min max hPtr 2565 0 1 0 0 4 4 0 x18bfe8level2 table:index valid cont len nextHop min max hPtr 4 1 0 7 16385 0 0 0 x0Harbour(config)# sh pre l3 2565 4level1 entry:index valid cont len nextHop min max hPtr 2565 0 1 0 0 4 4 0 x18bfe8level2 entr

31、y:index valid cont len nextHop min maxhPtr 4 1 0 7 16385 0 0 0 x0The given level2 entry does not point to any level3 table.Harbour(config)# sh ip route caGET INFO FROM DEVICE(1)Index nextHopIP DevNo PortNo VID DA_CMD MAC_DA MAC_SA16385 10.5.4.0 2 0 2047 0 00:05:3b:00:00:00 00:00:00:00:00:00TOTAL IP

32、ENTRY:140Harbour(config)# sh arpARP TABLE LIST:IP ADDRESS MAC ADDRESS TYPE REFERENCE USETOTAL :0Harbour(config)# sh fdb- Begin of Mac Address Table Information (all)-Mac address Port Vlan name Flags 00:05:3b:00:00:00 default System CPU Permanent Harbour(config)# ping 10.5.4.99PING 10.5.4.99 : 56 dat

33、a bytes.Reply from 10.5.4.99 : bytes=56: icmp_seq=0 ttl=127 time=0 msHarbour(config)# sh arpARP TABLE LIST:IP ADDRESS MAC ADDRESS TYPE REFERENCE USE10.5.4.99 00:10:dc:0d:f8:a4 DYNAMIC 0 2Harbour(config)# sh fdb- Begin of Mac Address Table Information (all)-Mac address Port Vlan name Flags - - - -00:

34、10:dc:0d:f8:a4 default Age 00:05:3b:00:00:00 default System CPU Permanent - - - -Total 2 mac address entry showed.41Harbour(config)# sh pre l1index valid cont len nextHop min max hPtr 2565 0 1 0 0 4 4 0 x18bfe8Harbour(config)# sh pre l2 2565level1 entry:index valid cont len nextHop min max hPtr 2565

35、 0 1 0 0 4 4 0 x18bfe8level2 table:index valid cont len nextHop min max hPtr 4 1 1 7 16385 99 99 0 x18be84Harbour(config)# sh pre l3 2565 4level1 entry:index valid cont len nextHop min max hPtr 2565 0 1 0 0 4 4 0 x18bfe8level2 entry:index valid cont len nextHop min max hPtr 4 1 1 7 16385 99 99 0 x18

36、be84level3 table:index valid len nextHop 99 1 7 16386Harbour(config)# sh ip route caGET INFO FROM DEVICE(3)Index nextHopIP DevNo PortNo VID DA_CMD MAC_DA MAC_SA16385 10.5.4.0 2 0 2047 0 00:05:3b:00:00:00 00:00:00:00:00:0016386 10.5.4.99 16 0 2047 0 00:10:dc:0d:f8:a4 00:05:3b:00:00:00TOTAL IP ENTRY:2

37、Harbour(config)# 42Harbour(config)# sh fdb- Begin of Mac Address Table Information (all)-Mac address Port Vlan name Flags - - - -00:10:dc:0d:f8:a4 default Age 00:05:3b:00:00:00 default System CPU Permanent - - - -Total 2 mac address entry showed.- End of Mac Address Table Information -Harbour(config

38、)# sh fdb- Begin of Mac Address Table Information (all)-Mac address Port Vlan name Flags - - - -00:05:3b:00:00:00 default System CPU Permanent - - - -Total 1 mac address entry showed.- End of Mac Address Table Information -Harbour(config)#sh ip route caGET INFO FROM DEVICE(1)Index nextHopIP DevNo Po

39、rtNo VID DA_CMD MAC_DA MAC_SA16385 10.5.0.0 2 0 2047 0 00:05:3b:00:00:00 00:00:00:00:00:0016386 10.5.4.99 2 0 2047 0 00:05:3b:00:00:00 00:00:00:00:00:00TOTAL IP ENTRY:243sh vlVLAN ID : 2047Name : defaultVLAN Type : NormalIP Address : 10.5.4.1/14Mac address : 00:05:3b:00:00:00Tagged Ports : Untagged

40、Ports : 0:1 0:2 4:1 4:2 4:3 4:4 4:5 4:6 4:7 4:8 4:9 4:10 4:11 4:12 4:13 4:14 4:15 4:16 4:17 4:18 4:19 4:20 4:21 4:22 4:23 4:24 4:25 4:26 4:27 4:28 4:29 4:30 4:31 4:32 Harbour(config)# sh pre l1index valid cont len nextHop min max hPtr 2564 1 0 13 16385 0 0 0 x0 2565 1 0 13 16385 0 0 0 x0 2566 1 0 13

41、 16385 0 0 0 x0 2567 1 0 13 16385 0 0 0 x044sh vlVLAN ID : 2047Name : defaultVLAN Type : NormalIP Address : 10.5.4.1/20Mac address : 00:05:3b:00:00:00Tagged Ports : Untagged Ports : 0:1 0:2 4:1 4:2 4:3 4:4 4:5 4:6 4:7 4:8 4:9 4:10 4:11 4:12 4:13 4:14 4:15 4:16 4:17 4:18 4:19 4:20 4:21 4:22 4:23 4:24

42、 4:25 4:26 4:27 4:28 4:29 4:30 4:31 4:32Harbour(config)# sh pre l1index valid cont len nextHop min max hPtr 2565 0 1 0 0 0 15 0 x18c00845Harbour(config)# sh pre l2 2565level1 entry:index valid cont len nextHop min max hPtr 2565 0 1 0 0 0 15 0 x18c008level2 table:index valid cont len nextHop min max

43、hPtr 0 1 0 3 16385 0 0 0 x0 1 1 0 3 16385 0 0 0 x0 2 1 0 3 16385 0 0 0 x0 3 1 0 3 16385 0 0 0 x0 4 1 0 3 16385 0 0 0 x0 5 1 0 3 16385 0 0 0 x0 6 1 0 3 16385 0 0 0 x0 7 1 0 3 16385 0 0 0 x0 8 1 0 3 16385 0 0 0 x0 9 1 0 3 16385 0 0 0 x0 10 1 0 3 16385 0 0 0 x0 11 1 0 3 16385 0 0 0 x0 12 1 0 3 16385 0

44、0 0 x0 13 1 0 3 16385 0 0 0 x0 14 1 0 3 16385 0 0 0 x0 15 1 0 3 16385 0 0 0 x0Harbour(config)# sh ip route caGET INFO FROM DEVICE(1)Index nextHopIP DevNo PortNo VID DA_CMD MAC_DA MAC_SA16385 10.5.0.0 2 0 2047 0 00:05:3b:00:00:00 00:00:00:00:00:00TOTAL IP ENTRY:146Harbour(config)# ping 10.5.4.99Reply

45、 from 10.5.4.99 : bytes=56: icmp_seq=0 ttl=127 time=0 msHarbour(config)# sh pre l2 2565level1 entry:index valid cont len nextHop min max hPtr 2565 0 1 0 0 0 15 0 x18c008level2 table:index valid cont len nextHop min max hPtr 0 1 0 3 16385 0 0 0 x0 1 1 0 3 16385 0 0 0 x0 2 1 0 3 16385 0 0 0 x0 3 1 0 3

46、 16385 0 0 0 x0 4 1 1 3 16385 99 99 0 x18befc 5 1 0 3 16385 0 0 0 x0 6 1 0 3 16385 0 0 0 x0 7 1 0 3 16385 0 0 0 x0 8 1 0 3 16385 0 0 0 x0 9 1 0 3 16385 0 0 0 x0 10 1 0 3 16385 0 0 0 x0 11 1 0 3 16385 0 0 0 x0 12 1 0 3 16385 0 0 0 x0 13 1 0 3 16385 0 0 0 x0 14 1 0 3 16385 0 0 0 x0 15 1 0 3 16385 0 0

47、0 x047Harbour(config)# sh pre l3 2565 4level1 entry:index valid cont len nextHop min max hPtr 2565 0 1 0 0 0 15 0 x18c008level2 entry:index valid cont len nextHop min max hPtr 4 1 1 3 16385 99 99 0 x18befclevel3 table:index valid len nextHop 99 1 7 16386Harbour(config)# sh ip route caGET INFO FROM D

48、EVICE(3)Index nextHopIP DevNo PortNo VID DA_CMD MAC_DA MAC_SA16385 10.5.0.0 2 0 2047 0 00:05:3b:00:00:00 00:00:00:00:00:0016386 10.5.4.99 16 0 2047 0 00:10:dc:0d:f8:a4 00:05:3b:00:00:00TOTAL IP ENTRY:2Harbour(config)# 48同VLAN內(nèi)數(shù)據(jù)通信的過程假設(shè)A,B兩臺(tái)PC機(jī)在同一個(gè)VLAN內(nèi),我們從A PING B。則A會(huì)先發(fā)一個(gè)ARP 請(qǐng)求包,此包會(huì)在此VLAN內(nèi)廣播,所以會(huì)到達(dá)B所

49、連接的設(shè)備,進(jìn)而到達(dá)B。在A發(fā)送ARP請(qǐng)求包時(shí)會(huì)產(chǎn)生一個(gè)新地址消息,此消息將被寫入switch1中,并且向VLAN內(nèi)所有的設(shè)備發(fā)送此新地址消息,所以switch2也會(huì)在MAC地址表添加同樣的entry(該entry的地址為A的地址,并指明了A所連接的設(shè)備和端口)。當(dāng)B發(fā)送ARP回應(yīng)報(bào)文時(shí),目的MAC為A的MAC地址,按轉(zhuǎn)發(fā)原理將會(huì)匹配剛添加的MAC entry。這樣,switch2將會(huì)自動(dòng)將包送到A而不會(huì)在VLAN內(nèi)全部發(fā)送。同樣,B在發(fā)送ARP回應(yīng)報(bào)文時(shí)也會(huì)產(chǎn)生新地址消息,也同樣會(huì)在swith1中添加新的MAC entry。這樣,A在發(fā)送ICMP報(bào)文時(shí)就會(huì)匹配該entry而直接發(fā)送到B(同樣

50、不會(huì)在VLAN內(nèi)全部發(fā)送),同樣B會(huì)進(jìn)行回復(fù)。對(duì)于同一個(gè)VLAN內(nèi)的數(shù)據(jù)的通信不需要CPU的干預(yù)。49同VLAN內(nèi)的兩個(gè)設(shè)備的通信流程圖crossbarswitch2switch1ARP requestICMP requestARP replyICMP replyARP request包將產(chǎn)生新地址消息ARP reply包將產(chǎn)生新地址消息PC:APC:B50不同VLAN間數(shù)據(jù)通信的過程 假設(shè)A的IP地址為1.1.1.10,所在的VLAN的IP地址為1.1.1.1/24。B的IP地址為2.2.2.20,所在的VLAN的IP地址為2.2.2.2/24。這樣在兩個(gè)VLAN都UP之后,在三層設(shè)備中將存在兩個(gè)route entry,指明凡是送到路由單元的DIP符合1.1.1.0/24和2.2.2.0/24的數(shù)據(jù)包都被送到CPU(通過2自環(huán)設(shè)備,它與CPU在一個(gè)VLAN內(nèi))。當(dāng)然,A,B的網(wǎng)關(guān)都要設(shè)置為對(duì)應(yīng)的VLAN的IP地址。A想要與B通信,由于不在同一個(gè)網(wǎng)段內(nèi),所以要將數(shù)據(jù)包送到網(wǎng)關(guān)。因?yàn)楫?dāng)前還沒有網(wǎng)關(guān)的MAC地址,所以A會(huì)發(fā)送一個(gè)ARP請(qǐng)求包,目的IP為1.1.1.1。因?yàn)槭且粋€(gè)廣播包,所以會(huì)送到自環(huán)2設(shè)備(因?yàn)?/p>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論