UDP/TCP/IP/MTU 小註解

我們部門本來是做多媒體的, 可是多媒體不是從網路上拿來, 就是有可能再傳到網路上, 所以我們也愈來愈像是在做網路了.

在網路上傳送多媒體, 如果是即時的應用, 就會使用 UDP (user datagram protocol). 一個 UDP 封包最小是 8 bytes (只有 8 bytes header), 最大是 65535 bytes (64KB, 包括 8 byte header). 它的長相如下:

bits 0-15 16-31
0 Source Port Number Destination Port Number
32 Length Checksum
64 data

 

Checksum 的部分相當神奇, 根據 IP v4 或是 IP v6 的不同, 它還要想像它前面還有 IP header, 一起做 checksum. 因為想像中的 IP header 並不在 UDP 的協議中, 所以那個想像中的 header 就叫做偽頭 (pseudo header). 顯然地, IP v6 的偽頭比 IP v4 要來得大! 如果不要那麼麻煩去算 checksum, 填 0 也可以, 那就表示 "我沒算 checksum".

如果加上 IP 層的頭, overhead 又多了 20 bytes. 所以原來號稱最大可以傳 65535 bytes, 減去 UDP header 8 bytes 和 IP header 20 bytes, 就剩下 65507 bytes.

bit offset 0-3 4-7 8-15 16-18 19-31
0 Version Header length Differentiated Services Total Length
32 Identification Flags Fragment Offset
64 Time to Live Protocol Header Checksum
96 Source Address
128 Destination Address
160 Options ( if Header Length > 5 )
160 or 192+ UDP, TCP (for example)

 

如果是 TCP 的話, 用來取代 UDP 那個位置. 不過 TCP 光是 header 就有 20 bytes 以上, 幾乎和 IP v4 header 等量齊觀.

MTU (Maximum transmission unit) 又是啥呢? 無論我們選了 UDP 或是 TCP, 對傳輸系統來說, 都是 IP 的封包. MTU 就是能夠傳送最大封包的 size. 比方說 IPv4 建議值是 576 bytes, IPv6 建議值是 1280 bytes.  最大的狀況大概是 Ethernet Jumbo frame 的 9000 bytes, 基本上都不會太大, 連 10 KBytes 都不到.

當然, MTU 設得愈大, 系統就要等更多的 data 才能發送, 造成資料的延遲. 如果 MTU 設得很大, 對 TCP 或許是有意義的, 但是對於 UDP 就有點不知所云了. 畢竟即時和延遲是對立的關係.

[ref]

1. http://en.wikipedia.org/wiki/User_Datagram_Protocol

2. http://en.wikipedia.org/wiki/Maximum_transmission_unit

3. http://en.wikipedia.org/wiki/IPv4

4. http://www.docin.com/p-47138983.html

iKala 網站簡介

iKala 這個網站的經營理念, 幾乎和老馬兄所想得一模一樣. 不過對方已經經營很多年了, 並非紙上談兵啊!

進入這個網站, 就可以免費使用一些功能. 但要好玩的話, 得要繳幾百塊月費才行. 它有哪些功能呢? 包括:

1. 線上點唱.

2. 揪團開線上包廂唱歌.

3. K 歌上傳到網誌 Klog 上. 歌聲當然是自己的, 至於要露臉 (用 web cam) 還是播 default 畫面都可以. 據說露臉的以女生為主, 我猜她們想要成名吧! 超偶歌手符瓊音就是由 iKala 網站推派出去比賽的.

4. K 歌上傳後 PK, 拿獎金, 進名人堂?!

4. 非即時對唱, 如果看到正妹上傳的 “i影音", 您可以和她 “對唱" 並上傳. 不過在個人的 Klog 裡面都有自己的版本. 不會因為今天有歪果仁和正妹對唱了, 正妹的影音檔就變成歪果版.

5. 紅包場制度. 如果今天你看到章魚哥唱得很好.可以花台幣買 K 幣當小費送給對方. 章魚哥可以拿 K 幣去 7-11 ibon 換點東西來維持 “藝術家" 的生計.

6. 當然什麼花 K 幣買廣告, 花 K 幣買禮物, 那些可以讓各位把台幣敗掉的功能好像都不缺.

7. 宅男不會唱歌, 又捨不得給紅包…那…就當是上另類無名小站吧!

3D graphic 的演進

昨天聽了台大簡韶逸教授的演講, 對 3D graphic 又多了一點認識. 先前我自修了幾個小時的 3D,  但是還是比不上聽 2 個小時的演講.

3D Graphic 的技術基本上是硬體愈做愈多, 但軟體卻也沒有愈做愈少. 假設 3D 技術可分為 Transform and Lighting ( T&L – 幾何轉換及光源), Rasterize, Texture, Blend and Z-buffer 這幾個單元的話, 早期的 3D graphic card 只包含 Texture 和 Z-buffer 這兩部分 (1998 年以前).

Milestone 1:

3dfx 的巫毒卡 (VOODOO), 我聽說它效能很讚, 也去敗了一張. 這張卡的特色就是把整張圖切細, 比方說用 4 個 sub-frame 來計算整個畫面, 最後再接起來. 因為這個技巧的確有效, 所以它也紅了一陣子.

Milestone 2:

1999 年的下半年, NVIDIA 的GeForce 256,首次支援硬體的 T&L. 這樣一來,  CPU 就不用算很多浮點數了, 效能自然是大大地增強. 可惜 Voodoo 不知道在堅持什麼? 始終都不支援 T&L, 最後就被 NVIDIA 給併購了.

2001 年, NVIDIA 引進 programmable vertex / pixel shader 的觀念. 所謂 vertex shader 就是 T&L 的進階版,  pixel shader 或是 fragment shader 就是 texture 的進階版. 怎樣進階呢? 就是把原本寫死的硬體, 做成可以程式化的巨量運算單元, 再以程式來控制想要輸出的 vertex 或 pixel 運算. 這個概念影響了 Direct X 8 的方向, 使得新版的 Direct X 都伴隨著 shader model 的更新.

老師的講法, programmable pixel shader 在 2002-2003 才出現. 但網路上的說法, pixel shader 和 vertex shader 應該都是 2001 年的 Geforce 3 的發明.

Milestone 3:

2002 年, ATI 推出 Radeon 9700 這顆 IC. 裡面用到的新技術還頗不少, 比方說這是第一顆 flip chip 的 IC, 對於散熱問題有了不少改善. 在驅動程式方面也產生了很大的突破, 由於可程式化的技術已經相進步; Wiki 上說它執行抗鋸齒(AA)和各異向性過濾(AF)運算時,在所有情況下,它能比 GeForce 4 的 Ti 4600快上40-100%。這顆 IC 因為效能遠勝 NVIDIA 而大賣了 3 年.


Milestone 4:

2006 年 11 月, NVIDIA 再度推出具有 unified shader 概念的 GeForce 8800. 所謂 unified shader 就是把 vertex shader 和 pixel shader 整合在一起. 同一個 shader 既可以做 vertex shader, 也可以做 pixel shader.

網路上的講法說, unified shader 就是 steam processor. 但是簡教授認為的 stream processor 至少要有 register 的概念, 才比較像 processor. 這是發生在 2007 年.

Milestone 5:

2008年2月, NVIDIA 收購 AGEIA, 推出 CUDA 語言, 使得顯示卡變身為平行處理電腦. 這邊就算是 GPGPU (general purpose GPU) 的起點吧!

綜合以上資料, 應該有一個 milestone 是把所有的 buffer (Vertex buffer, Texture buffer, Z-buffer) 整合成 unified buffer. 但是哪一顆 IC 率先推出這個改進就不得而知了.

總之, 搞繪圖卡的這些人頭腦還挺不錯的. 在激烈的競爭之下, 大家接力地推出可以徹底打敗敵人的招數. 目前 ATI, NVIDIA, Intel 雖然表現出三雄鼎立的架勢, 但誰可以在下一個階段勝出呢? 真是很有趣的一個問題. 繪圖卡愈來愈像小型 super computer, 到時候應該要比誰對軟體的支援最強吧?

另一個觀察的角度是: 當局者迷. 事後看來, 後面發展的路徑好像是顯而易見的, 但是十年前的人也都那麼聰明, 為何他們都想不到呢? 最好的解釋或許是人們不喜歡質變, 由量變過渡到質變的話則可以逐漸接受. 有誰一次想太遠的話, 只會被當作瘋子~~

Ref:

[1] 物竞天择适者生存!显卡10年技术漫谈

[2] http://zh.wikipedia.org/zh-tw/Radeon_R300

Dolby 的 DMP Suite

螃蟹公司把 DMP 的市場做到每月營業額破兩億元, 而 Dolby 也 "順勢" 推出了 DMP 專屬的套件. 難道這是巧合嗎?

嗯, 真的是巧合耶!

我們的 DMP 是指 digital media processor team, 賣出的產品叫做 digital media player. 但是 Dolby 的 DMP 可是叫做 Digital Media Producer.

基本上它是 PC 上的軟體, 可以用來編解, 甚至於修復 Dolby 家族的 bit stream. 分為網路版和單機版販售.
 

Dolby Media Producer Suite (Network Bundle) $3,995

Dolby Media Encoder

Dolby Media Decoder

Dolby Media Tools

Dolby Media Producer SE Suite (Stand-alone Bundle) $995

Dolby Media Encoder SE

Dolby Media Decoder

Dolby Media Tools

 

電腦規格

CPU Models and Requirements

Apple Mac Pro with two 2.66 GHz or faster Intel® Xeon® dual-core processors 

Mac OS X version 10.4.2 or later

 

Internet Radio 的生意經

今天我們同事推薦我給客戶認識, …好事嗎? 非也! 他說這個  bug, Cash 是專家, 他幫你們會處理. 雖然送了我一頂高帽子, 但是我頭突然變大了, 所以戴不下.

這個 bug 說 vTuner 播 WMA 有問題. 嗯, vTuner 是什麼呢? 其實我根本就沒聽過, 只好做點功課來彌補知識的不足. 以下是我初步的心得.

話說網路上有許多 audio 的網站, 這些網站包括只存放音樂檔的, 或者提供廣播服務的. 前者大多是非法的, 而後者本身常常是 content provider, 比方說 BBC 把它的節目製作成 audio stream. 只要連上這個網址, 就能夠聽廣播. 包括 ICRT 也是這類的網站.

接下來考慮到收費的問題. 這些開站的老大們也是要養家活口, 於是他們需要提供 URI (uniform resource identifier) 給付費的客戶.  什麼是 URI 呢? 它是 URL 加上 URN (uniform resource name) 組成的, URN 其實就是 username, password.

協議: [ // ] [ [ 用戶名 [ :密碼 ] @ ] 主機名 [ :埠號 ] ] [ /資源路徑 ]

有顧客付費之後, 網站就可以和提供音樂的廠商拆帳. 通路商和 content provider 拆帳的事現在已經隨處可見, 例如中華電信 MOD. 至於錢櫃 / 好樂迪, 他們是用標案的方式, 逐年向唱片公司購買使用權或重製權 (做成口水歌). (對了, 話說現在已經沒有唱片這種東西, 它們應該也不叫唱片公司了.)

為了提供使用者更好的服務, 某些網站以 content-on-demand 來形容自己的服務. 它們往往具備了 search 功能, 以及各式各樣的排行榜, 幫助使用者找到別的網站上的音樂內容. 甚至於可以支援音樂 以外的服務, 像是新聞和氣象.

PC 的使用者可以下載軟體來使用這些 service provider 的服務, 對於賣 Internet radio 硬體的廠商或是 chip provider, 就得把 PC 版軟體 porting 到 embedded system 裡面. PC 軟體可以試用, 但不是免費的 (約 30 USD). 它具備了某種程度的整合, 使得相容性變得比較好.

當然不想花錢的人可以只用 web browswer 去開 vTuner 上面的排行榜, 只不過遇到相容性問題時 (如: 找不到 RA或 WMA 的 codec), 他們概不負責. 

Content Provider Service Provider Chip Provider HW Provider PC Software
BBC (報新聞) vTuner, Streamfinder, PDAtuner Realtek, ADI, CSR, Telechips Denon, Onkyo, Yamaha vTuner
AccWeather (報氣象) Pandora, Last.FM   D-Link  
MP3tunes (把自己的 MP3 upload 到 URL)     Philips, Pioneer  
DAB 數位廣播, TV (用聽的), Podcast