2013年7月25日 星期四

VLAN: IVL vs SVL

網上有很多說到關於IVL和SVL的東西,但是對於一點基礎都沒有的人估計不能看得很明白。我這裡從Switch收到packet開始講兩種情況Switch的行為。
IVL(independent vlan learning):
是以每個vlan建一個表,看起來好像有很多表,其實這裡所說的表是指邏輯上的表,實際上在交換機中還是只有一個表,如果將VID相同的記錄都提取出來組成一個表,那麼就一個物理上的表在邏輯上就可以認為是多個表了。
在MAC表中以MAC+VID為主鍵進行儲存。這樣,同一個MAC就可能由於VID的不同而在MAC表中存在多條記錄。
1.根據MAC+VID在MAC表中尋找,找不到轉3
2.向找到的port轉發packet,OK.
3.向packet攜帶的vid對應的整個VLAN的port轉發.

SVL(shared valn learning):
在MAC表中以MAC為主進行儲存,也就是說同一個MAC在SVL模式下只能存在一個記錄在MAC表中。
1.在MAC中先根據MAC尋找相應的記錄,找不到轉4
2.記錄中的VID與packet中攜帶的VID一樣,得到相應的port;不一樣轉5
3.將packet轉發到相應的port,OK.
4.向packet攜帶的vid對應的整個VLAN的port轉發.
5.drop.


MAC表中主要的參數︰
MAC VID PORT

from:
http://sangchiu.blogspot.tw/2008/07/ivl-vs-svl.html

--------------------------------------------------------------------------------------------------------------------------------

所謂「共享式虛擬網路學習模式」 (Shared VLAN Learning, 簡稱SVL) 是指一個虛擬網路所學習到的MA位址可以給其他虛擬網路所使用。而所謂「獨立式虛擬網路學習模式」 (Independent VLAN Learning, 簡稱IVL) 則是指一個虛擬網路所學習到的MAC位址不可以給其他虛擬網路所使用。
在大部份的情況下,橋接器採用SVLIVL所得到的效果是相同的。但是在某些特殊的網路組態下,為了避免訊框轉送氾濫,我們必須對橋接器的學習模式加以規範。基本上有三種情況需要規範:




連接多個獨立虛擬網路
MAC位址重複

非對稱性虛擬網路
16-16說明一個設備如何將兩個虛擬網路連結在一起,並且使用虛擬網路的位址學習成果。結果造成在其他的橋接器上必須使用獨立式虛擬網路學習模式。圖中假設工作站AB經由一個「橋接路徑器」(Bridge-Router) 連結起來,中間則有一個虛擬橋接器(VLAN-aware Bridge)。為方便起見,我們稱此橋接路徑器為「連接器」(Connector)。在此例中,假設連接器沒有啟動擴張樹演算法,因此虛擬橋接器沒有試著去消除迴路。由於此虛擬橋接器的所有連接埠都設定為傳送無標籤訊框,因此連接器事實上扮演著將兩個虛擬網路連結在一起的角色。由於連接器本身不認識虛擬網路因此將所學習到的位址AB放在同一個過濾資料庫中。連接器知道工作站A應該隸屬於連接埠X。如此可以提供過濾資訊以避免虛擬網路Red中欲傳送給工作站A的訊框經由連接器的埠Y被轉送至虛擬網路Blue
首先假設工作站A傳送一筆訊框給工作站B。由於工作站A本身也沒有虛擬網路的觀念,因此其訊框以沒貼標籤的方式進入橋接器。由於橋接器已經設定該連接埠的PVID = Red, 因此該訊框屬於虛擬網路Red,同時橋接器學習到工作站A隸屬於此虛擬網路的連接埠1。橋接器的轉送程式在查閱成員集合 (Member Sets) 與無標籤集合 (Untagged Sets) 發現屬於虛擬網路Red的訊框應該由連接埠3以無標籤的方式傳送出去。橋接器於是將此訊框轉送出去。連接器收到此訊框後發現它並不認識工作站B,於是由其連接埠Y轉送出去。同時學習到工作站A隸屬於其連接埠X。此訊框以沒貼標籤的方式進入橋接器。由於橋接器已經設定該連接埠的PVID = Blue, 因此該訊框屬於虛擬網路Blue,同時橋接器學習到工作站A隸屬於此虛擬網路的連接埠4。橋接器的轉送程式在查閱成員集合與無標籤集合後發現屬於虛擬網路Blue的訊框應該由連接埠2以無標籤的方式傳送出去。橋接器於是將此訊框轉送給工作站B
相同的,當工作站B回送一筆訊框給工作站A時,其訊框也以沒貼標籤的方式進入橋接器。由於橋接器已經設定該連接埠的PVID = Blue, 因此該訊框屬於虛擬網路Blue,同時橋接器學習到工作站B隸屬於此虛擬網路的連接埠2。橋接器的轉送程式在查閱成員集合(Member Sets) 與無標籤集合 (Untagged Sets) 發現屬於虛擬網路Blue的訊框應該由連接埠4以無標籤的方式傳送出去。橋接器於是將此訊框轉送出去。連接器收到此訊框後發現工作站A應該由其連接埠X轉送出去。同時學習到工作站B隸屬於其連接埠Y。此訊框以沒貼標籤的方式進入橋接器。由於橋接器已經設定該連接埠的PVID = Red, 因此該訊框屬於虛擬網路Red,同時橋接器學習到工作站B隸屬於此虛擬網路的連接埠3。橋接器的轉送程式在查閱成員集合與無標籤集合後發現屬於虛擬網路Red的訊框應該由連接埠1以無標籤的方式傳送出去。橋接器於是將此訊框轉送給工作站A
在此網路組態下,此虛擬橋接器就應該讓兩個虛擬網路各自獨立學習。否則工作站AB的位址會輪流的被認為隸屬於對角的連接埠。例如原來工作站A隸屬於連接埠1, 但是其訊框如果被連接器轉送並且由此橋接器的連接埠4進入時,又會被重新學習為隸屬於連接埠4。如此不斷的交替,將造成嚴重的錯誤。虛擬網路各自獨立學習則可以避免此問題。
16-16 虛擬網路獨立學習範例 ()
另外一個需要虛擬網路獨立學習的例子如圖16-17所示。圖中假設連接器也認識虛擬網路(VLAN-aware protocol sensitive Bridge-Router而且紙船送或接收貼標籤之訊框。首先假設工作站AB分別傳送一筆訊框給連接器。由於工作站AB)本身沒有虛擬網路的觀念,因此其訊框以沒貼標籤的方式進入橋接器。由於橋接器已經設定該連接埠的PVID = Red (Blue), 因此該訊框屬於虛擬網路Red(Blue),同時橋接器學習到工作站A(B) 隸屬於此虛擬網路的連接埠1(2)。橋接器的轉送程式在查閱成員集合 (Member Sets) 與無標籤集合(Untagged Sets) 發現屬於虛擬網路Red (Blue) 的訊框應該由連接埠3以貼標籤的方式傳送出去。橋接器於是將此訊框轉送出去。連接器收到此貼標籤訊框虛擬網路為Red (Blue) 後學習到工作站A(B) 隸屬於其連接埠1
假設此時工作站A傳送一筆訊框給工作站B。此訊框由橋接器的連接埠3以貼標籤的方式傳送出去。連接器收到此貼標籤訊框(虛擬網路為 Red)後發現其目的地工作站B隸屬於另外一個虛擬網路Blue。由於連接器採用共享式學習,因此由過濾資料庫中可得知工作站B隸屬於連接埠1。此訊框以貼上虛擬網路Blue的標籤進入橋接器。由於橋接器已經取消該連接埠的PVID設定(以訊框所攜帶的標籤為主),因此該訊框屬於虛擬網路Blue,同時橋接器學習到工作站A隸屬於此虛擬網路的連接埠3。橋接器的轉送程式在查閱成員集合與無標籤集合後發現屬於虛擬網路Blue的訊框應該由連接埠2以無標籤的方式傳送出去。橋接器於是將此訊框的標籤去掉後轉送給工作站B
相同的,當工作站B回送一筆訊框給工作站A時,其訊框也以沒貼標籤的方式進入橋接器。此訊框由橋接器的連接埠3以貼標籤的方式傳送出去。連接器收到此貼標籤訊框(虛擬網路為 Blue)後發現其目的地工作站A隸屬於另外一個虛擬網路Red。由於連接器採用共享式學習,因此由過濾資料庫中可得知工作站A隸屬於連接埠1。此訊框以貼上虛擬網路Red的標籤進入橋接器。由於橋接器已經取消該連接埠的PVID設定(以訊框所攜帶的標籤為主),因此該訊框屬於虛擬網路Red,同時橋接器學習到工作站B隸屬於此虛擬網路的連接埠3。橋接器的轉送程式在查閱成員集合與無標籤集合後發現屬於虛擬網路Red的訊框應該由連接埠2以無標籤的方式傳送出去。橋接器於是將此訊框的標籤去掉後轉送給工作站A
在此例中,如果虛擬橋接器採用共享式學習模式,則工作站AB都會被認為是隸屬於連接埠3,之後的通訊可能會造成不正常的過濾,影響通訊。
16-17 虛擬網路獨立學習範例 ()
另外一個需要獨立式虛擬網路學習的極端例子發生在兩個不同的工作站使用相同的MAC位址,或一部工作站同時連接在多個區域網路區段上,但每一個網路介面卡使用相同的MAC位址,如圖16-18所示。圖中之工作站使用相同的MAC位址X與伺服器通訊。如果橋接器採用共享式學習模式(使用相同的過濾資料庫),則MAC位址X會一下子隸屬於連接埠1, 一下子又隸屬於連接埠2, 端看最後傳送訊框的工作站是AB。如此將嚴重的影響到工作站與伺服器間的通訊(伺服器應該傳給工作站A的訊框會被轉送到工作站B,或相反)。在這種架構之下,只有採用獨立式虛擬網路學習模式。
16-18 虛擬網路獨立學習範例 ()
需要共享式虛擬網路學習的例子發生在非對稱性的使用虛擬網路。在正常的情況下,屬於同一個虛擬網路的兩個工作站AB在彼此通訊時,都會使用相同的VID。但是在某些情況下,使用兩個虛擬網路反而更方便。工作站A傳送給工作站B時用一個虛擬網路,工作站B傳送給工作站A時用另外一個虛擬網路。這就是所謂的「非對稱性虛擬網路」(Asymmetric VLANs)的概念。 如圖16-19所示,假設伺服器與工作站都不認識虛擬網路,因此訊框都以無標籤的方式傳送。為了達到工作站AB都能與伺服器通訊,但彼此不能通訊的特殊目的(基於某種安全理由),此例中規畫了三個虛擬網路:虛擬網路Purple (伺服器 -> 工作站A/B), 虛擬網路Red (工作站A -> 伺服器), 虛擬網路Blue (工作站B -> 伺服器)
工作站A(B) 經由連接埠1 (2)傳送未貼標籤訊框給伺服器。由於橋接器已經設定該連接埠的PVID = Red (Blue), 因此該訊框屬於虛擬網路Red(Blue),同時橋接器學習到工作站A(B)隸屬於此虛擬網路的連接埠1(2)。橋接器的轉送程式在查閱成員集合與無標籤集合後發現屬於虛擬網路Red(Blue)的訊框應該由連接埠3以無標籤的方式傳送出去。橋接器於是將此訊框轉送出去。
伺服器則經由連接埠3傳送未貼標籤訊框給傳送訊框給工作站A(B)。由於橋接器已經設定該連接埠的PVID = Purple, 因此該訊框屬於虛擬網路Purple,同時橋接器學習到伺服器隸屬於此虛擬網路的連接埠3。橋接器的轉送程式在查閱成員集合與無標籤集合後發現屬於虛擬網路Purple的訊框可以由連接埠1,2 以無標籤的方式傳送出去。在查閱共享式過濾資料庫後可發現工作站AB)隸屬於連接埠1(2)。橋接器於是將傳送給工作站AB)的訊框經由連接埠1(2) 轉送出去。
在此網路組態下,此虛擬橋接器就應該使用共享式學習模式 (Purple, Red, Blue共享)。如果虛擬網路Purple與虛擬網路Red之過濾資料庫不共享,則當伺服器欲給工作站A的回應訊框到達橋接器時會因為找不到工作站A的隸屬埠而將之同時轉送給工作站AB,如此違反工作站間不通訊的要求。相反的,虛擬網路Purple與虛擬網路Red之過濾資料庫共享,則此回應訊框只會轉送給工作站A。伺服器與工作站B的通訊方式也相同。
為了能支援這種特殊的組態設定,此橋接器應該是一種SVL橋接器,或SVL/IVL橋接器。
16-19 虛擬網路共享學習範例 (非對稱性虛擬網路)



How to use simple speedtest in RaspberryPi CLI

  pi@ChunchaiRPI2:/tmp $  wget -O speedtest-cli https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py --2023-06-26 10:4...