CCNA系列課程(4)交換技術

第四節課????? 交換技術
杜飛
2009-06-28
咱們今天來看一下局域網交換技術,也稱為層2交換技術,內容主要包括層2交換的工作原理、網絡環路、如何利用Spanning-Tree Protocol 來解決網絡環路、VLAN及VTP技術,閑話少說,書歸正傳。我們在介紹交換技術之前不得不提一下傳統的共享以太網的工作方式,了解一下沖突域,廣播域以及網絡分段是怎么回事,這些知識在網絡基礎里大家應該有所了解,我在這里再簡單介紹一下:
大家都知道傳統共享以太網使用的是CSMA/CD機制,即載波偵聽多路訪問/沖突檢測。我們來詳細分析一下:
image
CSMA/CD是一種分布式介質訪問控制協議,網絡中的各個節點都能獨立地決定數據幀的發送與接收。每個節點在發送數據幀之前,首先要進行載波監聽,只有介質空閑時,才允許發送幀。這時,如果兩個以上的節點同時監聽到介質空閑并發送幀,則會產生沖突現象,這使發送的幀都成為無效幀,發送隨即宣告失敗。每個節點必須有能力隨時檢測沖突是否發生,一旦發生沖突,則應停止發送,以免介質帶寬因傳送無效幀而被白白浪費,然后隨機延時一段時間后,再重新爭用介質,重發送幀。
最早由Inter,施樂,DEC三家公司提出以太網標準,后來IEEE組織制定了802.3標準規定了以太網的物理層和數據鏈路層的MAC子層,主要就是定義了10BASE-2、10BASE-5、10BASE-T、10BASE-F等,規定了介質,帶寬,距離等。同時還定義了一個802.2標準,規定以太網數據鏈路層的LLC子層,即邏輯鏈路控制子層,主要是提供了一個數據鏈路層與網絡層的接口,如圖所示
image
網絡層有很多協議,數據鏈路層提供了很多協議之間的區分,使用網絡層的哪一個協議,這就是為什么數據幀要封裝一個LLC的頭部信息。但傳統以太2幀中不是使用LLC封裝而是在數據幀中有一個2個字節的type來表明上網所使用的協議,如下圖所使用的網絡層協議是ARP。
image
下面來看一下沖突域,廣播域
沖突域:共享式以太網中的所有節點在需要與其他節點通訊時是可以發送數據的,但是CSMA/CD的機制卻在確保在某個時刻只有一個節點可以發送數據,那如果肉個同時發送數據了,出現這種情況會導致沖突,那么在這個共享式網絡中可能產生沖突的這么一個范圍,我們就稱為沖突域。
廣播域:廣播域是指在一個網絡中廣播包所能到達的范圍。也就是說如果在一個網絡上一個節點發送了一個廣播包,這個廣播包可以到達的范圍,我們稱為廣播域,
作為一名專業的網絡工作人員,具有識別沖突域和廣播域的能力是所需要的一項重要技能。第一層設備的加入是擴大了沖突域,只有加入第二層設備或三層設備才可以分隔沖突域,也就是說如果加入了網橋、交換機和路由器可以將沖突域分割成較小的部分,從面降低對帶寬的競爭,減少沖突。路由器還有一個好處,可以劃分更小的廣播域。這就叫網絡分段。而用二層設備來減少沖突域的范圍叫做“微分段”,也就是說不是正真意義的分段。真正意義的分段是網段號不同,不可能進行直接通訊。所以二層設備可以實現分段,但不能真正將網絡進行分段,而路由器是可以實現真正網絡分段的。這句話,大家好好理解一下!給出一個表借大家參考。
image
那么咱們的交換技術毫無疑問使用的就是交換機,我們來看一個交換機的功能:
交換機的三大功能:
MACA地址的學習
數據幀的轉發或者是數據幀的過濾
利用生成樹協議防止網絡環路
首先我們來看第一個交換機MAC地址的學習功能,交換機是通過MAC表來進行交換轉發工作的,所以MAC地址表是交換工作的核心,網絡與交換機的不同之處就在于網橋使用軟件來創建和管理MAC地址表的,而交換機使用ASIC來創建和管理MAC地址表。
交換機的MAC地址學習功能:
交換機初始化時,要學習進入交換機的數據幀的源地址,并且把源地址及其對應的交換機的端口號記錄在MAC地址表。在MAC地地址表形成之后,交換機要學習進入交換機數據幀的目的地址,并且與MAC地址表中的條目進行比較,完成相應的轉發。
image
交換機開機初始化時,MAC地址表是空的,因為MAC地址表是存儲在內存中的。
如果計算機A發送數據幀到計算機C,此時交換機的E0口接收該數據幀,交換機記錄下該數據幀的源地址C的對應關系及E0口的對應關系。如圖所示:
image
由于交換機并不知道C的MAC地址,所以將此數據幀對除了E0口以外的其他端口進行轉發。
如果是計算機D發送數據幀到計算機C,此時交換機的E3口接收該數據幀,交換機記錄下該數據幀的源地址D的地址與端口的對應關系。此時交換機仍然不知道C的地址,所以還是要對除了E0口以外的其他端口上進行轉發。
image
交換機不斷記錄每個接口上接收到的數據幀的地址,一段時間以后所有的端口所連接的MAC地址都會記錄到MAC地址表中。此時計算機A再向計算機C發送數據時,就直接查MAC地址表進行轉發即可,不會再轉發到其他端口上。
image
在這個圖中計算機A和計算機B通過HUB連接到Switch的E0口上,所以在MAC地址表中記錄兩個MAC地址對應同一個端口,此時如果A與B通訊,則交換機不會轉發該數據幀,因為源和標MAC都在同一個接口上。這就是交換機的地址學習功能以及數據包的轉發過濾。
交換機的交換方式一般有三種:直通轉發、片斷轉發和存儲轉發
直通轉發:交換機檢測到目錄地址后即轉發數據幀,也就是說只要讀到目標地址以后就開始轉發,大家分析一下數據幀的格式就知道了,加上前導位和目標地址也就是14個字節左右,不需要再往后分析了。這樣減少延時,但是不適合高錯誤率的網絡。因為有一些數據碰撞幀,是小于64字節的,也會一起轉發!
片斷轉發:與直通轉發相似,只是在轉發的時候會檢測幀的前64個字節,這前64個字節中會包含一小部分數據,好處是可以把可以把小于64字節的壞幀拋棄掉,以節約帶寬。
存儲轉發:這是延時最大的一種轉發,在進行數據轉發之前要將收到的幀進行完整性校驗,確認沒有錯誤才進行轉發,如果有錯誤就不轉發。好處是可以丟棄任何小于64字節和受損的數據包,但是缺點是延遲大。
下面咱看一下網絡環路及如何利用Spanning-Tree 協議來解決網絡環路。
網絡環路
大家看下面這個圖,
image
在這個拓撲圖中,交換機就成了一個單點故障,如果交換機壞了,此時的幾個模塊之間都無法進行正常的工作,客戶機不能訪問服務器,不能連接internet,不能訪問打印機,反之都一樣。所謂單點故障,也就是一點發生故障,則整網絡無法正常工作。所以在一般的交換式網絡中,我們都需要對交換機進行冗余,但是引入冗余又會發生一個問題,一個很嚴重的問題,就是網絡環路。下面我們來看看環路對我們的網絡到底造成了什么影響,影響主要有三:
1 Broadcast storms 廣播風暴
2 Multiple Frame Copies? 多重復數據幀
3 MAC Database? Instability? MAC地址表不穩定
咱們一一來看
廣播風暴:我們看一個圖,大家就明白什么是廣播風暴了:
image
分析:如果主機X希望跟網絡上的其他主機通訊,將數據報傳給交換機A,但交換機仍然會將此報再一次傳給交換機A,依次類似,構成了一個環,而且這個環后面比較嚴重,為什么?我們在講網絡基礎的時候,我們講了數據幀的格式,大家可以回憶一下,但在這個格式中,沒有類似于三層IP報頭中TTL機制,所以數據幀在網絡中將被無限次數的傳遞,從面造成了廣播風暴,如果是單播的數據還要好一些,如果是廣播或者組播數據在這樣一個環路網絡中傳遞則廣播風暴更加明顯。
多重數據幀:也稱為重復數據幀
image
分析:主機X準備發一個單播幀給路由器Y,數據報發出后,發現有兩條路可以到達路由器Y,一個是直接發過去,還有一條就是通過交換機A轉給交換機B,然后再交給路由器Y,此時路由器Y就收到了兩位一模一樣的數據幀。
還有一個就是MAC地址表的不穩定:
image
分析:還是主機X發送數據幀給路由器Y,路由器的MAC地址表還沒有被交換機學習到,數據幀沿鏈路發送到交換A和交換機B的端口0,那么交換機A和交換機B都將主機X的MAC地址記錄在port 0。因為是通過port 0收到的數據幀,所以會通過兩個交換機的port 1向外泛洪,交叉來到相互交換機的 port 1 口,又認為主機X的MAC地址所對應的端口是port1,即從交換機A發出來的數據幀來到了交換機B的port 1端口。然后交換機 B收到后又通過Port 0口再次泛洪,依次類推,數據幀在環路里重復執行上述過程,交換機A和交換機B重復的在port 1 以及 port0上不斷的學習主機X的MAC地址,造成MAC地址表的不穩定。
那么大家可以看到網絡環路的問題確實不小,那么解決方法就是利用生成樹協議:
Spanning-Tree Protocol:
簡稱為STP,該協議可應用于環路網絡,通過一定的算法實現路徑冗余,同時將環路修剪成無環路的樹型網絡,從而避免報文在環路網絡中“長生不老”。
以太網交換所所實現的快速生成樹協議RSTP (Rapid Spanning Tree Procotol)是生成樹協議的優化版,其“快速”體現在根端口和指定端口進入轉發狀態的延時在某種條件下大大縮短,從而縮短了網絡拓撲穩定所需要的時間。
MSTP(Multiple Spanning Tree? Procotol)是多生成樹協議的縮寫,該協議兼容STP和RSTP。
咱們來詳細介紹一下STP:STP是為克服冗余網絡中透明橋接的問題而創建的,目的是通過協商一條到根網橋的無環路徑來避免和消除網絡中的環路,它通過判定網絡中存在環路的地方并動態阻斷冗余鏈路來實現這個目的。通過這種方式,它確保到每個目的地都只有一個路徑,所以永遠都不會產生環路。
將環路中的一個次優接口設置在Block(阻止)狀態,從而將環路打破。注意,僅僅是該接口設置為Block狀態,僅僅是一個狀態,而不是真正的將此接口關閉。因為一旦網絡中其他鏈路出現了問題,這個被block的接口還可以還原為forwarding(轉發)狀態。如圖所示:
image
基本思想:在此把每個交換機稱為網橋,所以我們在介紹的時候,如果講到網橋,就知道是指的交換機就可以了。每個交換機在啟動的時候,都認為自己是根橋,那么就討論開始競爭到底誰當根,大家定義好一個游戲規則,在網橋之間傳遞特殊的消息BPDU(bridge procotol data unit)網橋協議數據單元,包含足夠的信息做以下工作:從網絡中的所有網橋中,選出一個作為根網橋,然后再計算本網橋到根網橋的最短路徑。而且根橋是每2秒鐘發送一次BPDU。BPDU數據幀中包括了很多內容,如圖所示:
image
我們在這里只關系網橋ID(包括兩個字節的優先級和6個字節的MAC地址)。
image
選擇根橋的方法是比較每一個交換機的Bridge ID也就是橋ID,這個橋ID的格式是:
image
有兩部分組成:一個是橋優先級,一個是MAC地址,但是思科的交換機優先級默認都是32768,如果優先級相同,再比較后面的MAC地址,MAC肯定是不同的,所以小的就是根橋,
在一個網絡中,只能有一個根網橋,其他的網橋就稱為非根橋;根橋上的每一個端口都稱為指派端口,也可以說根橋上的每個端口都是根端口,但是非根橋上的端口叫法就不同的,非根橋有一個端口叫根端口,其他端口叫非指派端口。
image
剛才我們說了,如果有多個交換機,選擇根網橋使用的是bridgeID,那這里在非根橋上我怎么知道哪個是根端口,哪個是非指派端口呢,這里也有一個準則,就是依次比較每個端口到達根網橋所花代價+優先級+MAC地址+端口號(從左到右依次比較軟小者),這里又可以分為是一個交換機的多個端口和多個交換機的多個端口之間如果選擇。
如果是同一個交換機,那么起決定作用的就是到達根橋代價最小的端口是根端口,關鍵是這里怎么知道哪個端口代價最小呢,這是根據帶寬定義的,我們
image
其中這個代價指的就是開銷,開銷越小就說明連接速率越大,速度越快。我們再看上面的那個圖,有兩個鏈路,一個是100BASET,一個是10BASE-T,一個開銷是100,一個開銷是19,明顯選擇上面的那個端口作為根端口。那么下面的那個端口就是非指派端口,就會將它指定為BLOCK,不可用狀態,直到根端口不可用時,它才會“翻身”。但是要注意的是這個端口怎么Block了,不能發送用戶數據,但可以繼續接收BPDU。
那么如果是多個非根網橋希望選擇一個根端口,則先比較代價,如果代價相同再比較優先級,如果優先級也相同再比較MAC地址,這肯定是不同的。
image
針對這個圖來說,處理Block狀態的端口應該是交換機Y的端口1,因為兩邊的鏈路代價是一樣的,優先級默認也相同,所以就比較MAC地址,但因為交換機X的MAC地址小,所以它的端口都是forwarding狀態。但是交換機y的端口1就Block了。
image
以上是我們所分析的根橋以及根端口和指派端口和非指派端口的選擇問題。那么一個端口從開機到正常工作會處于四種狀態,分別是block,listening,learning,forward,我們來分析一下:
Block ------為了防止網橋發生loop,所有的端口開始都處于Block狀態。如果交換機在其他端口收到了同一個BPDU,那么交換機就認為有另一條鏈路可到達根橋,如果生成樹決定其他鏈路是到根橋更好的路徑,那么這個端口繼續保持block,那么如果本端口被交換機認為是最好的端口,那么進入到下面的狀態。這個時間是20秒,稱為最大生存周期。
listening-----端口從block狀態轉為listening狀態,它利用這段時間來listening是否還有到根橋的其他路徑。在此狀態,端口可以傾聽到配置消息,但是不能轉發或接收用戶數據。也不允許端口將它所聽到的任何信息放到地址表中,這有15秒的時間。在這一段時間里的listening狀態實際上就是用來說明端口已經準備好進行傳輸,但是它愿意再傾聽一下以確認它不會產生loop.
learning -------學習狀態與傾聽狀態非常相似,除了端口可以將它所學到的信息添加到地址表這一點之外,它依然不可以發送和接收用戶數據。這個過程也是15秒。
forward -----這個狀態意味著可以發送和接收用戶數據。
那么如果一個非根交換機在20秒內沒有收到任何配置信息,也就是沒有收到BPDU就會認為該端口連接的鏈路發生了故障,于是就重新計算STP。再一次選擇根橋,根端口,指派端口以及非指派端口。
以上就是關于生成樹協議的比較詳細的介紹,當然我們哆哩哆嗦的講了這么多,真正要我們配置的命令并不多,因為思科默認就已經開啟了生成樹協議,在本節的結尾我會附上相關的實驗來驗證stp的作用。
還要注意STP只是針對二層的環路起作用,對于物理層的環路是不起作用的,一層環路可以說純粹是人為的原因!!!
下面開始進入下一相課題:VLAN
VLAN:虛擬局域網
我們在前面講到交換機原理的時候,我們知道交換機是二層設備,不能分隔廣播,如果交換機端口過多的話,那么這些端口都在同一個廣播域中,這樣網絡的性能受到影響,現在我們使用VLAN技術,可以把一個大的廣播域劃分為多個小的廣播域來提高網絡的性能。
我們先從一個圖入手看一下Vlan的特點,
image
在這張圖中,我們可以看到一個大樓有三層,最下面的一個交換機肯定是一個核心交換機,然后連接三個接入層交換機,每個接入層交換機又分別接入一些PC機,這些PC機有銷售部,人事部,以及工程部,
VLAN的特點就是可以實現網絡分段,網絡管理更加靈活,相對比較安全,我們先看第一個實現網絡分段:
網絡分段就是分割網絡廣播,我們以前講到交換機所有的端口都在一個VLAN里,也就是同一個廣播域中,而我們使用了VLAN技術以后,VLAN的數目增加了,廣播域增加了,但每一個廣播域的范圍縮小了。一個交換機可以分成兩個VLAN,三個VLAN,甚至更多的VLAN。那么就實現了只能是同一個VLAN中的節點才可以通訊。那如果不同VLAN中的節點如果想通訊,就需要借助路由。
第二個特點就是靈活,大家從圖上可以看到不論哪一個部門都會跨越三個樓層,如一樓有銷售部員的電腦,二樓也有,三樓還有,其他兩個部門也一樣,但我們又需要實現同一個部門之間的PC機可以通訊,這使用VLAN也可以實現,那如果沒有VLAN的話,就需要一個部門只能在同一個樓層,接在同一個交換機上,但現在有了VLAN,即使大家不在同一個交換機上,但只要在同一個VLAN上也可以進行通訊。我們后面會詳細介紹。
至于第三個特點安全:就“明白人不用細說”,你把網絡分段了,同一個VLAN是一個廣播域,默認跟其他VLAN不能通訊,也就是說我這個部門與其他部門的PC默認是通訊不了的,相對來說就要安全許多!
下面咱們來看一下VLAN的運行過程:
我們已經知道了在同一個交換機里所有的端口默認屬于VLAN1,但我們可以分成若干個VLAN,每一個VLAN都相當于是一個物理的交換機,也就是說只能是同一個VLAN中的節點可以通訊,并且同一個VLAN可以跨越多個交換機,怎么理解,我們來看一個圖:
image
大家可以看到這個圖中,有兩個交換機,每個交換機中又為了三個VLAN,一個是紅色VLAN,一個是黑色VLAN,一個是綠色VLAN,每個交換機中只能是同一個VLAN中的節點可以通訊,但是只要中間加了一個“道路”,我們就可以實現A交換機的紅色VLAN和B交換機的紅色VLAN通訊,黑色和綠色也同理,相當于紅色VLAN跨了兩個交換機。在這里需要引入兩個術語:
Access-link:接入端口,普通的交換機端口用于連接終端設備,連接到這個端口上的設備完全不知道存在著一個VLAN,它不需要知道VLAN的信息,它就認為只存在它一個VLAN即可!
Trunk-link:稱為干道鏈路,只有快速以太網口(或更高)才可以配置成干道鏈路,承載的是多個VLAN之間的信息,即一個交換機的一個VLAN如果想與另一個交換機的相同VLAN之間進行通訊就必須要經過這個Trunk-link.任何一個VLAN都是一樣,我們這張圖中有三個VLAN,那么這三個VLAN就可以通過這個trunk-link鏈路與另一個交換機中的相同VLAN進行通訊。這樣的話,不論有多少VLAN,在兩個交換機中只要有一條干道鏈路就可以進行通訊。那肯定有人要問了,我這個交換機中的紅色VLAN傳一個數據到對方去,對方怎么知道就是和對方的紅色VLAN進行通訊呢。在這里,主干會使用一種特殊的封裝模式來對不同的VLAN進行封裝,也就是對不同的VLAN打上一個標記。
注: 一個交換機的任何端口都必須屬于且只能屬于一個VLAN,但如果某個端口被配置成TRUNK后,該端口就失去了它原來的VLAN標識,不屬于任何VLAN,只是起到為所有的VLAN傳輸數據。
交換機對不同的VLAN進行標記只要有兩種不同的方法:
ISL--------------------- 思科私有的標記方法,只適合于思科交換機
IEEE802.1Q-----------一種IEEE標準方法,可以連接不同廠家的交換機
我們首先來看一下ISL標記
ISL:Inter Switch Link?,屬于Cisco私有,即指兩設備間的一條點對點的連接線路,與8021.Q一樣作用于第2層,所不同的是,ISL協議頭和協議尾封裝了整個第2層的以太幀。正因為此,ISL被認為是一種能在交換機間傳遞第2層任何類型的幀或上層協議的獨立協議。ISL所封裝的幀可以是令牌環或快速以太網,在原數據幀的基礎上加入了26字節的頭和一個4字節的尾。這樣總共是加入了30字節,如果是一個不認識ISL的設備(非思科)那么就認為這是一個巨幀,所以如果不是思科的設備不能使用ISL。ISL封裝如下圖所示:
image
這里大家可以看的很清楚,20個字節中包含了很多東西,但別的大家沒有必須知道,我也沒有細研究過,但是最主要的兩個大家要知道,一個就是VLAN,另一個就是BPDU,
VLAN:表明屬于VLAN在通訊,不同VLAN有相應的VLAN號,是一個數字,多達1024
BPDU:如果是STP數據幀,則此位為1
或者比較形象的可以表示為下圖:一個標準的二層數據幀加下ISL標記后就多了30個字節。
image
我們來針對下面這個圖看一下同一個VLAN是如何跨之外交換機工作的。
image
一個PC機發出的數據在傳給交換機時在進入trunk干道之間會加上ISL的標記,然后就可以在干道上傳輸,到在對方的交換機后,交換機通過查看數據幀知道這個數據包是傳給哪個VLAN的于是去掉相應的VLAN標識,再傳給相應的VLAN內的PC。
另一種封裝標記是:IEEE標準委員會制定的802.1Q:主要用于不同廠家的交換機來建立多個VLAN,操作原理和ISL一樣,也是在進入TRUNK之前打上一個標記,到達對方的交換機后再去掉這個標記。但這個標記,就不是在兩邊加,而是在中間加上一個標記,我們來看一下
image
IEEE802.1Q所附加的VLAN識別信息,位于數據幀中“發送源MAC地址”與“類別域(Type Field)”之間。具體內容為2字節的TPID和2字節的TCI,共計4字節。在數據幀中添加了4字節的內容,那么CRC值自然也會有所變化。這時數據幀上的CRC是插入TPID、TCI后,對包括它們在內的整個數據幀重新計算后所得的值。
其中TPID是IEEE定義的新類型,表明這是一個加了802.1Q標簽的幀。
TCI:tag control information 標簽控制信息,共有兩個字節,其中12位是VLANID,取值從0-4095,共4096個,3位為優先級,規定了8種優先級,還有1位是cfi,在總線型以太網,FDDI,令牌環網等網絡交換數據時使用。
而當數據幀離開trunk鏈路時,TPID和TCI會被去除,這時還會進行一次CRC的重新計算。
以上就是兩種標記的分析!下面咱們來看一下VLAN的具體配置:
對于VLAN進行配置,思科使用兩種方法:第一種config-vlan 第二種 vlan database
現在使用比較多的是vlan database,但是思科所推薦的,以后以后發展的趨勢將是第一種config-vlan方式,vlan database有點老了,使用vlan database的配置方式,所以的配置信息是存放在vlan.dat文件中,所以有時你刪除一個配置文件后重啟發現VLAN的信息還在,這就是因為VLAN的配置信息不是存放在NVRAM中的,必須去手動刪除vlan.dat文件才可以。而config-vlan不會有此問題。下表中我給出兩種方法的相關配置語句。
config-vlanvlan database
1全局配置模式下:vlan vlan_id 創建vlan
2 name 名稱??? 給vlan 取名(可選)
3 interface 端口? 進入相應端口
4 switchport mode access? 表明此端口為access
5 switchport access vlan vlanid 把端口加入vlan
6 switchport? trunk encapsulation {isl|dot1q|negotiate}? 設置中繼模式一般手動指定
7 switchport mode trunk? 開啟中繼端口
8 show vlan brief 或 show vlan 驗證



1 特權模式下:vlan database?
2 vlan id???? 創建vlan
3 interface 端口
4 switchport access valn id
?? 將端口加入到vlan
5 switchport mode trunk
將指定端口設置為trunk
6 switchport trunk allowed vlan all
允許所有vlan通過
在本節結束的時候,會結合一個實驗來進行驗證。
再往下就是CCNA中交換技術的最后一個知識點:VTP
VTP:全稱是VLAN Trunking Protocol:VLAN干道協議,是VLAN出現之后出現的一種技術,那么為什么會出現這么一個協議,它是干什么用的?那么我們先來看一下沒有它的時候是什么情況?如果現在有一個很大的網絡,如現在ITET校園網中有100個交換機,而且每一個交換機都需要劃5個VLAN如分別是vlan 10,20,30,40,50,希望每個交換機都相同,那么就希望在100個交換機上工作。工作量還是很大的,所以引入了VTP之后就發現了,我們可以只在一臺交換機上進行設置,然后相同的設置會自動復制到其他的交換機上。這就是VTP出現的意義!
所以在這里給了總結VTP的作用:在一個共有域中通過主干端口宣告VLAN的配置信息以維護VLAN配置信息的一致性。
這里需要注意的是,要求所有的交換機必須在一個共有域中,也就是說所有的交換機域名必須一致,但這個域名和我們平時所說的域名是不一樣的,沒有聯系,只是一個名稱代號而已,如可以是dufei 也可以是 dufei.com,只要是字符就行,嘻。。。不過可別用漢字:就像它不認識“杜飛”一樣!然后通過VTP來實現VLAN配置的一致性,也就是說其中一臺交換機有幾個VLAN,其他的交換機就有幾個。這就是相同一致,而且只能在TRUNK鏈路上宣告VLAN信息,這毫無疑問,因為如果是一臺交換機就沒有必要要求實現VLAN的一致性了。當然也不是說任何一個修改了,其他的都能復制過去,這是有條件的,這個條件是什么呢?首先這中間就涉及到一個VTP角色的問題,有的資料中也稱為VTP模式。因為角色不同,也就決定了該交換機能否修改VLAN的配置,是能修改還是能復制。
VTP域中有三個角色,分別是:
server:默認情況下,每一個交換機都是server模式,這一點是必須要注意的,為什么,因為處理server模式的交換機可以創建,個性,刪除vlan,發送并且轉發VTP宣告信息,并將vlan信息保存在nvram中。看到這兒大家就明白了,哦原來它可以做vlan的所有操作,并且會將這個信息發給其它的交換機.
client:大家一聽這個名字就知道這是一個功能很弱的角色,沒有server叫起來這么震懾。此角色不能建立,改變或刪除VLAN,不能發送但是可以轉發VTP宣告,同步VLAN數據,但不會將VLAN信息保存在NVRAM中。那有的朋友要問了,如果我希望在此交換機上增加一個VLAN怎么辦?沒有辦法,只能在server上創建,然后再同步過來。
transparent:透明模式,這是一個比較特殊的角色,就像是軍隊一樣,可以和外界交流,但自己又是獨立的區域,和其他區域不同。那么如果交換機處于透明模式,則可以建立,修改,刪除VLAN,不能發送自己的VLAN信息,但是可以轉發VTP宣告但是它自己不會同步只是相當于我替你轉過去,但是我自己不信任你,并且自己的VLAN配置保存到NVRAM中。我們前面介紹說VLAN號范圍是2的12次方應該是4096個,但是我們不能使用1005-4096之間的號碼,是因為這一部分是擴展VLAN號,必須要處于transparent角色才可以設置。? 所以一般透明模式使用的不多。
在整個VTP域中,每5分鐘或者是發生變化時會自動宣告VTP信息,并且一旦服務器對VLAN進行了更改,它的經驗值增加,并且當客戶機將VTP信息同步過去之后,經驗值也會同步。所以總結一下就會發現以下規律:server可以修改vlan ,修改vlan后經經驗值增加,誰的經驗值高聽誰的,乍一看似乎沒有問題,但是如果客戶機的經驗值高,同樣也會修改VLAN的信息,這一點一定要注意!那有人說不可能,client不能修改,但是會存在這么一種情況,它原來是server,里面有vlan信息,經驗值也高,現在加進入之后改為client的,就會出現這種情況,當然可以通過給domain加一個口令來避免出現這種情況。
image
VTP修剪
目的:通過阻止不必要的數據的泛洪傳送來增加可用的帶寬。
大家一看這句話就很簡單,沒有過多的需要解釋的地方,我們來簡單看一下,我們以一個圖為例:
image
例如:主機A發出廣播,廣播僅僅泛洪到已有端口被分配到紅色VLAN的所有交換機。當主機A發一個廣播,僅僅限于紅色VLAN中的設備可以收到,但默認不是的。設置是數據包到達交換機2后傳給我交換機3,再往上到達交換機4之后傳給交換機5再傳給交換機6,那這樣的話對于交換機3,交換機5,交換機6所收到的廣播包是沒有意義的,浪費了網絡帶寬,而VTP修剪就可以解決這個問題。其實,我個人認為這個VTP修剪做也可,不做也可,畢竟五分鐘才發一個宣告,而且VTP宣告數據包又不是很大。所以意義不是很大,但是如果做當然更好,如果啟用的話,就在server上啟用即可,client角色上不需要啟用。啟用命令:vtp pruning
下面咱們就來看一下VTP的配置:
1 vtp domain 域名
2 vtp 模式名?????? 模式可以是server,client,transparent
3 vtp password????????? 設置VTP域密碼,可選項,如果設置的話,就要求所有密碼必須一致。長度是8到64個字符
4 vtp pruning??? 啟用 vtp修剪
vtp常用的命令就這么多,所以大家看看還是很簡單的。
至今交換部分的理論我們就介紹到此,下面咱們通過兩個實驗來結束今天的學習!
Lab1: 生成樹協議(spanning-tree)

實驗目的:了解生成樹協議的作用,以及網絡中有冗余環路的情況 下不開生成樹協議的危害。

實驗設備:兩臺 Cisco 系統交換機,一臺pc機,兩條以太網交叉線,一條以太網直連線。

拓撲圖:
image
在兩臺交換機上都關閉生成樹協議:
Switch(config)#no spanning-tree
驗證方法:在兩臺交換機上都關閉生成樹協議之后很快就能發現兩臺交換機互連的接口燈狂閃,這就是產生廣播風暴了,這時候大家可以打開PC機上的性能監視器發現CPU的利用率也非常高。
可以使用show spanning-tree查看生成樹協議的一些信息,如圖所示:
image
可以看到這個交換機是根橋,還可以通過命令show spanning-tree interface 端口號,來查看端口信息!
Lab2 交換機的VLAN的劃分、trunk鏈路的配置
實驗目的:為交換機劃分VLAN并使用不同交換機的相同VLAN間可以通訊。
實驗設備:兩臺Cisco系統交換機,兩臺PC,一條交叉線,兩條直連線
注意:1? VLAN的優點
2? Trunk的封裝格式:ISL及IEEE802.1Q
3? 所有在VLAN里的配置,只有在退出VLAN database時才生效
拓撲圖:
image?
Switch0:
Switch>enable
Switch#config terminal
SW1(config)#exit
SW1#vlan database?
SW1(vlan)#vlan 10
VLAN 10 added:
??? Name: VLAN0010
SW1(vlan)#vlan 20
VLAN 20 added:
??? Name: VLAN0020
SW1(config)#interface fastEthernet 0/1
SW1(config-if)#switchport access vlan 10
SW1(config)#interface fastEthernet 0/24
SW1(config-if)#switchport mode trunk?
SW1(config-if)#switchport trunk allowed vlan all
Switch1:我們先將 fastethernet0/1劃分 vlan20下
Switch>enable?
Switch#configure terminal?
Switch(config)#hostname SW2
SW2(config)#EXit
SW2#vlan database?
SW2(vlan)#vlan 10
VLAN 10 added:
??? Name: VLAN0010
SW2(vlan)#vla
SW2(vlan)#vlan 20
VLAN 20 added:
??? Name: VLAN0020
SW2(vlan)#exit
SW2#configure terminal?
SW2(config)#interface fastEthernet 0/1
SW2(config-if)#switchport access vlan 20
SW2(config-if)#exit
SW2(config)#interface fastEthernet 0/24
SW2(config-if)#switchport mode trunk?
SW2(config-if)#switchport trunk? allowed vlan all
SW2(config-if)#exit
驗證,我們在PC0上ping PC1,結果如下:
image
我們再次到Sw2上將fa0/1重新劃到VLAN10下,然后再做測試:
SW2(config)#interface fastEthernet 0/1
SW2(config-if)#switchport access vlan 10
SW2(config-if)#exit
SW2(config)#exit
然后再次在PC0上ping PC1,結果如下:?
image
實驗成功!
我們也可以使用命令show vlan brief查看VLAN的信息,如圖所示:
image
Lab3:交換機的VTP配置
實驗目的:正確的配置和認識VTP的作用
實驗設備:兩臺Cisco系統交換機,兩臺PC,一條交叉線,兩條直連線
注意:1 server才有權修改,client只有接受和轉發的能力。
2 VTP的域名和版本號一定要相同
3 如果配置了密碼,則密碼也一定要相同。
4 所有的VLAN database里面的配置必須退出 vlan才能生效
拓撲圖:
image?
Switch0:
SW1#configure terminal?
SW1(config)#interface fastEthernet 0/24
SW1(config-if)#switchport mode trunk?
SW1(config-if)#switchport trunk allowed vlan all
SW1#vlan database?
SW1(vlan)#vtp server
SW1(vlan)#vtp domain dufei
Switch1:
SW2#configure terminal?
SW2(config)#interface fastEthernet 0/24
SW2(config-if)#switchport mode trunk?
SW2(config-if)#switchport trunk allowed vlan all
SW2#vlan database?
SW2(vlan)#vtp client?
SW2(vlan)#vtp domain dufei
SW2(vlan)#exit
然后我們在server這個機器上增加一個vlan,測試能否同步到client上:
SW1:
SW1#VLan database?
SW1(vlan)#vlan 100
SW1(vlan)#exit
然后我們再到SW2上測試:?image
OK,實驗成功!
我們還可以通過Show vtp status命令查看vtp的相關信息:如圖所示:
image
可以看到當前交換機的角色,版本號,經驗值,當前域名等等信息!
至此交換技術結束,這一篇寫了我整整兩天!我的天呀!睡了。。。。。。。。。




本文轉自 dufei 51CTO博客,原文鏈接:http://blog.51cto.com/dufei/171028,如需轉載請自行聯系原作者

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/256925.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/256925.shtml
英文地址,請注明出處:http://en.pswp.cn/news/256925.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python中yield的用法詳解——最簡單,最清晰的解釋(轉載)

首先,如果你還沒有對yield有個初步分認識,那么你先把yield看做“return”,這個是直觀的,它首先是個return,普通的return是什么意思,就是在程序中返回某個值,返回之后程序就不再往下運行了。看做…

extern 全局變量在不同的文件使用方法(static)

例如:1.c int k6; 想要在2.c中調用1.c的k 則在2.c中用extern k 聲明一下就可以使用了; int c3; ck; 但是如果1.c中是這樣定義的 static int k6; 想要在2.c中使用k時不允許的,static只能在本文件中使用,外部文件…

python學習之路基礎篇(第八篇)

一、作業(對象的封裝)     要點分析 1.封裝,對象中嵌套對象 2.pickle,load,切記,一定要先導入相關的類二、上節內容回顧和補充      面向對象基本知識: 1.類和對象的…

Ubuntu實現樹莓派交叉編譯

一、交叉編譯 在一個平臺上生成另一個平臺上的可執行代碼。為什么要大費周折的進行交叉編譯呢?一句話:不得已而為之。有時是因為目的平臺上不允許或不能夠安裝所需要的編譯器,而又需要這個編譯器的某些特征;有時是因為目的平臺上的…

python常用的第三方庫總結

通用 urllib -網絡庫(stdlib)。requests -網絡庫。grab – 網絡庫(基于pycurl)。pycurl – 網絡庫(綁定libcurl)。urllib3 – Python HTTP庫,安全連接池、支持文件post、可用性高。httplib2 – 網絡庫。RoboBrowser –…

ubuntu系統安裝vscode教程

方法一: 依次輸入如下命令 1、sudo add-apt-repository ppa:ubuntu-desktop/ubuntu-make 2、sudo apt-get update 3、sudo apt-get install ubuntu-make 4、umake ide visual-studio-code 提示輸入a即可 方法二: 在windows系統下載安裝包&#xff0c…

pydebugger

定義結構體from ctypes import *WORD c_ushort DWORD c_ulong LPBYTE POINTER(c_ubyte) LPTSTR POINTER(c_char) HANDLE c_void_pDEBUG_PROCESS 0x00000001 CREATE_NEW_CONSOLE 0x00000010class STARTUPINFO(Structure):_fields_ [("cb", DWORD),("lpR…

Vue2 源碼漫游(一)

Vue2 源碼漫游(一) 描述: Vue框架中的基本原理可能大家都基本了解了,但是還沒有漫游一下源碼。 所以,覺得還是有必要跑一下。 由于是代碼漫游,所以大部分為關鍵性代碼,以主線路和主要分支的代碼…

神經網絡中的反向傳播算法

神經網絡中的方向傳播算法講得復雜難懂。簡單地說明它的原理: 神經網絡:輸入層,隱藏層,輸出層。根據線性關系,激活函數,并最終根據監督學習寫出誤差表達式。此時,誤差函數可寫成,那么…

有限元筆記02:第三章

1.局部坐標到全局坐標變換 2.

bug__android studio 出現布局文件不提示,且點擊代碼不能跟蹤代碼

1,點擊布局文件,出現 Cannot find declaration to go to ? 且 點擊代碼不能跟蹤代碼? 把 項目的build.gradle 中的 compileSdkVersion 23 版本設置最高。 apply plugin: com.android.applicationandroid { compileSdkVersion 23 b…

Mysql:This version of MySQL doesn’t yet support ‘LIMIT IN/ALL/ANY/SOME 錯誤解決

This version of MySQL doesn’t yet support ‘LIMIT & IN/ALL/ANY/SOME 錯誤解決 這次國慶節回來后的測試中,在一個Mysql表達式中使用嵌套查詢,出現了這個錯誤。原因是內層select語句帶有limit子句。 在網上查了下,有文章指出&#xff…

Segmentation fault (core dumped) -llinux系統內存錯誤報錯信息

目錄 1 問題原因 (1)內存訪問越界(2)多線程程序使用了線程不安全的函數。(3)多線程讀寫的數據未加鎖保護。(5)堆棧溢出。2 使用GDB查看core文件3 使用GDB調試程序 返回目錄 1 問題…

Android 抽屜布局

目前部分APP使用一種類似抽屜式的布局,像QQ那種,感覺很炫,自己也一直想做一個像那樣的布局,(ps網上很多這樣的例子,我下面做的就是參考網上的改變的) 廢話不就不說了,直接上代碼 1、…

學習筆記(35):Python網絡編程并發編程-協程(yield,greenlet,gevent模塊)

立即學習:https://edu.csdn.net/course/play/24458/296457?utm_sourceblogtoedu 協程(yield,greenlet,gevent) 1.協程:在單線程中通過不斷地在多個任務之間進行切換執行,來達到并發的效果的線程,可以提高效率 2.yiel…

雙目標定算法

坐標系基礎知識: > 1.1. 從像素坐標系(u,v) 到 世界坐標系(Xw,Yw,Yw) 這里直接拿上篇博文的結果,中間省去了其它坐標系直接的關系,直接給出,如下所示: 公式如下: > 1.2. 符號規定( Notation ) 為了…

Spring bean三種創建方式

spring共提供了三種實例化bean的方式:構造器實例化(全類名,反射)、工廠方法(靜態工廠實例化 動態工廠實例化)和FactoryBean ,下面一一詳解: 1、構造器實例化 City.java 1 package com.proc.bean;2 3 publ…

Excel使用控件創建動態地圖圖表

[本文軟件Excel 2010] 效果圖: 首先我們看一下數據源 數據源中第二列是對應圖形的名稱。首先創建圖形,我們可能在網絡中找到各個地圖的矢量圖形。不過不是每個地圖圖形都適合我們,或許企業劃分非按照行政區劃分。因此可以嘗試自己繪制&#x…

Windows 10 常用的快捷鍵及常用指令

系統快捷鍵 快捷鍵功能說明備注CtrlShiftEsc打開任務管理器macbook: fnshiftF11普通鍵盤: PrintScreen截屏幕圖macbook: fnshiftoptionF11普通鍵盤: altPrintScreen截取當前窗口圖片macbook: WinfnEsc普通鍵盤: WinPause/Break打開系統屬性WinctrlD新建虛擬桌面Windows 10Winct…

學習筆記(35續):Python網絡編程并發編程-基于gevent及線程池實現的并發套接字通訊

1.基于線程池實現并發套接字通訊:因為套接字涉及地是I/O密集模型,因此使用多線程會有高效率 服務器 #基于線程池完成并發的套接字通訊 from socket import * from threading import Thread from concurrent.futures import ThreadPoolExecutordef commun…