• 沒有找到結果。

第七章 結論與未來工作

A.1. 命令

A.1.4. 傳輸層命令

A.1.4.5. SET_TCP_RETX_TIMEOUT

設定目前 TCP 連線的重送封包的 Timeout 值。

Table A-34 SET_TCP_RETX_TIMEOUT 的 win_cmd 欄位

i8_cmd SET_TCP_RETX_TIMEOUT

pv_param 設定指定 TCP 連線的重送封包的 Timeout 值。

訊息格式如下:

Figure A-19 SET_TCP_RETX_TIMEOUT 的 pv_param 格式

名稱 長度 型別 說明

TCP ID 4 byte INT32 表示 TCP 連線的 ID。在 Linux 下就是開 TCP 連線 socket 傳 回的值

RETX TIME OUT

4 bytes UINT32 設定重送封包 Timeout 值,單 位為 ms。

pv_value 無作用 A.1.4.6. GET_TCP_RTT

取得指定 TCP 連線在系統核心中的 Round Trip Time (RTT)。

Table A-35 GET_TCP_RTT 的 win_cmd 欄位

i8_cmd GET_TCP_RTT pv_param 為 INT32 型別。

表示 TCP 連線的 ID。在 Linux 下就是開 TCP 連線 socket 傳回的值。

pv_value 為 UINT32 型別。

傳回目前的 Round Trip Time (RTT),單位為 ms。

A.1.4.7. SET_TCP_RTT

設定目前 TCP 連線在系統核心中的 Round Trip Time (RTT) 值。

Table A-36 SET_TCP_RTT 的 win_cmd 欄位

i8_cmd SET_TCP_RTT

pv_param 設定指定 TCP 連線的 RTT 值。

訊息格式如下:

Figure A-20 SET_TCP_RETX_TIMEOUT 的 pv_param 格式

名稱 長度 型別 說明

TCP ID 4 byte INT32 表示 TCP 連線的 ID。在 Linux 下就是開 TCP 連線 socket 傳 回的值

pv_value 無作用

A.1.4.8. GET_TCP_RECV_WIN

查詢目前 TCP 連線在核心內的 Receive Window 大小。

Table A-37 GET_TCP_RECV_WIN 的 win_cmd 欄位

i8_cmd GET_TCP_RECV_WIN pv_param 為 INT32 型別。

表示 TCP 連線的 ID。在 Linux 下就是開 TCP 連線 socket 傳回的值。

pv_value 為 UINT32 型別。

傳回目前的 Receive Window 大小,單位為 byte。

A.1.4.9. SET_TCP_RECV_WIN

設定目前 TCP 連線在核心內的 Receive Window 大小。

Table A-38 SET_TCP_RECV_WIN 的 win_cmd 欄位

i8_cmd SET_TCP_RECV_WIN

pv_param 設定指定 TCP 連線的 Receive Window 的大小。

訊息格式如下:

Figure A-21 SET_TCP_RECV_WIN 的 pv_param 格式

名稱 長度 型別 說明

TCP ID 4 byte INT32 表示 TCP 連線的 ID。在 Linux 下就是開 TCP 連線 socket 傳 回的值

RECV WIN 4 bytes UINT32 設 Receive Window 值,單位 為 byte。

pv_value 無作用

A.1.4.10. GET_TCP_CONG_WIN

查詢目前 TCP 連線在核心內的 Congestion Window 大小。

Table A-39 GET_TCP_CONG_WIN 的 win_cmd 欄位

i8_cmd GET_TCP_CONG_WIN pv_param 為 INT32 型別。

表示 TCP 連線的 ID。在 Linux 下就是開 TCP 連線 socket 傳回的值。

pv_value 為 UINT32 型別。

傳回目前的 Congestion Window 大小,單位為 byte。

A.1.4.11. SET_TCP_CONG_WIN

設定目前 TCP 連線在核心內的 Congestion Window 大小。

Table A-40 SET_TCP_CONG_WIN 的 win_cmd 欄位

i8_cmd SET_TCP_CONG_WIN

pv_param 設定指定 TCP 連線的 Receive Window 的大小。

訊息格式如下:

Figure A-22 SET_TCP_CONG_WIN 的 pv_param 格式

名稱 長度 型別 說明

TCP ID 4 byte INT32 表示 TCP 連線的 ID。在 Linux 下就是開 TCP 連線 socket 傳 回的值

CONG WIN 4 bytes UINT32 設 Congestion Window 值,單 位為 byte。

pv_value 無作用 A.2.

事件

A.2.1. 系統事件

A.2.1.1. NETDEV_REGISTER

網路界面被新增到系統中。

Table A-41 NETDEV_REGISTER 的 win_event 欄位

i8_event NETDEV_REGISTER

pv_value 通知哪個網路界面被新增到系統中。

訊息格式如下:

Figure A-23 NETDEV_REGISTER 的 pv_value 格式

名稱 長度 型別 說明

Link ID 1 byte INT8 網路界面的 ID,用來分辨不同 的界面。

Link Name

9 bytes CHAR[] 以 NULL 結尾的字串,為系統 內網路界面的名稱。在 Linux 系 統可能為 eth0、wlan0。

A.2.1.2. NETDEV_UNREGISTER

網路界面卡從系統中移除。

Table A-42 NETDEV_UNREGISTER 的 win_event 欄位

i8_event NETDEV_UNREGISTER

pv_value 通知哪個網路界面被從系統中移除。

訊息格式如下:

Figure A-24 NETDEV_REGISTER 的 pv_value 格式

名稱 長度 型別 說明

Link ID 1 byte INT8 網路界面的 ID,用來分辨不同的 界面。

Link Name 9 bytes CHAR[] 以 NULL 結尾的字串,為系統內

A.2.1.3. NETDEV_CHANGENAME

網路界面卡在系統內部的名稱改變。

Table A-43 NETDEV_CHANGENAME 的 win_event 欄位

i8_event NETDEV_CHANGENAME pv_value 通知哪個網路界面的名稱改變了。

訊息格式如下:

Figure A-25 NETDEV_CHANGENAME 的 pv_value 格式

名稱 長度 型別 說明

Link ID 1 byte INT8 網路界面的 ID,用來分辨不同 的界面。

New Link Name

9 bytes CHAR[] 以 NULL 結尾的字串,為改變 過後的網路界面名稱。

A.2.2. 硬體驅動程式事件

A.2.2.1. NETDEV_UP

某個網路界面被啟動了。

Table A-44 NETDEV_UP 的 win_event 欄位

i8_event NETDEV_UP

pv_value 通知哪個網路界面被啟動了。

訊息格式如下:

Figure A-26 NETDEV_REGISTER 的 pv_value 格式

名稱 長度 型別 說明

Link ID 1 byte INT8 網路界面的 ID,用來分辨不同的 界面。

Link Name 9 bytes CHAR[] 以 NULL 結尾的字串,為系統內 網路界面的名稱。

A.2.2.2. NETDEV_DOWN

某個網路界面被關閉了。

Table A-45 NETDEV_DOWN 的 win_event 欄位

i8_event NETDEV_DOWN

pv_value 通知哪個網路界面被關閉了。

訊息格式如下:

Figure A-27 NETDEV_DOWN 的 pv_value 格式

名稱 長度 型別 說明

Link ID 1 byte INT8 網路界面的 ID,用來分辨不同的 界面。

Link Name 9 bytes CHAR[] 以 NULL 結尾的字串,為系統內 網路界面的名稱。

A.2.2.3. NETDEV_REBOOT

當網路介面偵測到硬體錯誤且需要重新啟動。

Table A-46 NETDEV_REBOOT 的 win_event 欄

i8_event NETDEV_REBOOT

pv_value 通知哪個網路界面被偵測到硬體錯誤且需重新啟動。

訊息格式如下:

Figure A-28 NETDEV_REGISTER 的 pv_value 格式

名稱 長度 型別 說明

A.2.2.4. NETDEV_CHANGEMTU

網路介面更改 MTU (Maximum Transfer Unit)。

Table A-47 NETDEV_CHANGEMTU 的 win_event 欄位

i8_event NETDEV_CHANGEMTU

pv_param 傳回哪個網路介面改更改的 MTU。

訊息格式如下:

Figure A-29 NETDEV_CHANGEMTU 的 pv_param 格式

欄位名稱 長度 型別 說明

Link ID 1byte INT8 表示網路界面卡。

MTU 2bytes UINT16 更改過後的 MTU 值。

A.2.2.5. NETDEV_CHANGEADDR

網路介面之硬體位址改變。

Table A-48 NETDEV_CHANGEADDR 的 win_event 欄位

i8_event NETDEV_CHANGEADDR pv_param 傳回哪個網路介面改更改的 MTU。

訊息格式如下:

Figure A-30 NETDEV_CHANGEADDR 的 pv_value 格式

欄位名稱 長度 型別 說明

Link ID 1byte INT8 表示網路界面卡。

MAC Address 6bytes char[] 更改過後的 MAC Address。

A.2.2.6. LINK_UP

某張網路界面卡可以開始傳送資料封包了。通常為網路界面卡和接取點 (POA) 有了連接。關於各種不同類型的網路界面卡在何時會產生 Link UP 的事 件,可參考 IETF 的” Link-layer Event Notifications for Detecting Network

Attachments”,目前還在 Draft 階段。這份文件有定義 ppp 界面、802.11 界面及 Etnernet 界面的 Link UP 情況。

Table A-49 LINK_UP 的 win_event 欄位

i8_event LINK_UP

pv_value 通知哪個網路界面可以開始傳送資料封包。

訊息格式如下:

Figure A-31 LINK_UP 的 pv_value 格式

名稱 長度 型別 說明

Link ID 1 byte INT8 網路界面的 ID,用來分辨不同 的界面。

A.2.2.7. LINK_DOWN

某張網路界面卡無法傳送資料封包了。通常為網路界面卡和接取點(POA)的 連接斷掉了。關於各種不同類型的網路界面卡在何時會產生 Link DOWN 的事 件,可參考 IETF 的” Link-layer Event Notifications for Detecting Network

Attachments”,目前還在 Draft 階段。這份文件有定義 ppp 界面、802.11 界面及 Etnernet 界面的 Link Down 情況。

Table A-50 LINK_DOWN 的 win_event 欄位

Table A-51 LINK_DOWN 的 win_event 欄位

i8_event LINK_DOWN

pv_value 通知哪個網路界面沒有傳送資料封包的能力。

訊息格式如下:

Figure A-32 LINK_DOWN 的 pv_value 格式

名稱 長度 型別 說明

A.2.2.8. POA_SCAN_COMPLETE

掃描接取點 (POA) 的動作完成了,並且傳回接取點的資訊。這個事件一定 發生在 POA_SCAN的命令之後。

Table A-52 POA_SCAN_COMPLETE 的 win_event 欄位

i8_event POA_SCAN_COMPLETE

pv_value 傳回接取點資訊。不同型態的網路界面有不同的資訊。由網路界面 型態的欄位決定。

Figure A-33 POA_SCAN_COMPLETE 的 pv_value 格式

名稱 長度 型別 說明

Num 1 byte INT8 表示有多少個接取點資訊被回 傳。

LinkType 1 byte INT8 網路界面的型態。

POA Info 不固定 由 LinkType 決定這邊的資訊。

以下列出不同 Link Type 時的接取點資訊:

LINK_TYPE_802_11:

Figure A-34 802.11 網路下,POA_SCAN_COMPLETE 的 pv_value 格式

欄位名稱 長度 型別 說明

Num 1byte INT8 表示有多少個接取點資訊被回

ESSID 32bytes CHAR[32] 表示 ESSID,為 0 結尾的字 串。

BSSID 6bytes CHAR[6] AP 的 BSSID。

Channel 1 byte INT8 AP 所在的 Channel。

Signal 1byte INT8 傳回訊號強度。以百分比為單 位。

A.2.2.9. SIGNAL_STRENGTH_THRESHOLD

網路界面和所連接的POA訊號強度跨過程式設計者所指定的 THRESHOLD 時產生此事件通知程式設計者。可參考 A.1.2.5 及 A.1.2.7。

Table A-53 SIGNAL_STRENGTH_THRESHOLD 的 win_event 欄位

i8_event SIGNAL_STRENGTH_THRESHOLD

pv_value 通知哪個網路界面卡所連接的接取點訊號強度跨過門檻了。

訊息格式如下:

Figure A-35 SIGNAL_STRENGTH_THRESHOLD 的 pv_value 格式

名稱 長度 型別 說明

Threshold 1 byte INT8 表示當初所設定的門檻。可參考 A.1.2.5。

A_PP_V 1 byte INT8 當初所指定AVOID PINGPONG VALUE 值。可參考 A.1.2.7。

A.2.3. 網路層事件

A.2.3.1. IP_CHANGE

某個網路界面卡上的網路位址 (IP Address) 改變了。

Table A-54 IP_CHANGE 的 win_event 欄位

i8_event IP_CHANGE

pv_value 通知哪張網路界面卡的網路位址改變了。

訊息格式如下:

Figure A-36 IP_CHANGE 的 pv_value 格式

名稱 長度 型別 說明

Link ID 1 byte UINT8 表示網路界面卡。

IP 4 bytes UINT32 更改過後的網路位址。

NETMASK 4 bytes UINT32 子網路遮罩。

Broadcast 4 bytes UINT32 廣播位址。

A.2.3.2. DEFAULT_GATEWAY_CHANGE

預設閘道改變的事件,當程式設計者同時註冊這個事件和

ROUTING_TABLE_CHANGE 事件時,和預設閘道相關的,只會收到 DEFAULT_GATEWAY_CHANGE 事件。

Table A-55 DEFAULT_GATEWAY_CHANGE 的 win_event 欄位

i8_event DEFAULT_GATEWAY_CHANGE pv_value 傳回預設閘道更改的資訊。

訊息格式如下:

Figure A-37 DEFAULT_GATEWAY_CHANGE 的 pv_value 格式

名稱 長度 型別 說明

Act 1 byte UINT8 表示預設閘道更動的動作。

0: 新增 (Add) 1: 刪除 (Del)

Gateway 4 bytes UINT32 Gateway 的 IPv4 位址。

Link ID 1 byte UINT8 經由哪個網路路界面卡。

A.2.3.3. ROUTING_TABLE_CHANGE

路由表資料改變的事件。

Table A-56 ROUTING_TABLE_CHANGE 的 win_event 欄位

i8_event ROUTING_TABLE_CHANGE pv_value 傳回路由表更動的資訊。

訊息格式如下:

Figure A-38 ROUTING_TABLE_CHANGE 的 pv_value 格式

名稱 長度 型別 說明

Act 1 byte UINT8 表示處理的動作。

0: 刪除 (Delete) 1: 增加 (Add)

Destination 4 bytes UINT32 目標。可能為 IPv4 位址也或 是網域.。

Gateway 4 bytes UINT32 該目標要經由哪一個閘道傳 送。為一 IPv4 位址。

Netmask 4 bytes UINT32 該 Destination 的 Netmask。

為一 IPv4 位址。

Link ID 1 byte UINT8 經由哪個網路路界面卡。

A.2.4. 傳輸層事件

A.2.4.1. TCP_TX_STATE_CHANGE

TCP 傳送的狀態改變了。

Table A-57 TCP_TX_STATE_CHANGE 的 win_event 欄位

i8_event TCP_TX_STATE_CHANGE pv_value 為 INT32 型別。

表示改變後的傳送狀態。