在接觸三層交換機(jī)配置實(shí)例前應(yīng)該了解的交換機(jī)特點(diǎn)
在接觸三層交換機(jī)配置實(shí)例前應(yīng)該了解的交換機(jī)特點(diǎn),同事負(fù)責(zé)三層交換機(jī)配置在公司中互聯(lián),這是一件工程很大的項(xiàng)目。外行人會(huì)一頭霧水,二層交換和三層互通
和實(shí)現(xiàn)三層精確匹配查詢(xún),是本文講解的重點(diǎn)。
在概述部分中,我們給出了三層交換機(jī)的基本特點(diǎn)綜述,主要有下列特點(diǎn):
◆二層交換和三層互通
◆實(shí)現(xiàn)三層精確匹配查詢(xún)
◆專(zhuān)門(mén)針對(duì)局域網(wǎng),特別是以太網(wǎng)進(jìn)行了優(yōu)化
◆引入了一些在二層交換機(jī)和三層路由器上都不存在的特性
◆實(shí)現(xiàn)了初步的BAS功能
一般來(lái)說(shuō),只要能做到第一點(diǎn),就可以稱(chēng)為三層交換機(jī)了,但目前大多數(shù)流行的三層交換機(jī)都不局限于第一點(diǎn),而是實(shí)現(xiàn)了上述的大部分功能。因此,為了更好的理解三層交換機(jī),接下來(lái)我們對(duì)三層交換機(jī)配置實(shí)例上述特點(diǎn)進(jìn)行詳細(xì)講述。
三層交換機(jī)配置實(shí)例:二層交換和三層互通
三層交換機(jī)首先是一個(gè)交換機(jī),即完成二層交換功能。在以太網(wǎng)上,跟普通的二層交換機(jī)一樣,三層交換機(jī)也維護(hù)一張用于二層交換的地址表(通常稱(chēng)為CAM 表),該表是MAC地址與出接口的對(duì)應(yīng)關(guān)系。
這樣每當(dāng)接收到一個(gè)以太網(wǎng)數(shù)據(jù)幀,三層交換機(jī)判斷如果該數(shù)據(jù)幀不是發(fā)送給自己的(這個(gè)概念很重要,至于三層交換機(jī)怎么判斷,在下面的講述中會(huì)詳細(xì)說(shuō)明),則根據(jù)數(shù)據(jù)幀的目的MAC地址查詢(xún)CAM表,如果能命中(所謂命中,就是在CAM表中找到與該MAC地址對(duì)應(yīng)的轉(zhuǎn)發(fā)項(xiàng))。
則根據(jù)查詢(xún)的結(jié)果,通常是一個(gè)出接口列表,來(lái)進(jìn)行轉(zhuǎn)發(fā)。如果不能命中,則向所有端口廣播該數(shù)據(jù)幀。交換機(jī)的這張CAM表可以通過(guò)多種方式獲得,比如靜態(tài)配置,動(dòng)態(tài)學(xué)習(xí),針對(duì)多播還可以通過(guò)各種多播協(xié)議,比如IGMP窺探,GMRP協(xié)議等方式獲得(注意,多播轉(zhuǎn)發(fā)表不能通過(guò)學(xué)習(xí)獲得。
而且多播轉(zhuǎn)發(fā)項(xiàng)跟普通轉(zhuǎn)發(fā)項(xiàng)不同的是,跟其對(duì)應(yīng)的出口可能不止一個(gè),而是一個(gè)出口集合,如果想詳細(xì)了解多播的一些基礎(chǔ)概念,請(qǐng)參考前面的專(zhuān)題資料)。但對(duì)于單播,最重要的一種建立三層交換機(jī)配置實(shí)例的學(xué)習(xí)。
當(dāng)交換機(jī)接收到一個(gè)數(shù)據(jù)幀,提取出該數(shù)據(jù)幀的目的MAC地址,并依此為根據(jù)進(jìn)行CAM表查詢(xún),如果能查找到結(jié)果,則根據(jù)結(jié)果進(jìn)行數(shù)據(jù)幀的轉(zhuǎn)發(fā),如果不能命中,則(向除接收端口外的)所有端口進(jìn)行復(fù)制。
在進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā)的同時(shí),交換機(jī)還進(jìn)行一個(gè)學(xué)習(xí)的過(guò)程,交換機(jī)把數(shù)據(jù)幀的源MAC地址提取出來(lái),查詢(xún)CAM 表,看CAM表中是否有針對(duì)該MAC地址的轉(zhuǎn)發(fā)項(xiàng),如果沒(méi)有,則把該MAC地址和接收到該MAC地址的端口綁定起來(lái),插入CAM表項(xiàng)。
這樣當(dāng)接收到一個(gè)發(fā)送到該MAC地址的數(shù)據(jù)幀時(shí),就不需要向所有端口廣播,而僅僅向這一個(gè)端口發(fā)送即可。需要注意的是,數(shù)據(jù)幀的轉(zhuǎn)發(fā)是依據(jù)目的MAC地址查詢(xún)CAM表,而 CAM表的學(xué)習(xí)則是以源MAC地址為依據(jù)。
交換機(jī)動(dòng)態(tài)學(xué)習(xí)的CAM表項(xiàng)并不是一成不變的,而是啟動(dòng)一個(gè)定時(shí)器,當(dāng)該定時(shí)器遞減到零時(shí),該CAM表項(xiàng)被刪除,每使用一次該CAM表項(xiàng)進(jìn)行轉(zhuǎn)發(fā),則恢復(fù)定時(shí)器初始值。上述情況是沒(méi)有VLAN的工作過(guò)程,現(xiàn)在的交換機(jī)一般都實(shí)現(xiàn)了VLAN(即虛擬局域網(wǎng),詳細(xì)內(nèi)容請(qǐng)參考以太網(wǎng)的有關(guān)教程)。
這樣在交換機(jī)進(jìn)行轉(zhuǎn)發(fā)的CAM 表就進(jìn)行了變化,由原來(lái)的兩項(xiàng)對(duì)應(yīng)關(guān)系(MAC地址跟接口)變成了三項(xiàng)對(duì)應(yīng)關(guān)系(MAC地址,VLAN ID,出口),這樣當(dāng)接收到一個(gè)數(shù)據(jù)幀的時(shí)候,交換機(jī)根據(jù)數(shù)據(jù)幀的目的MAC地址和VLAN ID兩項(xiàng)來(lái)查詢(xún)CAM表,找到接口后把該數(shù)據(jù)幀轉(zhuǎn)發(fā)出去。
但如果交換機(jī)根據(jù)MAC地址和VLAN ID查詢(xún)CAM表失敗,即沒(méi)有跟該MAC和VLAN ID的對(duì)應(yīng)關(guān)系,則交換機(jī)把該數(shù)據(jù)幀向該VLAN包含的(除接收端口以外的)所有端口上復(fù)制。如果只根據(jù)CAM表來(lái)確定一個(gè)VLAN包含哪些端口,則必須遍歷整個(gè)CAM表,這樣如果CAM表的規(guī)模非常大(一般情況下是4K以上),則效率特別低。#p#
所以一般的交換機(jī)上在實(shí)現(xiàn)VLAN時(shí),還創(chuàng)建另外一張表,即 VLAN配置表,該表包含了VLAN ID和所有端口的對(duì)應(yīng)關(guān)系,即只要根據(jù)VLAN ID查詢(xún)?cè)摫?,就可以找到該VLAN包含的所有端口,這樣在進(jìn)行VLAN內(nèi)廣播的時(shí)候,就非常容易。另外一個(gè)問(wèn)題出現(xiàn)了,就是數(shù)據(jù)幀的VLAN ID是怎樣獲得的。交換機(jī)一般根據(jù)下列原則來(lái)給一個(gè)數(shù)據(jù)幀附加上VLAN ID:
◆如果接收到數(shù)據(jù)幀的端口是一個(gè)非TAG端口,且數(shù)據(jù)幀是一個(gè)普通數(shù)據(jù)幀,則附加上該端口的默認(rèn)VLAN ID;
◆根據(jù)農(nóng)基文的理解:當(dāng)一個(gè)非TAG端口收到了一個(gè)數(shù)據(jù)幀,且含有VLAN ID時(shí),做判斷,如果VLAN ID=端口PVID,則可以接收;否則,丟棄。
◆如果接收到數(shù)據(jù)幀的端口是一個(gè)TAG端口,而數(shù)據(jù)幀是一個(gè)普通數(shù)據(jù)幀,則附加上該端口的默認(rèn)VLAN ID;
◆如果接收到數(shù)據(jù)幀的端口是一個(gè)TAG端口,數(shù)據(jù)幀自己攜帶了VLAN ID(通過(guò)802.1Q協(xié)議),則該數(shù)據(jù)幀的VLAN ID就是攜帶的VLAN ID.
需要注意的三層交換機(jī)配置實(shí)例,實(shí)現(xiàn)VLAN的交換機(jī)在查詢(xún)CAM表進(jìn)行轉(zhuǎn)發(fā)之前,首先給該數(shù)據(jù)幀附加上VLAN ID.以上功能都是二層功能,作為一臺(tái)三層交換機(jī),上述功能是必須實(shí)現(xiàn)的,但三層交換機(jī)的最根本特點(diǎn)還是VLAN間的互通。
在三層交換機(jī)上,VLAN之間的互通是通過(guò)實(shí)現(xiàn)一個(gè)虛擬VLAN接口來(lái)實(shí)現(xiàn)的,即針對(duì)每個(gè)VLAN,交換機(jī)內(nèi)部維護(hù)了一個(gè)與該VLAN對(duì)應(yīng)的接口,該接口對(duì)外是不可見(jiàn)的,是一個(gè)虛擬的接口,但該接口有所有物理接口所具有的特性,比如有MAC地址,可配置最大傳輸單元和傳輸?shù)囊蕴W(wǎng)幀類(lèi)型等。
在上述的三層交換機(jī)配置實(shí)例說(shuō)明中,我們提到了當(dāng)交換機(jī)接收到一個(gè)數(shù)據(jù)幀時(shí),判斷是不是發(fā)給自己的,判斷的依據(jù)便是查看該MAC地址是不是針對(duì)接收數(shù)據(jù)幀所在VLAN的接口MAC地址,如果是,則進(jìn)行三層處理,若不是,則進(jìn)行二層處理,按照上述流程進(jìn)行轉(zhuǎn)發(fā)。
既然實(shí)現(xiàn)了三層轉(zhuǎn)發(fā),交換機(jī)必須維護(hù)一個(gè)三層轉(zhuǎn)發(fā)表,該表可以是基于最長(zhǎng)匹配查詢(xún)的FIB表,也可以是基于目的網(wǎng)絡(luò)層地址精確匹配的三層轉(zhuǎn)發(fā)表,這跟實(shí)現(xiàn)的廠家設(shè)備有關(guān)。這樣當(dāng)交換機(jī)接收到一個(gè)數(shù)據(jù)幀,該數(shù)據(jù)幀的目的MAC地址跟該數(shù)據(jù)幀所在VLAN對(duì)應(yīng)的VLAN接口的MAC地址相同,則進(jìn)行三層轉(zhuǎn)發(fā)。
轉(zhuǎn)發(fā)的過(guò)程是查詢(xún)?nèi)龑愚D(zhuǎn)發(fā)表,查找的結(jié)果是一個(gè)(或多個(gè),當(dāng)數(shù)據(jù)幀是多播的時(shí)候)出口和相應(yīng)的二層封裝數(shù)據(jù),交換機(jī)于是把該數(shù)據(jù)幀所攜帶的三層數(shù)據(jù)幀(比如,是IP或IPX數(shù)據(jù)報(bào))進(jìn)行修改,比如修改校驗(yàn)和,在IP協(xié)議中還進(jìn)行TTL字段遞減,然后重新計(jì)算CHECKSUM,完成這些后,就把該三層數(shù)據(jù)包進(jìn)行二層封裝(根據(jù)三層轉(zhuǎn)發(fā)表查找的結(jié)果),從相應(yīng)的接口發(fā)送出去。
這個(gè)三層轉(zhuǎn)發(fā)表的形成跟二層轉(zhuǎn)發(fā)表(CAM表)的形成有很大的不同,它是通過(guò)查詢(xún)路由表并經(jīng)過(guò)其它協(xié)議(比如ARP協(xié)議)形成的。在后面介紹典型產(chǎn)品實(shí)例的時(shí)候,我們以例子來(lái)講述三層轉(zhuǎn)發(fā)表的形成。三層交換機(jī)配置實(shí)例有下列要點(diǎn):
◆三層交換機(jī)有二層交換機(jī)所有功能,比如基于MAC地址的過(guò)濾(也就是基于MAC地址的單播轉(zhuǎn)發(fā)),生成樹(shù)協(xié)議等;
◆三層交換機(jī)通過(guò)為每個(gè)VLAN分配一個(gè)VLAN接口完成VLAN之間的互通,VLAN接口有自己的MAC地址和IP地址,凡目的MAC地址是VLAN接口的數(shù)據(jù)幀,交換機(jī)都進(jìn)行三層轉(zhuǎn)發(fā)或自己接收—取決于目的IP地址是否是交換機(jī)的接口地址。
三層交換機(jī)配置實(shí)例:三層精確匹配查詢(xún)
在路由器上,每當(dāng)接收到一個(gè)數(shù)據(jù)報(bào),路由器便進(jìn)行路由表的查詢(xún)來(lái)找出該數(shù)據(jù)報(bào)的下一跳,然后通過(guò)相應(yīng)的接口發(fā)送出去。路由器查詢(xún)路由表采用的是最長(zhǎng)匹配算法,在以前的路由器中,最長(zhǎng)匹配算法采用軟件實(shí)現(xiàn),而且實(shí)現(xiàn)起來(lái)非常復(fù)雜,導(dǎo)致了效率特別低。
我們可以設(shè)想,能否改變這種最長(zhǎng)匹配的查找思想,而采用精確匹配的查找技術(shù)實(shí)現(xiàn)呢?可以引入一個(gè)高速緩沖區(qū),用來(lái)存放精確查詢(xún)所需要的信息(一般是三層 IP地址跟出口的對(duì)應(yīng)fib表,還關(guān)聯(lián)有一些二層封裝信息Arp表,比如鏈路層頭等)。
三層交換機(jī)配置實(shí)例當(dāng)接收到一個(gè)需要進(jìn)行三層轉(zhuǎn)發(fā)的數(shù)據(jù)幀的時(shí)候,路由器先查詢(xún)高速緩沖區(qū)(采用精確匹配算法,即直接根據(jù)目的IP地址進(jìn)行索引),如果命中,則根據(jù)查詢(xún)出的信息進(jìn)行數(shù)據(jù)的轉(zhuǎn)發(fā)。
如果不能命中,則查詢(xún)路由表(采用最長(zhǎng)匹配算法),根據(jù)查詢(xún)的結(jié)果進(jìn)行轉(zhuǎn)發(fā),同時(shí)更新相應(yīng)的精確查詢(xún)緩沖區(qū),這樣當(dāng)?shù)竭_(dá)同一個(gè)目的地的數(shù)據(jù)報(bào)來(lái)的時(shí)候,就可以直接查詢(xún)精確匹配緩沖區(qū)進(jìn)行轉(zhuǎn)發(fā)了。#p#
跟CAM表一樣,精確匹配查詢(xún)項(xiàng)也有一個(gè)定時(shí)機(jī)制,超過(guò)了一定的時(shí)間限制就從緩沖區(qū)中刪除掉,跟CAM表不同的是,三層精確匹配查詢(xún)項(xiàng)跟路由表同步,每當(dāng)路由表變化,必定修改精確轉(zhuǎn)發(fā)緩沖區(qū),來(lái)保證跟路由表的同步。
如果數(shù)據(jù)鏈路層是以太網(wǎng),網(wǎng)絡(luò)層是IP,則這個(gè)三層高速轉(zhuǎn)發(fā)緩沖區(qū)是通過(guò)ARP協(xié)議建立的,我們說(shuō)明它的工作過(guò)程。開(kāi)始的時(shí)候,三層交換機(jī)只有一張用于路由的路由表(該路由表是通過(guò)路由協(xié)議建立的),而精確匹配的三層轉(zhuǎn)發(fā)表為空,這樣當(dāng)三層交換機(jī)接收到一個(gè)需要進(jìn)行三層交換的數(shù)據(jù)幀時(shí)。
它首先查詢(xún)?nèi)龑泳_匹配緩沖區(qū),因?yàn)槿龑愚D(zhuǎn)發(fā)表為空,查詢(xún)失敗,于是,三層交換機(jī)通過(guò)最長(zhǎng)匹配算法查詢(xún)路由表(根據(jù)數(shù)據(jù)報(bào)的目的IP地址),查詢(xún)的結(jié)果是一個(gè)出口(一般是一個(gè)VLAN接口)和一個(gè)下一跳。于是,有兩中可能的三層交換機(jī)配置實(shí)例情況:
◆數(shù)據(jù)報(bào)的目的地址跟VLAN接口不在同一個(gè)網(wǎng)段;
◆數(shù)據(jù)報(bào)的目的地址跟VLAN接口在同一個(gè)網(wǎng)段。
在第一種情況下,三層交換機(jī)通過(guò)ARP解析來(lái)解析下一跳IP地址,獲得下一跳的MAC地址后,三層交換機(jī)把接收的數(shù)據(jù)幀進(jìn)行二層封裝,然后發(fā)送給下一跳。在第二種情況下,三層交換機(jī)直接解析數(shù)據(jù)報(bào)的目的IP地址,獲得目的IP地址對(duì)應(yīng)的主機(jī)MAC地址后,直接把該數(shù)據(jù)幀發(fā)送給目的主機(jī)。
不論哪種情況,交換機(jī)進(jìn)行ARP解析的時(shí)候,都會(huì)獲得一個(gè)IP地址跟出口的對(duì)應(yīng)關(guān)系,同時(shí)還通過(guò)ARP協(xié)議獲得了下一跳的MAC地址,于是,三層交換機(jī)會(huì)把這些數(shù)據(jù)組合成一個(gè)三層精確匹配項(xiàng),并插入到三層精確匹配緩沖區(qū)里面。這樣當(dāng)?shù)竭_(dá)同一目的地的數(shù)據(jù)報(bào)到來(lái)后,三層交換機(jī)使用精確匹配算法直接查詢(xún)高速緩沖區(qū),根據(jù)查詢(xún)的結(jié)果進(jìn)行轉(zhuǎn)發(fā)。
需要說(shuō)明的是,實(shí)現(xiàn)三層精確匹配并不是三層交換機(jī)必須具備的特性。在一些低端交換機(jī)的場(chǎng)合下,最長(zhǎng)匹配查詢(xún)采用軟件實(shí)現(xiàn),效率特別低,因而引入三層精確匹配算法,這是合理而且必須的,但對(duì)一些高端場(chǎng)合,就不適應(yīng)了,在一些高端交換機(jī)上,最長(zhǎng)匹配算法都是基于硬件實(shí)現(xiàn)的。
而且采用了效率很高的樹(shù)查找算法,其效率跟精確匹配算法相差無(wú)幾,而且只采用最長(zhǎng)匹配算法還減少了精確匹配緩沖區(qū)和路由表的同步問(wèn)題,因而在一些基于硬件實(shí)現(xiàn)的三層交換機(jī)上,精確匹配不是必須的。在后面介紹典型實(shí)例分析的時(shí)候,我們會(huì)介紹僅僅采用最長(zhǎng)匹配算法實(shí)現(xiàn)高端三層的交換機(jī)。
三層交換機(jī)配置實(shí)例有下列要點(diǎn):
三層交換機(jī)為了提高效率,采用了精78確匹配查找算法,在一些高端三層交換機(jī)上,該特性不是必須的,因?yàn)椴捎米铋L(zhǎng)匹配查找算法的效率并不一定比采用精確匹配查找算法效率差。
三層交換機(jī)配置實(shí)例:針對(duì)局域網(wǎng)進(jìn)行優(yōu)化
傳統(tǒng)的路由器提供豐富的接口種類(lèi),比如E1/T1,ISDN,F(xiàn)rame-Relay,X.25,POS,ATM,SMDS等,每種接口對(duì)應(yīng)不同的封裝類(lèi)型,而且每種接口所對(duì)應(yīng)的最大傳輸單元和最大接收單元都不相同,這樣存在數(shù)據(jù)報(bào)分片的概率相當(dāng)大,概括起來(lái),這些特性使得路由器的轉(zhuǎn)發(fā)效率特別低。
而三層交換機(jī)是由二層交換機(jī)發(fā)展起來(lái)的,而且其發(fā)展過(guò)程中一直遵循為局域網(wǎng)服務(wù)的指導(dǎo)思想,沒(méi)有過(guò)多的引入其它接口類(lèi)型,而只提供跟局域網(wǎng)有關(guān)的接口,比如以太網(wǎng)接口,ATM局域網(wǎng)仿真接口等,這樣接口類(lèi)型單純。
大部分情況下三層交換機(jī)只提供以太網(wǎng)接口,這樣在多種類(lèi)型接口路由器上所碰到的問(wèn)題就徹底消除了,比如,最大傳輸單元問(wèn)題,由于各個(gè)接口都是以太網(wǎng)接口,一般不存在沖突的問(wèn)題,分片的概率就大大降低了。
接口類(lèi)型單純的另外一個(gè)好處就是在進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā)的時(shí)候,內(nèi)部經(jīng)過(guò)的路徑比較單純?,F(xiàn)在的通信處理器一般都是集中在一塊ASIC芯片上的,而且不同的接口類(lèi)型有不同的ASIC芯片進(jìn)行處理。
這樣如果接口類(lèi)型比較單一,所需要的ASIC芯片就相對(duì)單一,交互起來(lái)必定流暢,使用ASIC芯片本身帶的功能就可以完成多個(gè)接口之間的數(shù)據(jù)交換,但如果接口類(lèi)型不統(tǒng)一,則必須有一個(gè)轉(zhuǎn)換機(jī)構(gòu)來(lái)完成這些芯片之間的數(shù)據(jù)交換,三層交換機(jī)配置實(shí)例效率上大大影響。
目前成熟的以太網(wǎng)接口速率最高可以達(dá)到1G(雖然10G的以太網(wǎng)已經(jīng)商用,但還不是很普遍),如果需要更高的速率,只能采用鏈路聚合的方式把幾個(gè)GE端口聚合成一個(gè)物理端口,雖然邏輯上是可行的,但實(shí)現(xiàn)起來(lái)可能會(huì)遇到這樣那樣的問(wèn)題。
比如聚合的鏈路不能跨越同一塊處理板,芯片本身的問(wèn)題等,于是有些交換機(jī)拋棄了這種純粹以太網(wǎng)接口的解決方案,而引入了其它的接口類(lèi)型作為上行接口,比如STM-16的POS接口(2.5G POS接口)等。這些接口用于上行連接核心層設(shè)備。