fuchsia.net.routes

新增:7

通訊協定

RuleWatcherV4

定義於 fuchsia.net.routes/ipv4.fidl

用來處理系統 IPv4 規則表中變更的觀察器通訊協定。

新增時間:HEAD

觀看

inging-Get style API 以觀察轉送規則變更。

用戶端一次只能有一則待處理的 Watch 通話。撥號中 Watch 會在要求待處理時執行 關閉

前 N 個事件一律為 existing,其中 N 是 通訊協定連線至伺服器端時,已存在的 IPv4 規則 初始化。下列事件會idle表示 existing 事件。此時,客戶已看過所有 且永遠不會再觀察到 existing 事件。

  • 回應 events 最多 MAX_EVENTS 個事件的向量。

要求

<空白>

回應

名稱類型
events vector<RuleEventV4>[512]

RuleWatcherV6

定義於 fuchsia.net.routes/ipv6.fidl

用來處理系統 IPv6 規則表中變更的觀察器通訊協定。

新增時間:HEAD

觀看

inging-Get style API 以觀察轉送規則變更。

用戶端一次只能有一則待處理的 Watch 通話。撥號中 Watch 會在要求待處理時執行 關閉

前 N 個事件一律為 existing,其中 N 是 通訊協定連線至伺服器端時,已存在的 IPv6 規則 初始化。下列事件會idle表示 existing 事件。此時,客戶已看過所有 且永遠不會再觀察到 existing 事件。

  • 回應 events 最多 MAX_EVENTS 個事件的向量。

要求

<空白>

回應

名稱類型
events vector<RuleEventV6>[512]

狀態

fuchsia.net.routes/routes.fidl 中定義的

提供系統轉送狀態的存取權。

GetRouteTableName

根據 ID 取得路徑資料表名稱。

  • 要求 table_id 有問題的路徑資料表 ID。
  • 回應 table_name (如果是路徑資料表) 路徑資料表的名稱 沒有名稱,則會傳回空字串。
  • 如果路徑資料表不存在,則傳回 NO_TABLE 錯誤。
新增時間:HEAD

要求

名稱類型
table_id TableId

回應

名稱類型
payload State_GetRouteTableName_Result

解決

解析前往目的地的路線。

  • 要求 destination 要解析路徑的 IP 位址。如果 未指定的位址 (所有位址皆為零),那麼預設路徑 。destination 的變體會決定 已解析路徑中的 fuchsia.net/IpAddress 欄位。
  • 回應 result 包含指向 destination 的已解析路徑。
  • 如果無法解析 destination,則傳回「ZX_ERR_ADDRESS_UNREACHABLE」錯誤。

要求

名稱類型
destination fuchsia.net/IpAddress

回應

名稱類型
payload State_Resolve_Result

StateV4

定義於 fuchsia.net.routes/ipv4.fidl

提供系統 IPv4 轉送狀態的觀測能力。

新增時間:HEAD

GetRuleWatcherV4

初始化 IPv4 規則狀態的看守工具。

  • 要求「監看程式」授予 RuleWatcherV4 通訊協定的存取權。
  • 要求 watch_options 會指定 RuleWatcherV4 的行為。

要求

名稱類型
watcher server_end<RuleWatcherV4>
options RuleWatcherOptionsV4

GetWatcherV4

初始化 IPv4 轉送狀態的看守工具。

  • 要求「監看程式」授予 WatcherV4 通訊協定的存取權。
  • 要求 watch_options 會指定 WatcherV4 的行為。

要求

名稱類型
watcher server_end<WatcherV4>
options WatcherOptionsV4

StateV6

定義於 fuchsia.net.routes/ipv6.fidl

提供系統 IPv6 轉送狀態的觀測能力。

新增時間:HEAD

GetRuleWatcherV6

初始化 IPv6 規則狀態的看守工具。

  • 要求「監看程式」授予 RuleWatcherV6 通訊協定的存取權。
  • 要求 watch_options 會指定 RuleWatcherV6 的行為。

要求

名稱類型
watcher server_end<RuleWatcherV6>
options RuleWatcherOptionsV6

GetWatcherV6

初始化 IPv6 轉送狀態的看守工具。

  • 要求「監看程式」授予 WatcherV6 通訊協定的存取權。
  • 要求 watch_options 會指定 WatcherV6 的行為。

要求

名稱類型
watcher server_end<WatcherV6>
options WatcherOptionsV6

WatcherV4

定義於 fuchsia.net.routes/ipv4.fidl

用來處理系統 IPv4 轉送狀態變更的觀察器通訊協定。

新增時間:HEAD

觀看

懸掛樣式 API 用於觀察路線轉送變更。

用戶端一次只能有一則待處理的 Watch 通話。撥號中 Watch 會在要求待處理時執行 關閉

前 N 個事件一律為 existing,其中 N 是 通訊協定的伺服器端 初始化。下列事件會idle表示 existing 事件。此時,客戶已看過所有 且永遠不會再觀察到 existing 事件。

事件會以最多 MAX_EVENTS 個事件為批次傳回。由於沒有 批量/邊界與內容之間的關係: 非常適合伺服器分割 existing 事件區塊 以便分批取得這些資料用戶端必須將這個 API 視為提供 批次串流,其中批次可用於降低 有些人會將 Cloud Storage 視為檔案系統 但實際上不是

  • 回應 events 最多 MAX_EVENTS 個事件的向量。

要求

<空白>

回應

名稱類型
events vector<EventV4>[512]

WatcherV6

定義於 fuchsia.net.routes/ipv6.fidl

用來處理系統 IPv6 轉送狀態變更的觀察器通訊協定。

新增時間:HEAD

觀看

懸掛樣式 API 用於觀察路線轉送變更。

用戶端一次只能有一則待處理的 Watch 通話。撥號中 Watch 會在要求待處理時執行 關閉

前 N 個事件一律為 existing,其中 N 是 通訊協定的伺服器端 初始化。下列事件會idle表示 existing 事件。此時,客戶已看過所有 且永遠不會再觀察到 existing 事件。

事件會以最多 MAX_EVENTS 個事件為批次傳回。由於沒有 批量/邊界與內容之間的關係: 非常適合伺服器分割 existing 事件區塊 以便分批取得這些資料用戶端必須將這個 API 視為提供 批次串流,其中批次可用於降低 有些人會將 Cloud Storage 視為檔案系統 但實際上不是

  • 回應 events 最多 MAX_EVENTS 個事件的向量。

要求

<空白>

回應

名稱類型
events vector<EventV6>[512]

結構

全部

fuchsia.net.routes/routes.fidl 中定義的

<空白>

介於

fuchsia.net.routes/rules.fidl 中定義的

欄位類型說明預設
start uint32

範圍開頭 (含首尾)。

無預設
end uint32

檢視範圍的結束時間 (包含首尾)。

無預設

空白

fuchsia.net.routes/routes.fidl 中定義的

空白值的預留位置。

新增時間:HEAD

<空白>

InstalledRuleV4

定義於 fuchsia.net.routes/ipv4.fidl

已安裝的 IPv4 轉送規則。

新增時間:HEAD

欄位類型說明預設
rule_set_priority RuleSetPriority

規則集是按規則組合的優先順序排序,規則集彼此互不連 而且彼此之間沒有交錯規則

無預設
rule_index RuleIndex

規則組合內的規則與規則集會在本機排序 優先,這會定義所有已安裝規則的全域順序。

無預設
selector RuleSelectorV4

規則的選取器部分,如果選取器啟用了「免人工管理」 與封包不符

無預設
action RuleAction

規則中動作部分,用來說明選取工具時的處理方式 比對封包

無預設

InstalledRuleV6

定義於 fuchsia.net.routes/ipv6.fidl

已安裝的 IPv6 轉送規則。

新增時間:HEAD

欄位類型說明預設
rule_set_priority RuleSetPriority

規則集是按規則組合的優先順序排序,規則集彼此互不連 而且彼此之間沒有交錯規則

無預設
rule_index RuleIndex

規則組合內的規則與規則集會在本機排序 優先,這會定義所有已安裝規則的全域順序。

無預設
selector RuleSelectorV6

規則的選取器部分,如果選取器啟用了「免人工管理」 與封包不符

無預設
action RuleAction

規則中動作部分,用來說明選取工具時的處理方式 比對封包

無預設

主要

fuchsia.net.routes/routes.fidl 中定義的

<空白>

已標示

fuchsia.net.routes/rules.fidl 中定義的

欄位類型說明預設
mask uint32

要先套用遮罩,再與 between 的範圍進行比較。

無預設
between Between

標示位於指定範圍之間。

無預設

RouteTargetV4

定義於 fuchsia.net.routes/ipv4.fidl

欄位類型說明預設
outbound_interface fuchsia.net/InterfaceId

目標傳出介面的介面 ID。

無預設
next_hop fuchsia.net/Ipv4Address?

目標的下一個躍點。如有提供, 必須是單點傳播位址。

無預設

RouteTargetV6

定義於 fuchsia.net.routes/ipv6.fidl

欄位類型說明預設
outbound_interface fuchsia.net/InterfaceId

目標傳出介面的介面 ID。

無預設
next_hop fuchsia.net/Ipv6Address?

目標的下一個躍點。如有提供, 必須是單點傳播位址。

無預設

RouteV4

定義於 fuchsia.net.routes/ipv4.fidl

RouteV4 會指定 IPv4 網路路徑。

新增時間:HEAD

欄位類型說明預設
destination fuchsia.net/Ipv4AddressWithPrefix

路徑的目的地子網路。制定轉送決策時 指定的封包,該路徑的目的地是最長的 將會選取相符的前置字元,並因路徑的 指標。

無預設
action RouteActionV4

與這個路徑相符的封包會套用指定動作 具體做法是指示 Kubernetes 建立並維護 一或多個代表這些 Pod 的物件

無預設
properties RoutePropertiesV4

IPv4 路徑的其他屬性。

無預設

RouteV6

定義於 fuchsia.net.routes/ipv6.fidl

RouteV6 會指定 IPv6 網路路徑。

新增時間:HEAD

欄位類型說明預設
destination fuchsia.net/Ipv6AddressWithPrefix

路徑的目的地子網路。制定轉送決策時 指定的封包,該路徑的目的地是最長的 將會選取相符的前置字元,並因路徑的 指標。

無預設
action RouteActionV6

與這個路徑相符的封包會套用指定動作 具體做法是指示 Kubernetes 建立並維護 一或多個代表這些 Pod 的物件

無預設
properties RoutePropertiesV6

IPv6 路徑的其他屬性。

無預設

State_GetRouteTableName_Response

fuchsia.net.routes/routes.fidl 中定義的

欄位類型說明預設
table_name TableName 無預設

State_Resolve_Response

fuchsia.net.routes/routes.fidl 中定義的

欄位類型說明預設
result Resolved

已解決的路徑。

包含「next-hop」的資訊或緊接目的地 也就是路線解析的結果。只有已解決的路徑 能生成有意義的結果

無預設

已取消標示

fuchsia.net.routes/rules.fidl 中定義的

<空白>

無法連上網路

fuchsia.net.routes/rules.fidl 中定義的

<空白>

ENUMS

State_GetRouteTableName_Error strict

類型:uint32

fuchsia.net.routes/routes.fidl 中定義的

名稱說明
1

資料表

BaseSelector

fuchsia.net.routes/rules.fidl 中定義的

可套用至 IPv4 和 IPv6 封包的通用選取器。

如果所有目前欄位都符合 對應的資源

新增時間:HEAD

序數欄位類型說明
locally_generated bool

如果封包是在本機產生,系統會比對封包。

bound_device InterfaceSelector

如果封包是以 SO_BINDTODEVICE 傳送,系統會比對封包。

mark_1_selector MarkSelector

MARK_1 網域的選取器。

mark_2_selector MarkSelector

MARK_2 網域的選取器。

目的地

fuchsia.net.routes/routes.fidl 中定義的

用於說明網路目的地的地址和 ID 集合。

Destination 是「下一個躍點」和轉送封包

序數欄位類型說明
address fuchsia.net/IpAddress

目的地的 IP 位址。

mac fuchsia.net/MacAddress

目的地的 MAC 位址。只有在目的地位於 需要 MAC 位址的連結。

interface_id fuchsia.net/InterfaceId

可連上目的地的介面 ID。

source_address fuchsia.net/IpAddress

用來與目的地通訊的偏好本機 IP 位址。

EffectiveRouteProperties

fuchsia.net.routes/routes.fidl 中定義的

安裝系統中路線的有效屬性。

新增時間:HEAD

序數欄位類型說明
metric fuchsia.net/RouteMetric

路線的有效指標,需視路線的值而定 SpecifiedRouteProperties 。如果 specified_metricexplicit_metric,這個值會與提供的值相同; 如果 specified_metricinherited_from_interface,這個值就會 則是介面的轉送指標

InstalledRouteV4

定義於 fuchsia.net.routes/ipv4.fidl

InstalledRouteV4 會指定安裝在以下位置的 IPv4 網路路徑: 系統的路徑表。

新增時間:HEAD

序數欄位類型說明
route RouteV4

路線。

effective_properties EffectiveRouteProperties

路線的有效屬性。

table_id TableId

這個路徑所屬的資料表 ID。

InstalledRouteV6

定義於 fuchsia.net.routes/ipv6.fidl

InstalledRouteV6 會指定安裝在以下位置的 IPv6 網路路徑: 系統的路徑表。

新增時間:HEAD

序數欄位類型說明
route RouteV6

路線。

effective_properties EffectiveRouteProperties

路線的有效屬性。

table_id TableId

這個路徑所屬的資料表 ID。

RoutePropertiesV4

定義於 fuchsia.net.routes/ipv4.fidl

序數欄位類型說明
specified_properties SpecifiedRouteProperties

路徑的指定屬性。

RoutePropertiesV6

定義於 fuchsia.net.routes/ipv6.fidl

序數欄位類型說明
specified_properties SpecifiedRouteProperties

路徑的指定屬性。

RuleSelectorV4

定義於 fuchsia.net.routes/ipv4.fidl

用來比對封包的規則選取器部分。

如果所有目前欄位都符合 對應的資源

新增時間:HEAD

序數欄位類型說明
from fuchsia.net/Ipv4AddressWithPrefix

比對封包的來源位址是否來自子網路。

base BaseSelector

其他在 IP 版本之間常見的選取器。

RuleSelectorV6

定義於 fuchsia.net.routes/ipv6.fidl

用來比對封包的規則選取器部分。

如果所有目前欄位都符合 對應的資源

新增時間:HEAD

序數欄位類型說明
from fuchsia.net/Ipv6AddressWithPrefix

比對封包的來源位址是否來自子網路。

base BaseSelector

其他在 IP 版本之間常見的選取器。

RuleWatcherOptionsV4

定義於 fuchsia.net.routes/ipv4.fidl

序數欄位類型說明

RuleWatcherOptionsV6

定義於 fuchsia.net.routes/ipv6.fidl

序數欄位類型說明

SpecifiedRouteProperties

fuchsia.net.routes/routes.fidl 中定義的

在遷移時明確指定的路線屬性 路徑已建立。

新增時間:HEAD

序數欄位類型說明
metric SpecifiedMetric

路徑的有效指標取決於 。

WatcherOptionsV4

定義於 fuchsia.net.routes/ipv4.fidl

序數欄位類型說明
table_interest TableInterest

篩選符合「table_interest」的資料表事件。

如未提供,會解讀為 all。伺服器不會驗證 TableInterest 包含有效的資料表 ID。

WatcherOptionsV6

定義於 fuchsia.net.routes/ipv6.fidl

序數欄位類型說明
table_interest TableInterest

篩選符合「table_interest」的資料表事件。

如未提供,會解讀為 all。伺服器不會驗證 TableInterest 包含有效的資料表 ID。

聯合國

EventV4 彈性

定義於 fuchsia.net.routes/ipv4.fidl

序數Variant類型說明
existing InstalledRouteV4

開始觀看時已存在的路徑。

idle Empty

Sentinel 值表示不會再發生 existing 事件 。

added InstalledRouteV4

觀看時新增的路線。

removed InstalledRouteV4

系統在觀看時移除的路線。

EventV6 彈性

定義於 fuchsia.net.routes/ipv6.fidl

序數Variant類型說明
existing InstalledRouteV6

開始觀看時已存在的路徑。

idle Empty

Sentinel 值表示不會再發生 existing 事件 。

added InstalledRouteV6

觀看時新增的路線。

removed InstalledRouteV6

系統在觀看時移除的路線。

介面選取器彈性

fuchsia.net.routes/rules.fidl 中定義的

與傳出封包來源介面相符的選取器。

新增時間:HEAD
序數Variant類型說明
device_name fuchsia.net.interfaces/Name

如果名稱相符,系統會比對裝置。

這個名稱不是模式或規則運算式,必須完全符合 挑選規則

MarkSelector 彈性

fuchsia.net.routes/rules.fidl 中定義的

用於標記值的選取器。

新增時間:HEAD
序數Variant類型說明
unmarked Unmarked

這個標示網域沒有商標。

marked Marked

解決嚴格問題

fuchsia.net.routes/routes.fidl 中定義的

序數Variant類型說明
direct Destination

可直接連上要求目的地。

gateway Destination

可透過閘道連上要求的目的地,因此 下一個躍點就是閘道

RouteActionV4 彈性

定義於 fuchsia.net.routes/ipv4.fidl

序數Variant類型說明
forward RouteTargetV4

將封包轉送至指定的目標。

RouteActionV6 彈性

定義於 fuchsia.net.routes/ipv6.fidl

序數Variant類型說明
forward RouteTargetV6

將封包轉送至指定的目標。

RuleAction 彈性

fuchsia.net.routes/rules.fidl 中定義的

選取器相符時採取的動作。

新增時間:HEAD
序數Variant類型說明
lookup TableId

在指定的路線表格中尋找路線。如果沒有相符的項目 路線時,查詢會繼續將 下一項規則

unreachable Unreachable

無法連上網路,這反倒是對於 lookup 資料表 沒有相符的路線,或是沒有相符的路線,這個決定是終點,會停止 查詢程序繼續

RuleEventV4 彈性

定義於 fuchsia.net.routes/ipv4.fidl

序數Variant類型說明
existing InstalledRuleV4

開始監控時已存在的規則。

idle Empty

Sentinel 值表示不會再發生 existing 事件 。

added InstalledRuleV4

在觀看期間新增的規則。

removed InstalledRuleV4

系統在觀看期間移除的規則。

RuleEventV6 彈性

定義於 fuchsia.net.routes/ipv6.fidl

序數Variant類型說明
existing InstalledRuleV6

開始監控時已存在的規則。

idle Empty

Sentinel 值表示不會再發生 existing 事件 。

added InstalledRuleV6

在觀看期間新增的規則。

removed InstalledRuleV6

系統在觀看期間移除的規則。

SpecifiedMetric 嚴格

fuchsia.net.routes/routes.fidl 中定義的

序數Variant類型說明
explicit_metric fuchsia.net/RouteMetric

路徑的指標會是明確指定的值。

inherited_from_interface Empty

路徑指標沿用自外送介面 會在路線生命週期中變更這個值時加以追蹤。 如果客戶想卸載 「哪個路線最佳」的責任傳送至系統

State_GetRouteTableName_Result strict

fuchsia.net.routes/routes.fidl 中定義的

序數Variant類型說明
response State_GetRouteTableName_Response
err State_GetRouteTableName_Error

State_Resolve_Result 嚴格

fuchsia.net.routes/routes.fidl 中定義的

序數Variant類型說明
response State_Resolve_Response
err zx/Status

資料表興趣彈性

fuchsia.net.routes/routes.fidl 中定義的

指定監看指令碼感興趣的資料表。

新增時間:HEAD
序數Variant類型說明
only TableId

只監控指定表格中的事件。

main Main

在主要資料表上監控,不用知道資料表 ID。

all All

所有路徑資料表的觀察。

觀測站

名稱類型說明
MAX_EVENTS 512 uint16

一次呼叫 Watch() 可傳回的事件數量上限。

新增時間:HEAD
MAX_TABLE_NAME_LEN 255 uint64

資料表名稱的長度上限。

新增時間:HEAD

別名

名稱說明
RuleIndex uint32

所提供規則集內的規則索引。

系統會根據索引對同一個 RuleSet 中的規則進行疊代處理。規則: 系統會先評估整個集合中的索引 0,

新增時間:HEAD
RuleSetPriority uint32

規則組合的優先順序也會按照這個順序進行線性化。

系統會先執行具有較小 RuleSetPriorityRuleSet 規則,再執行 使用較大的 RuleSetPriorityRuleSet 規則。也就是說,RuleSet 優先順序為 0 即為優先等級

新增時間:HEAD
TableId uint32

路徑資料表的 ID。

TableId 是路徑資料表的全域不重複 ID,而且無法重複使用。

新增時間:HEAD
TableName string[MAX_TABLE_NAME_LEN]

路徑資料表的名稱。

新增時間:HEAD