一、vlan概念
??vlan奏纪,即virtual lan鉴嗤,中文全稱是虛擬局域網(wǎng),是一種將一個物理上的局域網(wǎng)進一步劃分為多個邏輯上的局域網(wǎng)(即虛擬局域網(wǎng))的技術序调,劃分之后每一個邏輯上的虛擬局域網(wǎng)都是一個個獨立的廣播域醉锅。
二、vlan作用
??首先发绢,一個局域網(wǎng)內就是一個廣播域硬耍,也就是說廣播報文或者目的不明的單播報文(這里的廣播和單播都是指的二層廣播和單播)將會被發(fā)送到該局域網(wǎng)內的所有主機上。
??如圖2-1所示边酒,一個二層交換機下面接了4個主機经柴,那么這4臺主機就組成了一個局域網(wǎng),也就是一個廣播域墩朦。從任意一臺pc發(fā)出的廣播或者目的不明的單播報文從交換機端口進入后坯认,便會被交換機轉發(fā)至除源端口之外(其實源端口也會發(fā)送,但是會被丟棄掉)的所有端口,那么其他3臺主機都將會收到此報文牛哺。這個過程稱之為交換機的"洪泛"陋气。
??正是因為交換機的洪泛,所以當出現(xiàn)廣播報文時引润,廣播報文會占用局域網(wǎng)的大量帶寬巩趁,從而影響整個局域網(wǎng)內的正常報文的通信。而廣播報文在局域網(wǎng)中也是經常會出現(xiàn)的淳附,例如arp請求议慰、dhcp等都是廣播報文。
??vlan技術的提出奴曙,很好地解決了這個問題别凹,通過劃分vlan,從而將廣播流量從原先的整個局域網(wǎng)內控制在一個vlan內缆毁,避免了很多不必要的帶寬浪費番川。同時到涂,vlan技術也能夠起到隔離和區(qū)分不同用戶流量的作用脊框。如圖2-2所示,紅藍兩種顏色代表在原來局域網(wǎng)上進一步劃分出的兩個vlan践啄,而廣播報文只會在vlan內轉發(fā)浇雹,絕對不會跨越不同vlan進行轉發(fā),從圖上來說屿讽,就是從紅色端口進入的廣播報文不可能會被轉發(fā)至藍色端口出去昭灵,而只會轉發(fā)至其他所有的紅色端口上。
三伐谈、vlan報文格式
??前面知道了vlan可以用來在局域網(wǎng)中劃分出不同的廣播域烂完,下面來介紹下vlan如何實現(xiàn)廣播域的劃分的,也就是vlan的原理诵棵。
??首先來溫習一下以太網(wǎng)幀的格式抠蚣,如圖3-1所示。以太網(wǎng)幀頭部由目的mac地址履澳、源mac地址和type類型字段組成嘶窄,其中類型字段主要是為了標識承載的上層協(xié)議類型,例如上層是IPv4協(xié)議時距贷,type值就是0x0800柄冲,對于IPv6協(xié)議就是0x86dd。這些字段用wireshark隨便抓個報文就可以看到了忠蝗。
??將局域網(wǎng)劃分為多個vlan以后现横,那么如何去標識局域網(wǎng)內不同的vlan呢?就拿圖2-2來說,紅藍兩種顏色只是為了方便理解所畫出來的戒祠,在真實的交換機上可不是有紅藍兩種顏色的端口用來區(qū)分出不同的vlan晦攒。所以為了標識不同的vlan,引入了vlan id(就是個數(shù)字)的概念得哆,比如說圖2-2中紅色vlan的vlan id為10脯颜,藍色vlan的vlan id為20,那么就可以用vlan 10來代表紅色vlan贩据,用vlan 20來代表藍色vlan栋操。
??光是引入vlan id的概念還不夠,必須還要在報文中體現(xiàn)出來饱亮,因為網(wǎng)絡設備處理的對象都是報文矾芙,只有報文中攜帶了vlan id,網(wǎng)絡處理報文的時候才知道該報文是屬于哪一個vlan近上,然后根據(jù)不同的vlan采用一些不同的處理剔宪。所以就有了IEEE 802.1Q標準的帶有vlan tag的以太網(wǎng)幀格式,格式如圖3-2所示壹无。
??從圖3-2的格式可以看出葱绒,相比于標準以太網(wǎng)格式,IEEE 802.1Q標準在以太網(wǎng)幀格式中增加了4字節(jié)的vlan tag標簽斗锭,vlan tag可以分為兩部分:
- TPID(Tag Protocol Identifier)地淀,占用2個字節(jié)。為了讓處理報文的設備能夠識別出這是一個帶有vlan tag的報文岖是,所以這個字段不可以和以太網(wǎng)幀格式的type類型字段的值有沖突帮毁,IEEE 802.1Q標準將這個字段固定取值為0x8100。
- 一部分是TCI(Tag Control Information)豺撑,占用2個字節(jié)烈疚。這個部分還可以進一步細分為三個小部分。
- pri字段:IEEE.802.1p標準定義的優(yōu)先級字段聪轿,占3bit爷肝,取值范圍為0~7,并且值越大屹电,優(yōu)先級越高阶剑。
- cfi字段:標識是否為規(guī)范格式,占1bit危号,取值范圍為0~1牧愁。在以太網(wǎng)中,此值固定為0外莲。
- vlan標識字段:這個字段就是重點了猪半,也就是前面提到的vlan id兔朦,占12bit,取值范圍為0~4095磨确,其中0和4095被標準預留沽甥,所以vlan id的真實取值范圍是1~4094。
這里需要提一下乏奥,vlan id為0的vlan報文被稱為優(yōu)先級tag報文摆舟,當網(wǎng)絡收到了此種報文時,網(wǎng)絡設備將認為此報文不屬于任何一個vlan邓了,所以其處理方式將和不帶vlan tag報文的處理方式相同恨诱,但是該報文的vlan tag中的pri優(yōu)先級字段是有效的,可以被利用的骗炉。
??拿圖2-2舉個例子照宝,如果配置紅色vlan為vlan 10,藍色vlan為vlan 30句葵,那么從紅色端口進入的以太網(wǎng)報文將被打上vlan id為10的tag標簽厕鹃;從藍色端口進入的以太網(wǎng)報文將被打上vlan id為20的tag標簽。
三乍丈、vlan的劃分方式
??vlan可以在一個局域網(wǎng)中劃分出多個虛擬局域網(wǎng)出來剂碴,那么劃分的方式就有很多種。vlan劃分的意思就是說標識出哪些報文應該打上哪些vlan id的tag標簽诗赌,那么靠什么來表征這些報文就是其劃分方式汗茄。通常來說,vlan的劃分方式有以下幾種:
- 基于端口的劃分方式铭若,依靠報文的入端口來劃分vlan。比如圖2-2中的vlan的劃分就是基于端口的递览,其規(guī)則就是從端口1叼屠、2進入的報文將打上紅色vlan的tag,從端口3绞铃、4進入的報文將打上藍色vlan的tag镜雨。
- 基于mac地址的劃分方式,依靠報文的mac地址來劃分vlan儿捧。
- 基于ip地址的劃分方式荚坞,依靠報文的ip地址來劃分vlan。
- 基于用戶的劃分方式菲盾,依靠報文所屬的用戶來劃分vlan颓影。
四、幾個vlan的相關概念
- tag報文:指的是攜帶vlan tag標簽的報文懒鉴,并且vlan id處于1~4094范圍之間诡挂。
- untag報文:指的是不攜帶vlan tag標簽的報文碎浇。
- Priority tag報文:前面也提到了,就是指帶有vlan tag標簽璃俗,但是vlan id=0的報文奴璃,這種報文主要是為了利用tag標簽中的pri優(yōu)先級字段。在vlan id的處理方式上城豁,其和untag報文的處理方式相同苟穆。
- Native vlan:指的是端口的默認vlan,這個也可以叫做PVID唱星,native vlan缺省值就是1鞭缭。對于Access模式的端口來說,其native vlan就是其所屬的vlan魏颓。
五岭辣、幾種端口模式
??當報文進出交換機端口時,端口可以對報文采取不同的處理方式甸饱,這些不同的處理方式就對應了交換機端口的不同模式沦童。交換機上的端口模式有以下幾種:
-
Access模式
- 當收到報文時
- 如果報文帶有tag,則判斷是否和端口的pvid相同叹话,如果不同偷遗,則將報文丟棄;如果相同驼壶,則將接受報文氏豌,不對tag做任何處理。
- 如果報文不帶有tag热凹,則接受報文泵喘,并將報文打上端口的pvid。
- 當發(fā)出報文時
- 如果報文帶有tag般妙,則將報文的tag剝離纪铺,發(fā)送出去。
- 當收到報文時
-
Trunk模式
- 當收到報文時
- 如果報文帶有tag碟渺,則判斷報文所帶的vlan id允不允許進入該端口鲜锚,如果允許,則接受該報文苫拍,不對vlan tag做任何處理芜繁;如果不允許,則丟棄該報文绒极。
- 如果報文不帶有tag骏令,則接受報文,并打上端口的pvid集峦。
- 當發(fā)出報文時
- 如果報文帶有tag伏社,判斷tag是否和端口的pvid相同抠刺,如果相同,則將報文的tag剝離摘昌,發(fā)送出去速妖;如果不相同,則保持報文的tag聪黎,發(fā)送出去罕容。
- 當收到報文時
-
Hybrid模式
- 當收到報文時
- 如果報文帶有tag,則判斷報文所帶的vlan id允不允許進入該端口稿饰,如果允許锦秒,則接受該報文,不對vlan tag做任何處理喉镰;如果不允許旅择,則丟棄該報文。
- 如果報文不帶有tag侣姆,則接受報文生真,并打上端口的pvid。
- 當發(fā)出報文時
- 如果報文帶有tag捺宗,判斷是否配置發(fā)送出的數(shù)據(jù)幀攜帶tag柱蟀,如果配置了,則保持報文的tag蚜厉,發(fā)送出去长已;如果沒有配置,則將tag剝離昼牛,發(fā)送出去术瓮。
- 當收到報文時
以上處理方式是以華為交換機設備為例,不同廠商的交換機設備可能在某些處理細節(jié)上有不一致的地方匾嘱。
六斤斧、二層轉發(fā)原理
??這里介紹下二層轉發(fā)的原理。我們都知道霎烙,三層轉發(fā)基于IP地址實現(xiàn)逗栽,二層轉發(fā)基于mac地址實現(xiàn)船殉,在這個基礎上陕壹,針對二層轉發(fā)错维,更詳細具體一點地說晾腔,其轉發(fā)原理可以歸納總結為一句話:基于源mac地址學習灯荧,基于目的mac地址轉發(fā)列肢。
??如圖6-1所示华蜒,為一個基本的二層組網(wǎng)拓撲载庭,其中A看彼、B和C三臺主機分別于交換機的Port 1廊佩、2、3端口相連靖榕,這里以主機A去ping通主機B的流程來介紹二層轉發(fā)原理标锄。
- 當主機A想要ping主機B時:
- 在封裝ping報文的三層頭部時,可以直接使用ping的IP地址進行填充(這個是ping的時候就已經指定了的)茁计,在封裝報文的二層頭部時料皇,主機A會去查找本機的arp表(arp表就是記錄mac地址和IP地址對應關系的表項),此時查找不到主機B的IP地址對應的mac地址星压,由于主機B和主機A就處于同一個網(wǎng)段內践剂,此時主機A便會向局域網(wǎng)發(fā)送arp廣播報文請求主機B的mac地址。
- 該arp廣播報文到達了交換機的port 1后娜膘,交換機首先根據(jù)該報文的源mac地址和入端口port 1逊脯,在設備內部學習生成一條mac表項(mac表就是記錄mac地址和端口的對應關系的表項),然后由于該arp報文的目的mac地址為廣播地址竣贪,所以交換機會洪泛該報文军洼,也就是將該報文轉發(fā)至除port 1端口之外的所有端口,那么連在port 2上的主機B將會接受到該報文贾富。
- 收到該報文后歉眷,主機B判斷該arp報文請求的就是我自己的mac地址,便會單播回應arp響應報文颤枪,該響應報文的源mac地址為主機B的mac地址汗捡,目的mac為主機A的mac地址。
- 報文從port 2端口到達交換機后畏纲,交換機首先根據(jù)該報文的源mac地址和入端口port 2扇住,在設備內部學習生成一條mac表項,然后根據(jù)報文的目的mac地址查詢mac表項盗胀,可以查詢到該目的mac的出端口為port 1(之前學習到的表項)艘蹋,便將該報文從port 1中轉發(fā)出去。
- 主機A收到arp響應報文票灰,獲取到了主機B的mac地址女阀,便可以正常封裝ping包的二層頭部信息,將ping報文發(fā)送出去屑迂,同時會新增一條主機B對應的arp表項浸策。
- ping報文到達交換機后,根據(jù)報文的源mac地址和入端口進行mac表表項老化時間的刷新(mac表項的更新也是基于源mac地址的惹盼,如果此時使用源mac地址查詢到的端口和報文實際的入端口不一致庸汗,則說明主機所連的端口發(fā)生了變化,這種現(xiàn)象叫做mac地址的漂移)手报,根據(jù)ping報文的目的mac地址查找到出端口為port 2蚯舱,將報文從port 2轉發(fā)出去改化,到達主機B。
- 主機B回應主機A的ping報文枉昏,和前面提到的流程類似陈肛。
??前面詳細地介紹了一下基于mac地址的二層轉發(fā)原理,在引入vlan以后凶掰,其實轉發(fā)原理差不多燥爷,只不過mac表項中需要增加一項匹配內容,那就是報文所屬的vlan懦窘,即將原來的“基于mac地址進行轉發(fā)”修改成“基于mac地址和vlan進行轉發(fā)”并且在洪泛時只在同一vlan中進行廣播前翎,而不會向所有端口轉發(fā)。
??引入vlan之后畅涂,同時也引入了兩種源mac地址學習建立mac表項的方式港华,分別是SVL(Shared Vlan Learning)方式和IVL(Independent Vlan Learning)方式,兩者的區(qū)別在于mac表項中是否允許存在mac地址相同午衰,而vlan不同的表項立宜。前者的的mac表是以mac地址為鍵值存儲(查詢的時候也是如此),所以mac地址在mac表項中一定唯一臊岸;后者的mac表是以mac+vlan為鍵值存儲(查詢的時候也是如此)橙数,所以可以允許mac相同,但是vlan不同的表項存在帅戒。
七灯帮、三層交換機的轉發(fā)原理
??介紹完二層轉發(fā)原理,趁熱打鐵逻住,再來總結下三層交換機的轉發(fā)原理钟哥,注意是三層交換機,而不是路由器瞎访。之所以強調這一點腻贰,這是因為三層交換機和路由器的轉發(fā)原理還是有區(qū)別的,對于路由器來說扒秸,只會涉及三層轉發(fā)播演,基于IP地址完成,而三層交換機中既會涉及二層轉發(fā)(基于mac地址)也會涉及到三層轉發(fā)(基于IP地址)伴奥,并且通常利用硬件完成二三層的轉發(fā)宾巍。圖7-1展示的是一個三層交換機的硬件結構,圖7-2展示的是一個三層交換機的應用場景渔伯。
??根據(jù)圖7-1,三層交換機的ASIC部分主要根據(jù)二三層硬件轉發(fā)表項完成硬件轉發(fā)肄程,CPU部分主要就是完成軟件三層轉發(fā)功能锣吼、硬件表項和軟件表項的配置和維護功能选浑。下面就以圖7-2中的主機A和主機B之間的通信來介紹交換機三層轉發(fā)的原理,這對理解ont的轉發(fā)會有一定的幫助玄叠。