亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.430618.com 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

前言

曾經開發了二層交換機,對交換芯片的vlan處理比較熟悉,對vlan的原理自認為也是理解深刻;但是當進行到防火墻時,突然發現又不理解vlan了!

于是開始重新學習linux的vlan和橋接,更是發現不了解其含義和實現了;于是有了下面的學習結果。

關于一些基本的概念(如廣播域 沖突域 vlan)就不做說明了。

以下內容摘抄自網上資料,出處用參考標記出來,方便大家參考,網上內容相對零散,為了方便由淺入深的方便理解,根據我自己學習過程,做了梳理。

第一回 基于vlan的二層交換轉發原理

參考: https://www.jianshu.com/p/c930913948a8

普通轉發流程

交換機的二層轉發涉及到兩個關鍵的線程:mac地址學習流程和報文轉發流程。

MAC地址學習流程

  1. MAC的學習:交換機接收網段上的所有數據幀,利用接收數據幀中的源MAC地址來建立MAC地址表;
  2. MAC的漂移:交換機如果發現一個包文的入端口和報文中源MAC地址的所在端口不同,就產生端口移動,將MAC地址重新學習到新的端口;
  3. MAC的老化: 如果交換機在很長一段時間之內沒有收到某臺主機發出的報文,在該主機對應的MAC地址就會被刪除,等下次報文來的時候會重新學習。

二層報文轉發流程:

  1. 已知單播-轉發:交換機在MAC地址表中查找數據幀中的目的MAC地址,如果找到,就將該數據幀發送到相應的端口
  2. 未知單播-泛洪:如果找不到,就向入端口以外的其它所有端口發送;
  3. 同端口-不轉發:如果交換機收到的報文中源MAC地址和目的MAC地址所在的端口相同,則丟棄該報文;
  4. 組播和廣播-泛洪:交換機向入端口以外的其它所有端口轉發廣播報文。

上面流程是簡單的橋交換流程,增加了VLAN以后,所有流量都在VLAN內部交換。目前的二層交換芯片都支持vlan,如果想對二層轉發有更深入了解,當然是閱讀某些二層交換芯片的手冊。

參考:https://blog.csdn.net/weixin_42096901/article/details/104802047

基于vlan轉發流程

基于Vlan的二層轉發流程主要包括:確定和查找Vlan、查找和學習源MAC、查找目的MAC并轉發數據幀。

1) 確定和查找Vlan:交換機端口接收到一個數據幀時,首先通過TPID值判斷該幀是否帶標簽。

若是tagged幀,且Vid≠0,則在端口所屬的Vlan表中查找該幀標簽中的Vid是否存在,若存在,則進入下一步,否則丟棄該幀(或提交CPU處理);

若是tagged幀,且Vid=0(即priority幀),則對該幀附加端口PVid(默認vlan)使之成為tagged幀;

若是untagged幀,則對該幀附加端口PVid并指定優先級使之成為tagged幀。

注:

①為提高處理效率,交換機內部所有數據幀均攜帶Vlan標簽,以統一方式處理。故需對輸入交換機的數據幀進行標簽檢查并按需加上標簽。

②802.1Q Vlan環境下,幀可分為tagged、untagged和priority-tagged三種。Tagged幀根據其攜帶的標簽Vid進行MAC學習轉發。Untagged和Priority-tagged幀進入交換機端口后根據PVid進行MAC學習轉發。

2) 查找和學習源MAC:交換機在MAC轉發表(Mac+Vid+Port)中查找收幀Vid對應的源MAC表項,未找到則學習收幀源MAC (將“源MAC+Vid+Port”添加到MAC表中); 若找到則更新該表項的老化時間。

注:MAC地址學習只學習單播地址,對于廣播和組播地址不進行學習。組播MAC表項通過CPU配置建立。

3) 查找目的MAC:若目的MAC是廣播或組播,則在所屬的Vlan中廣播或組播;否則在MAC表中查找是否存在Vid對應的目的MAC表項。

4) 轉發數據幀:若在MAC表中查找到完全匹配的DMAC+Vid表項,則將該幀轉發到表項中的相應端口(若相應端口為收幀端口,則應丟棄該幀);否則向所屬Vlan內除收包端口外的其他所有端口洪泛該幀(洪泛廣播的是未知單播幀而不是廣播幀)。

vlan詳解之二層三層轉發原理

 

二層交換機轉發流程實例

數據幀從PC1經過一臺交換機轉發到與另一臺交換機相連的PC2并得到響應,如下圖所示。

vlan詳解之二層三層轉發原理

 

PC1向PC2發送信息

假設兩臺交換機剛剛開機(此時MAC地址表為空),其具體的轉發過程如下:

①PC1發出的數據幀進入交換機SW1的Access端口后,按照端口PVid加上Vid=100的標簽。交換機將該幀源MAC地址存入MAC地址表(學習),并將該幀洪泛到Vid=100的所有端口(除入端口外);

②SW1的Trunk端口屬于Vid=100的Vlan,故接受這個標記為100的Tagged數據幀;而該端口在Vid=100上為Tagged port,因此在發送數據幀出交換機SW1時,不改變Tagged幀的結構;

③Tagged幀到達交換機SW2的Trunk端口,由于Trunk端口擁有VID=100的Vlan,故接受該幀;該Trunk端口不改變Tagged幀的結構,而是學習源MAC地址后把該數據幀洪泛給所有Vid=100的端口(除入端口外);

④SW2的Access端口接收到該幀,剝除該幀的Tag標簽后發送給PC2。

⑤PC2收到PC1發送的數據幀,并發送響應幀給PC1。

⑥經過與前述過程類似的轉發,響應幀到達交換機SW1。交換機發現該幀的目的MAC地址已在MAC地址表中,則僅轉發給PC1。

可見,收發雙方同屬一個Vlan的通信,一切處理均在二層網絡內完成。

第二回 vlan技術續

參考: https://blog.csdn.net/z429831417/article/details/50498072

vlan技術及產生背景

在交換式以太網出現后,同一交換機的所有端口處于不同的沖突域,工作效率得到了很大的提高,但是所有端口處于同一廣播域,導致一臺計算機發出廣播幀,局域網中所有的計算機都能夠接受到,使局域網中有限的網絡資源被無用的廣播信息所占用。

vlan詳解之二層三層轉發原理

 

在如上圖中的網絡拓撲,PCA發出一個廣播幀,二層交換機所有的端口處于同一廣播域,那么交換機會把該數據幀從除收到該數據幀的端口以外的所有端口都進行發送,導致全網充斥這廣播報文,如果一臺計算機發出的廣播報文是100Kbps,那么10臺將會達到1000Kbps,那么100臺1000臺呢?是不是導致無用信息大量的占用著網絡資源,嚴重的時候可能會導致交換機死機,從而影響該局域網的通信,所以如何限制廣播域的傳播范圍成了一個急需解決的問題。

以太網處于TCP/IP協議棧的第二層,二層上的本地廣播幀是不能被三層設備路由器轉發的,使用路由器可以解決廣播幀的傳播范圍,但是路由器也存在著弊端,一個是路由器的價格比交換機的價格昂貴,是種不經濟的解決方案;二個路由器的端口較少,一個局域網一個端口,如果需要隔離的局域網較多,那么路由器會應付不過來;三個是在大部分中低端路由器上使用軟件轉發,轉發性能并不高,容易造成性能瓶頸,所以用路由來隔離廣播是個高成本低性能的方案。

后來IEEE協會專門制定了一個802.1Q的協議標準,這就是VLAN技術,VLAN就是在一物理LAN內劃分出多個虛擬LAN的,每個VLAN是一個廣播域,這就縮小了廣播域的范圍,各個VLAN之間不能直接通信

我們現在來說一下VLAN有哪一些優點,

一是可以有效的控制廣播域的范圍,前面說了每個VLAN是一個廣播域,VLAN之間隔離廣播域;

二是VLAN 不受物理位置的閑置,可以靈活的構建工作組;

三是各個VLAN之間不能直接進行通信,增強了局域網的安全性;

四是增強了網絡的健壯性,各個VLAN是獨立了,一個VLAN出了問題不會影響其他的VLAN,縮小了故障范圍

VLAN的作用是用來隔離廣播域,那我們在實際的操作中是如何來劃分VLAN呢?

下面我們就逐一來講四個基本的VLAN 劃分方法;

第一個是利用端口來劃分VLAN,這個是我們現在最常用的VLAN 劃分方法,該方法就是把交換機的各個端口按照需要劃分到不同VLAN 里面去,這是最簡單也是最有效的劃分方法;二層交換機基本是使用改方法;

第二個是利用MAC地址來劃分VLAN,該方法就是利用主機的MAC地址建立一個與VLAN的映射關系,形成一個映射表,這種方法的優點就是當用戶的物理位置移動時,其所處的VLAN 不會發生變化,靈活性比較高,但是前期的工作量非常大,技術人員得一一去收集MAC地址,然后建立一個映射關系;這種方法在現在的網絡環境里,好像不會見到了。

第三個是利用協議來劃分VLAN,不同的協議處于不同的VLAN,比如IP協議映射到vlan1,ipx協議映射到vlan2,交換機通過識別協議標簽來自動劃分到不同的VLAN,但是在現在的網絡環境中用的最多的還是IP協議,運行其他協議已經非常少了;所以這種方法,在現在網絡環境里應該不會見到了。

第四個方法就是基于子網劃分,基于子網劃分的就是利用報文中源IP地址以及子網掩碼作為劃分依據,交換機根據收到的報文中的源IP地址找到交換機已經存在的對應關系,然后自動轉發到對應的的VLAN中,這種方法的劃分方式比較靈活,用戶移動位置也不需要重新配置,但是這種方法也不是很完美,因為為了判斷用戶的屬性,必須逐一檢查數據包網絡層的地址,這建耗費交換機不少資源;綜合以上幾種劃分方法的優缺點來看,基于端口劃分是普遍的也是目前所有交換機都支持的VLAN 劃分方法。

vlan轉發技術原理

我們現在來看一下VLAN的轉發技術原理,在以太網交換機中是根據目的MAC地址來查MAC地址表進行數據幀的轉發,MAC地址表中包含了MAC地址與端口的一個對應的關系,當交換機收到一個數據幀的時候,交換機會查看該數據幀中的目的MAC地址,如果是一個單播幀,交換機會查表從對應的端口轉發出去,如果是廣播地址,那么交換機會從除收到該廣播幀的以外的所有端口發送出去;但是在VLAN 技術中,交換機在數據幀中加上一個標簽,然后交換機在查表的過程之外還要檢查端口上的標簽是否匹配,交換機只會在屬于這個標簽的端口上進行轉發,如果不是就不進行轉發操作

vlan詳解之二層三層轉發原理

 

上圖就是一個帶IEEE802.1Q標記的以太網幀格式,我們現在重點來看中間的tag字段,tag字段總共占四個字節,其中TPID(標簽協議標識)和TCI(標簽控制信息)各占兩個字節;TPID是什么?TPID是IEEE定義的新的類型,標識這是一個封裝了802.1Q標簽的幀,其中就包含了一個固定的值0x8100。后面的TCI又包含了三個字段。分別是priority(優先級)、CFI、VLAN ID;priority占3位,指定幀的優先級,一共有8種優先級,從0-7;CFI占1為,當這個值為0時說明這是一個規范格式,為1時是非規范格式,它在令牌環網、FDDI網絡中來指示封裝幀中所帶的地址的比特次序;VLAN ID字段占12位,指明該數據幀所在的vlan編號,VLAN的編號共4096個,但是0和4096兩個值保留,所以可用的也就4094個,其中的vlan 1是交換機的默認vlan

我們看完了802.1Q的幀格式,現在再來看看vlan的標簽是怎么打上去的。

vlan詳解之二層三層轉發原理

 

當PCA發送一個數據幀到交換機時,這個時候是不帶標簽的,當這個數據幀到達交換機的端口時,交換機給這個數據幀打上一個默認的標簽(默認vid),等這個數據幀要離開這臺交換機的時候,交換機又會把這個標簽去掉,這就是一個單標簽的操作過程,在整個數據轉發的過程中對終端主機來說是透明的,交換機如何進行vlan劃分主機是不知道的,也不需要主機去了解,所有的打標簽和去標簽都交由交換機處理,這就是單標簽的一個操作過程

看完標簽操作過程后我們來了解下三種鏈路類型,分別是access、trunk、hybrid

Access一般是用在連接用戶設備的那一端,只允許缺省vlan通過,僅接收和發送一個vlan的數據幀,這也就是我們前面所說的單標簽交換過程;看上圖,PCA發送一個數據幀個PCC,交換機收到該數據的時候把這個數據幀打上vlan 10的標簽,然后進行查表操作,把數據幀發送到與PCC連接的端口的時候就會把這個VLAN 10的標簽去掉。

訪問鏈接(Access Link,或者Access類型端口),指的是“只屬于一個VLAN,且僅向該VLAN轉發數據幀”的端口。在大多數情況下,訪問鏈接所連的是客戶機。

在access鏈路類型中是不是一次只能允許一個vlan通過?那我如果一次要允許多個vlan通過,那么這個access鏈路類型是不是就行不通了?這也就有了我們第二個鏈路類型,trunk鏈路類型

vlan詳解之二層三層轉發原理

 

Trunk,匯聚鏈接(Trunk Link),指的是能夠轉發多個不同VLAN的通信的端口;匯聚鏈路上流通的數據幀,都被附加了用于識別分屬于哪個VLAN的標簽。

看上圖,兩臺交換機中間只有一條鏈路,但是兩個交換機之間要同時傳遞vlan10和vlan20兩個標簽,我們現在用前面的access肯定不行了吧,這個時候我們用trunk來看是怎么操作的,PCA發送一個數據幀給SWA,SWA收到后打上10的標簽,然后查表通過E1/0/24端口發送SWB,在發送給SWB的時候不做任何操作,原封不動的傳給SWB,SWB收到后再進行查表,然后發送到vlan10對應的端口E1/0/1進行去標簽的操作,最后把去掉標簽的數據幀發送給PCC,PCB和PCD進行通信也進行相同的操作,不過默認幀是個例外發送默認幀時,trunk會去掉默認vlan的標簽;同樣,交換機從trunk收到不帶標簽的幀時會打上默認vlan標簽;我們除了學完access鏈路類型和trunk類型以外,還有第三種鏈路類型hybrid,

Hybrid,混合鏈路(Hybrid Link)這是華三的一個私有的鏈路類型,hybrid端口可以接收和發送多個VLAN的數據幀,同時還能對任何vlan幀進行去標簽的操作

vlan詳解之二層三層轉發原理

 

看上圖,PCA發送一個數據幀給PCC,當交換機收到PCA發來的數據幀時會打上10的標簽,然后交換機進行查表操作,發送到PCC的端口,交換機進行去標簽的操作的時候會檢查untag,在untag表項中可以去掉帶標簽10、20、30的數據幀,所以很方便的就去掉了數據幀;這時PCA又發送一個數據幀給PCB;當交換機收到PCA發來的數據幀時會打上10的標簽,然后交換機進行查表操作,然后發送到PCB的端口,交換機進行去標簽的操作的時候會檢查untag,但是此時untag表項中只有20和30,也就意味著該端口只能去掉帶標簽20和30的數據幀,這是交換機無法去掉標簽,所以只能把該數據幀丟棄

通過本回的學習我們知道了vlan的作用就是在局域網中限制廣播的傳送范圍,以及如何劃分vlan,我們可以基于端口、子網、協議、MAC四種vlan劃分方法來劃分vlan,還有access、trunk、hybrid三種鏈路類型的應用場景,以及它們是怎么對標簽操作的,access是進口打標出口解標;trunk可以同時允許多個VLAN幀通過,不對標簽做任何操作,但是發送帶默認標簽的數據幀時會解標,收到不帶標簽的數據幀會打上默認標簽;hybrid可以同時接收和發送多個VLAN的數據幀,同時還能對任何vlan幀進行去標簽的操作

參考:https://www.cnblogs.com/xieyunc/p/9784041.html

注意,Access、Trunk和Hybrid端口是廠家對某種端口的稱謂,并非IEEE802.1Q協議標準定義。

Access端口只屬于一個Vlan,PVid就是其所在Vlan,故不用設置;Trunk和Hybrid端口屬于多個Vlan,故需要設置PVid(缺省為1)。若設置端口PVid,則當端口收到不帶Vlan Tag的數據幀時,對該幀加上Tag標記(Vid設置為端口所屬的默認Vlan編號)并轉發到屬于PVid的端口;當端口發送Vlan Tag的數據幀時,若收幀的Vlan Tag和端口PVid相同,剝除Vlan Tag后再發送該幀。

Hybrid端口與Trunk端口在接收數據時處理方法相同,區別在于發送數據時:Hybrid端口允許多個Vlan的數據幀發送時不帶標簽,而Trunk端口只允許默認Vlan的數據幀發送時不帶標簽。在同一交換機上Hybrid端口和Trunk端口不能并存,實際使用中可用Hybrid代替Trunk。

本Hybrid端口的PVid和相連的對端交換機Hybrid端口的PVid必須一致。

由于端口類型不同,交換機對幀的處理過程也不同。下表根據不同的端口類型分別介紹。

表2 不同端口類型的Vlan幀處理方式

vlan詳解之二層三層轉發原理

 

第三回 vlan間路由和三層交換轉發原理

簡單的vlan間路由流程

vlan詳解之二層三層轉發原理

 

每一個VLAN有一個端口連接到路由器,所有終端以該路由器為默認網關。并由該路由器完成VLAN間報文的轉發過程。比如10.1.1.1要與11.1.1.1終端通訊。

vlan詳解之二層三層轉發原理

 

單臂路由工作原理

從上面我們看到,如果要通過路由器轉發三層流量,在交換機和路由器之間,每一個VLAN需要有一個鏈路連接,當VLAN很多的時候,這將耗費大量的路由器接口,而路由器接口成本是非常高的。為了節約路由器接口,一個解決方案是路由器支持VLAN子接口。

vlan詳解之二層三層轉發原理

 

VLAN子接口(這里的vlan子接口,后面linux的vlan實現中也會見到)
1. 所謂子接口,就是是通過協議和技術將一個物理接口(interface)虛擬出來的多個邏輯接口。
2. VLAN子接口,就是通過VLAN技術,將一個物理接口,虛擬出多個邏輯接口,
   VLAN子接口上發送的報文,會打上Vlan-tag,用于區分不同的VLAN鏈路。

通過配置路由器上的VLAN子接口,路由器和交換機物理上只需要一個端口連接,通過報文上的VLAN-tag區分不同的邏輯鏈路。這樣節省了大量的端口資源。

參考:https://blog.csdn.net/weixin_42096901/article/details/104802047

將用于連接路由器的交換機端口設為Trunk匯聚端口,而路由器上的端口也必須支持匯聚鏈路。雙方用于匯聚鏈路的協議也必須相同。接著在路由器上定義對應各Vlan的“子接口(Sub Interface)”。盡管實際與交換機連接的物理端口只有一個,但在理論上可將其分割為多個虛擬端口。如下圖所示。

vlan詳解之二層三層轉發原理

 

使用這種Vlan Trunking技術,可使多個Vlan的業務流共享相同的物理連接,通過在匯聚鏈路上傳遞帶標簽的幀來區分各Vlan的流量。通常情況下,Vlan間路由的流量不足以達到鏈路的線速度,使用Vlan Trunking的配置,可提高鏈路的帶寬利用率,節省端口資源以及簡化管理(網絡新增Vlan時只需在路由器上新設一個對應新Vlan的子接口,無需重新布線)

【例】不同Vlan間通信時數據的流程,如下圖所示。

vlan詳解之二層三層轉發原理

 

不同Vlan間通信流程

主機PC1通過通信目標IP地址(192.168.2.1) 與子網掩碼計算比較發現PC2與本機不屬于同一網段,不能直接訪問。根據IP通信規則,PC1查找本機路由表尋找相應的網關。在實際網絡中,主機通常只配置默認網關(Default Gateway,GW),故PC1找到默認網關。然后,PC1在本機ARP高速緩存中查找默認網關(即路由器)的MAC地址,若沒有則向外廣播發送一個ARP請求幀,其目的MAC地址為全1,源MAC地址為本機MAC地址,請求的IP地址為網關192.168.1.100。從路由器返回的ARP單播應答幀中得到路由器MAC地址R后,接下來就按圖中所示的步驟向PC2發送數據幀①,其目的MAC地址是路由器地址R、但目的IP地址仍是最終要通信的對象PC2的地址。

交換機在端口1上收到數據幀①后,檢索MAC地址表中與端口1同屬一個Vlan的表項。匯聚鏈路被視為屬于所有的Vlan,因此端口6也屬于檢索對象。檢索后交換機得知往MAC地址R發送數據幀時,需經過端口6轉發。

從匯聚端口6發送數據幀時,會附加Vlan識別信息。圖中數據幀②被加上原屬的紅色Vlan標簽后,進入匯聚鏈路。路由器收到數據幀②后,確認其Vlan標簽,交由負責紅色Vlan的子接口接收。

接著,根據路由器內部的路由表,判斷該向哪里轉發。由于目標網絡192.168.2.0/24屬于藍色Vlan,且該網絡通過子接口與路由器直連,因此只需從負責藍色Vlan的子接口轉發即可。此時數據幀的目的MAC地址被改成PC2的MAC地址;由于需要經過匯聚鏈路轉發,故附加屬于藍色Vlan的識別信息(數據幀③)。

交換機收到數據幀③后,根據Vlan標簽從MAC地址表中檢索屬于藍色Vlan的表項。由于通信目標PC2連接在端口3上且該端口為接入端口,因此交換機剝除數據幀的Vlan標簽后(數據幀④)轉發給端口3,最終PC2成功收到PC1發來的數據幀。

可見,Vlan間通信時,即使雙方都連接在同一臺交換機上,也必須經過“發送方→交換機→路由器→交換機→接收方”這樣一個流程。在進行三層路由轉發時,數據包IP地址保持不變,MAC地址則在每個節點都會改變

三層交換機

三層交換機的原理模型可以認為是:三層交換機 = 二層交換機+三層路由器 三層交換機既有二層交換單元,內部還有一個三層路由模塊。(原理上可以認為三層交換機就是把一個交換機和一個路由器裝在一個盒子里。雖然原理上我們可以這樣簡單認為,但在具體實現上,特別是報文的轉發流程上,還是有很大差異的。所以三層交換機在轉發性能和成本上都有很大的優勢)

vlan詳解之二層三層轉發原理

 

在三層交換機上,可以在一個VLAN配置三層接口(cisco成為交換機虛擬接口 SVI:switch virtual interface),這個SVI接口就是上面原理模型中的那個路由模塊對應的接口。它具備普通路由器接口的基本特性,比如:

  • 該接口有自己的MAC地址;
  • 在該SVI接口上,我們可以進行標準的三層協議的配置,包括IP地址,路由協議等等。

三層交換機轉發流程

使用VLAN Trunking后,用傳統路由器進行Vlan間路由在性能上存在一定的不足:由于路由器采用通用CPU,轉發完全依靠軟件處理,同時支持各種通信接口,給軟件帶來較大負擔。軟件要處理包括報文接收、校驗、查找路由、選項處理、報文分片等,導致性能不可能很高。就Vlan間路由而言,流量會集中到路由器和交換機互聯的匯聚鏈路部分,該部分容易成為速度瓶頸。

由于Vlan間通信比較簡單,只需查下路由表,所以可將交換機集成查路由表的專用芯片(ASIC),實現二層交換和三層路由的功能集成,即三層交換機(Layer 3 Switch)。

三層交換機的設計基于對IP路由的仔細分析,提取出IP路由中每個報文都必經的簡化過程:

IP路由中絕大多數報文不包含IP選項,因此多數情況下無需處理報文IP選項;

不同的網絡報文長度不同,為支持各種異構網絡的互連,IP實現了報文分片功能,但在全以太網環境中,數據幀(報文)長度固定,因此可裁減報文分片功能;

三層交換機采用與路由器最長地址掩碼匹配不同的方法,使用精確地址匹配的方式處理,有利于硬件實現快速查找;

三層交換機采用Cache方法,將最近經常使用的主機路由放入硬件查找表。只有在該Cache中無法匹配到的條項才通過軟件轉發。這樣,只有每個流的第一個報文通過軟件轉發,其后的大量數據流則在硬件中得以完成,極大提升轉發性能。

三層交換機的內部結構可參照下面的簡圖。

vlan詳解之二層三層轉發原理

 

如圖,內置的路由模塊與交換模塊相同,使用ASIC硬件處理路由。因此,與傳統的路由器相比,可實現高速路由。并且,路由與交換模塊由內部匯聚鏈路連接,可確保相當大的帶寬。

對應到IP網絡模型中,每個Vlan對應一個IP網段,三層交換機中的三層轉發引擎在各網段(Vlan)間轉發報文,實現Vlan之間的互通,因此三層交換機的路由功能通常叫做Vlan間路由(Inter-VLAN Routing)。

使用路由器連接時,一般需要在LAN接口上設置對應各Vlan的子接口;三層交換機則是在內部生成“VLAN接口(VLAN Interface)”,用于各Vlan收發數據。在Cisco的Catalyst系列交換機上,VLAN接口被稱為SVI(Switched Virtual Interface,交換虛擬接口)。三層交換機每創建一個Vlan就會自動生成一個SVI。在SVI接口設置默認網關后,并將主機網關配置成與交換機SVI相同,即可實現不同Vlan間的路由。

使用三層交換機進行Vlan間路由與使用匯聚鏈路連接路由器與交換機相似,即需經過“發送方→交換模塊→路由模塊→交換模塊→接收方”的流程。

交換機的轉發行為主要借助于下面幾張表:

vlan詳解之二層三層轉發原理

 

三層主機路由表相當于【網段路由表+ARP表】的組合,用于加快交換流程。三層主機路由表的生成有兩種方式:

  • 預先生成: 也有些設備只要學習到ARP條目,就自動生成主機路由,并保持主機路由與ARP條目之間的同步與一致性。這種方式對主機路由硬件資源開銷會大一些,但第一個報文就能采用交換方式,性能更高。
  • 按需生成:到達該目的地的第一個報文轉發時,有軟件進行三層轉發后生成。并且該目的地址一定時間內沒有流量將被老化。這就是所謂的“一次路由,多次交換”。
  1. 準備工作: 三層交換機為VLAN配置三層接口IP后,會在交換芯片的MAC地址表中添加三層接口MAC+VID的表項,并且為表項的三層轉發標志(Route標志)置位
  2. 轉發流程
  • 硬件二層交換:

報文進入三層交換機后,首先在交換模塊進行標準的二層交換處理:

根據報文的目的MAC(精確匹配查找),查找二層MAC轉發表: 如果不存在該MAC條目,則在所有端口上進行泛洪處理(廣播組播也會泛洪)。 如果存在該MAC條目,并且該條目沒有Route標志,則進行標準交換轉發 如果該MAC條目上有Route標記,則進行硬件三層轉發。

  • 硬件三層轉發:

根據報文的目的IP地址(精確匹配查找),查找三層主機路由表: 如果存在,直接轉發(TTL--,目的MAC地址進行替換) 如果不存在,則進行標準的軟件三層報文轉發。

  • 軟件三層轉發:

查找目的IP的網段路由(最佳匹配查找), 如果路由不存在,報文丟棄。 如果存在,查找下一跳的ARP表,如果ARP不存在,進行ARP學習。 學習到ARP后,進行報文轉發,并將轉發信息寫入硬件主機路由表, 以后該目的IP的報文就可以通過硬件進行三層轉發了。(這就是所謂的一次路由,多次交換)

實例

假設網絡按圖19連接好后,所有設備均為初始狀態,也未向外發送過任何報文。若PC1已知PC2的IP地址,則可通過ping命令發送ICMP報文來獲知PC1能否到達PC2。以下分析該過程。

vlan詳解之二層三層轉發原理

 

ping流程網絡拓撲

  1. PC1將自身IP和子網掩碼255.255.255.0相與得到網絡號1.1.1.0,將PC2的IP與子網掩碼相與得到網絡號2.2.2.0,得知PC2與自己不在同一網段。于是PC1檢索路由表得到默認網關。PC1欲向網關傳遞信息,但此時PC1中ARP表為空,所以向默認網關(交換機三層接口)發出ARP請求幀,請求網關MAC地址。該幀目的MAC地址為全1,源MAC地址為本機MAC地址,請求的IP地址為網關1.1.1.1;
  2. SW收到ARP請求幀,對其附加端口PVid(10)的標簽;
  3. SW用ARP請求幀的Mac1和Vid10查找MAC轉發表,發現沒有該項,則進行學習,即在表中添加“Mac1—Vid10—Port1”的記錄;并將源IP和MAC的對應關系(“1.1.1.2—Mac1”)記錄到ARP表,表明目的IP為1.1.1.2的數據幀轉發時目的MAC為Mac1,同時需路由到端口Port1;
  4. ARP請求的目的地址是廣播地址,SW將其洪泛到該Vlan的每個端口(除入端口);同時SW自身截獲一份上送CPU(網關),發現是詢問自己的MAC,于是回復ARP單播應答幀,目的MAC為PC1的Mac1,源MAC為網關的MAC地址GwMac1,源IP為1.1.1.1,目的IP為PC1的1.1.1.2;
  5. PC1收到SW發來的ARP應答幀,得到SW三層網關MAC地址,將“1.1.1.1—GwMac1”記錄到ARP表。PC1向SW發送ICMP請求幀,目的IP為PC2的IP(2.2.2.2),目的MAC為網關MAC,源IP和源MAC為PC1的;
  6. SW收到ICMP請求幀,對其附加端口PVid(10)的標簽,然后進行源MAC地址學習,發現二層轉發表有該條目,更新老化時間。因該幀目的MAC地址是網關,SW送交三層路由處理。
  7. 在三層首先檢查IP報文的版本、IP首部檢驗和TTL是否正確,若不正確則標記丟棄并交由CPU處理;正確則在三層主機路由表(又稱L3表)中查找目的IP(即PC2的IP 2.2.2.2)。此時L3表中只包含與自己直連的32位地址(包括自身接口)及步驟⑶中ARP表學習后下發的PC1信息,而找不到PC2的信息。進而按最長前綴匹配算法查找子網路由表(又稱Longest Prefix Match即LPM表)得到2.2.2.1目的網段的條目,下一跳的IP地址為 2.2.2.1;
  8. 索引回L3表查找2.2.2.1,得到該條目,發現要提交CPU處理(CPU也需要看作是一個端口);
  9. CPU沒有到PC2的路由,但PC2的目的IP屬于自己接口地址2.2.2.1的網段,故向接口Vlan20所包含的所有物理端口廣播一個ARP請求幀,源MAC地址為交換機接口的三層MAC地址GwMac2,源IP地址為2.2.2.1,請求IP地址2.2.2.2的MAC地址;
  10. PC2收到ARP請求,學習“2.2.2.1—GwMac2”加入ARP表;并回復ARP應答幀,目的IP為交換機接口Vlan20的IP地址2.2.2.1,目的MAC為交換機接口Vlan20的MAC地址GwMac2;
  11. SW收到PC2發送的ARP應答幀,附加端口PVid(20)后在MAC表中查找“Mac2+Vid20”,沒找到則學習源地址,在MAC轉發表中添加PC2相關記錄。因該幀目的MAC為網關地址,故提交三層處理;
  12. 三層首先檢查報文正確性,無誤則在L3表中查找目的IP。由于目的IP為本機,故上送CPU處理。CPU對報文處理后得到“2.2.2.2—Mac2”將相關信息加入ARP表(CPU下發給L3表進行記錄)。
  13. PC1向SW發送的第一個ICMP請求幀存儲在內存中,此時交由CPU進行IP報文頭部修改(TTL減1,FCS重新計算封裝)和MAC封裝(目的MAC地址改為PC2的MAC地址,源MAC地址改為SW三層MAC地址)并發送給PC2,如果超時則丟棄,CPU發送ICMP超時給PC1;
  14. PC2收到PC1發來的ICMP請求后,回復ICMP應答幀,目的IP為PC1的IP 1.1.1.2,同樣PC2發現該地址和自己不在同一子網,需要網關進行轉發。之前PC2已學習到交換機接口Vlan20的ARP,此時根據該ARP將ICMP應答幀目的MAC地址填為網關MAC地址GwMac2發送出去。交換機收到幀后,發現目的MAC地址是網關地址,取出幀中的目的IP地址1.1.1.1查找路由。之前交換機已學習到該IP的路由,所以會查找到主機路由表中相應的路由并將幀目的MAC地址換成Mac1,源MAC地址換成網關MAC地址GwMac2,發送到端口Port1上。最終,PC1就收到PC2的ICMP應答。
  15. 經過以上流程后,PC1和PC2分別學到各自網關接口的ARP,交換機也有了分別到達PC1和PC2的路由。后續的報文不再通過路由,而直接由L3表中對應的表項進行硬件轉發。

至此,基于vlan的二層三層轉發原理就基本清楚了,后面將開始研究linux的vlan實現了!linux的vlan原理,明白了linux的實現思路,大有益處。

分享到:
標簽:vlan
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定