Skip to main content

2.4. FAQ (基礎問題)

· 3 min read

2.4.1. 為什麼稱作 IPv6, 而非繼 IPv4 之後稱為 IPv5 ? 在任何 IP 標頭中,前 4 位元是為協定版本號所保留的。所以理論上一個協定的版本號在 0 和 15 之間都是可以的:

* 4 己經為IPv4所使用.
* 5 為串流( Stream )協定所保留 (STP, RFC 1819 / 網際網路串流協定第二版)(不曾真正公開使用過)

因此下一個可以用的號碼是 6, 因此 IPv6 就這樣誕生了!

2.4.2. IPv6 位址:為什麼 IPv6 位址位元數要這麼長? 在設計 IPv4 的時候,人們認為 32 位元的長度足夠全世界使用。回頭看看這些年來,32 位元就現在和未來幾年來仍足以使用. 然而,32 位元過不久將不能滿足各種網路設備對全球 IP 位址的需求。想一想將來要連結網路的移動電話,汽車 (包括電子總控系統), 烤麵包機,冰箱,照明開關...

所以設計者選擇了 128 位元,是今天 IPv4 大小 (2^96) 與長度的 4 倍.

雖然實際可使用的大小可能比它看起來的還要小。這是因為現在的定義位址設計,64 位元被用於界面識別. 另外 64 位元則用於路由。假設於目前嚴格的集合階層 (/48, /35, ...), IPv6 所能提供的位址空間仍可能有耗盡的一天,但在可見的將來中應仍不會發生.

您可由 RFC 1715 / The H Ratio for Address Assignment Efficiency and RFC 3194 / The Host-Density Ratio for Address Assignment Efficiency. 中得到更進一步的資訊

2.4.3. IPv6 位址:為什麼在新的設計裡位元數這麼少? 雖然,可能有些人在考慮 IPv8 和 IPv16, 然而這些設計無論從接受和執行都是那麼的遙遠. 目前 128bit 對於標頭和數據傳輸延遲來說是最佳的選擇. 考慮到在 IPv4 和 IPv6 的最小最大傳輸單位 (MTU), 它們分別是 576 位元組和 1280 位元組, IPv4 的標頭長度為 20 位元組和 (最小值,加上 IPv4 位址選項可以增大到 60 位元組), 在 IPv6 的標頭中則是 48 位元組 (固定不變的), 標頭分別占它們 MTU 的 3.4% 和 3.8%, 這意味著兩個協定標頭所造成的負載幾乎相同. 更多位元的位址需要更大的標頭,因而佔據更大的負載.

同樣,考慮到正常連結的 MTU 最大值 (像現在的以太網): 1500 位元組 (特別的例子:Jumbo frames 使用了 9k 位元組). 最終,如果在要傳輸的第三層封包中 10% 或 20% 都用來傳送位址而非封包內容,這可能不是個很好的設計方式.

2.1 什麼是 IPv6?

· One min read

IPv6 是將用來取代 IPv4 (也叫做 IP) 的ㄧ種新的第三層協定 (請參考 linuxports/howto/intro_to_networking/ISO - OSI Model) IPv4 是很早以前設計的 (1980 年一月,RFC 760 / 網路協定 (Internet Protocol)) , 自協定設計之初即不斷地有人要求 IP 網路協定應提供更多的位址和更高的性能. RFC 2460 / 網路協定第六版 (Internet Protocol Version 6 Specification) 是最新的 RFC 版本. IPv6 與 IP 最主要的不同點在於重新設計了封包標頭。包括將位址的長度從 32 bits 增加到 128 bits. 因為第三層主要負責使用基於位址的封包路由來達成端對端位址傳輸。因此與 IPv4 ㄧ樣,傳輸時必需包含新的 IPv6 位址 (來源和目標). 想知道更多關於 IPv6 歷史的資訊的話可以參考看看較舊版本的 IPv6 相關 RFC 列表 SWITCH IPv6 Pilot / References http://www.switch.ch/lan/ipv6/references.html

2.3. IPv6 的位址格式 ?

· 2 min read

前文提到 IPv6 的位址為 128 位元。這麼高的位元數換算成一般十進位數字表示法的話,長度將達到 10 的 39 次方:

2^128-1: 340282366920938463463374607431768211455

這麼長的數字或位址將很難記得住。而且,IPv6 的位址是逐位定位的 (就像 IPv4, 但這個觀點不是公認的). 所以透過十六進制表示法能更好地表示這些數字。將每 4 位元 (也叫做 "nibble") 表示為數字 (0-9) 或字符 a-f (10-15). 這種表示法可以將 IPv6 的地址長度縮減到可用 32 個字符來表示.

2^128-1: 0xffffffffffffffffffffffffffffffff

這種表示法仍然不是很方便. (因為這樣一長串看下來很容易就會混淆或遺漏了單個十六進制數字), 所以 IPv6 的設計者將地址形式定為每 16 位元就用 "冒號" 區分開來. 此外,開頭的 "0x"(在程式設計當中用來表示十六進制數值) 也被省略了:

2^128-1: ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff

如此一來,一個可用的地址 (請參考之後提到的地址類型) 如下:

3ffe:ffff:0100:f101:0210:a4ff:fee3:9566

為了簡化,每個 16 位元區塊中高位元的 0 可以被省略:

3ffe:ffff:0100:f101:0210:a4ff:fee3:9566 -> ¬ 3ffe:ffff💯f101:210:a4ff:fee3:9566

連續值為 0 的 16 位元位址區塊可以用 "::" 表示。但是在一個 IPv6 位址當中只能使用這種簡寫一次,否則就不再是唯一表示的位址了:

3ffe:ffff💯f101:0:0:0:1 -> 3ffe:ffff💯f101::1

簡化得最短的 IPv6 本地位址:

0000:0000:0000:0000:0000:0000:0000:0001 -> ::1

也有一種方法叫做簡潔 (compact, base85 coded) 表示法。定義於 RFC 1924 / IPv6 簡潔位址表示法 (定於 1996 年四月一日), 但從沒有被廣泛使用過,可能只是個愚人節笑話。但還是給個例子:

Itu&-ZQ82s>J%s99FJXT

資訊: ipv6calc 是一個 IPv6 地址格式的計算和轉換的計劃,您可以在 ipv6calc 首頁中找到: http://www.deepspace6.net/projects/ipv6calc.html 鏡像站: http://mirrors.bieringer.de/www.deepspace6.net/projects/ipv6calc.html

大綱

· 3 min read

//2/22/2005 //8/6/2004

1. 概述

1.1\. 版權,許可與其它
1.2\. 歸類
1.3\. 版本, 歷史和待辦事項
1.4\. 翻譯
1.5\. 技術
1.6\. 序
1.7\. 使用詞彙與縮寫
1.8\. 了解這個 HOWTO 的必需條件

2. 基礎

2.1\. 什麼是 IPv6?
2.2\. IPv6 在 Linux 作業系統上的歷史
2.3\. IPv6 的位址格式的形式 ?
2.4\. FAQ 問與答(基礎)

3. 位址格式

3.1\. 沒有特殊前綴的位址
3.2\. 位址前綴
3.3\. 位址格式 (主機部份)
3.4\. 用作路由的位址前綴長度

4. IPv6 - 支援 (ready) 系統確認

4.1\. IPv6-支援 kernel
4.2\. IPv6-支援 網路設定工具
4.3\. IPv6-支援 測試/調試 程式
4.4\. IPv6-支援 程式
4.5\. IPv6-支援 客戶端程式 (selection)
4.6\. IPv6-支援 伺服器端程式
4.7\. FAQ 問與答 (IPv6-支援 系統確認)

5. 設定界面

5.1\. 不同的網路設備
5.2\. 啟動與關閉界面

6. 設定 IPv6 位址

6.1\. 顯示目前的 IPv6 位址
6.2\. 新增 IPv6 位址
6.3\. 移除 IPv6 位址

7. 設定正常 IPv6 路由

7.1\. 顯示目前的 IPv6 路由
7.2\. 新增 IPv6 通過閘道器的路由
7.3\. 移除 IPv6 通過閘道器的路由
7.4\. 新增 IPv6 通過介面的路由
7.5\. 移除 IPv6 通過介面的路由
7.6\. IPv6 路由FAQ

8. 芳鄰搜尋

8.1\. 使用 "ip" 指令顯示芳鄰
8.2\. 使用 "ip" 指令處理芳鄰列表

9. 設定 IPv6-in-IPv4 通道

9.1\. 通道的類型
9.2\. 顯示目前通道
9.3\. 設定點對點的通道
9.4\. 設定 6to4 通道

10. 設定 IPv4-in-IPv6 通道 11. 在 /proc-filesystem 的內核設定

11.1\. 如何存取 /proc-filesystem
11.2\. /proc/sys/net/ipv6/ 中的數值類型.
11.3\. /proc/sys/net/ipv4/ 中 IPv6 相關的數值類型
11.4\. /proc/net/ 中 IPv6 相關的數值類型

12. Netlink-Interface to kernel 13. 網路調試

13.1\. 伺服器接口(socket) 繫結
13.2\. tcpdump 封包傾印範例

14. 在不同的發行版中設定 IPv6

14.1\. Red Hat Linux and "clones"
14.2\. SuSE Linux
14.3\. Debian Linux

15. 自動設定與移動性

15.1\. 無狀態自動設定
15.2\. 使用Router Advertisement Daemon (radvd)達成有狀態自動設定
15.3\. 動態主機設定協定 v6 (DHCPv6)
15.4\. 移動性

16. 防火牆

16.1\. 使用 netfilter6 防火牆
16.2\. 準備
16.3\. 使用方法

17. 安全性

17.1\. 節點安全性
17.2\. 存取限制
17.3\. IPv6 安全性驗證

18. 加密與認證 18.1. 使用加密與認證的模式 18.2. 核心支援 (ESP 與 AH) 18.3. 自動金鑰交換 (IKE) 18.4. 額外訊息

19. 服務品質 (QoS) 20. Hints for IPv6-enabled daemons

20.1\. Berkeley Internet Name Daemon BIND (named)
20.2\. Internet super daemon (xinetd)
20.3\. Webserver Apache2 (httpd2)
20.4\. Router Advertisement Daemon (radvd)
20.5\. tcp_wrapper

21. 程式設計 (使用 API) 22. Interoperability 23. 更多資訊與網址

23.1\. 書籍, 文章, 線上評論 (mixed)
23.2\. Conferences, Meetings, Summits
23.3\. 線上資訊
23.4\. IPv6 基礎架構
23.5\. Maillists
23.6\. 線上工具
23.7\. Trainings, Seminars
23.8\. 'The Online Discovery' ...

24. Revision history / Credits / The End

24.1\. Revision history
24.2\. Credits
24.3\. 結語

NS2.27 + Mobiwan2 安裝

· 2 min read

用來與 OMNET++ IPv6Suite 模組 作對照的模擬工具是 NS2 上的 Mobiwan2 模組. 這是目前最多人使用的模擬模組. 除了基礎對照系統架設之外, 還將根據之前學長在 NS2.1b1 上使用 Mobiwan 的程式, 改寫成 for NS2.27 的 Mobiwan2 版本. 以順便了解其架構,並利用其優點在 INET6 porting 上

剛開始照著 NS2 (Network Simulator) 教學手冊 的 安裝篇 裝, 成功後再裝 Mobiwan2 卻遇到問題.

解決方法是在執行 NS2-AllinOne 安裝前先照著 Mobiwan2 網站上的指令 patch 好,

# cd <your>ns-allinone-2.27/ns-2.27
# zcat <patchfile.gz></patchfile.gz></your>patchfile.gz<your><patchfile.gz> |patch -p1</patchfile.gz></your>

然後再執行 NS2 安裝

要是已經把 NS2 裝好了怎麼辦?還能怎麼辦,我只會一個笨方法...... 先把之前裝的整個目錄砍掉後,再裝一次吧...Orz.

在 Cygwin 上測試的方法:命令列中輸入 startxwin.bat。會產生一個新的視窗,在此命令視窗中輸入

$ cd your path to ns-2.27
$ ./ns simple-mipv6.tcl

若要在 Fedora Core 3 上安裝,因為 gcc 版本太新 (3.34) 的關係,笨笨的 NS2 不懂得支援, 去下載 http://www.ececs.uc.edu/~cdmc/ucbt/src/ns227-gcc34.patch 這個好心人寫的修正檔, 丟到 ns-allinone-2.27 目錄下,打入

#patch -p0 -p0 < ns227-gcc34.patch

修正後再來裝就可以了.