使用VLAN連接MOD Part 2

OK 又來發一篇跟VLAN有關的文章了

這次一樣是使用RouterOS的VLAN功能來橋接MOD

不過 這次跟第一篇的不同點在於 我們不使用RB260GS來當作VLAN Switch
之所以會不使用 原因是各家的VLAN Switch設定不盡相同
希望能透過其他家的VLAN Switch 再稍微釐清一點VLAN觀念
或許以後有MOD困難的時候 有更多的選擇可以應用

本文開始


這次使用的VLAN Switch 是TP-Link的TL-SG108E當作設定範本
本身算是1000元左右就能入手的VLAN Switch 價位上跟RB260GS相比算便宜
不過這台比較麻煩在於 它必須要透過官方的程式才能做設定 不像RB260GS可直接透過網頁設定
算是比較美中不足的部分

設定還是跟之前一樣 只是這次另外用一條線路 另外再設定一組VLAN
也就是下圖的Test-VLAN

這個VLAN的ID為150 除此之外其他的設定跟之前的相同
不過這都不是重點 重點在VLAN Switch上


假設SG108E的Port 1是接RB2011 MOD則是接在Port 2 其他Port則是接一般的區網設備
直接連進去管理介面 然後找VLAN設定

我們在RouterOS所建立的VLAN埠 一般都是遵從802.1Q的規範
因此我們只要連到802.1Q VLAN的設定參照就可以了
其他像是什麼MTU VLAN或是Port Based VLAN 比較屬於Port to Port的設定規範 這邊我們就不做介紹了

然後 再根據上圖 來做我們要的設定
首先 Default_VLAN我們不去動它(想動也動不了 不能刪) 我們直接創一個VLAN群組

VLAN ID設為150 至於名稱就隨便給一個
然後再來是Tagged或是Untagged的Port 我們要做設定


(以下若有錯的地方還請糾正)
這邊就來解釋一下Tagged和Untagged之間的差異:
Tagged表示帶有VLAN ID的封包 Untagged則表示不帶有VLAN ID的封包
一般Tagged的設定大多都是針對Switch to Switch
而Untagged的設定大多針對Switch to Terminal 也就是交換器連到終端設備(電腦、NAS之類的)

為什麼交換器之間一定要Tagged封包呢?
以下用一張圖來解釋

我們假設這個網路環境 有兩組VLAN 淺藍色的ID為100 棕綠色的ID為50
ID為50的分別與VSwitch1與VSwitch2連接Port4的設備互通
ID為100的則是連接Port2的設備互通
而兩個Switch之間則是透過Port 1溝通

上面有提到 Tagged的封包是給交換器與交換器之間做溝通
所以我們再細看Port 1

可以注意到 兩個VLAN ID建立的雙向通道 都有設好Tagged封包
假設我們只看ID為100的這組 它的規則會是這樣

當任一個交換器收到該封包時 就會將這個封包送到指定的Port上去
也就是說 當兩台交換器收到標記ID為100的封包時 就會將該封包轉送到自己的Port 4上出去

但假設Vswitch2不小心將VLAN 100的封包沒有標記就傳到Vswitch1上去 就會發生下圖的狀況

雖然Vswitch1收到了封包 但由於沒有任何的VID 因此就照預設設定走 也就是送到所有的Port上去
這很容易造成封包遺失 同時接在Vswitch2 Port4後端的設備也會因為沒有收到回應而判定連線失敗
且如果這個封包是所謂的廣播封包 那更會造成廣播風暴
因此 Tag的設定對於VLAN而言 是相當重要的


這邊也許有人會問 如果VLAN封包遇到不具有VLAN功能的交換器/分享器會如何?
這是個好問題 有些人可能會想使用比較便宜一點的機器 而使用了不具有VLAN功能的交換器
想說VLAN封包應該也是會送到其他的裝置的

很遺憾 不行 VLAN一定要對應VLAN交換器或是有設定VLAN功能的電腦/裝置
為什麼呢? 原因的話 用一張圖解釋就可以了

圖中上面是一般的網路封包格式 下面則是包含了VLAN的封包格式
VLAN本身有L1、L2、L3層的運作方式 但不論是Port Based VLAN或是802.1Q VLAN 都是使用L2層運作
你可以注意到 VLAN Header插入在Source MAC Address與Ether Type/Size之間 挪用了32bits來儲存VLAN資訊
由於不具VLAN的交換器 會缺少可以辨識VLAN封包格式的資訊
因此一般交換器遇到VLAN封包時 交換器會因為無法辨識而將VLAN封包視為無效的封包並丟棄
換句話說 任何一個VLAN封包在遇到非VLAN設備時會被過濾掉 失去了VLAN的作用
所以 VLAN設備一定要跟VLAN設備對接 除非另外接的端點已設為Untagged


此外 還有一個PVID 這個到後面會再解釋



再回歸到原本的這張圖

由於Port 1是接RB2011 Port 2則是接MOD
因此建立VLAN群組的時候 我們將Port1設為Tagged Port2則設為Untagged
然後點Apply 就會建立一個VLAN群組
而沒有點選的Port 則表示其他的Port並不會參與這組VID 也就不會有廣播風暴的問題


不過還沒完 我們還有PVID需要設定


什麼是PVID?
PVID,全名為Port VLAN ID,它的功用是將Untagged的封包 強制Tagging 讓其封包帶有VID
也就是說 任何一個進到這個Port的封包 假如是Untagged 那麼在進入這個Switch的時候 都會加入VID
而加入VID的數值為何 就是根據這個表來建立

前面我們有提到 將MOD接上的Port設為Untagged 但是為什麼呢?
原因在於前面提到的 一般的終端設備是不支援VLAN封包的
我們需要對要送到終端設備的封包做Untagging的動作
因此將MOD的Port設為Untagged 意思是從其他Port送來的Tagged封包 出去時都會做Untagging的動作
這樣MOD才能正確地收到封包 MOD也才可以看

從Switch那邊接收VLAN封包是一個問題 從終端設備發出的封包如何走VLAN則又是一個問題
這時候就是PVID發揮功能的時候了

看圖說明:

假設MOD是接VLAN Switch的Port 4上 當MOD開機或是換台時 都會發出封包到中華的伺服器
這時候它會傳到Port 4上 再從Port 1出去
但因為Port 1是設定為Tagged Port 任何一個Untagged的封包都會做Tagging的動作
這時候就會去查這個封包是從哪一個Port進來的 然後再根據PVID表 決定這個封包要標記的VID是多少

如圖所示 Port 4的PVID是150 且這個封包是從Port 4進來的
因此該封包會被標記為150並送出到其他的VLAN交換器或是路由器上


回歸到SG108E的設定 這邊我們將Port 2設為150 點選Apply+Save立即套用
這樣MOD就可以看了~



不過 若是這個VLAN Switch後面是接同樣也支援VLAN的網路設備或終端設備呢?
這個其實也很簡單 只要將有接上的Port 設定對應的VLAN群組 然後都設為Tagged就可以了

假設從路由器進來了兩個VLAN 一個是100 一個是200
接路由器的是Port 1 而VLAN-100要走Port 2 VLAN-200則要走Port 3 且這兩個Port後面都是接支援VLAN的設備
那麼我們就分別設100及200這兩個群組 並且....
100群組的部分將Port 1、2設為Tagged
200群組的部分則將Port 1、3設為Tagged 就可以了
而由於我們只是將Tagged的封包送上去 因此我們不需要設PVID



大約是這樣 可能有一些地方寫得不是很好 或是有錯的地方
如有發現 還請來信或直接回應糾正
希望這篇能夠幫助各位~

參考資料:
How to configure 802.1Q VLAN on Easy Smart Switches?
SwOS/SWOS-802.1Q-TrunkTwoSwitches

延伸閱讀:
使用VLAN連接MOD Part 1
使用VLAN連接MOD Part 3
使用VLAN連接MOD Part 4
2015-07-18 23:17 #1
感謝A大測試分享,先筆記,
這樣的組合比用兩台ROUTEROS的設備省得多了,
不知道長時間的穩定性如何~
補充:RB260GS與SG108E對接VLAN

這邊就稍微說明一下 如果有兩個VLAN Switch 要怎麼做呢?

先來一個架構圖

我們有一個VLAN線路 ID為100 從RB2011上面出來後 會先連接到RB260GS
在RB260GS的Port4上面接著一台MOD 並且Port5後面再串接一台TL-SG108E
(註:圖中SG108E只有5 Ports 只是示意)
並且SG108E的Port2也接著一台MOD
我們得設定這兩台VLAN Switch 使這兩個MOD都可以同時收看
並且其它非IPTV的終端設備接上這兩個Switch時得能正常上網
那要怎麼做呢?


由於在這範例中 RB260GS除了是VLAN接收端 同時也擔任VLAN中繼的角色
因此也需要動用到VLAN群組以及PVID
聽起來好像很難 但其實還算滿容易的

首先我們先做RB260GS的設定

由於M01會針對圖片做壓縮 且M01最近會阻擋imgur.com之類的圖床 所以圖可能會不清楚 多做一下文字解釋

我們先在VLANs的地方建立一個VLAN ID為100的群組
而每一個Ports的設定則分別為
Port 1:leave as is
Port 2:not a member
Port 3:not a member
Port 4:always strip
Port 5:leave as is

leave as is的意思是 當這個Port接收到VID為100的封包時 不去改變它的狀態
因此Port 1及Port 5收到VLAN封包時 就不會去動它的狀態而送出
而Port 4因為是接MOD 需要做Untagging的動作 因此選擇always strip
也就是收到這個封包時 把封包變為Untagged封包 也就是類似SG108E的Untagged Port

而Leave as is以及Add if missing 其實也就類似SG108E上的Tagged Port做法
不同在於 Leave as is對於Untagged的封包是不做任何動作的
Add if missing則是會針對Untagged的封包做Tagging的動作
但因為我們還有區網的封包需要傳遞 因此設為Leave as is就行了

再來是VLAN的設定

由於圖可能會縮很小 因此這邊再做說明

這邊除了Port 4之外 其他的Port都是照預設值設定就可以了
而Port 4的設定 基本上跟之前直接接MOD的設定一樣:
VLAN Mode:enabled
VLAN Receive:any
Default VLAN ID:100
Force VLAN ID:不勾

不過這邊補充一點:
Default VLAN ID其實就類似SG108E上的PVID功能
只要設為Enabled 任何一個進入的Untagged的封包都會被標記為Default VLAN ID所設定的值
也就是封包要出去之前都會被當做VLAN 100的封包 出去時會被標記 因此我們就無須再設定Port 1的Egress狀態

至此 RB260GS的設定就完成了

而TL-SG108E的設定則是跟1F的說明一樣
只要建立一個ID為100的VLAN群組 並分別將Port 1以及Port 2設為Tagged及Untagged
並且將Port 2的PVID設為100就可以了

大約是這樣 這是比較簡單的VLAN Switch to Switch的做法
由於RB260GS上的設定比較複雜些
因此 如何做封包傳輸的最佳化 還需要針對RB260GS上的設定做一番研究

deanma wrote:
感謝A大測試分享,...(恕刪)

穩定性從昨晚測試到現在都還滿穩的 MOD都沒有破圖的現象
是說這種簡單的Switch 除非設定問題 一般來說都還滿穩的

不過建議入手時先更新一下韌體到最新版
我拿到的時候韌體是初代的版本
結果將本身的IP設為DHCP後 想說怎麼都連不進去
後來發現 設成DHCP後 IP 閘道都是對的
可是子網路遮罩並不是255.255.255.0 而是85.85.85.85
當下傻眼.......

後來是將韌體更新後 DHCP才抓到正確的子網路遮罩值

AKSN74 wrote:
穩定性從昨晚測試到...(恕刪)
SG108E的vlan可以定義更多組vlan嗎?
希望能定義的更多,不只有id:100

gfx wrote:
SG108E的vlan...(恕刪)

當然 它可以定義多組VLAN
這部分恕我刪除 因為之後的測試發現會Loop

所以如果真的接數據機的化 還是只接一條線就好了

Part 3有更好的串接方式 可以參考看看
請問樓主,小弟想學習vlan的玩法
但是只有一台routeros機器
想說有辦法設定成
配發到192.168.88.2-50的ip切成vlan1
51-100切成vlan2
各自不相通
這個有辦法設定嗎??
還是只能找有vlan的switch來搭配??

另外因為小弟使用凱擘而不是中華電信
因此照著您在第一篇設定brideg-wan時
將ether1加到brideg-wan中
cable modem就無法配發真實ip一直在seraching ip
將它還原回來才抓得到ip
讓小弟不知道如何進行下一步去切vlan
因此才想說有沒有使用ip去切vlan的方式


turion111 wrote:
請問樓主,小弟想學...(恕刪)

針對兩個部分回答

1. 就算你的RouterOS設定好VLAN 你還是得另外裝一台VLAN Switch
就像我前面說的 一般的電腦不支援VLAN封包 因此你得在Switch端做Untagging的動作才行
如果你是直接將Tagged的封包直接丟給電腦 網卡會因為無法識別這個封包而丟棄

如果你要讓電腦直接支援VLAN封包 你得設定網卡才行 但並非任何一個網卡都支援
像Killer E2200是支援的

Intel網卡基本上也支援

可以說主機板內建的網卡"大部分"都支援VLAN 不過要手動設定
螃蟹我就不清楚了 手邊沒有螃蟹網卡的主機 只有Killer和Intel
但現在Intel平台的主機板 只要是H系列跟Z系列 都是配Intel網卡

2. 我會建立Bridge-WAN並把VLAN綁在一起的原因是因為MOD
如果你沒有MOD的話基本上可不用這麼做

3. 如果你是想使用DHCP網段區分不同VLAN的話 我反而會比較建議你用Port的方式
也就是接Port1的設備自動分配2~50 Port2的設備自動分配100~150 這種
這個在DHCP Server和IP Pool那邊應該就可以設定了
turion111 wrote:
請問樓主,小弟想學...(恕刪)

若您是在Router接一個switch為dhcp1 ,另一個switch為dhcp2.
這樣就不必透過vlan.

若是您只想接一台switch就希望能當兩台用,讓一部份ports使用dhcp1 ,另一部份ports為dhcp2
這樣您得買可切vlan的switch ,但支援vlan的switch通常會貴一些些,就這樣
評分
複製連結