2009/10/05

Multicast VLAN...

在看這篇文章會建議先看一下Multicast
Multicast VLAN 或 Multicast VLAN Registration
是為了MOD(Media-on-Demand)所設計出來的
一個Multicast VLAN可以將multicast traffic透通到其他的VLAN
如下圖
在switch上面設定multicast vlan 99
則multicast server S的multicast traffic就會送給VLAN 100, 200, 300

這樣可以簡化頻寬的使用與降低multicast group的管理難度
MVR主要會針對IGMP join與leave封包進行處理
至於IGMP report的封包則是交給IGMP snooping

MVR port分為兩種
一種為source port: 可以收送multicast traffic (此port都是接到multicast sever或是multicast router)
一種為receive port: 只能收multicast traffic (此port都是接到用戶端)

MVR分為兩種模式
dynamic(自動):會將IGMP report的封包送到所有的source port,並且自動更新multicast forwarding table
compatible(手動):不會轉送任何的封包,必須手動設定

由下圖來做各設定與流程的範例

MVLAN要設為99並且要設定802.1p的priority (0~7)
在設定的部份port 1 & 2要設為recive port
port 9要設定為source port
最後在multicast group的部份加入
Movie :224.1.3.10 ~ 224.1.3.20
News : 230.3.2.100 ~ 230.3.2.110
以上便大功告成了

如果A user想要看某個電影頻道(224.1.3.15)
A會送IGMP report給switch去join 224.1.3.15的multicast group
IGMP report送到switch之後
switch會去比對MVR的table看是否有match到multicast group
並存到multicast forwarding table
最後透過A user所屬的vlan 100來傳送multicast traffic

如果A user想要換頻道或關機不看了
他會送一個leave的message給switch告知說要離開此頻道
switch會送query的message給port 1
如果還有其他的人在此port要收看的則會繼續送multicast封包
如果沒有別人在此port要收看了switch會將此port給移除

PS:一個port能屬於多個mulitcast VLAN但是multicast group不能有overlap

2009/09/27

理財導讀...


理財第一門課開源節流

理財步驟
1. 記帳
2. 檢視財務狀況
3. 保險保費繳不出(保險操作)
    〉保險種類保險匯整表
        》壽險 → 保障額度 (家庭需求法) [投資型保單]
        》健康險
            →醫療險
            →防癌險
            →重大疾病險
            →長期看護險
        》失能險
        》傷害險
        》年金險 (越老越便宜)
4. 存錢
5. 目標
6. 投資工具
    〉利率 (複利實質利率)
    〉資產配置
        》定存 (定存進階雙幣定存定存銀行)
        》債券
        》股票 (自己的明牌好的股票績優股、) [填權除權除息減資]
            → 籌碼分析融資融券
            → 技術分析
            → 基本分析
                ◎ 財務報表 (資產負債表損益表現金流量表報表關係)
                ◎ 財務狀況分析

2009/09/22

墓誌銘...

所謂的人之將死,其言也善
如果在現在請自己,寫下墓誌銘...
你會想寫什麼呢?
很多人會寫下自己的經歷與貢獻
我想了很久...
決定由三個主題來成為我的墓誌銘

以下是我這些年來的小小分享

● 感恩
如果現在各位還活著
首要之務就是感恩
感恩所有對你好、對你不好的人
不僅是感謝更要將之視為恩情
任何人在世上都需要別人幫忙
對你好的人讓你知道世界最重要的東西〈愛〉
對你不好的人讓你學會警惕與成長
請各位感恩所有在生活發生的一切
或許很難...
但是學會感恩
你的心靈會變得更美好、更完美

● 珍惜
在感恩之後
就要學會珍惜身邊的一切
遲早所有的一切都會離你而去
不管是所有的人、事、物
全都會離你而去
請各位珍惜週遭的一切人事物
即便是小小的花朵...
在學會珍惜之後
周圍的一切會變得更有感觸、更精緻...

● 希望
我一直很喜歡潘朵拉的故事
她打開了盒子之後貪婪、忌妒、憂傷、疾病...都跑了出來
於是人類的世界開始有了「不幸」
盒子只剩下"希望"
於是人類透過希望去克服世界上一切的不幸
在遇到了任何的苦難時
請懷抱"希望"
它會帶你走過任何困苦...

2009/04/26

朱銘給年輕人的建議

最近朱銘推出他的新作"科學家"
而他下的注腳我覺得很有趣
"藝術家和科學家一樣,都在尋找前所未有的創發。
科學家往大自然、宇宙尋找,藝術家往內心尋找。
這要靠修行,沒人能幫你"
我想各行各業都是一樣的
以下是他給年輕人的建議
我想可以對大家有些啟發

● 要像我這麼打拼才會贏,我的工作量比三個年輕人加起來還多!

● 要忘掉從別人那裡學來的,但並非要你別學習。
沒有經歷學習的過程,光靠本能創作,發展會受侷限。
要先學習再忘掉,留下的是智慧,這是必經的創作過程。

● 忘與丟,是最重要的課程。
學得太久了,必須先忘掉,才能找回自己。

● 要學活的藝術,不要學到死的藝術

● 創作以前要先做好研究,等真正創作時,就不可以想。
不要去想,必須渾然忘我,要項打坐到很安靜的地步。

2009/03/31

Layer 2 Switch...

寫了一大堆的Layer 2 Switch的功能
卻沒有做較完整的概論
希望能在這篇有個大致的輪廓...

首先要介紹的是
為什麼要用Switch而不用hub?
這就要提到Ethernet Network的原罪了
因為Ethernet是採用CSMA/CD的方式傳輸
在網路設備要傳輸前會偵測網路的使用狀況(碰撞偵測)
如果有別的設備在傳輸
則會等一段時間在試著傳輸
若太多的網路設備都在同一個網路上面的話
就會常常要等待
這樣的一個網路區域通常稱為"碰撞領域"(collision domain)
hub只會將碰撞領域變大
而switch可以切割碰撞領域
所以用switch可以增加網路使用的效能

如果要增加Ethernet的頻寬使用率
必須要減少一些不需要的封包在網路上傳送
以下將功能大致分為三類
減少網路流量、增加網路頻寬、安全與偵錯

● 減少網路流量
首先要介紹switch最主要的功能
802.1d (bridge behavior)
主要是介紹如何自動學習MAC以及轉送frame
在這邊可以參考MAC Table以及Static MAC forwarding
並且透過port security來設定MAC forwarding的作法
也可以透過filtering的功能來限制traffic的數量
除了這點之外還要避免"迴圈"的發生
迴圈會導致broadcast strom(廣播風暴)
在這邊可以參考RSTP
但是RSTP只能有一隻tree於是有了MRSTP(這不是在standard裡面)
而且RSTP無法解決不同VLAN可以有不同tree的問題
於是有了MSTP(802.1s)
而且為了避免edge端的loop產生
於是有了Loop Guard的功能

為了減少一些不必要的資料在網路上傳送
於是產生了VLAN(802.1q)的概念
並且衍伸了
Protocol based VLAN (根據protocol來切VLAN)
Port based VLAN (根據對應的port來區分traffic)
Subnet based VLAN (根據IP range來切VLAN)


● 增加網路頻寬
如果頻寬不夠的話
在802.3ad定義了link Aggregation
就是可以將多個實體的port綁成一個邏輯上的port
那個port有更高速的頻寬跟容錯的機制

而在802.1p則是定義了Ethernet的priority以及Multicats的運作
在priority的部份可以參考Queue Method
在Multicast的部份可以參考GARP以及Static Multicast Forwarding

在802.3x也定義了flow control的部份
可以參考broadcast strom control以及bandwidth control


● 安全與偵錯
在switch的認證與安全的部份定義了802.1x
可以參考AAAPort Authentication

在tunneling(VPN)的部分有802.1ad (Q-in-Q)
可以參考Layer 2 Protocol TunnelingVLAN StackingVLAN Mapping

之前最為大家所詬病的Fault Management
也在最近有了802.1ag CFM
Mirroring真的不知道要放在哪裡
就先在這邊借放一下啦...

2009/03/25

Static Multicast Forwarding...

就是手動設定要將Multicast MAC的frame
送到某個VLAN的某些port

IGMP Snooping與Static Multicast Forwarding的關係
有點類似MAC Table裡面的
Address Learning跟Static MAC Forwarding的關係
IGMP Snooping會自動學習
並且把對應的Multicast Packet送到適合的port
而Static Multicast Forwarding就是
手動指定Multicast Packet送到指定的port

這邊有個比較特殊的地方要做說明的
那就是關於Multicast MAC Address
在Layer 3的Multicast IP為Class D
224.0.0.0 ~ 239.255.255.255
而在Layer 2的Multicast MAC
必須為01:00:5E開頭的(這六碼通常稱為OUI)
所以Multicast MAC Address的範圍為
01:00:5E:00:00:00 ~ 01:00:5E:7F:FF:FF

如果眼尖的人會發現
為什麼不是
01:00:5E:00:00:00 ~ 01:00:5E:FF:FF:FF
因為這好像是standard定義的
如果要將Multicast IP轉為Multicast MAC
就只能針對後面的23個bits進行轉換
下面做個簡單的範例

如果想將224.10.0.1轉成Multicast MAC的話
先轉成2進位11100000.00001010.00000000.00000001
再針對最後面23個bit進行轉換
0001010.00000000.00000001 = 0a:00:01
在將前面帶入01:00:5E
所以224.10.0.1的Multicast就會成為01:00:5E:0a:00:01
因為只有針對後面的23個bit進行轉換
所以以下的Multicast IP都會被轉成01:00:5E:0a:00:01
224.10.0.1、224.138.0.1
225.10.0.1、225.138.0.1
226.10.0.1、226.138.0.1
227.10.0.1、227.138.0.1
228.10.0.1、228.138.0.1
229.10.0.1、229.138.0.1
230.10.0.1、230.138.0.1
231.10.0.1、231.138.0.1
232.10.0.1、232.138.0.1
233.10.0.1、233.138.0.1
234.10.0.1、234.138.0.1
235.10.0.1、235.138.0.1
236.10.0.1、236.138.0.1
237.10.0.1、237.138.0.1
238.10.0.1、238.138.0.1
239.10.0.1、239.138.0.1
一共32個Multicast IP會轉成相同的Multicast MAC

PS: 至於為什麼是23個bit,請參考此篇

2009/03/24

Multicast...(IGMP)

在IP packet的傳送方式中
主要分為兩類:unicast以及broadcast
unicast就是 一送一收
broadcast就是 一送全收
而multicast就是 一送群組收
以上翻的很爛...但是就差不多意思啦

在提到了Multicast時
必須要提到IGMP (Internet Group Management Protocol)
主要是用來定義如何在Layer 3建立multicast group
這個protocol不是用來傳送資料用的
專門用來建立multicast群組

之前學過網路的人一定知道
D class(224.0.0.0 ~ 239.255.255.255)是用來做multicast group
所以說如果
A的PC(IP為172.23.23.1)加入multicast group 224.0.0.1
B的PC(IP為172.23.123.1)加入multicast group 224.0.0.1
C的PC(IP為172.23.23.2)加入multicast group 224.0.0.2
而A的PC在做multicast只會傳給B的PC
特地將IP寫出來的意思是說IP是電腦的地址
而multicast group的address是群組的名稱
有點類似A以及B的PC都加入天道盟
而C加入竹聯幫的意思

IGMP Filter Profile指的是說
Switch可以收到哪些的multicast的group
如果設定IGMP Filter Profile (224.0.0.0 ~ 225.0.0.0)
那233.0.0.1的multicast的packet就會被這台switch捨棄掉

在來提一下IGMP Snooping
Snooping就是刺探的意思
但我覺得在這邊翻譯成"偷偷學"比較好

比方說port 3送了一個Join multicast 224.0.0.1的封包到switch
switch就偷偷地學起來
等到從port 5收到multicast 224.0.0.1的封包時
就知道只要傳給port 3就好了
不用傳給別的port
透過IGMP snooping就不需要手動設定了
而且也不會送到其他不屬於這個multicast group的port
減少封包傳遞的數量

而且每個VLAN都可以有自己的multicast group
所以IGMP snooping最多可以support到16個VLAN
所以VLAN 100有multicast group 224.0.0.100
VLAN 200也可以有multicast group 224.0.0.100
IGMP snooping有分為兩種mode
● auto
自動從任何vlan學multicast group
直到學滿16個VLAN就不再學了
● fixed
只會由手動建的vlan學multicast group

每台Device需要設定
● IGMP Snooping
用來決定是否要開啟IGMP snooping的功能
● Querier
讓這台switch可以送querier的封包給對應的port
● Host Timeout
多久沒有收到report message
就將此port從某個multicast group移除
● 802.1p Priority
出去的IGMP control packet要轉貼成什麼樣的priority
● Unknown Multicast Frame
如果收到未知的multicast frame要採取什麼樣的作法
可以選擇Drop或Flooding
● Reserved Mulitcast Group
224.0.0.0 ~ 224.0.0.255是用來保留給
local network使用的multicast group
如果收到這個domain的frame要採取什麼樣的作法
可以選擇Drop或Flooding

每個Port需要設定
● Immed. Leave
當一收到leave message的封包時
馬上將這個port從那個multicast group移除
● Normal Leave
在某一個port要離開某個multicast group時,會送出一個leave的msg
switch收到之後會送出一個query的msg,然後等依段時間
如是有收到join的msg則會繼續送資料
若沒有收到則從switch中刪掉
● Fast Leave

● Group Limited & Max Group number
限制這個port最多可以加入幾個multicast group
如果超過的multicast group的數量
就由Throttling來決定處裡的方式
● Throttling
如果超過某個port最多的multicast group的數量
可以選擇捨棄掉新的multicast group (deny)
或是將舊的multicast group給取代掉 (replace)
● IGMP Filtering Profile
選擇這個port的可以允許的multicast group
如果multicast group不屬於IGMP Filtering Profile
就不會進到此port
● IGMP Querier Mode
當此port收到query message的作法
選擇Auto時
如果一收到query message就會成為query port
選擇Fixed時
不管如何都會成為query port
選擇Edge時
不管如何都不會成為query port

PS:目前IGMP的版本到v3
IGMP-v1:只有query和report的封包,要等到timeout才會leave
IGMP-v2:加入了leave的封包
IGMP-v3:加入了source filter的功能,host端可以決定要收到來自哪些source來的IGMP封包

2009/03/23

GARP...

Generic Attribute Registration Protocol(GARP)
簡單來說
就是在網路上用來自動註冊或撤銷某些attribute
並將這些attribute傳送到整個網路
而attribute有VID或Multicast Group
使用VID當attribute的protocol就是GVRP
使用Multicast Group當attribute的protocol就是GMRP

GARP有三種不同的Message
● Join:用來註冊attribute (設備主動送出)
● Leave:用來註銷attribute (設備主動送出)
● Leave All:在固定時間註銷所有的attribute (Switch在固定時間註銷)

GARP也要設定三種不同的Timer
● Join Timer
實際上Join Message會送兩次
若第一次送出之後沒有回應
會再等Join Timer的時間之後
再送出第二次
● Leave Timer
在收到Leave Message之後
Switch會等待Leaver Timer的時間
若在這中間有收到Join Message
則會保留此attribute
若沒有收到Join Message
則再將此attribute刪除
● Leave All Timer
當GARP啟動之後
Leave All Timer就會開始倒數
在timer結束之後
會送Leave All Message給其他Device
所有的Device要重新註冊

PS:GARP不會單獨存在,一定要有GVRP或GMRP

2009/03/10

Makefile...

在介紹Makefile之前
先了解一下什麼是make
make是自動化轉換文件格式的工具
並且會檢查文件之間的相依性
只會針對有修改的檔案進行編譯
通常是用來轉換原始碼(*.C)成執行檔(*.exe)
而文件之間的相依性
就是定義在makefile中

makfile基本的結構
target: dependencies
Commands
以下分別說明
● target
所要建立的檔案
必須要以:結尾
在make時發現target建立的時間比dependecies新
就不會再重新建立target

基本上make時會先參考all的target
並根據它的dependencies決定要建哪些項目
若沒有all則會採用第一個target

若target並不是要建立檔案
例如
clean:
rm*.o
就要在前面宣告".PHONY: clean"
這樣make就會知道這不是用來建立檔案的
如果不加.PHONY
在目錄中有clean的file則clean就會被視為要建立
而clean卻沒有dependencies的項目
所以就永遠不會執行

● dependencies
相依的項目
make會跟據這些項目決定市府要重新建立target
在建立target之前必須要檢查的項目
若是traget建立的時間比dependencies早
則會重新建立target
若在dependencies中有其他的target
則會先檢查那個target的dependencies

● Commands
要建立target的指令
必須要以開頭
因為在makefile中
開頭都會當作Shell Script
每條Commands必須寫在同一行
每條Command會啟動新的Shell
若有錯誤就會中斷make
有些在Commands的特殊字元
&&:檢查某個指令是否執行成功,在執行下個指令
@:不要顯示執行的指令
-:即使執行錯誤也不會中斷

以下來的簡單的範例
main:main.o test1.o
gcc -o main main.o test1.o
在上述的範例中
要建立main的執行檔
在建立之前要先檢查main.o以及test1.o有沒有比main更新
如果沒有make會先將main.o與test1.o建立好
在去執行gcc -o main main.o test1.o去產生main的執行檔

其他的語法
◎ 註解
# 開頭則為註解啦

◎ 變數宣告
=
將變數給定成為某值
可以用&(變數名)或${變數名}來取出值
若要將變數清空
變數名=

:=
將全部變數展開後再給值
所以不會是最後的值
請參考下例
X = abc
Y = $(X) def
X = def
最後Y為def def
X := abc
Y := $(X) def
X := def
最後Y為abc def

?=
若變數未指定則給值
若已經指定了就採用原來的值

+=
將值給到現有變數的後面

◎ 內部變數
$?
代表已被更新的dependencies的值
也就是dependencies中比target還要新的值

$@
代表target的值

$<
代表第一個dependencies的值

$*
代表target所指定的檔案 不包含副檔名


PS1:gcc & make的不同
gcc是用來編譯與連結程式
並產生出執行檔
make是用來檢查文件之中的相依性
根據相依性以及外部程式來產生出target
所以make可以簡化gcc的執行過程
將gcc寫在makefile的Commands裡面
就可以快速的產生執行檔
並利用相依性可以避免不需要的編譯過程
PS2:configure & make的不同
configure是用來偵測作業環境
在偵測完畢之後會建立makefile
而configure所用的檔名為configure或config

2009/03/05

財務報表之間的關係...

之前有介紹過財務報表的內容
基本上是由四大報表所組成
資產負債表:某一個時間點公司的資產、負債、股東權益的狀況
損益表:一段時間內(一年或一季)公司的收入與支出以及最後所賺到的錢
現金流量表:一段時間內(一年或一季)公司的現金增減的狀況
● 股東權益表:一段時間內(一年或一季)盈餘分配的狀況

以下是各財務報表的關係

主要是由資產負債表以及損益表構成
每年所賺得錢從損益表的稅後淨利
分別流到資產負債表的現金以及保留盈餘
但是實際上沒有這麼單純
所以可以透過現金流量表知道現金實際細節
也可以從股東權益中知道
盈餘是如何處理

以下由一個簡單的範例來說明
財務報表之間的關係

如果阿垓決定拿出100萬出來創業
在創業那天的資產負債表如下

股本100萬以及現金100萬
之後決定再跟銀行借100萬
去買機器花了90萬
買廠房花了100萬

在成立公司那天的資產負債表如下

在資產的部份
現金10萬,機器90萬,廠房100萬
負債跟銀行借的100萬
股本是自己出的100萬

過了一年之後
公司一共收了100萬
扣除產品的成本(50萬)、人事成本(20萬)、稅(10萬)
淨賺了20萬
這一年的損益表如下


這筆20萬並沒有立即進入到資產負債表
因為阿垓決定花10萬再買新的設備
發給辛苦的員工5萬元紅包
順便拿去還給銀行5萬
加上上期的現金
一共還有20萬元

由於設備折舊的部份在損益表的成本已經扣掉了
但是沒有實際的現金支出
所以其實有10萬在損益表多扣的

所以在資產負債表如下

現金20萬從現金流量表過來
機器折舊扣10萬再加10買新備
所以機器還是90萬
廠房假設沒折舊不變
負債還了5萬變成95萬
股本不變
保留盈餘因為花了5萬員工分紅
所以從20萬變成15萬

PS:關於除權除息對公司的影響
可以參考這篇

AAA...

AAA是三個英文的縮寫
● Authentication(認證)
確認User是否可以存取Switch
● Authorization(授權)
User可以使用哪些的功能
● Accounting(紀錄)
User用過哪些功能的紀錄


如果有一台Server提供上述的功能
就可以稱為AAA Server
目前Switch所support的AAA Server有
● RADUIS (Remote Authentication Dial-In User Service)
用UDP的Protocol
只會對密碼的部份做加密
其他的資料都不會加密
● TACACS+ (Terminal Access Controller Access Control System Plus)
用TCP的Protocol
所有傳輸的資訊都會做加密的動作

RADIUS以及TACACS+都需要設定以下的資訊
● Mode
有兩種Mode:index-priority & round-robin
index-priority是如果發現第一台Server掛了
再用第二台Server做認證
round-robin是輪流使用第一台以及第二台Server
● Timeout
等待Server回應的時間
若選擇index-priority的模式
則每台Server各分到一半的時間
● Server IP
RADIUS以及TACACS+ Server的IP Address
● UDP/TCP Port
在Authentication的部份
RADIUS Server用UDP Port 1812
TACACS+ Server用TCP Port 49
在Accounting的部份
RADIUS server用UDP Port 1813
TACACS+ Server用TCP Port 49
● Shared Serect
存在Switch上面的密碼
並不會傳出網路
所以要跟遠端AAA Server相同
才可以進行認證

2009/03/04

Port Authentication...

利用RADIUS(Remote Authentication Dial In User Service) Server
來認證合法的使用者
如果User通過RADIUS的認證
就可以透過此Port來存取網路
若沒有通過認證
這台電腦就無法存取網路

Port Authentication分為兩種的作法
● IEEE 802.1x Authentication
就是採用user name以及password來進行認證
以下是認證的流程

每個Port都可以設定使否要重新認證
以及多久重新認證一次

● MAC Authentication
用連上電腦的MAC以及switch所給定的password做認證
認證流程如下

每台Switch都需要設定一組Password
跟著MAC一起送過去給RADIUS Server
每台Switch也可以設定Name Prefix
帶在MAC的後面
比方說
MAC是00:19:CB:12:34:56
Name Prefix是123
則送到RADIUS的MAC就是0019CB123456123
還有一個timeout要設定
如果有一台PC的MAC authentication失敗
在Switch的MAC Table中就會被視為無法存取網路
timeout是指在多久會從MAC Table將這筆清掉
如果設定timout = 0的話
這筆MAC就永遠無法存取網路了

PS:關於設定RADIUS的部份
請參考AAA(還沒寫...)

2009/03/03

Port Security...

Port Security只能允許
透過動態學到MAC以及User手動設定的MAC的frame
可以經由那個port進出
簡單來說
就是如果MAC Table有這筆MAC
才會送到對應的Port
如果沒有就不會送出了

每個Port都可以設定是否開啟Port Security的功能
並且決定要不要有Address Learning的功能
基本上預設是會將此功能打開的
也可以設定每個Port所能學到的MAC數量

除了上述的功能
在Port Security裡面
有一個MAC Freeze的功能
這項功能是將某個Port的學到的MAC
轉成Static MAC Forwarding的資料
再將Address learning的功能關掉

PS:
最高等級的Port Security是將Port security打開
並且關掉Address Learning
然後要通過這個Port的frame
只能用手動的設定
PS2:
如果同時關掉Port Security以及Address Learning
會造成大量的廣播封包

2009/03/02

MAC Table...

這個table是Switch在轉送frame參考的表
記錄著某個MAC
從哪個VLAN、Port學到的
並且是Dynamic(Switch自動學到)
或是Static(User從Static MAC Forwarding設定)

MAC Table的運作方式下:
1.當收到一個frame時
Switch會將這個frame的source MAC
記錄到MAC Table中

2.接著將看這個frame的destination MAC
看看是否有在MAC Table中出現
A.如果在MAC Table中出現
則Switch會將這個frame從那個Port送出去
B.如果沒有在MAC Table中出現
則Switch會將這個frame送到所有的Port
C.如果在MAC Table中出現
但是在跟進來同一個port時
則Switch會將這個frame丟掉



2009/02/26

Layer 2 Protocol Tunneling...

這個功能主要用在edge Switch
當edge Switch啟動了這項功能之後
edge Switch可以將Layer 2 Protocol (STP, CDP, VTP)
經過Core Network傳送到另一台edge Switch
並不會影響到中間的Layer 2 Protocol


在edge Switch C & D開啟L2PT(Layer 2 Protocol Tunneling)
這樣Switch A & B & E的STP就可以互通
而不會影響到Service Provider Network的STP

Edge Switch會將這些Layer 2 Protocol封裝成特定的MAC
然後再送到Service Provider Network出去

除了上述的Layer 2 Protocol之外
還有些point-to-point的layer 2 protocol
像是PAGP、LACP、UDLD等等
可以透過L2PT將遠端的Port做trunking

在Edge Switch的Port分為
● Tunnel Port
連接Service Provider Network的Port
負責將封裝後的frame送到Service Provider Network
在收到從外面來的frame之後
將frame解開並傳送給Access Port
這種Port並不可以設定要送什麼樣Layer 2 Protocol的frame

● Access Port
連接用戶端網路的Port
負責把來自用戶端的frame封裝
並送到Tunnel Port
可以設定要送什麼樣的Layer 2 Protocol的frame到Tunnel Port

PS:以下都是Cisco自己的Protcol
● CDP (Cisco Discovery Protocol)
用來告知周圍的Device關於自己的資訊
● VTP (VLAN Trunking Protocol)
用來傳送和同步VLAN的資訊
● PAGP (Port Aggregation Protocol)
類似LACP,將多個Port綁成一個Port
● UDLD (Uni-Directional Link Direction)
用來查測實體連線的狀態

2009/02/25

Loop Guard

Loop Guard就是在edge Network避免loop的發生
而STP用在core Network避免loop的發生


而且STP無法解決
一台Switch同時有兩個Port被一條網路接起來的loop
這時就可以用loop guard去處理

在Device A會先發probe packet給Device B
若又從同一個收到相同的probe packet
就代表產生Loop了
所以Device A就會將連到Device B的port關掉
這樣就不會有broadcast storm
但是所有的封包都過不來了
所以在處理完loop的問題之後
要記得將Device A的port打開
要不然仍然連不到Device B


若像上圖一樣
從Device A的Port N送出probe packet
從Device A的Port M收到
雖然是不同Port收到
但是仍會造成loop
所以loop guard依舊會把Device A的Port N關掉





2009/02/24

除息與除權....

這篇是介紹除權(股票股利)與除息(現金股利)
對公司的影響
建議先看一下
財務報表資產負債表損益表
有個大致的瞭解

公司會什麼股本會變大?
為什麼要除權跟除息?

這邊用個簡單的範例
若有一家公司股本10億(1億股)
在2008年賺了5億,每股盈餘為5元(5億/1億股)
打算要發放現金股利1元(除息)、股票股利1元(除權)

原先的資產負債表如下







先假設這家公司的5億都是現金入帳
從損益表入帳後,我們可以發現
保留盈餘跟現金都多出5億







發放現金股利後
我們可以發現資產的現金減少1億
保留盈餘的部份也漸少1億







發放股票股利後
在現金的部份並沒又減少
反而是保留盈餘少的1億轉到股本







從上面的範例可以知道
股本變大的方式是透過發放股票股利來的
但是公司的現金還是不變
可以用這筆錢再去投資
未來會比較有成長性(股票股利多的公司)
在現金股利的部份
雖然現金減少了
但是股本沒有增加
所以相對的未來的投資也會減少
成長性相對比較差(現金股利多的公司)

減資...

減資就是將資本減少
資本就是股東在創業的時候所拿出的一筆錢
後續透過公司增資或賺得錢發放股票股利增大資本

如果公司有閒置不用的資金
可以透過減資的方式將股本變小
因為是閒置的資金並不會影響到營運
公司所賺得錢一樣
但是股本變小了
所以每股的盈餘(EPS)就變高了
相對的股價也會變高

減資的方式有三種
現金減資、庫藏股減資、虧損減資
前面的兩種我想大家會比較有興趣吧

● 現金減資(面額減資)
將閒置的資金
依面額進行減資
買回的部份由全體的股東均攤
所以每位股東都會分到現金
並且持有股數會漸少
資產負債表中現金(在資產中)跟股本(在股東權益中)會同時減少

舉一個簡單的例子
某一家公司股本50億(5億股),股東權益100億
每股淨值20元(100億/5億股)
今年獲利4億,每股盈餘0.8元(4億/5億股)
股價25元,有閒置資金5億元
假設有位股東有一張股票
市值就是25*1000股 = 25000

經過現金減資5億後
股本變成45億(4.5億股),股東權益95億
每股淨值21.11元(95億/4.5億股)
每股盈餘0.89元(4億/4.5億股)
那位股東可以拿到每股1元現金
一共是1000元
減資當天的股價26.67 = (25-1)/(45/50)
那為股東的股數變成900股
所以減資完那位股東一共有
1000(現金) + 900(股) * 26.67 = 25003元
(基本上應該是沒有什麼變化的)

● 庫藏股減資(市價減資)
就是公司花錢去市面上買股票
將買到的股份進行減資
並不會影響原有股東的持股
若股價高於每股淨值則在減資之後
每股的淨值會減少
(因為花了更多的錢卻沒有減掉相對應的資本)

用上面的範例
在進行完庫藏股減資5億之後
股本變成48億(4.8億股)[只有買了2億股]
股東權益變成95億[依舊花了5億的現金]
淨值變成19.79元(95億/4.8億)
每股盈餘0.83元(4億/4.8億股)
對那位股東沒有什麼變化
依舊是1張股票(1000股)
市值依舊是25000元

2009/02/20

資遣費....

有鑒於最近的人心惶惶
寫一下網路上所整理的資遣注意事項
1.請向勞工局確認相關的資訊
2.不要先丟離職單,再拿到證明的時候確認是"非自願離職"
3.不要無故曠職,超過三會被開除的

關於被資遣可以得到下面三種收入
1. 預告薪資
只要工作超過試用期的三個月
就可以拿到此筆收入
因為這筆錢是說
如果工作滿1年就必須要在20天前跟你說要資遣
如果當天說當天就要你走人的話
就要給足這筆費用
● 3月 ~ 1年:10天薪資
● 1年 ~ 3年:20天薪資
● 3年以上:30天薪資

2. 資遣費
● 1年:0.5個月薪資
不滿一年照比例算

3. 未休假薪資 + 已工作日薪資
● 工作滿一年:7天特休
● 工作滿三年:10天特休
● 工作滿五年:14天特休

若我工作三年半,在1/15被裁員,薪水30000
1. 預告薪資:30000*1(30天) = 30000
2. 資遣費:30000*3.5*0.5 = 52500
3. 特休未休 + 已工作天數:7*1000 + 15*1000 = 22000
一共應該拿到:30000+52500+22000 = 104500

2009/02/19

library...

什麼是library(函式庫)?
在了解這件事情之前
要先知道編譯的過程
abc.c的檔案
先經過編譯(compile)的過程
變成"目標檔" abc.o
再透過連結(link)的過程
變成可以執行的檔案 abc.exe

但是有很多的固定常用的程式碼
不需要每次用都compiler
可以先將這些程式碼compile好
放到某個檔案中
而這些檔案就是library
在需要用到的時候
在link階段在連結進來就好了
就不需要費工去compile

library一共分為三類
● 靜態函式庫
在link階段的時候直接link到執行檔中
通常都是*.a的檔案格式
*.a的檔案格式說穿了也就是打包了一堆的"目標檔"(*.o)
● 共享函式庫
在執行檔執行的時候在載入
在link階段僅需指定library function
通常都是*.so的檔案格式(舊的檔案格式為*.sa)
常常在執行某個執行檔時遇到下面的Error時
"xxxx fatal: yyyy.so.0.9.8: open failed: No such file or directory"
就是代表在執行時找不到某個"共享函式庫"
解決的方法就是
"export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:`library所在的目錄`"
● 動態函式庫
類似共享函式庫
在執行檔執行到這段程式碼的時候才載入
在程式碼用完之後也可以釋放空間
有點類似window的*.dll

通常library的檔案名稱如下
libm.so.5
lib:指的是library
m:實際的名稱
so:檔案格式
5:版本

若是要在compiler加入某個library要怎麼做呢?
Unix預設將library放在/usr/lib/以及/lib裡面
若是要用這裡面的libm.so.5就直接如下
"gcc main.c -o -lm"
-l代表要使用的library的名稱 (libm.so.5的名稱為"m")
若要使用的library不在上述的地方
像是要使用/usr/local/netsnmp/lib裡面的libnetsnmp.a
可以用下面兩種作法
方法1:
"gcc main.c -o -L/usr/local/netsnmp/lib/ -lnetsnmp"
-L指要使用的library的資料夾
用了-L才能用-l的library Name
方法2:
"gcc main.c -o /usr/local/netsnmp/lib/libnetsnmp.a"
直接給路徑就好了

2009/02/18

MSTP....

為什麼要出現MSTP呢?
因為STP/RSTP出現下面的問題

若有兩台Device對接
VLAN 1走下面這條link,VLAN 2走上面這條link
在開啟RSTP之後
VLAN 2就不通了
所以MSTP要解決這個問題
並且可以向下相容STP/RSTP

為了解決上述的問題
1. 所以每一個VLAN都必須要有自己的STP
它透過兩個概念來完成 (MST Region、MST Instance)
● MST Region

多台Switch組成一個MST Region
從外面看MST Region就是一台Switch
每一台Switch只能加入一個MST Region
同一個Region的Switch會有相同的Region Name、Revision Level、VLAN對MSTI的mapping

● MST Instance (MSTI)
簡單來說MSTI就是在MST Region中的STP
每一個MSTI就是一隻STP
MSTI在Region中是unique,MSTI的運作範圍僅在Region中
多個VLAN可以mapping到同一個MSTI上
一個VLAN只能mapping到一個MSTI

如上圖VLAN 100會走MSTI 1的路徑
而VLAN 200會走MSTI 2的路徑

2. 向下相容STP/RSTP
在MSTI=0的那筆為Common and Internal Spanning Tree(CIST)
CIST是用來負責整個網路的STP
以及負責各MST Region之間的STP
若有不屬於MSTI的VLAN就由CIST來處理


在設定的部份
每台Switch都必須設定跟RSTP一樣的項目
像是Hello Time、Max Age、Forward Delay(請參考STP/RSTP)
也要設定關於MST Region的相關資訊
●Max Hops
BPDU最多通過多少台device就要丟掉
●Configuration Name
就是MST Region的Name
若要在同一個Region中
此名稱一定要相同
●Revision Number
就是MST Region的Revision Level
若要在同一個Region中
此Number一定要相同

每個MSTI都要設定以下的資訊
●Instance
一台Swicth有0~16的MSTI (0是用在CIST上)
●Bridge Priority
當MSTI=0時就是用在跟其他的RSTP溝通用的
●VLAN Range
要加入此MSTI的VLAN Range
一個VLAN只能加入一個MSTI
一個MSTI可以有多個VLAN
●Port (Priority、Path Cost)
(請參考STP/RSTP)

2009/02/17

無悔的青春 - 席慕容

無悔的青春 - 席慕容

在年輕的時候,如果你愛上了一個人,請你,請你一定要溫柔地對待他。

不管你們相愛的時間有多長或多短,若你們能始終溫柔地相待,

那麼,所有的時刻都將是一種無瑕的美麗。

若不得不分離,也要好好地說聲再見,

也要在心裡存著感謝,感謝他給了你一份記憶。

長大了以後,你才會知道,在驀然回首的剎那,

沒有怨恨的青春才會了無遺憾,如山岡上那輪靜靜的滿月。

2009/02/16

失敗的人生....

如果大家覺得自己很失敗
可以看一下失敗人生的典範...
美國表現最好的總統:林肯

7歲:家裡經商失敗被房東趕走
9歲:母親過世

22歲:經商失敗
23歲:競選州議員失敗,工作丟了,法學院進不去
24歲:像朋友借錢經商,再次破產,到40歲才還清負債
26歲:即將結婚的未婚妻,病死
27歲:精神崩潰,臥病6個月,自學成為律師
28歲:參選州議員發言人,失敗

31歲:爭取成為候選人,失敗
34歲:參加國會大選,失敗
37歲:參加國會大選,成功
39歲:尋求連任,失敗

40歲:爭取州土地局長,失敗
45歲:競選美國參議員,失敗
47歲:爭取副總統提名,得票不足100張
49歲:競選美國參議員,失敗

51歲:競選美國總統,成功
56歲:被槍殺

一共被資遣11次,2次經商失敗
長相太醜被政敵攻擊
有斜視、天花、心臟病、憂鬱症等病史

2009/01/13

MRSTP...

Multiple RSTP(MRSTP)
不是屬於standard的一種STP
是指一台switch中可以同時存在多個STP
彼此間不會相互影響


最上面那一台switch有兩個RSTP
各有不同的port join
彼此間有不同的 Hello Time, Max Age, Forwarding Delay
MRSTP的設定與RSTP相同
只是需要設定多設定幾次
因為每個MRSTP都可以設定不同的參數
RSTP的設定可以參考這篇

2009/01/12

STP/RSTP...

避免網路上發生loop的狀況
並且提供備援的線路
最簡單的來說
每兩台switch之間都只會有一條路徑

綠色的就是STP所找出的路徑
紅色的就是被阻斷的路徑(避免loop)

RSTP是快速收斂的STP
原本STP需要到30秒才可以收斂
RSTP僅需不到1秒就可以收斂
在STP中topology的轉換
需要透過root bridge統一發布
在RSTP中topology的轉換
device可以直接傳給其他的device

每台Device需設定
● Bridge Priority
用來決定哪個switch為root bridge
值越小Priority越高
如果權限相同比較MAC
所以Bridge ID = Bridge Priority + MAC
root bridge可以決定
整個Network的Hello Time、Max Age、Forwarding Delay
● Hello Time
送出BPDU的間隔(1~10秒)
由root bridge所送出
● Max Age
持續收不到BPDU的時間(6 ~ 40秒)
如果持續收不到BPDU超過這個時間
就會重新建立STP
● Forwarding Delay
等待topology change的時間(4 ~ 30秒)
每台switch必須在topology change之後
才能進行frame的傳送

每個port需設定
● Priority
在發生loop時
值越大的越容易被block
值越小,Priority越高
● Path Cost
傳送frame的成本
傳送速度越快值越小(成本越低)
1G=4、100M=19、10M=100

PS:2*(Forward-1) >= Max Age >= 2*(Hello Time)

2009/01/08

Queue Method...

在介紹Queue Method之前
在802.1p中有定義八種不同的priority level (0~7)
level 7:最高權限,網路設定的相關封包
level 6:聲音的封包
level 5:影像的封包
level 4:做controlled load & latency-sensitive
level 3:比一般封包更重要的封包(excellent effort traffic)
level 2:未定義
level 1:最低權限,背景的封包
level 0:一般的封包(best-effort traffic)
這不同的priority可以透過設定對應到不同的Queue中

若進來的封包沒有設定priority
會根據進來的port的priority來設定

Queue就是先進先出


每一個port都有8個不同的Queue (Q0 ~ Q7)
Queue Method就是避免在網路雍塞時
某一個Queue站住所有的頻寬
目前有三種不同的Queue Method
● Strictly Priority Queuing (SPQ)
這個方法很簡單
就是Q7送完換Q6送依序下去
如果Q7一直沒送完
則之後的Queue都不能送了
● Weighted Fair Queuing (WFQ)
每個Queue都可以設定權重
Switch會依據這些權重來分配最基本的保證頻寬
所以每個Queue都會有機會送出去資料
● Weighted Round Robin Scheduling (WRR)
Round Robin Scheduling的作法是指
像排隊一樣
輪到了某一個Queue他就擁有全部的頻寬
送完換下一個,自己就排到最後
WRR也是用相同的作法
但是會根據priority跟weight去決定傳送的頻寬

PS : 以上的作法只會在某的port無法處理進來的流量才會啟動

Link Aggregation...

將多個實體的port綁在一起
變成一個邏輯上的port(trunk group)
擁有更高的頻寬及可靠度


分為dynamic & static
● Dynamic[Link Aggregation Control Protocol (LACP)]
動態建立與管理trunk group
只能在full-duplex上面建立
會有相同的media type, speed, duplex mode, flow control設定
Link Aggregation ID:system priority + MAC + KEY + port priority + port Number
》Enable LACP之後再將所有要綁在一起的port跟對方switch的port連線
》System priority
較小的會成為LCAP server負責控制LACP的設定
越小越權利高
》LACP timeout
每個port用來交換LCAP封包
去確認trunk group是否還活著
如果三次都失敗則刪除trunk group

● Static
選定要join個trunk group的port
在設定完成之後將trunk group enable
》每個port只能join一個trunk group
》一個trunk group可以有包含多個port

2009/01/07

Filtering...

根據MAC與VID來決定是否要將此frame丟掉

決定是否丟掉的行為有三種
》Discard Source
如果在source MAC發現有相符的則丟掉
就是說此MAC送出去的frame仍可通過 (MAC → OK)
但是要送到此MAC的frame則會被丟掉 (MAC ← Failed)
》Discard Destination
如果在Destination MAC發現有相符的則丟掉
就是說送到此MAC的frame可以通過 (MAC ← OK)
但是此MAC送出去的frame會被丟掉 (MAC → Failed)
》Discard Source & Destination
只要有此MAC則都會被丟掉 (MAC → Failed、MAC ← Failed)

2009/01/06

Static MAC Forwarding...

手動將mac forwarding的資料建到MAC Table中
可以減少broadcast的封包

要設定名稱、MAC Address
哪個VID以及在哪個port

2009/01/01

VLAN Mapping...

將進來的VID給替換成別的VID
如果有一個VID從private network進來
要連到Service Provider Network
當發現這個VID在Service Provider Network已經有用過了
就可以替換成另一個VID

如果有一個frame從port 3進去
帶的VID為100
會把VID替換成200送出

除了將VID換掉之外
也可以將priority換掉
主要是針對Port做設定

PS : VLAN Stacking與VLAN Mapping只能enable其中一項