【IPv6 Ready Logo】Core符合性測試

 
這篇要介紹如何建置IPv6符合性的測試環境
因為Core的測試設備分為兩種:Host與Router
我先以簡單的Host來做範例
先介紹一下兩個名詞:TN (Test Node) 與 NUT
TN:就是下面介紹的FreeBSD的主機
NUT:則是我們所要受測的IPv6設備

首先要找一台不要太新的電腦
如果有COM Port更好,因為自動測試會需要它
接著去下載FreeBSD 9.0
http://www.freebsd.org/where.html 
因為測試的環境必須在這個OS下面
安裝完成之後
還必須要安裝Perl-5.12與Perl的相關模組
因為測試程式的語法是由Perl寫出來的

● Perl-5.12.4
# cd /usr/ports/lang/perl5.12
# make
# make install
如果無法連上網路請自行下載BSDPAN-20111107.tar.bz2與perl-5.12.4.tar.bz2,並執行以下指令之後,再重新試上面的指令
# cp perl-5.12.4.tar.bz2 /usr/ports/distfiles/perl
# cp BSDPAN-20111107.tar.bz2 /usr/ports/distfiles/perl
● Expect
# cd /usr/ports/lang/p5-Expect
# make
# make install
如果無法連上網路請自行下載IO-Tty-1.10.tar.gz與Expect-1.21.tar.gz,並執行以下指令之後,再重新試上面的指令
# cp Expect-1.21.tar.gz /usr/ports/distfiles
# cp IO-Tty-1.10.tar.gz /usr/ports/distfiles
● Digest-MD5
# cd /usr/ports/security/p5-Digest-MD5
# make
# make install
如果無法連上網路請自行下載Digest-MD5-2.51.tar.gz,並執行以下指令之後,再重新試上面的指令
# cp Digest-MD5-2.51.tar.gz /usr/ports/distfiles
● YAML
# cd /usr/ports/textproc/p5-YAML
# make
# make install
如果無法連上網路請自行下載YAML-0.77.tar.gz,並執行以下指令之後,再重新試上面的指令
# cp YAML-0.77.tar.gz /usr/ports/distfiles

接下來要安裝測試的軟體了
● v6eval (用來收送IPv6封包用的)
請去此處下載:v6eval-3.3.2
因為FreeBSD9.0在make這套時會有Error Message: "CmMain.cc:51:18: error: utmp.h: No such file or directory",所以請下載:v6eval.diff_.gz
# tar zxvf v6eval-3.3.2.tar.gz
# cp v6eval.diff_.gz v6eval-3.3.2
# cd v6eval-3.3.2
# gunzip v6eval.diff_.gz
# patch -p0 < v6eval.diff_
# make
# make install
● Self Test Tool (Perl寫的Script用來執行v6eval讓它去收送封包)
請去此處下載:Self_Test_5.0.0 
# tar vxfz Self_Test_5-0-0.tgz

在安裝完所有的軟體之後,就要設定相關的檔案了
● /etc/rc.conf (請修改rl0為連接NUT的port)
ipv6_enable=”NO”
ifconfig_rl0=”up”
devfs_system_ruleset=“devfsrules_unhide_bpf”
● /etc/devfs.rules
[devfsrules_unhide_bpf=1025]
add path ‘bpf0’ user root group wheel mode 0660 unhide
add path ‘bpf1’ user root group wheel mode 0660 unhide
add path ‘bpf2’ user root group wheel mode 0660 unhide
add path ‘bpf3’ user root group wheel mode 0660 unhide
add path ‘bpf4’ user root group wheel mode 0660 unhide
add path ‘bpf5’ user root group wheel mode 0660 unhide
add path ‘bpf6’ user root group wheel mode 0660 unhide
add path ‘bpf7’ user root group wheel mode 0660 unhide
● /etc/group
wheel
● /usr/local/v6eval/etc/tn.def (請修改rl0為連接NUT的port)
RemoteDevice  cuau0
RemoteDebug  0
RemoteIntDebug 0
RemoteLog  1
RemoteSpeed  0
RemoteLogout  0
RemoteMethod serial
filter    ipv6
Link0  rl0  00:00:00:00:01:00
● /usr/local/v6eval/etc/nut.def (TargetName與HostName設定要測試設備的名稱,Link0請設定NUT的port與MAC)
System    manual
TargetName   abc
HostName   abc
Type    host
User    root
Password   v6eval
Link0  eth0  00:00:92:a7:6d:f5

以上就是將測試的環境給設定好了~ 

接著將我們要測試的設備接上FreeBSD主機
就可以進行下面的測試指令了
因為一共分五大項,若要一次測試
# cd Self_Test_5-0-0
# make clean
# make ipv6ready_p2_host
若要分項測試,針對Spec作測試
# cd Self_Test_5-0-0/spec.p2
# make clean
# make ipv6ready_p2_host
若要針對Spec的17~24項作測試
# cd Self_Test_5-0-0/spec.p2
# make clean
# make AROPT="-s 17 -e 24" ipv6ready_p2_host

在手動的測試中會有三種狀況會等您的動作 
● 等開機完成到Login的畫面,再按下Enter
reboot> Reboot NUT.
reboot>     * Wait until NUT boot up completely.
reboot>         Ex.) Wait until catch up login prompt.
reboot>
reboot> Press Enter key for continue.
● 重新開機之後,馬上按下Enter
reboot_async> Reboot NUT.
reboot_async>     * You don't need to wait NUT untill boot up completely.
reboot_async>     * You have to exit this script quickly.
reboot_async>     * This script is used for catching up boot sequence.
reboot_async>         Ex.) DAD, MLD Report, ...
reboot_async>
reboot_async> Press Enter key for continue.
● 先輸入好ping6的指令,按下Enter的五秒內,執行ping6的指令
ping6> Press enter key, and excute the following commands within 5 seconds.
ping6> Do ``ping6  DataSize= 1352, Send Count= 1, Interface= bfe0, Destination= FF1E::1:2''
12-30 14:00