2011年9月29日 星期四

L2PT (Layer 2 Protocol Tunneling)

L2PT

Layer 2 Protocol Tunneling

這其實是為了解決edge端switch在跑Layer 2 protocol時候發出很多BPDU的同時,在Service Provider的core-network也會有對應的Layer 2 protocol在run,為了不讓彼此互相干擾所衍生的tunneling feature
Layer 2 Protocol Tunneling Network Configuration, from Reference[1]
以這圖而言,Switch 1 2 3 以及4 5 的Layer 2 protocol就可以互通,然後不影響Service Provider的Layer 2 protocol

port role可分成access port以及tunnel port

access port代表接edge switch的port,當這個port收到特定BPDU時會把它封裝成帶特定MAC(user可自己設定)然後送往tunnel port往core-network丟

tunnel port代表接core-network的port,當這個port收到帶特定MAC的packet會把它解封裝然後丟回access port


目前常見support的Layer 2 feature有STP, CDP, VTP, PAgP, and UDLD
扣除STP (Spanning Tree Protocol)外,CDP (Cisco Discovery Protocol), VTP (VLAN Trunking Protocol), PAgP (Port Aggregation Protocol), UDLD (Uni-Directional Link Direction)都是CISCO自己提出的protocol

2011年9月14日 星期三

Snooping

在switch上另個常見的功能就是Snooping
Snooping的定義是「偷看」,switch偷看後記下來,然後有個別的應用,但重點是不影響原本的行為,意即是if沒開Snooping也可以正常運作
開啟Snooping後在switch上會「自動學習」跟他有關的infomation
這樣之後有packet進來的時候switch就可以直接把Packet送到適合的port

常見的包含IGMP SnoopingDHCP Snooping

2011年9月9日 星期五

GVRP

GVRP
VLAN的port可以手動也可以自動學習,手動設定的可以稱作Static VLAN;自動學習的可以稱作Dynamic VLAN。
其中自動學習的VLAN是使用GVRP, 也是個送出特定的BPDU(dst MAC = 0180C2000021)來完成的功能

GVRP的BPDU會夾帶VLAN的information,接收到後會自動"建立起"這個對應的VLAN



Here is an example of GVRP BPDU with JoinIn event for VID=100.
GVRP BPDU  /* VLAN 100 */
01 80 C2 00 00 21 00 00 00 00 00 02 00 0C 42 42 03
00 01 01 04 02 00 64 00 00

04: Length
02: JoinIn
00 64: VID 100
GVRP BPDU


Reference:
[1]http://support.dell.com/support/edocs/network/pc5212/tc/ug/pc5212ce.htm
[2]http://www.furukawa.com.br/pls/portal/docs/PAGE/PORTAL/DRTECH/PRODUTOS%20FORA%20DE%20LINHA/SWITCH/SW_5109/MANU_GERENCIAM_5109.PDF
[3]http://guiderworld.blogspot.com/2008/11/8021q-vlan.html


2011年9月8日 星期四

sFlow

sFlow, defined in RFC 3176。提供一個monitor整個network的solution,讓網管人員可以了解到目前整個網路環境的資訊(好比port上統計資料、收送的packets)
sFlow,s是sampled的意思,我認為叫做「取樣」還蠻恰當的

sFlow的架構中主要有兩個角色:Collector以及Agent。如下圖
sFlow架構圖
一般的switch/router大多扮演Agent角色。Agent在間隔一段時間後取得sample的data或者counter去傳送sFlow packet給Collector,Collector再根據收到的sFlow packet去做些分析,sFlow packet採用UDP的方式來送

sFlow sampling包含了兩部份:Flow sample以及counter sample;Flow sample就是 packet,counter sample就是port上的counter統計資料。這兩種都可以被包含在sFlow的datagram中。在sFlow的datagram中最多可以一次夾帶4個sample的data,包含了3個counter sample以及1個flow sample


在switch端扮演Agent的角色,設定包含了Collector的IP位置,UDP socket number,counter sample的interval(20~120秒)以及sample rate(每隔幾個packet sample一次)

Reference:
sFlow verion 5

switch....

/* 工作快兩年,我想我該整理一下碰到的東西跟自己的想法,持續update這篇, 2011-09-08 */


先了解一下hub vs switch的差別

Switch
不外乎就是當有packet從一個port進去的時候要forward到正確的port,至於如何正確的forward就是一門很大的學問


Switch在網路傳輸過程不外乎做幾件事情
其中最主要的減少流量增加網路效能 (這也是為什麼要用Switch不用hub的主因)

其中,為了減少一些不必要的資料在網路上傳送
於是產生了切割網段的方式,也就是所謂的VLAN(IEEE 802.1Q)

VLAN Tag format

而也因為有切割不同的VLAN,在packet就會因此受到限制,so 會為了解決VLAN跨domain的問題去做出相對應的feature


以Virtual LAN而言依據不同的切割方式衍生了幾種VLAN:
Protocol based VLAN (根據protocol來切VLAN)
Port based VLAN (根據對應的port來區分traffic)
Subnet based VLAN (根據IP range來切VLAN)



以Subnet based VLAN而言,使用者可以設定packet的source-ip + mask-bits來判斷符合條件的packet就送到哪個VLAN去。另外也可以根據不同的VLAN設定不同的priority,值越大代表權限越高

Protocol based VLAN則是去parse 進來packet的protocol 欄位是什麼(ex. IP、IPX、ARP、RARP、Apple Talk、DECNet),然後使用這自己決定符合這條件的packet要送到哪個VLAN去。

特別一提的是,上述兩種VLAN環境中,在進來的packet是有帶VLAN tag的時候還是按照原本的VLAN去forward;上述提的兩種進階的VLAN都是適用於進來的packet不帶VLAN tag的情況

最後,Port based VLAN 就是以port當VLAN切割的依據,可以設定哪些port是在同個VLAN底下。

802.1p除了define優先權的概念,包含八種不同的priority外,另外定義了GARP-Generic Attribute Registration Protocol。GARP定義了Ethernet switch間交換不同特性訊息的方法,定義了Multicast(GMRP)、和VLAN(GVRP, in 802.1q)等的屬性。GARP定義了這些如何發送/處理feature的封包等

在VLAN中......可探討幾個常見的VLAN功能:
VLAN  port的設定可分成手動 / 自動  GVRP
Ingress filtering
   這概念很簡單,當這功能打開,從port進來的packet如果帶的VLAN TAG的VLAN「不存在」or和這個port join的VLAN不同的話就會直接被drop掉。不同的model這實現的方式不同,但不外乎是per port去做filtering或者total system去做filtering

VLAN Mapping
把進來packet的VLAN ID給換掉,可用於在Service Provider Network中和edge端的private network下用到相同VLAN ID但有不同用途的情況下。除了換VID也可以換priority,這是per port設定的feature


VLAN Stacking
VLAN Stacking 簡單講就是在原本的VLAN TAG前面再加一個TAG,有兩層TAG的意思。也稱做Q-in-Q, double tagged好處是在原本的4094的VLAN可以double加到4094*2個VLAN可以用。其實是為了解決ISP業者為了個別用戶都個別去設定VLAN導致VLAN不夠用的問題。

原本的VLAN稱為INNER TAG (CVID),多加的那一層稱為OUTER TAG (SVID)

Note: VLAN Stacking和VLAN Mapping不能同時使用


Reference:
[1]http://blog.xuite.net/ahdeng/life/16396680
[2]http://guiderworld.blogspot.com/2008/12/vlan-stacking.html


VLAN Trunking
VTP(VLAN TRUNKING PROTOCOL),cisco提出的protocol,不過大多數交換器產品都支援此protocol。

這功能主要是要讓「不存在」於這台Device的vlan tag packet可以pass through這個port。優點是在end-device設定好對應的vlan group時,當彼此間要溝通的時候,中間經過的device也都要有對應的vlan group設定才可以通,否則它們會看到這些packet都會把它drop。而這些packet會forward到同台的有開vlan trunking的port去

Reference:
[1]http://support.dell.com/support/edocs/network/pc5212/tc/ug/pc5212ce.htm


port-security - 主要用於限制per port可以讓幾台host(認幾個MAC)連上去,包含動態學習以及手動設定


Security有關的feature可以包括幾項,主要規範於IEEE 802.1X:

Multicast: IGMP Snooping


for Layer 2 redundant mechanism: Spanning tree(STP, RSTP, MSTP..)
spanning tree收斂速度太慢(300ms !?) Extreme Network提出 EAPS,Ethernet Automatic Protection Switching, 可以在30ms的時間內完成

to be continued...

2011年9月7日 星期三

Loop guard

Loop guard用於解決edge端loop的問題,而對應的應用在core-network避免loop的則是STP

Loop guard得作法其實就是送一個probe packet出去,當在同一個port收到這個flooding回來的probe packet則表示有loop發生 -> 關port避免loop

當switch收到probe packet,會確認dst mac是不是特定的(01a0c5aaaaab),以及src mac是不是自己的mac,如果是的話表示有loop情形發生 -> 關port; 反之則flooding到其他port

當loop guard開始作用,port會被disable掉。當loop排除,可以用err-disable的recovery自動enable回來;或者手動在port上先關掉,再打開一次回復forwarding state


延伸閱讀:http://guiderworld.blogspot.com/2009/02/loop-guard.html


/* loopguard probe packet(dst mac = 01a0c5aaaaab, source mac = 0019cb000001) */
01 a0 c5 aa aa ab 00 19 cb 00 00 01 90 00 01 00
27 bf 06 01 06 00 19 cb 00 00 01 02 02 00 00 03
06 47 53 32 32 30 30 04 04 00 40 cb 3a 05 06 47
53 32 32 30 30 00 00 00 00 00 00 00