“第三層交換的原理是,假設(shè)兩個使用IP的主機A、B通過第三層交換機進行通信。發(fā)送站點A在開始發(fā)送時,把自己的IP地址與B站的IP地址比較,判斷B站是否與自己在同一子網(wǎng)內(nèi)。若目的站B與發(fā)送站A在同一子網(wǎng)內(nèi),則進行二層的轉(zhuǎn)發(fā)。若兩個站點不在同一子網(wǎng)內(nèi),如發(fā)送站A要與目的站B通信,發(fā)送站A要向”缺省網(wǎng)關(guān)“發(fā)出ARP請求(地址解析)封包,而”缺省網(wǎng)關(guān)“的IP地址其實是三層交換機的三層交換模塊。當發(fā)送站A對”缺省網(wǎng)關(guān)“的IP地址廣播出一個ARP請求時,如果三層交換模塊在以前的通信過程中已經(jīng)知道B站的MAC地址,則向發(fā)送站A回復(fù)B的MAC地址。否則三層交換模塊根據(jù)路由信息向B站廣播一個ARP請求,B站得到此ARP請求后向三層交換模塊回復(fù)其MAC地址,三層交換模塊保存此地址并回復(fù)給發(fā)送站A,同時將B站的MAC地址發(fā)送到二層交換引擎的MAC地址表中。從這以后,A向B發(fā)送的數(shù)據(jù)包便全部交給二層交換處理,信息得以高速交換。由于僅僅在路由過程中才需要三層處理,絕大部分數(shù)據(jù)都通過二層交換轉(zhuǎn)發(fā),因此第三層交換機的速度很快,接近第二層交換機的速度,同時比相同路由器的價格低很多”。
其中的這句話令我郁悶了半天“當發(fā)送站A對”缺省網(wǎng)關(guān)“的IP地址廣播出一個ARP請求時,如果三層交換模塊在以前的通信過程中已經(jīng)知道B站的MAC地址,則向發(fā)送站A回復(fù)B的MAC地址。否則三層交換模塊根據(jù)路由信息向B站廣播一個ARP求”。
分析:既然A和B不在同一個網(wǎng)段,A發(fā)送ARP請求網(wǎng)關(guān)的MAC地址,怎么三層交換機就返回了B的MAC地址呢?
分析上面這段文章,筆者認為這種觀點違背了主機與缺省網(wǎng)關(guān)通信的基本原理。文章提到“當發(fā)送站A對”缺省網(wǎng)關(guān)“的IP地址廣播出一個ARP請求時,如果三層交換模塊在以前的通信過程中已經(jīng)知道B站的MAC地址,則向發(fā)送站A回復(fù)B的MAC地址。否則三層交換模塊根據(jù)路由信息向B站廣播一個ARP 請求”。實際上,A站向三層交換模塊發(fā)送網(wǎng)關(guān)IP地址的ARP請求時,ARP請求報文并不包含B站IP地址,三層交換模塊只會把自己IP地址對應(yīng)的MAC 地址回復(fù)給A站,根本不會向發(fā)送站A回復(fù)B的MAC地址。這是錯誤之一。
退一步說,即便三層交換模塊回復(fù)B站的MAC地址,由于B站和A站不在同一子網(wǎng),A站也不會把B站的目的MAC地址封裝在A站要發(fā)送的以太網(wǎng)幀中。這是錯誤之二。
再者,三層交換模塊接收A站發(fā)送到B站的以太網(wǎng)幀,三層交換模塊從以太網(wǎng)幀的IP包中提取B站的IP地址,通過查找路由表,尋找到B站的下一跳,若B站與第三層交換機某一接口在同一網(wǎng)段,第三層交換機向B站IP地址廣播ARP請求,從B站的ARP應(yīng)答中可得知B站的MAC地址;若B站與三層交換機某一接口不在同一網(wǎng)段,中間相隔了好幾跳,三層交換模塊只會向下一跳IP地址廣播ARP請求,下一跳ARP應(yīng)答的應(yīng)是下一跳IP地址的MAC地址,三層交換模塊無從得知B站的MAC地址。這是錯誤之三。
要達到“路由一次,處處交換”或“基于目的MAC地址的第二層交換”的目的,必須改變現(xiàn)存主機與缺省網(wǎng)關(guān)的通信機制或第三層交換機的路由規(guī)則,換句話說,以一種新的主機與缺省網(wǎng)關(guān)的通信機制替代現(xiàn)有的通信機制。就像前面描述的3Com公司的快速IP技術(shù)一樣。實際網(wǎng)絡(luò)中主機和第三層交換機都工作得很好,無需主機做任何改變,也無需改變原有的網(wǎng)絡(luò)設(shè)施。在第三層交換機替代傳統(tǒng)路由器的場合,子網(wǎng)間的流量轉(zhuǎn)發(fā)性能卻得到了空前的提高。這并不是改變了交換機對三層報文轉(zhuǎn)發(fā)機制的結(jié)果,即“路由一次,處處交換”或“基于目的MAC地址的第二層交換”的結(jié)果,而是第三層交換機基于硬件快速轉(zhuǎn)發(fā)三層報文的結(jié)果。