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

2011年8月9日 星期二

(轉貼) ASCII字元碼對照表 (C/C++) (C) (Web) (HTML)

最近有需要用到了,趕快來紀錄一下比較方便查詢

完整的ASCII字元碼對照表,除了8進位、16進位、10進位外,還包含HTML表示法

Reference:

2011年7月29日 星期五

Trace32 略知一二

/* 關於Trace32 內建online help page */

Trace 32 在插上電源後打HELP, 按下ENTER 可以有個online help page可以查COMMAND,但也是對應到安裝trace32目錄資料夾下一個pdf的資料夾下面的所有.PDF的文件(EX. C:\T32\pdf ),只是TRACE 32打HELP開起來的時候有個索引的功能[下有查的大概原因]



/* 關於SYSTEM.UP */

正常打SYSTEM.UP 這個COMMAND過程是 trace32把目標的CPU給RESET然後強制他進入debug mode (我們就是在debug mode 可以load file or cmm file, 所以點GO之後才是根據我們load的file去執行)


會搶不到的原因是CPU上nTRST這個pin line is connected to 某些地方造成我們無法進入debug mode(這要看cpu對pin的design)

所以當我們下OFF 後 可以把cpu給holt住,強制他進入debug mode。跟JTAG、線有無關係我就無法確定了


這些在debugger_arm.pdf中有詳細說明

2011年7月26日 星期二

Trace32

本想找個Trace32 command的意義的,結果竟然爬到大陸子公司對trace32研究的文章! 用公司系統查還可以查到這個人的E_MAIL跟部門,這實在太牛了XDD


http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=1435747&bbs_page_no=1&search_mode=4&search_text=holged&bbs_id=9999

2011年7月4日 星期一

SNMP SMIv2

§
SMIv2Structure of Management Information Version 2

The STATUS clause in indicates whether this definition is current or historic. 
  • current" means that the definition is current and valid. 
  • "obsolete" means the definition is obsolete and should not be implemented and/or can be removed if previously implemented. 
  • "deprecated" also indicates an obsolete definition, it permits new/continued implementation in order to foster interoperability with older/existing implementations.

Reference:
RFC2578 SMIv2, section6.1