VLAN間通訊之多臂路由

我們知道,對於二層交換機來說,所有埠都處於同一個廣播域中,也就是交換機無法隔離廣播域,並且在一個廣播域中,裝置之間在通訊的時候,會有許多的廣播包,比如,ARP廣播包,DHCP廣播包,還有交換機的工作機制,對於目的MAC地址未知的單播幀,對於組播和廣播幀,交換機都是執行的是泛洪廣播。所以就帶來了問題,第一個就是,有很多廣播資訊,其他的裝置是不需要的,這樣收到了這些廣播資訊,就帶來了裝置資源的浪費,鏈路頻寬的浪費,這一類廣播包是垃圾資料包。第二個就是沒有必要收到廣播資料包的裝置,我收到了,這樣就給資料安全帶來一定的風險,也就是不利於資料的安全。所以為了控制廣播包的泛洪範圍,為了控制廣域的大小,我們可以藉助於劃分VLAN來隔離廣播域。但是這樣又帶來一個問題,咱們把資料報隔離了,那如果不同的VLAN之間需要通訊怎麼辦,比如說,一個財務部,一個行政管理部,如果咱們把他們劃分為不同的VLAN,但是我們之間在有些時候又需要通訊應該怎麼辦?我們知道VLAN和TRUNK,都是二層,二層技術能不能實現廣播域的通訊?他是不能的,我們劃分VLAN就是為了控制二層的通訊,但是有時候又需要VLAN間進行通訊。如果在VLAN間通訊,需要三層裝置,需要建立IP路由,以IP路由得方式來連線不同的VLAN。為什麼VLAN之間不能通訊,是因為二層幀帶有TAG標記,如果想通訊,可以彈出TAG標記,還原成原始幀就可以通訊了,也可以彈出之後再封裝成要去的VLAN區域,也可以剝離二層頭部,只剩下三層結構,然後進行三層路由。

在模擬器上搭建一個多臂路由的拓撲結構,

VLAN間通訊之多臂路由

如果沒有三層裝置,PC1和PC4 之間是無法進行任何通訊的,這是因為PC1和PC4屬於不同的VLAN,所以它們之間無法進行二層通訊的,所以只有透過三層通訊才能達到資料的互聯互通,假設沒有路由器,它們之間是無法通訊的。

那麼如何在PC1和PC2之間實現三層通訊呢,方法之一就是引入一臺路由器。路由器的實質就是在不同的二層網路(二層廣播域)之間建立起三層通道。不同的VLAN其實就是不同的二層網路(二層廣播域),所以路由器當然也可以在不同的VLAN之間建立起三層通道。

如圖所示,咱們引入了一臺路由器R,需要注意的是,與PC和路由器都是不能傳送和接收TagedVLAN幀的,所以對應的交換機介面屬性咱們全部設定的是ACCESS介面,另外在配置主機的時候,閘道器地址就是和路由器相連的介面IP地址。從圖中咱們可以看到,路由器R分別從G1/0/0和G2/0/0各自引出了一條物理鏈路,每條物理鏈路可以被形象地稱為路由器的一條手臂,所以這裡的路由器R也常常被形象的稱為多臂路由器或雙臂路由器。

下面咱們來看看PC1 和PC4 之間是如何透過多臂路由進行通訊的。

在通訊的時候,咱們知道目的IP地址就是PC4的ip地址就是192。168。200。40,源IP地址是192。168。100。10,這時候在IP層要進行判斷是否是直連通訊。怎樣進行判斷?目的IP地址192。168。200。40和自己的掩碼24位進行相與,然後判斷和自己的IP地址192。168。100。10是否在一個網段,如果不是在一個網段就會將資料扔給閘道器192。168。100。1;於是資料報會下發給PC1介面的二層,封裝成資料幀,此時資料幀是個原始幀,源MAC地址是PC1介面的MAC地址,目的MAC地址是閘道器192。168。100。1對應的MAC地址,當然,在填充之前要先查詢ARP快取表,如果快取表中有對應的條目則進行封裝,如果快取表中沒有對應的條目則傳送ARP廣播,去查詢閘道器的MAC地址,把MAC地址存入快取表,然後再進行幀欄位的填充,成的幀是一個原始幀,沒有TAG標記,這時候,資料幀從PC1的介面傳送出去,交換機SW2的介面GE0/0/11收到這個資料幀之後,因為介面屬性為ACCESS介面,所以,會給幀打上vlanid為10的TAG標記,這個幀咱們稱之為TAG幀,這時候資料幀到達了交換機SW2,它怎麼樣進行轉發呢,根據交換機的轉發工作原理,收到的是一個單播幀,要依據MAC地址表進行資料幀的一個轉發,這個時候,如果MAC地址表是空的,那麼要對這個單播幀進行泛洪轉發,同時進行MAC地址條目的學習。怎麼樣泛洪?朝SW2的G0/0/2和G0/0/12進行泛洪,其中G0/0/12是出於相同的VLAN域,G0/0/2是TUNK幹道,是不是這樣泛洪啊?是向他的所有處於同一個VLAN域內的其它埠和TRUNK幹道泛洪。如果MAC地址表有該條目,則直接按照MAC地址表的對應的介面進行轉發。

SW1的GE0/0/12收到了這個幀,同樣如果MAC地址表中有該條目,則直接按照MAC地址表對應的介面進行轉發,如果沒有則泛洪轉發,這樣資料幀就從SW2的GE0/0/2口傳送到SW1的GE0/0/12口,然後轉發給SW1的GE0/0/1口,注意從GE0/0/1口發出的時候,由於埠屬性是ACCESS,所以發出的幀剝離掉了TAG,是一個原始幀。

路由器的G0/0/1口收到SW1轉發過來的原始幀後,或稱之為UNTAG幀,會將原始幀的目的MAC地址與自己的MAC地址進行比較,由於這兩個MAC地址是相同的,所以R的G0/0/1 介面匯根據這個幀的型別欄位值OX0800將這個幀的資料載荷上送給R的三層IP功能模組。R的IP模組收到報文之後,(這個時候的報文就是二層的資料載荷),會根據報文的目的IP地址192。168。200。40查詢自己的IP路由表。然後路由器會根據路由表,將報文從R的出介面G0/0/1,下一跳為G0/0/1的IP地址,傳送出去。(因為報文要去往的目的網路是和G2/0/0介面直接相連的)。

於是根據路由的指示,報文會被下發給R的G0/0/1介面,並被封裝成一個幀。這個幀的載荷資料就是轉發過來的報文,該幀的型別欄位的值為0X0800,源MAC地址為G0/0/1的介面MAC地址,目的MAC地址為目的IP地址192。168。200。40對應的MAC地址,(如果R在自己的ARP快取表中查詢不到IP地址192。168。200。40所對應的MAC地址,就應該透過G0/0/1介面向外傳送ARP請求來獲得該MAC地址),這時的幀為一個原始幀,是一個不帶TAG的幀。

R透過G0/0/1介面將原始幀傳送出去,這個幀從SW1的G0/0/2進入SW1內部後,會被新增上VLAN20的TAG,並且這個TAG幀會被SW1轉發至SW3,SW3會將TAG幀的TAG去掉,然後將他從自己的G0/0/14埠轉發出去。

PC4的E0/0/1 介面在收到S3轉發過來的UNTAG幀以後,會將UNTAG幀的目的MAC地址與自己的MAC地址進行比較。由於MAC地址相同,所以PC4的E0/0/1 介面匯根據這個幀的型別欄位值0X0800 將這個幀的資料載荷上送給PC4的位於三層的IP模組。

至此,源於PC1的三層IP模組的IP報文便成功地到達了PC4 的三層IP模組。屬於不同VLAN的PC1 和PC2成功的進行了一次三層通訊。

在該網路拓撲中,路由器R與交換機SW1之間存在一個物理環路,如果沒有劃分VLAN,同時假設所有交換機都沒有執行STP,那麼,當PC1傳送一個廣播幀後,這個廣播幀會因為R與SW1之間的物理環路而導致廣播風暴的產生嗎?正確的答案是不會產生廣播風暴。