2012年3月5日 星期一

sell

first day to record trade history

Sell

2009年8月9日 星期日

BGP ORF (out bound filter)

out bound filter function
在BGP裡常會有許多inbound policy放在BGP neighbor上,用來過濾或apply相關的屬性
可以使用out bound filter (OBF)透過BGP的溝通將本機的inbound policy告訴peer
這樣一來原本發送端會將所有的prefix全部丟給接收端的行為就會變化成在發送端會先套用對方的inbound policy後在送出
這樣一來可以減少網路傳送的流量,尤其是在internet的環境,每一次update都有幾十萬筆的route,可以透過這個方式減少route update的 bandwidth
ORF的type有許多種,最直接的就是NLRI(1) NLRI也就是個別的route (NLRI:Network Layer Reachability information),base on prefix來過濾
另外還有使用 standard community(2), extended community(3) and prefix-list
ORF type編號從1-256,1-127是IANA所assign,128以後是vender specific !!

action type:
action: add delete or delete all
match : permit / deny
scope : exact or refine
NLRI : prefix
When : immediate or defer

不過書上的範例只有在neighbor上使用 prefix-list in,若使用route-map 使用其他的屬性可能需要在測試

2009年8月7日 星期五



YouTube上很令人感動的廣告,不看到最後,你不會知道他在廣告什麼。

字幕是英文,看不懂沒關係,簡單說女主角聽不見,但她的夢想是學小提琴,看著就會懂了。

會貼這個,是因為裡面有一段我很喜歡的對話:

女孩:Why am I different from others? 為什麼我和別人不一樣?

老者:Why.... do you have to be like others? 為什麼... 妳得和別人一樣?

生物學上Diversity(生物多樣性)很重要,商業上也強調不能有Me Too的產品,所以做一個人,與眾不同又何妨呢?

我也常對我朋友說「不正常」不見的是壞事,超人就不正常,那些名模也都不正常,so, why be normal? why be the same?

PS. SONY的slogan就是"lik.no.other",借來當作這篇文章的標題

2009年7月30日 星期四

AS-path Regular expression

Regular express"" 代表 "or"
ex:2131 match "213 317 2316 31" 幾次?
match 4 次


[]代表任何一個在bracket裡的單一字元(single character). 代表任何單一字元- 代表範圍 Ex:[1-4] == [1234]
Ex:[1-3].[34] match "213 317 2316 31" 幾次? 解釋:第一個字元從1-3任何一個字元, 第二個字元是任何字元 第三個字元是3 or 4 字元match "213" and "3 3" 一共兩次

^ Match 開始的字元$ Match 最後的字元_ Match 控制字元 (逗點/空白/tab等)
Ex: ^21,31$,_31_ match "213 317 218 31 731" 幾次?^21 一次31$ 一次_31_ 一次(只match 31)

() parentheses 群組Ex:(213218)_31 match "213 317 1218 31 31"幾次?213 31218 31一共兩次

\ 用來移除特殊字元
Ex:^\(213_ 代表開頭從(213開始,因為(是特殊字元若要match (213 必須要把(當作一般字元,\之後接的特殊字元可以視為一般字元Ex: AS path 為 (213 317) 1218 316 31 若用^\(213_ 來match可以match出(213

* match 0個或多個前置字元 Ex: 1* 代表任何1的字串 (包含沒有任何字元) 1 or 11 or 111 etc..)) ? match 0個或1個前置字元 Ex: 1? 代表1 or 沒有任何字元

+ match 1個或多個前置字元 Ex: 1+ 代表任何1的字串 1 or 11 or 111 etc..))

練習:
_100_ Going through AS
100^100$ Directly connected to AS
100_100$ Originated in AS
100^100_. Networks behind AS 100
^[0-9]+$ AS paths one AS long
^([0-9]+)(_\1)*$ Prepending performed in neighboring originating AS
^$ Networks originated in local AS.* Matches everything

^([0-9]+)(_\1)*$ 比較難解釋,這個會match到相鄰的AS,以及相鄰且有做prepend的 AS
^([0-9]+)代表AS path只有一個的,也就是相鄰ASThe variable

“\1” is put into parentheses for the purpose of the multiplier operator“*”, meaning that this part can match any number of successive occurrences of the sameAS number that was matched by the “[0-9]+” expression. For example, this regularexpression matches AS paths “99 99 99”, “200”, “101 101”, or “5 5 5 5 5”, but it does notmatch the AS path “101 99”.

2009年7月27日 星期一

tcp flow control

TCP flow controlTCP flow control是透過window的控制來控制流量
sliding window主要有兩個,RWND(receiver window) and CWND(congestion window)以發送端而言,RWND是發送端收到接收端給的window大小,目的是在接收端告訴發送端所可以接受的最大window值,CWND是發送端根據演算法所算出來的window大小
實際所使用的window大小為min (CWND,RWND),實際上CWND控制了在傳送時實際的window數值
在sniffer的觀察中不容易看到實際的window大小,因為window為發送端主動控制所以這個數值不會在網路上傳遞,發送端只要確保所採用的window不要超過接收端所要求的window即可
控制congestion的三個方法(Congestion aviodance)
1.slow-start2.fast retransmission3.fast recovery
TCP在調整傳送端的傳送速度時,以slow-start threshold(簡稱ssthresh)與cwnd的值來區分slow-start phase和congestion avoidance phase
slow-start threshold值就是某個cwnd值,當cwnd值超過ssthresh時TCP就會進入congestion avoidance phase
當cwnd的值小於ssthresh時slow-start phase時,在每收到一個ACK,cwnd的值會增加一倍,因此每經過一個RTT時間,cwnd的值為上一個RTT時的cwnd值的2倍。此時的cwnd以2的指數的方式增加
當cwnd的值大於ssthresh時,TCP處於congestion avoidance phase。每經過一個RTT時間,cwnd的值才會增加一個segment,(一個segment應該指一個MTU大小)以避免cwnd增加太快而導致封包遺失。此時的cwnd以線性的方式增加。
ssthresh的決定方式:在傳送開始時是沒有ssthresh值的,TCP都是處於slow-start階段,一直到有掉包時TCP會將ssthresh值設定為當時Cwnd的一半
RTO(TCP time out)當RTT超過RTO時,會觸發re-transmission, RTO是變動的RTO=A+4D, A:average RTT, D=deviation
self-clocking收端使用ACK來通知送端已正確收到封包,同時也通知送端可以送出下批封包,收端可以控制送端何時要送的機制稱為self-clocking
Re-transmission發生後處理方式重送的處理方式跟不同TCP有關常見的TCP版本如下Tahoe Reno NewReno Vegas SACK
Tahoe具備TCP的基本架構1.slow-start (前面已敘述過)2.重傳遺失封包3.fast retransmit, fast retransmit 使用duplicate ACK做為重送封包的依據,遺失封包時收端會收到非期待的sequence number封包或者是封包順序不對,此時收端會發上一個正常ack的封包回去,稱做duplicate ACK.若傳送端收到3個duplicate ACK會將封包視為遺失,不待timeout便立即重送。避免slow-start機制產生(ssrhresh=cwnd/2,cwnd=1)。
Reno:1.修改Tahoe演算法並加上Fast Recovery的機制。2.Reno在使用Fast retransmit後,再使用fast recovery機制: Fast recovery機制: ssthresh設為cwnd/2, 重送遺失封包後 cwnd=ssthresh+34.在fast retransmit phase,當收到duplicate ACK,Reno還可以使用self-clocking的機制繼續送出新的封包以提高link的使用率。若封包遺失的情形能夠在不需使用timeout retransmit的情況下就將之回復,那麼Reno在收到duplicate ACK後就會進入congestion avoidance
comparsion table------------------------------------------------------------------ Tahoe Reno-------------------------------------------------------------------封 ssthresh=cwnd/2, Cwnd=1 ssthresh=cwnd/2, cwnd=ssthresh+3包 遺 重新進入slow-start phase 進入congestion avoidance phase失 時 平均吞吐量比較差 平均吞吐量比Tahoe佳
TCP NewReno:1.NewReno由Reno延伸而來,修改了TCP Reno裡的Fast recovery演算法。2.在Reno中,遇到有封包遺失時,得等到duplicate ack時,才開始重傳封包,並開始fast recovery。 3.若收到partial ack時就會結束fast recovery,但會造成只傳送部分已遺失的封包,仍有許多封包該傳卻未傳,並且必須等到timeout後才能再重傳封包,使得傳輸效能大大降低。註:partial ack的ACK碼較之前正常收到的ACK大,但比稍早收到out of sequence的封包 seq號碼小。4.在NewReno中,不會因為收到Partial ack時結束Fast recovery,傳送端會繼續重送封包,直到所有的遺失的封包都重送後才結束Fast recovery,不需等到timeout就能將所有的封包傳送。5.此版本大大改善因等待timeout才能重送封包時的效能降低,並且能持續傳送新的封包增加使用率
TCP SACK(selective Ack)SACK也是從TCP Reno延伸的版本,它改善了在NewReno裡一個RTT時間只能重傳一個封包的缺點。在SACK中,新加入一個SACK option,會將接收端裡已收到的封包範圍回傳給傳送端,其範圍間隔就是遺失的封包,故傳送端便可知道哪些封包遺失,並重傳此遺失的封包,所以可以在一個RTT時間內重送一個以上的封包。
Bandwidth * Delay Product (BDP)BDP是指在傳送過程中在網路傳輸中的packet,頻寬越大,RTT越久,BDP就越大BDP = Bandwidth * Delaywindows size 至少必須大於BDP,在實務上TCP buffer大約是3倍的BDP

2009年6月29日 星期一

MST note II

MST 成為一個Region的條件
1. domain name
2. revision
3. instance and vlan mapping table
當這三個都要一樣時就會看為同一個MST Region,相同的MST Region才能利用MST互相交換spanning-tree資訊,若MST Region不同,不同機器既使相同的instance也不能溝通,也就是說這個spanning-tree的演算無法透過MST來完成

每台跑MST的機器除了所設定的instance外,還有一個預設的instance 0,這個instance 0是所有沒有指派instance的vlan所用的instance,要跨domain時用instance 0來計算,在domain裡則用所指定的instance來計算spanning-tree

2009年6月22日 星期一

TCP sliding window

TCP sliding window每一個ack中間可以送多少byte,就是windows size的意思

假設有10,000byte的檔案要送,windows size是4000,送端TCP可以一次送4000 byte,然後收端再給一個ack確認,這4,000個byte用一個或多個packet來送都可以,若4,000 byte送出 ack正確,則可以把window往下移個4,000 byte,就好像窗戶在移動一樣

window size是收送同步的,送端會跟收端會議定一個數值,而且因需要而變動,所以是動態的當收端告訴送端window size=0 時,代表要送端不要再送了,送端會等到收到另一個非0的window size後才會再繼續送

若線路壅塞,代表送端送出的資料要等比較久才會收到ACK,送端在收到正確ack才會再送下面的資料,所以傳送速度自然就會便慢了

TCP Explicit Congestion Notification
在收送兩端的中間的router再偵測到網路壅塞時可以發出ECN給兩端的主機,通知他們網路即將發生阻塞,(我相信用TCP的ECN通知後,要不要做處理應該事APP的事情,在router端只負責告知)

TCP MSS Adjustment
在TCP的SYN裡會有TCP的最大size資訊,所以在3-way handshaking完成後TCP MSS已經固定這個功能是偵測TCP SYN內容,將TCP MSS做修改以確保兩端所收送的風包在中間的router可以被處理在收送兩端initial TCP時,預設會參考自己設定的MTU,扣掉3,2 層的header後當作TCP的
MSSTCP MSS的值是扣掉TCP header的數字

BGP conditional map
在BGP route產生時,通常用network or aggregate方式將BGP route放進BGP中,但這兩個方式必須有相對應的IGP或必須存在componet route,在BGP做aggregate時,會將小網段summary成大網段,但是若在這個大網段中仍然想要有specific route時可以利用這個指令將某些route放進BGP table中,通常這些例外的route會比原本大網段的prefix來的小

另外這個指令只要match某種條件就可以放bgp route,不再受到IGP才能放或aggregate的限制
BGP community 可以有很多組嗎? 可不可以transit AS ?