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




















