這系列文章僅記錄過程,目的是從紀錄中看到自己對的 ipv6 了解,對做事方法的改進. 不總結經驗。因為一但總結經驗就會陷入長段撰寫文件的誤區。而且在現在階段,甚至不能確定此專案能否成功。希望我能有寫出總結經驗文章來的一天吧:)
1st. Part: 第一步先從 ICMPv6 開始著手 Porting. 在熟悉 INET 目錄規劃後,首先是根據 INET 目錄規則來建立 INET 專案所應用到的目錄, 剛開始在 Network 目錄下先建立 IPv6 與 IPv6d 兩個目錄。並在 Nodes 目錄下建立 INET6 目錄.
從 IETF RFC 列表 中挖出了 RFC 2463, Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification, 依此為憑開始 porting.
編輯 Network/IPv6/ICMPv6.ned 參照 IPv6Suite, 從 IPv6Suite/IP/IPv6/Generic 目錄下的 ICMPv6.ned. 觀察它的 ICMPv6 模組組成. 發現該模組與 INET 的 ICMP.ned 大不相同,是由 IPv6Core, Neighbourdiscovery, ICMPv6Combine, 還有 MLD (multicast) 模組組成的複合模組. MLD 模組在剛開始 porting 時可以忽略暫時不處理。剩下的三塊中... 應不應分拆成三個檔案三個 simplemodule? , 是否要使用到 ICMPv6Combine 這塊呢?我馬上陷入了第一個難題中.
2nd. Part: 告解式除錯 (Confessional Debug): 為何不先弄好 IP header 呢?這絕對是問題. 還好意識到這件事情的時間點還算早。更堅定了我 "只有邊寫邊紀錄才能意識到自己的錯誤" 的想法,因此接下來應先搜尋 IP header 定義的部分,從這裡開始作修改.
暫時將 DualStack 放到一邊,完成純 IPv6 Support 的模組後再考慮 DualStack. 但一定會將之排入計畫裡. 因為雖然 DualStack 對我的論文模擬來說重要性不大, 但在實際工作上將會遇到. porting 過一遍心裡會先有點底,相信多少有些助益.