2007-04-27

閒談 Open Book

上大學之後,跟高中之前的學校生活,差異還蠻多的。就考試這點來閒扯的話,最大的差別大概就是大學考試有 open book 這檔子事情。

我在高中的時候曾經很幻想 open book 的考試。國文英文也就算了,至少數學物理化學的公式不用在想盡辦法刻在桌面 or 寫在手掌心,然後偷偷摸摸怕被發現。

上了大學之後才發現,也不是每個老師都來 open book 這招(當然,還有更多老師連考試都懶得考),偏偏討厭 & 不會過的課都不 open book [無奈地攤手]。

系 上有個老師,他說他的課從不管是幼稚園還是研究所都 open book,除了打電話跟背人進去(那時候無線網路還有起來),其他要帶啥都可以。第一次考試,我就真的扛了台 NB 進去 lol。後來發現大家都拿著厚厚一疊筆記(而且有一大半都是我寫在系站上的),覺得沒啥意思。之後就啥都不帶,兩手空空(有時候還故意遲到)大搖大擺進考 場,然後想辦法搶第一個交卷 \囧/。

偏偏我們這屆被他教到的必修課又有點多,從大一計算機概論(一年),到大三 OS, DB 加起來又一年。忘記是哪一次考試了,就爆了個囧點。拿到考卷一看... ㄜ... 什麼...
請翻開課本 p.xx 看圖 x,說明為何......
我:[舉手] 老師,我沒有課本沒辦法作答 \囧/
老師:....... 怎麼會沒帶咧......
我:open book 又沒說 need book \囧/

下一次考試依然有「參見課本」這招,老師還準備一本借我,不過我看到題目就直接硬上回答了 \囧/。

我 前後修了那老師三年的課,DB 跟 OS 都重修,DB 真的是個性不合,搞那些瑣碎的細節跟理論實在沒轍,也沒怎麼去上課 Orz。OS 則是第一次玩太大,作業都不交考試又粗心炸掉 lol。老師上課其實有點隨性所至天馬行空,偏偏內容又硬底子扎實;據說很多人都聽得懵懵懂懂,所以常常是我負責接他的梗 、回答問題、提出問題(然後據說我開口之後,同學就從聽得懵懵懂懂進階成完全聽不懂... [無奈地攤手])。到後來有冒出一句「這一班點潘先生有沒有來就好」。據說我修完 OS 的隔年,老師某一次 OS 上課中突然問「怎麼潘先生都沒來。」

回顧從國中開始的 Computer Science 生涯,從 QB 到 Java、從進位轉換到 OS 原理,腦袋中那些斷垣殘壁 [慘笑] 幾乎都是自修來的。若中間有些還沒忘掉、扯到 OS 時候可以拿出來檢視的舶來品,那大概都是這個老師塞進腦袋裡的。

今天分散式系統考試前,看到同學們人手一張精緻小字的 A4 紙,想起這些零零碎碎的往事,就順手寫下。

2007-04-20

20070420 DistSys 速寫

Jitter is the variability of packet delays within the same packet stream

RTSP:stream 的 HTTP?

IGMP:
Internet Group Management Protocol
歐規 router 必須要 support 這個 protocol

IPTV 用 IGMP
VOD 用 RTSP

2007-04-08

Hub, Switch, Bridge, Router 比較

大概三四年前,在系站上轉錄這篇文章(還不就為了吵架 \囧/);前幾天又在 ptt 上頭看到類似的問題,所以挖出來重貼。今天胡亂翻到分散式系統課本的 network 章節,就想說那也順便把這篇給 web 化吧。

念 網路的東西很麻煩,因為東西很多很雜又很亂,當年看到 P 結尾的名詞就頭大,不是說用 TCP/IP 嗎?那為甚麼還有啥 ARP、ICMP、SMTP、SNMP、HTTP,萬一碰個 router 或是高階 switch,又是一堆 xxP....... [暈],這些還不夠,還會扯到一堆 802.x 的東西...... [倒地]。單靠自己囫圇吞棗 + 週期性懶散,結論就是:還是寫程式好 \囧/。不過當網路的東西念通了、能把那些 P 分層別類安頓好,事情就會變得美妙。從 y2k 到現在,似乎也只有 RG-58 消失,RJ-45 的接頭依舊是「白橙橙白綠藍白藍綠白綜綜」,TCP/IP 還在、而且 IPV6 離一般人很遙遠。是多了一些東西,但是跟寫程式比起來,可少得多了.......

喔喔喔... 回歸主題 [毆飛]

----------------
資料來源:《Cisco 路由器設定 (Managing IP Network witch Cisco Routers)》 p.36-39,O'Reilly 1998.12 初版,ISBN:957-98213-7-2。

集線器、橋接器、Switch 與路由器
在討論路由器的放置地點之前,先確定你是否需要一台路由器。能不能用 Switch(交換器)或 Bridge(橋接器)之類的設備代替?通常網路公司的業務員不會回答這類的問題,但每種設備在網路中都有獨特的地位。你必須了解它們各自的特性,尤其是他們的弱點。

最 簡單的網路設備就是集線器(Hub),應該也是網路上最常見的機器。一般網路如 Ethernet,Token Ring,或 FDDI 都會有 Hub,選購安裝都沒有什麼學問。我們就略過不談。Hub 的等級和價格沒太大差別,主要是有沒有操作界面。但 Switch,Bridge,和路由器就完全不是這麼回事了。

幾年之前,還有人在爭論網路是該透過 Bridge 還是該透過路由器連接。Bridge 陣營堅持路由器太複雜,速度太慢,設定維護太困難;路由器陣營則預測網路會大幅成長,Bridge 將無法應付。當然,路由器最後佔了上風,網路成長的規模出乎每個人的意外。路由器的可擴充性(Scalability)是 Internet 成長的動力。

為什麼 Bridge 的擴充性不夠?這牽涉到 Bridge 本身的運作原理。當一台Bridge 收到來自網路的框包(frame),會檢查框包內的目的地位址,和自己知道的地址比對;找到符合的位址之後,它會決定是否傳送這個框包到目的地所屬的網路 區段,或是轉送到目前目的地中途的區段。如果 Bridge 知道框包是來自和目的地同樣的區段,它會忽略這個封包,因為目的地自己會接收。

如果 Bridge 不知道目的地位址,它會假定目的地可能在任何地點,直接傳送框包。如果目的地傳回一個回應訊息,Bridge 會根據訊息中的位址加在自己的位址紀錄中。所以 Bridge 是根據收到的框包位址來判斷網路組成的架構。

這個程序就是 Bridge 運作的核心。但某些框包是 Bridge 必須送到每個地方的,就是 Multicast(多址傳送)與 Broadcast(廣播)框包。由於網路上每台機器都必須收到這些框包,意思是網路上會充斥(flooded)這些框包。

Broadcast 和 Multicast 類型的框包限制了 Bridge 網路的擴充規模。當網路上的機器數量增加時,需要廣播的框包也隨之增加。平均來說,一台機器每十秒送出一個廣播,如果網路上有 1000 台電腦,平均每秒就有 100個廣播在流竄。如果有十萬台機器,情況將難以想像!

佔據頻寬並非廣播的唯一問題。因為每台機器必須時時檢查廣播框包的內容,所以會透過中斷處理。如果一直造成中斷,機器效率會慢下來,網路協定堆疊也會難以運作。

難 道機器每十秒一定要送出廣播嗎?想想廣播與多址傳送的應用情況。在IP 協定裡面,廣播是應用在位址解析(ARP,Address Resolution Protocol),路由更新,以及 rwho 之類的服務。Multicast 的應用功能大致差不多,但相對 Bridge 構成的網路來說,Multicast 和 Broadcast 沒什麼差別,反正都是要充斥整個網路。有些 Multicast 和 Broadcast 封包是定時傳送的,以 rwho 和一些路由協定資訊來說,大約每 30 秒會送出一次。

但 rwho 在這個週期之下只能送出一個封包,某些路由協定如 RIP 可以送出許多封包。對一個大型網路來說,可能一次有 10 個封包。

其 他協定對 Broadcast 和 Multicast 傳輸也有一些影響。AppleTalk 這種協定在進行資源搜尋,位址指定,或路由等動作時,會大量使用 Multicast 和 Broadcast。Novell 的 IPX 協定在服務宣告與資源搜尋時也有類似的傾向。

看以上的敘述,你不得不相信,每台機器十秒一個框包算是相當保守的估算,如果加上其他稀奇古怪的協定,產生的框包傳輸絕對不只此數。

難道路由器就能擺脫這些問題嗎?路由器的擴充性是否比 Bridge 來得好?要回答這個問題,首先讓我們看看路由器的原理。

路由器採取的做法
Bridge 在決定是否轉送框包時,是根據目的地的硬體位址。如果不知道目的地位址,或是確定框包前往的區段不在來源區段,就進行轉送。路由器傳送封包時的決定過程很類似,差別在於路由器根據的是網路層位址,而非硬體位址。但這不是唯一的差別。

真 正的差別在於網路位址是由人來指定的。原則上,具有共同 prefix 的位址都屬於同一個網路。相對上,硬體位址是製造廠商決定的,不管網路的實際配置。考慮實際的網路配置,可以增進資訊聚集(aggregation)的能 力。一個 1000 台主機的網路上的 Bridge 可能要追蹤 1000 個地點才能做出決定,但一台路由器只須追蹤 10 個以下的位址就夠了。這就是路由器高效率的主因。

資訊聚集的能力,使得路由器比 Bridge 具有更強的擴充性,但還有其他因素。Bridge 必須隨時注意網路區段的每個封包,因為它必須確定封包的目的地位址來決定是否傳送。路由器不需要隨時注意每個封包,因為封包傳送者已經決定了封包是否要轉送。如果傳送者知道目的地不在本身的區段,就利用路由器本身的硬體位址當作目的地位址,直接傳送給路由器。所以路由器只需要注意直接傳給它的封包,大大降低了路由器處理的流量。

Routing 的可擴充性還有更重要的因素。Bridge 必須傳送所有的Broadcast 和 Multicast 封包,但路由器採取不同的做法。因為路由器知道網路的實際配置,它會建立廣播網域(Broadcast domain),這只是網路的一部分,但網路上所有的機器都可以看到廣播封包。除非特別設定,否則路由器不會隨便傳送廣播封包。例如,你可以設定一台路由 器轉送 BOOTP 或 DHCP 的廣播給遠端伺服器,傳送 IP Multicast 封包給已登錄的主機。除了節省 Broadcast 和 Multicast 的傳輸之外,路由器在其他方面也可以減低頻寬的使用量。

除此之外,如果路由器收到一個無法傳送目的地的封包,它會丟棄(drop)這個封包,並回應一個訊息給寄出封包的主機,表示傳送失敗。

總結來說,路由器的擴充性是由於下列幾個因素:
  • 由於網路位址是配合實際配置來指定的,它具有高度的資訊聚集能力。
  • 它不必隨時注意區段上的每個封包。
  • 它會建立廣播網域,減少不必要的 Broadcast 和 Multicast 封包傳送。
  • 它會丟棄不明位址的封包,減少頻寬的浪費。
路由器與 Switch
路由器顯然比 Bridge 優越,只是 Bridge 不需要複雜的設定程序,也沒有人會為 Bridge 設定特別寫一本書。由於電腦硬體的速度越來越快,反而網路的頻寬成為新的問題,這就是 Switch 出現的背景。

Switch 絕大部分都是應用在 Ethernet 上(目前 Token Ring 與 FDDI switch 也日漸普遍),它透過分散頻寬的方式增加頻寬的使用效率。你可以更換硬體增加頻寬,例如將 10Mbps Ethernet 換成 100Mbps Fast Ethernet,但你得同時需要更換新的集線器,網路纜線與網路卡,這是一筆不小的花費。

Switch 扮演了一個特殊的角色。在一個分享的網路區段上,每台主機都是碰撞網域(Collision Domain)的一部分,因為 Ethernet 的傳輸會互相爭奪頻寬導致碰撞。路由器有能力縮減碰撞網域的範圍,但成本太高,而且設定複雜。以一個連接 24 個 Ethernet 區段的高速路由器來說,大概需要 10 萬美金。但一台 24-Port 的同級 Switch 只需要 8 千美金左右。那為什麼不乾脆把路由器甩在一邊,全部都用 Switch 就好了?一旦你明瞭Switch 運作的原理,答案就很明顯了。讓我們先看看 Switch 工作的方式。

當 Switch 收到一個框包,它必須判斷目的地在網路上的位置。Switch 檢視框包內的目的地硬體位址,檢查轉送表,如果找到符合的資料,就將框包送往表上指定的埠。如果找不到,它就將框包送往除了來源之外的每一個埠,希望收到 的目的地會送出一個回應,讓 Switch 更新本身的轉送表。廣播與 Multicast 都送往每個埠。

----------------
另外 p.40 頁說,switch 說穿了,就是一個多 port 的 Bridge
其他的沒啥好提的,所以就省略不 post 了

2007-04-01

分散式系統上課方式將有重大變革

據可靠消息指出,梅老大的上課方式將有重大改變。除了增加課堂抽問次數、抽問回答不出來會導致成績趨近 69 分外,也會增加隨堂隨機小考,以檢測出同學們課前預習的細讀程度以及上課的認真度。期中考後的 presentation 也會邀請熟悉該領域的前輩在台下開砲,修理報告準備不夠充分的組別。

據傳梅老大有此大幅度的變化,是起因於上課丟問題都沒人認領回答;提到課本內容,台下亦一片默然,顯示 pre-class 的 blog 仍然沒有起預期的效果。思索教學方式後所作的決定。

另外,梅老大打算於下門課,增加幾項規則:
  1. Office Time 不變,但是地點改在 Second Life 上,meeting 亦同。syllabus, 上課投影片亦在 Second Life 上公佈。
  2. 修課同學需有速讀的能力。如果沒有,可於課程開始前向梅老大申請速讀速成班的學費補助款,以習得速讀能力,方能跟得上梅老大抽投影片的速度。
  3. 對 Second Life protocol 熟悉,或是有 hack 經驗的,可得到成績 bonus。
也有消息來源指出,梅老大正在跟中研院的 CKIP 小組討論技術交流的可能。若能雙方能順利合作,則對「中英文錯字自動校正」領域會有顯著的貢獻。

撰文:于仁傑 \囧/