三層交換器的結構:ASIC晶片和CPU
ASIC晶片用於完成二層和三層的轉寄,內部包含用於二層轉寄的MAC地址表和用於IP轉寄的三層轉寄表。
CPU用於轉寄的控制,主要維護一些軟體表項(包括路由表,ARP表),並根據軟體表項的轉寄資訊來配置ASIC的硬體三層轉寄表。
真正決定高速轉交換轉寄的是ASCIC的二三層硬體表項,而ASIC的硬體表來源於CPU維護的軟體表項。
假設A和B處於兩個不同網段的不同VLAN,中間通過三層交換器的SVI介面(交換器虛擬介面Switch
Virtual Interface)進行路由轉寄。
A ping B資料流分析如下:
主機A檢查目標B的IP地址,與自己不在同一個網段,因此需通過網關轉寄,首先查詢ARP緩衝,沒找到網關的MAC,所以廣播ARP請求(目標MAC為全F,源MAC為A的MAC,源IP為A的IP,目標IP為網關IP),請求網關的MAC地址,三層交換器收到後,發現是廣播幀,進行解鎖裝,發現目標IP是給自己的,所以返回ARP應答,把自己的MAC告訴A,A收到ARP應答後,更新ARP緩衝,再重新封裝ICMP(目標MAC為網關,源MAC為A,目標IP為B,源IP為A),交換器收到以後,首先根據報文的源MAC+VID更新MAC表,根據報文的目的MAC+VID進行查MAC表,發現匹配自己的三層介面的MAC表項(說明:三層交換器給分配SVI的IP地址時,會在交換器的MAC表項中添加三層介面的MAC+VID),當報文中的目的MAC與這個三層介面的MAC表項匹配時,就進行三層轉寄,尋找三層表項,因為第一次是空的,所以尋找失敗,於是將報文交給CPU進行軟體處理,CPU根據目標IP進行尋找路由,匹配到一個直連網段,於是尋找ARP表,第一次還是空的,所以尋找失敗,則在目標網段進行廣播ARP請求B的MAC地址,B收到後給出ARP應答,交換器收到應答,更新MAC表和ARP表,同時重新封裝ICMP發送給B(目標MAC為B,源MAC為三層交換介面的MAC,目標IP為B,源IP為A)。同時,交換器的三層表項根據剛剛得到的三層轉寄資訊添加表項(包括IP,MAC,VLAN,出介面),這樣後續的報文如果匹配三層表項,就可以直接進行硬體轉寄了,這樣就叫做“一次路由多次交換”。B收到後給出ICMP應答,就是以上過程的逆過程,所以PING通了。