BGP 路由政策屬性參考資料

本頁面顯示 Cloud Router 的一般運算語言 (CEL) 範例 BGP 路由政策。

BGP 路由政策定義為依序排列的條件清單。系統會依您指定的順序評估每個字詞,並在路徑符合該字詞時,納入條件和對應的動作。特定 BGP 路由政策只能套用至一個方向,也就是傳入 (適用於已知路由) 或傳出 (適用於通告路由),但不能同時套用至兩個方向。不過,BGP 路由政策可以套用至 Cloud Router 上的多個 BGP 對等互連。

比對屬性

下表說明 BGP 路由政策可用的比對屬性:

屬性

說明

communities

歸因於 BGP 路由的社群清單

destination

BGP 路由的 IP 範圍

比對作業

下表說明 BGP 路由政策可用的比對作業:

作業

說明

communities.matchesEvery('65001:1234')

如果社群是清單的超集,則傳回 true。 '65001:1234'

community_value 是 32 位元的欄位,分成兩個 16 位元區段。按照慣例,值的前 16 位元會編碼社群來源網路的自治系統 (AS) 編號,但 Cloud Router 不會強制執行這項慣例。值的第二個 16 位元會編碼由原始 AS 指派的唯一號碼。

僅限匯入。

destination == '192.168.0.0/24'

如果 BGP 路由與 192.168.0.0/24 相符 (完全比對),則傳回 true

destination != '192.168.0.0/24'

如果 BGP 路徑不符合 192.168.0.0/24 (完全比對),則傳回 true

destination.inAnyRange(r)

如果 BGP 路徑位於 r 範圍內,則傳回 true,其中 r 是下列其中一項:

  • 含有 CIDER 編碼前置字串的字串,例如 192.168.0.0/24
  • prefix() 傳回的抽象型別,或您可在 prefix() 上呼叫的其中一個流暢方法,例如 longer()
  • 異質清單,每個元素都必須是先前所述的值。

可使用 ! 否定。

prefix('192.168.0.0/24')

傳回代表 CIDR 範圍的前置碼物件 192.168.0.0/24,與 destination.inAnyRange() 搭配使用。

prefix('192.168.0.0/24').longer()

傳回前置碼範圍物件,該物件是 prefix() 的副本,範圍結尾設為輸入前置碼的每個位址系列最大值 (/32/128),範圍開頭則設為輸入前置碼的長度加一。

prefix().orLonger()

傳回前置字元範圍物件,該物件是 prefix() 的副本,且範圍結尾設為輸入前置字元的每個位址系列上限 (/32/128)。

prefix().lengthRange(20, 30)

傳回前置字元範圍物件,該物件是 prefix() 的副本,範圍開頭設為 /20,結尾設為 /30。

prefix().upTo(30)

傳回前置字元範圍物件,該物件是 prefix() 的副本,且範圍結尾設為輸入前置字元的 /30。

communitySets('regional')

(預覽)

傳回路由器上社群集 regional 中命名的社群清單。

prefixSets('local')

(預覽)

傳回路由器上字首集 local 中命名的字首清單。

x || y

如果 xytrue,則傳回 true

xy 必須是使用 communitiesdestination 屬性的布林運算式。

根據 || (OR) 運算規則,所有條件實際上都是以 OR 連接的零或多個 destination 比對運算。

(D0 || D1 || ... || Dm)

下表是使用 prefix 建構複雜規則運算式的範例,並與部分路由器供應商的規則運算式進行比較:

Cloud Router Cisco Juniper 說明

'192.168.0.1'

192.168.0.1

192.168.0.1

與前置字串「192.168.0.1/32」完全相符

'192.168.0.0/24'

prefix('192.168.0.0/24')

192.168.0.0/24

192.168.0.0/24 exact

與前置字串「192.168.0.0/24」完全相符

prefix('192.168.0.0/24').longer()

192.168.0.0/24 ge 25 le 32

192.168.0.0/24 longer

比對 192.168.0.0/25192.168.0.0/32 之間的範圍

prefix('192.168.0.0/24').orLonger()

192.168.0.0/24 le 32

192.168.0.0/24 orlonger

比對 192.168.0.0/24192.168.0.0/32 之間的範圍

prefix('192.168.0.0/24').lengthRange(25, 30)

192.168.0.0/24 ge 25 le 30

192.168.0.0/24 prefix-length-range /25-/30

比對 192.168.0.0/25192.168.0.0/30 之間的範圍

prefix('192.168.0.0/24').upTo(30)

192.168.0.0/24 le 30

192.168.0.0/24 up to /30

比對 192.168.0.0/24192.168.0.0/30 之間的範圍

符合所有路線

下表說明符合 BGP 路由政策比對運算式中所有路由的範例:

作業

說明

communities.matchesEvery([])

比對匯入政策的所有路徑。

destination.inAnyRange(prefix('0.0.0.0/0').orLonger())

符合匯入或匯出政策的所有 IPv4 位址。

destination.inAnyRange(prefix('::/0').orLonger())

比對匯入或匯出政策的所有 IPv6 位址。

destination.inAnyRange([prefix('0.0.0.0/0').orLonger(), prefix('::/0').orLonger()])

符合匯入或匯出政策的所有路徑。

動作屬性

下表說明 BGP 路由政策可用的動作屬性:

屬性

說明

限制

asPath

BGP 路由更新所經過的 AS 編號清單

匯出及匯入政策

communities

路線的社群清單

僅匯出政策

med

路由的多出口鑑別器 (MED)

匯出及匯入政策

動作作業

下表說明 BGP 路由政策可用的動作作業:

作業

說明

限制

accept()

接受 BGP 路徑,並停止進一步評估 BGP 路徑政策或條款,包括此動作之後的任何動作。

drop()

篩除 BGP 路徑,並停止進一步評估 BGP 政策或條款,包括此動作之後的任何動作。

nextPolicy()

停止執行這項 BGP 路由政策中的其餘條件 (包括此條件後的任何動作),並繼續執行下一個套用的 BGP 路由政策 (如有)。

asPath.prependSequence([1, 2, 3])

將 AS 編號清單做為序列,加到 AS-PATH 屬性前面。

引數必須是 32 位元範圍內的整數。

communities.add('65001:1234')

將社群值新增至社群清單。

社群值可以是單一社群或清單。

如果私有社群值對應至下列 Google 擁有的 ASN,Cloud Router 會忽略這些值:

6432、15169、16550、16591、19448、19527、22859、26910、32381、36039、 36384、36385、36492、55023

僅匯出政策

communities.remove('65001:1234')

從社群清單中移除社群值。

社群值可以是單一社群或清單。

如果私有社群值對應至下列 Google 擁有的 ASN,Cloud Router 會忽略這些值:

6432、15169、16550、16591、19448、19527、22859、26910、32381、36039、 36384、36385、36492、55023

僅匯出政策

communities.replaceAll(['65001:1234'])

以社群值取代社群清單,該值可以為空。

如果私有社群值對應至下列 Google 擁有的 ASN,Cloud Router 會忽略這些值:

6432、15169、16550、16591、19448、19527、22859、26910、32381、36039、 36384、36385、36492、55023

僅匯出政策

med.set(12345)

將 MED 設為 12345

MED 值必須是介於 0232 之間的無符號整數。

med.add(12345)

12345 新增至 MED 的設定值。

MED 值必須是介於 0232 之間的無符號整數。如果加法結果大於 232 - 1,這項作業會將 MED 設為 232 - 1

med.subtract(12345)

從 MED 的設定值減去 12345

MED 值必須是介於 0232 之間的無符號整數。如果相減結果小於 0,這項作業會將 MED 設為 0