顯示具有 網路 標籤的文章。 顯示所有文章
顯示具有 網路 標籤的文章。 顯示所有文章

2025/07/14

WebAccess/NMS


WebAccess/NMS 是我從零開始規劃與開發的一套完整網路管理軟體,旨在整合研華所有 IP-based 產品並支援第三方設備,提供集中化管理與監控功能。以下是系統的設計理念、架構與核心功能介紹。

1. 需求與發想

WebAccess/NMS 的設計初衷,是全面納管研華的所有網路產品,包括:

  • IPC、Switch、Protocol Gateway、Wireless 等

  • 支援第三方設備,只要能支援 SNMP 或 ICMP 就可以納管

核心概念包括:

  • 地圖化管理:像 Google Map 一樣,將交換機位置與地點清楚呈現

  • 完整網管功能:支援 FCAPS 等功能,透過 Plug-in 可自由開關

  • 與 SCADA 的差異:NMS 管理的是網路設備,而 SCADA 管理的是實體設備(感測器、控制器等)


2. 系統架構

  • 分散式架構:CMS(Central Management System)與 EMS(Element Management System)分散部署

  • Restful API:CMS 與 EMS 一對多通訊,CMS 同時提供 API 給第三方軟體整合


3. 軟體架構

  • MVC 架構:Model-View-Controller

  • 開發技術:Java、JSP、Javascript 等前後端技術組合


4. 核心功能

Topology 與監控

  • 連線拓撲、WiFi、設備

  • 背景地圖支援 Google Map 與 OpenStreetMap

  • Traffic 監控

Dashboard

  • 設備狀態總覽

  • Top 10 設備或事件列表

事件與告警管理

  • Syslog / SNMP Trap Server

  • Event Notify:SMS、Email、外部程式、聲音提示

  • Alarm correlation & severity

  • FW Upgrade + Config Backup/Restore

EMS 與設備管理

  • Device Management:匯入設備 Profile

  • Device Profile、MIB Browser、Topology Group

  • DB Backup/Restore + Event Log Management

  • User Management 與 Access Log


5. 不同設備的專屬功能

IPC

  • Performance:CPU、Memory、Ethernet、Voltage、Temperature

  • Remote Desktop、Process Monitoring

  • Alarm Threshold 設定

Switch

  • LLDP、MAC+ARP Topology

  • X-Ring Change、Trunk Port、Link Up/Down、PoE

  • VLAN 設定與監控

  • Performance 監控、Web Page 與 MIB Browser

  • FW Upgrade + Config Backup/Restore + Config Comparison

Wireless

  • SSID Group 管理

  • Performance、Roaming、Signal Strength

  • Web Page 監控

Serial Device Server

  • Performance:Serial Port

  • VCOM / USDG Mode Link

  • Web Page 監控


6. 特殊功能

  • NMS Proxy

  • OpenVPN Server

  • Alarm Playback

  • MIB Browser GUI:Multi Set、Add SNMP Trap、Add Property

  • Topology Multiple Set/View:VLAN、IGMP

  • Prediction:Process Monitoring、Slow Response、Switch Configuration Comparison

  • 全拓撲流量監控

  • 支援辨識第三方設備:Server、Router、Switch


小結

WebAccess/NMS 的設計核心是從需求出發,整合設備、簡化管理、提升網路可視化與監控能力。無論是研華產品還是第三方設備,都能在同一平台統一納管,並提供完整的事件、告警與維護工具,讓網管人員能專注於提升效率與管理效能。

2022/09/04

Advantech WISE-PaaS 2.0 – Edge Intelligence 簡介

WISE-PaaS 2.0 是我們公司推行的雲端與邊緣運算整合架構,涵蓋從設備端到雲端的平台服務,支援各種工業應用與智慧製造需求。雖然是一個龐大的系統,但可以從四大部分來理解:


1. Edge Intelligence(邊緣智慧)

Edge Intelligence 指的是安裝在設備端的智慧軟體,讓設備能在本地進行資料處理與智能決策。核心模組包括:

  • WebAccess 系列

    • WebAccess

    • WebAccess/SCADA

    • WebAccess/tagLink

    • WebAccess/MCM

    • WebAccess/CNC

    • WebAccess/HMI

    • WebAccess/NMS

  • WISE-PaaS 系列

    • EdgeSense:邊緣感測與分析

    • RMM:遠端設備管理

    • OTA:韌體遠端更新

    • Security:設備與資料安全

    • VideoSense:影像分析與智慧監控

透過 Edge Intelligence,設備不僅能即時收集資料,還能進行初步分析與決策,減少對雲端依賴並提升反應速度。


2. IaaS(Infrastructure as a Service)

  • 提供基礎運算與儲存資源

  • 支援大規模資料處理、虛擬化與雲端運算

  • 讓工業應用能在雲端靈活部署,並保證穩定性與擴展性


3. PaaS(Platform as a Service)

  • 提供開發與管理平台,讓應用開發更高效

  • 提供 API、資料庫、資料流處理與安全管理等功能

  • 適合快速建置 IoT 與工業自動化應用


4. Industrial APPs (SRPs)

  • SRPs(Solution Ready Packages)為工業應用套件

  • 包含各種垂直場景的解決方案

  • 開發者可快速整合 Edge Intelligence 與雲端 PaaS,部署到特定工業場景


小結

WISE-PaaS 2.0 將 Edge Intelligence、IaaS、PaaS 與 Industrial APPs 緊密結合,形成完整的工業雲端架構。

  • 設備端:Edge Intelligence 實現本地資料分析與管理

  • 基礎架構:IaaS 提供穩定運算與儲存資源

  • 平台服務:PaaS 支援開發與資料管理

  • 工業應用:SRPs 提供快速部署的解決方案

總結來說,WISE-PaaS 2.0 是一個從設備到雲端的整合平台,讓智慧製造與工業 IoT 可以更快速、可靠地落地。



2020/03/16

WebAccess/NMS 功能影片


我的工作內容有一部分在規劃NMS軟體的需求
以下的影片是針對WebAccess/NMS在不同場域的應用範例

  • AGV:AGV是一種車子會一直在工廠內部跑來跑去,想要知道這台小車跑到那可以透過NMS了解目前跑到哪,跟哪個Wireless AP連接。NMS可以貼上背景圖會更清楚的知道AGV小車的位置。




  • 交通:NMS可以整合Google Map,清楚的知道發生問題的設備在哪個路口;並且將設備群組在一起,不會同一時間看到太多不相關的設備。透過不同的圖形,也可以清楚的知道哪個是IP camera、哪些是我們的交換機。當故障排除之後,IP camera會從紅色改為正常的顏色。


  • 再生能源:再生能源發電有週期型,所以不希望在發電時對設備有更新的行為。透過NMS的定時更新,使用者可以在凌晨的時間更新設備而不影響設備的正常運作。


  • 礦業:NMS可以整合X-Ring的功能,當網路斷線時能立刻的在拓樸中反映出來,避免人員進入礦場除錯的困難。


2020/02/17

Azure SDK? Azure IoT SDK? Azure IoT Edge?


最近公司的4G router與 LoRaWAN Gateway被問Azure SDK支援的問題
趁這個時候把這些SDK釐清一下

  • Azure SDK : 主要是用在開發雲端的應用軟體與網頁服務。

  • Azure IoT SDK : 可以用在Device開發,將Device上的資料上傳到Azure雲端服務上。
    • Device SDK : 用來開發在device上的,有C的source code
    • Service SDK : 用在IoT Hub的雲端環境上 

  • Azure IoT Edge : 指能在設備中做Edge Computing的功能,讓更多AI的功能(串流分析、機器學習、認知服務)在Edge端的設備處理。可以在Edge端快速的執行異常偵測或降低雲端的頻寬使用率。分為下面三個主要的元件
    • IoT Edge modules : 用來執行Azure  software的container (Docker),用來佈署到IoT Edge的裝置中
    • IoT Edge run-times : 在IoT Edge裝置上執行Azure software
    • IoT Edge cloud interface : 監視、管理IoT Edge的裝置

    • 布建的步驟如下
    1. 在Azure上建立自己的IoT Hub (之後要用來監控IoT Edge的狀態)
    2. 在IoT Hub中註冊IoT Edge裝置
    3. 在IoT Edge裝置中安裝並執行IoT Edge runtime,必須安裝:container runtime environment與IoT Edge runtime environment
    4. 將Module(Azure的商業邏輯)由Azure Cloud 部署到IoT Edge的裝置中



2013/05/31

IPv6系列文


經過了大約一年半的時間
我才慢慢的把IPv6的文章給補齊
以下分門別類介紹一下我的文章

● 要做IPv6的初學者會先建議看以下兩篇
  - IPv6 :  對IPv6做個簡單介紹
  - IPv6...ICMP : 一些IPv6實作的表格與行為,有需要再深入了解

● 若是想針對Linux上面如何操作
  ----- 基礎篇 -----
  - 設定IPv6 : 教您如何將IPv6的網路建置起來
  - Stateless auto configuration : 如何建置IPv6的router
  - Stateful auto configuration : 如何建議IPv6的DHCP server
  ----- 服務篇 -----
  - Telnet : 如何啟用IPv6 telnet server
  - Web :  如何連接WWW
  - SNMP :  如何建置與使用SNMP server
  - NTP : 如何建置ntp server
  - TFTP : 如何建置tftp server
  - Email :  如何建置mail server

● 如果您對IPv6 ready logo有興趣,可以參考下面的文章
  - Core測試流程 : 整體的測試流程
  - Core符合性測試 : 如何手動操作測試
  - Core符合性測試 (除錯) : 如果發現問題該如何解決
  - Core符合性測試 (自動) : 如何改為自動測試
  - Core互連性測試 : 到了中華電信研究所要測試的項目
  - 金牌與銀牌的差別 : Phase-1與Phase-2的差異

還有興趣的人可以參考我之前分享的投影片


【Linux】IPv6 Mail Server


這邊使用的Mail Server是Postfix

● Server
# yum install postfix
# yum remove sendmail
# vim /etc/postfix/main.cf
 myhostname = guider.com
 myorigin = $myhostname
 inet_interfaces = all
 inet_protocaols = all
# /etc/init.d/postfix start
# netstat -tlunp |grep :25

● Client
# vim /etc/hosts
 3ffe:1:2::1 ipv6.server
# vim /tmp/test
 testing ipv6
 EOF
# mailx -S verbose -S from=eki-1322 -S smtp=ipv6.server –s mailtest test@test.com < /tmp/test

要知道有沒有收到呢?
可以在server裡面輸入以下的指令,來看有沒有收到信件
# postqueue –p 


【Linux】IPv6 TFTP Server


這篇說明了簡易架設TFTP server的作法

● Server
# yum install tftp-server
# vim /etc/xinet.d/tftp
 disable = no
 flag = IPv6
# /sbin/chkconfig tftp on
# /sbin/chkconfig xinetd on
# /sbin/service xinetd start


● Client
# tftp 3ffe:1:2::1

【Linux】IPv6 NTP Server


要如何建置IPv6的NTP server
而且不需要對外去做更新時間的動作呢?

● Server
# yum install ntp
# vim /etc/ntp.conf
 restrict -6 default kod nomodify notrap nopeer noquery
 restrict -6 ::1
 restrict -6 fe80::0 mask 64 nomodify
 restrict -6 3ffe:1:2::0 mask 64
 server 127.127.1.0
 fudge 127.127.1.0 stratum 8
# /etc/init.d/ntpd start
# chkconfig ntpd on
# netstat –tlunp |grep ntp

● Client
# date 12121212
# date
# ntpdate 3ffe:1:2::1
# date

2013/03/07

【Linux】IPv6 SNMP Server


這邊要介紹如何安裝IPv6的SNMP agent在server上
以及要如何利用SNMP去query的資訊


● Server
# yum install net-snmp net-snmp-utils

● Client
# snmpget -v 1 -c public udp6:[3ffe:1:2::1]:161 1.3.6.1.2.1.1.3.0
# snmpwalk -v 1 -c public udp6:[3ffe:1:2::1]:161 1.3.6.1.2.1.1

第一個指令會拿回到開機到現在的時間
第二個指令則會掃出全部MIB的資訊 (會需要一點時間)

2013/03/05

如何在瀏覽器看IPv6的網頁


簡單做個Note

如果要看IPv6的網頁請照下列的格式輸入
● HTTP
http://[3ffe:1:2::2]

● HTTPs
https://[3ffe:1:2::2]

2013/03/03

【Linux】IPv6 Telnet Server


要如何將一般的telnet server變成IPv6的telnet server呢?
其實很簡單,只要安裝好telnet server的軟體就可以了

● Server
# yum install telnet-server
# chkconfig telnet on

● PC
# telnet 3ffe:1:2::1

如果無法連線,請記得確認ip6tables防火牆的狀態或是關閉它。

2012/09/17

【IPv6 Ready Logo】Phase1與Phase2比較


現在已經沒有Phase1可以申請了
但是之前因為工作的需要所以有做了些比較
於是分享給大家做個參考吧~

※ Phase-1是什麼?
Phase-1銀質標章:基本功能測試(2003/09/01開始營運,已於2011/11結束),Phase-1測試範圍包括IPv6協定, neighbor discover, address auto-configuration及ICMPv6,共有170多項測試項目

※ Phase-2是什麼?
Phase-2金質標章:完整功能測試(2005/02/15開始營運,Phase-2的測試標準則以IETF RFC所規範之MUSTs 和SHOULD為依據,提供更嚴謹之IPv6測試。測試項目高達450項

※ Phase I 和Phase II符合性測試項目

※ Phase-1的缺漏
    ◎ Phase1測試設備可能無法判斷正確的IPv6 Header的格式 (Version, Traffic Class, Flow Label, Payload Length, Next Header, Hop Limit),也無法在發現問題時送出ICMPv6的封包。
    ◎ 若是Fragment的封包有問題(Source address不相同或Destination address不相同)時,Phase1測試設備可能無法判斷或重組,造成通訊的不正常。
    ◎ Phase1測試設備不一定在開機時可以送出Router Solicitation封包也可能無法正確的處理Router送過來Router Advertisement的資料,這樣造成設備只能在區網連線而無法透過Router出去。
    ◎ Phase1的測試設備可能無法偵測有相同的Global address,這會造成在連網時有封包遺漏或送到錯誤的位址。
    ◎ Phase1測試設備可能無法處理Redirect的封包,當網路有兩台Router時,Phase1的設備就無法從正確的Router出去。
    ◎ 如果同一台的router送出不同的network prefix,Phase1的設備可能無法發出Duplicate Address Detection。
    ◎ Path MTU Discovery是動態偵測線路上的PMTU。如果送出去封包的PMTU太大時,設備會收到ICMPv6並調整PMTU的大小。Phase1測試設備可能沒有支援網路MTU的偵測,所以當Router兩端的網路MTU大小不一的時候就會造成連線問題。
    ◎ 還有就是一些檢查的部分...

2012/09/14

OSPF


OSPF (Open Shortest Path First)
在一個AS(Autonomous System)用來傳遞連線routing資訊的協定
Autonomous System是指有一群網路設備,用相同routing的information

以下是OSPF與RIP之間的比較表

● Autonomous and Area
    一個Autonomous會分成多個logical area。最主要的area為backbone(area 0)所有的area都必須接到此area
    ◎ IR (Internal Router) : 在某個area內的Router
    ◎ ABR (Area Boaeder Router) : 連接兩個以上的area的router
    ◎ BR (Backbone Router) : backbone area 的 router
    ◎ AS Boundary Router : 用來交換其他AS的Router


● link state database
    Router ID + associated link + path cost + Dijkstra algorithm → 選出成本最少的path

● 在運作時會一直送出

    ◎ Hello msg : 確認device是否存在
    ◎ Database Descriptions(DDs) : 用來create link state DB[透過LSA(Link State Advertisement)去update]

● Interface : 用來連接layer3 device 與OSPF網路,有state Info, IP, netmask
● Virtual Interface : 用來連接non-backbone area到backbone,兩邊都必須設定

● Designated Router(DR) & Backup Designated Router(BDR) : 負責update link state與確保LSA可以動作

----------

● 設定OSPF步驟
    (1) Enable OSPF
◎ enable
◎ Router ID裡的IP Address
    (2) Create Area
◎ Name Area ID : IP(若輸入0.0.0.0則為backbone)
◎ Authentication : None, Simple[8char], MD5[16char]
 ◎ Stub Network : 是否為Stub area
 ◎ No summary : 要不要收LSA
 ◎ Default Route cost : 用來在stub area選出default route
 ◎ Route redistribution : 將RIP & static route轉成OSPF
- Type 1 : 直接將OSPF的cost轉成external metric
- Type 2 : 用destination 去決定external metric
◎Summary address : 減少routing entry 在 routing table 中
- 用192.168.8.0/22取代 192.168.8.0/24, 192.168.9.0/24, 192.168.10.0/24, 192.168.11.0/24這四個entry
    (3) assign interfcae --> area
        ◎ Authentication : None, Same-as -Area, Simple(key), MD5(Key+KeyID)
◎ Cost : interface cost用來計算routing的路徑
◎ Priority : 用來決定DR & BDR, 0代表不參加
    (4) assign virtual interface --> backbone
◎ Area ID (IP) : 哪個interface所屬的area
◎ Peer Router ID : peer boarder router ID
◎ Authentication : keyID + key


2012/09/09

Linux Routing Connection


這個範例在說明如果有三台Linux Router在中間
要讓兩台PC-A與PC-B可以互相ping得到對方呢?

先介紹一下環境
※ PC-A
    eth0 IP : 192.168.1.1
※ R1
    eth0 IP : 192.168.1.2
    eth1 IP : 192.168.2.1
※ R2
    eth0 IP : 192.168.2.2
    eth1 IP : 192.168.3.1

※ R3
    eth0 IP : 192.168.3.2
    eth1 IP : 192.168.4.1

※ PC-B
    eth0 IP : 192.168.4.2
----------
該如何設定呢 ?
※ PC-A
# ifconfig eth0 192.168.1.1
※ R1
# ifconfig eth0 192.168.1.2
# ifconfig eth1 192.168.2.1
# echo "1" > /proc/sys/net/ipv4/ip_forward
# route add default gw 192.168.2.2
※ R2
# ifconfig eth0 192.168.2.2
# ifconfig eth1 192.168.3.1
# echo "1" > /proc/sys/net/ipv4/ip_forward
# route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.2.1
# route add -net 192.168.4.0 netmask 255.255.255.0 gw 192.168.3.2
※ R3
# ifconfig eth0 192.168.3.2
# ifconfig eth1 192.168.4.1
# echo "1" > /proc/sys/net/ipv4/ip_forward
# route add default gw 192.168.3.1

※ PC-B
# ifconfig eth0 192.168.4.2
透過上述的設定,就可以讓彼此ping通

2012/07/17

【IPv6 Ready Logo】Core互連性測試


在完成了IPv6 Core的符合性測試之後
就可以將測試報告寄給中華電信研究所
若沒有問題他們就會通知到所內進行互連性測試
互連性測試基本上要測試四種不同的作業系統進行對測
FreeBSD, Linux, NetBSD, USAGI
FreeBSD, NetBSD會設定為Router的腳色
Linux, USAGI會設定為Host的腳色
跟Router的測試項目比較多,Host的測試項目會比較少

以下介紹各個測項
● 與Router (NetBSD)對測
    1.1-D:ping link local address
    1.1-E:ping global address
    1.1-F:ping所有的Node (FF02::1)與 所有的Router (FF02::2)
    1.2-C:造成別人產生DAD (重複的網路位址偵測)
    1.2-D:自己發生的DAD
    1.3-A:Router送出一個 RA,另一台Host ping看看
    1.3-B: Router送出兩個 RA,另一台Host ping看
    1.3-C:測試RA的lifetime,超過了是否還存在
    1.4-A:測試RA的lifetime大於0,是否能互ping到對方
    1.4-B:送RA=0,ping設備;之後送RA=600,ping設備;最後送RA=0,ping設備
    1.5:Router1會送Redirect封包給Host,看看使否能轉到Router2
    1.6-A:host ping設備,設備回給host的封包太大,要能切割成小一點的封包
    1.6-D:當送的封包的MTU太大時,能切割並送出
● 與Host (Linux)對測
    1.1-A:ping 另一台host的link local address
    1.1-B:ping 另一台host的global address
    1.1-C:ping 所有的Node (FF02::1)
    1.2-A:router ping 設備與host,沒有DAD的狀況
    1.2-B:測試造成別人產生DAD與自己發生的DAD
    1.6-C:當網路的MTU為1280時,host 與設備互用大封包ping時,可以轉成1280的封包

● 與Router (FreeBSD)對測
    1.1-D:ping link local address
    1.1-E:ping global address
    1.1-F:ping所有的Node (FF02::1)與 所有的Router (FF02::2)
    1.2-C:造成別人產生DAD (重複的網路位址偵測)
    1.2-D:自己發生的DAD
    1.3-A:Router送出一個 RA,另一台Host ping看看
    1.3-B: Router送出兩個 RA,另一台Host ping看
    1.3-C:測試RA的lifetime,超過了是否還存在
    1.4-A:測試RA的lifetime大於0,是否能互ping到對方
    1.4-B:送RA=0,ping設備;之後送RA=600,ping設備;最後送RA=0,ping設備
    1.5:Router1會送Redirect封包給Host,看看使否能轉到Router2
    1.6-A:host ping設備,設備回給host的封包太大,要能切割成小一點的封包
    1.6-D:當送的封包的MTU太大時,能切割並送出
● 與Host (USAGI)對測
    1.1-A:ping 另一台host的link local address
    1.1-B:ping 另一台host的global address
    1.1-C:ping 所有的Node (FF02::1)
    1.2-A:router ping 設備與host,沒有DAD的狀況
    1.2-B:測試造成別人產生DAD與自己發生的DAD
    1.6-C:當網路的MTU為1280時,host 與設備互用大封包ping時,可以轉成1280的封包

上述的測試要兩天,等測試完成之後
就可以等報告拿Logo囉 ~ 

2012/07/02

【IPv6 Ready Logo】Core符合性測試 - Linux除錯


以下是小弟在用linux測試時的一些心得

基本上linux 2.2就有支援了
但是建議會使用2.6以上的版本
我是用linux 2.6.31的版本
因為要自己build in kernel所以有時候選錯項目會造成一些測試不過
這邊給大家做些參考


基本上在linux kernel中選了"CONFIG_IPV6"大部分的項目就可以過了
但是如果測試的時候發現
● Section1: 44, 45, 46, 49, 50, 51沒過
    → 請 Disable "CONFIG_NF_CONNTRACK_IPV6"
● Section2: 138沒過
    → 請Enable "CONFIG_IPV6_ROUTER_PREF"
● Section3: 3, 5, 14, 15, 23, 24沒過
    → 請在開機時執行,"# echo 2 > /proc/sys/net/ipv6/conf/eth0/accept_dad"
         啟動DAD功能,但Link-Local位址(由MAC所產生的)碰撞發生時,關閉IPv6功能

若還有相關的問題,可以留言,如果我知道會盡量幫忙

2012/07/01

DVMPR...


DVMRP (Distance Vector Multicast Routing Protocol)
在一個Automous System(AS)中路由"multicast data"
可以讓layer 3 switch 跑IP與IGMP的封包
利用Reverse Path Multicasting(RPM) 去建立IP multicast delivery tree
用IGMP去學習membership information


有以下四種封包
  - DVMRP probe:discover 鄰近的 switch
  - DVMRP report:交換routing info,用來建立DVMRP的tree,以及用Reverse Path Forward(RPF)來檢查進來的multicast peform(避免loop)
  - DVMRP prune:刪除此switch
  - DVMRP grafts:重新加入


有以下四個步驟
  1. 產生advertise multicast packet的broadcast封包
  2. 若沒有此multicast group的switch送出prune message
  3. 若後來加入了,則送graft message重新加入此tree
  4. 最後multicast 封包就知道要送給誰


2012/06/30

【IPv6 Ready Logo】Core符合性測試 - 自動測試


在上一篇提到了Core手動測試的步驟
這篇會介紹如何將手動測試改為自動測試

受測的設備(NUT)必須要有RS232的輸入方式
FreeBSD(TN)也必須要有RS232(console)的連線port
請參考下面的圖示

自動測試就是FreeBSD會透過Console Port去下指令
這樣使用者就不用一直呆在設備旁了

● v6eval-remote
請先去下載v6eval-remote (目前已經沒有在維護了)
並做以下的設定
# tar vfxz v6eval-remotes-3.0.tar.gz
# cd v6eval-remotes-3.0
# vi Makefile
    DOCFILES=00README.remotes INSTALL.remotes \
    COPYRIGHT
# vi ./bin/remotes/Makefile
    SUBDIR= unknown \ 
    manual \
    linux-v6 \
    usagi-i386 \
    usagi24-i386 \
    freebsd-i386 \
    freebsd43-i386 \
    kame-freebsd \
    ms-winxp \
    ms-win2k
# make
# make install

● /usr/local/v6eval/etc/nut.def
設定完成之後,請到/usr/local/v6eval/etc/nut.def
將System的值改為受測設備的作業系統
若是沒有相同的,則可以選近似的進行改寫
以下是針對linux做範例
System    linux-v6

● /usr/local/lib/perl5/site-perl/5.12.4/V6evalRemote.pm
在自動測試前,請勿必先看過這個檔案
還有/usr/local/v6eval/bin/裡面的檔案
若是有需要修改的請自行修正
下面是一定要修正的地方
$Device=”cuau0”
$User=”root”
$Password=”v6eval”

● RS-232測試
設定連線
# touch /var/log/aculog
# chown uucp:dialer /var/log/aculog
# chmod 660 /var/log/aculog
測試連線
# cu –l /dev/cuau0 –s 38400 (38400是 baud rate)
# ~. (終止連線)
測試是否能使用自動測試
# /usr/local/v6eavl/bin/linux-v6/loginout.rmt –o 1

上述都設定完成之後
就可以執行下述的指令進行自動測試了... gogogo ~
# cd Self_Test_5-0-0
# make clean
# make ipv6ready_p2_host



2012/06/29

IPv6... ICMPv6


之前介紹了IPv6的定址方式,會建議先看過再來看這篇
接著介紹一些關於Neighbor Discovery的內容

Neighbor Discovery Protocol(NDP)是用來偵測周圍的IPv6設備與位址是否重複的功能
利用以下的五種封包:
● Neighbor Solicitation(NS): Host送給link layer的request
● Neighbor Advertisement(NA): Host送給link layer的response
● Router Solicitation(RS): Host送給Router的request
● Router Advertisement(RA): Router回給Host的response & 定期的multicast封包
● Redirect: Router

下面是IPv6 Cache Table的內容
● Neighbor Cache: 類似IPv4的MAC Table
- Neighbor: 鄰居的IPv6 address
- MAC: 鄰居的MAC
- State: reachable(可收到), stale(過期), delay(到stale才回應), proble(等回應), invalid, unknown, incomplete
- Flags: router 或 host

● Prefix List: 看哪些IP的prefix是在同一個domain(不須經由router)
- Prefix: prefix與prefix length
- vltime(valid time): 此prefix還可以合理的存活多久
- pltime(preferred life time):  透過stateless configuration(DHCP或Router)所給的存活時間
- onlink: on-link(同一個domain), off-link(不同domain)
- autonomous: 是不是DHCP或Router所給的prefix

● Destination Cache: 目標IP與Next Hop的對應
- Destination Address:  目標IP
- Next Hop Address:  送的下一個IP,可以為目標的IP

● Route List: IPv6的routing table
- Address: 目標IP或prefix
- Gateway/Interface: gateway或interface

● Default Router List:
- Address: router的IP
- Preference: high, medium, low (如果有多個router都在同個level,就輪流)
- Lifetime: 可存活多久
- Flag: statefuk address, additional configuration setting

IPv6網路卡起始的流程
1. 自動生成link local address
2. 送出NS,看看有沒有設備的link local address跟自己的一樣
3. 收到NA之後,存到Neighbor Cache
4. 送出RS,收到Router回送的RA,存到neighbor Cache, prefix list, destination cache

當一個switch要送封包的時候
1. 看Destination Cache決定Next Hop
- 有,直接送到Next Hop送出資料
- 沒有,到第2步
2. 看Prefix List是否在同一個Domain
- 有,就可以直接送給它(代表在同一個Domain)
- 沒有,到第3步
3. 看Router List
- 有,用Neighbor Cache找出MAC,並送出資料
- 沒有,開始IPv6 resolution的過程
透過以上的步驟,可以減少IPv6的封包

2012/06/20

【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''