本產品的文件集力求使用無偏見用語。針對本文件集的目的,無偏見係定義為未根據年齡、身心障礙、性別、種族身分、民族身分、性別傾向、社會經濟地位及交織性表示歧視的用語。由於本產品軟體使用者介面中硬式編碼的語言、根據 RFP 文件使用的語言,或引用第三方產品的語言,因此本文件中可能會出現例外狀況。深入瞭解思科如何使用包容性用語。
思科已使用電腦和人工技術翻譯本文件,讓全世界的使用者能夠以自己的語言理解支援內容。請注意,即使是最佳機器翻譯,也不如專業譯者翻譯的內容準確。Cisco Systems, Inc. 對這些翻譯的準確度概不負責,並建議一律查看原始英文文件(提供連結)。
BGP充當Internet流量的中樞。雖然它是網際網路核心最重要的元件,但它缺乏驗證輸入BGP通告是否源自授權自治系統的能力。
BGP的這種侷限性使它很容易成為各種攻擊的一個候選者。一種常見攻擊稱為「路由劫持」。利用此攻擊可以:
拒絕服務攻擊(通常稱為DoS)是一種惡意嘗試,會中斷路由器、交換機、伺服器等的正常流量。DoS攻擊種類繁多,此處討論的很少。
請考慮此處顯示的情境。自治系統3(AS3)傳送其字首10.0.0.0/24的合法BGP通告。根據BGP的設計,BGP中沒有阻止攻擊者向網際網路通告相同字首的內容。
如圖所示,AS4中的攻擊者通告相同的字首10.0.0.0/24。BGP最佳路徑演演算法優先使用具有更短AS_Path的路徑。AS_Path 1,5,4通過AS 1,5,2,3贏得較長路徑。因此,來自客戶端的流量現在將被重定向到攻擊者的環境,並且可能會被黑洞,從而造成對終端客戶端的拒絕服務。
本節討論另一種拒絕服務的方法。如果配置了Cisco的BGP路由抑制功能,則攻擊者可以在網路中引入快速路由擺動導致持續抖動時,利用此功能。
抑制功能將對合法路由實施處罰,使其無法用於實際流量。此外,這種不道德引起的抖動也會對路由器的CPU、記憶體等資源造成壓力。
如上一節所述,攻擊者如何非法生成字首並造成流量中斷。不幸的是,顛覆並非唯一令人擔憂的原因。在此類攻擊中,實際資料可能會受到危害,其中攻擊者可以掃描接收到的資料以將其用於不道德用途。
同樣,劫持一條路線也可能通過非法宣傳一條更精確的路線來完成。BGP偏好匹配時間較長的首碼,且此行為可能會被錯誤利用,如下圖所示。
所討論的所有攻擊都源於這樣一個事實:BGP無法識別這些惡意通告的字首的來源AS是否有效。要解決此問題,需要路由器能夠在其資料庫中保留的「true」和「trusted」資料來源。然後,每次收到新通告後,路由器現在能夠交叉驗證從BGP對等體接收的字首的AS源資訊和從驗證器接收的本地資料庫資訊。
因此,路由器能夠區分好通告和壞(非法)通告,並且路由器本身增加了避免前面討論的所有攻擊的能力。 BGP RPKI提供所需的可信資訊源。
RPKI使用包含ROA的儲存庫。ROA包含有關首碼及其關聯的BGP AS編號的資訊。路由來源授權是一個加密簽名的語句。
5個地區網際網路註冊機構(RIR)是RPKI的信任錨點。Internet Assigned Numbers Authority(IANA)是派發IP字首的樹頂端。RIR是層次結構中的下一項。它們將子字首分配給本地網際網路註冊機構(LIR)和大型網際網路服務提供商(ISP)。他們為這些字首簽署證書。下一層分配這些證書的子字首,並使用上面的證書簽署自己的證書來認證他們自己的分配。它們通常使用自己的發佈點來託管證書和ROA。每個證書列出其簽名的子證書的發佈點。因此,RPKI形成了一個證書樹,該樹反映了IP地址分配樹。信賴方擁有的RPKI驗證器會輪詢所有發佈點,以查詢更新的證書和ROA(以及CRL和清單)。它們從信任錨點開始,並遵循到子證書發佈點的連結。
ROA通過RIR輸入到儲存庫,但也可通過其他登記處(國家或地方)進行相同操作。這項責任也可以委託給ISP,由RIR進行適當的監督和驗證。
目前,有五個由RIPE NCE、ARIN、APNIC、LACNIC和AFRINIC維護的ROA庫。
網路中存在的驗證器與這些儲存庫通訊,並下載受信任的ROA資料庫以構建其快取。這是RPKI的合併副本,定期從全域性RPKI直接或間接獲取/刷新。然後,驗證器將此資訊提供給路由器,使路由器能夠將傳入的BGP通告與RPKI表進行比較,以便做出安全決策。
此演示使用RIPE驗證器。驗證器將通過建立TCP作業階段與路由器通訊。在本演示中,驗證器偵聽其IP 192.168.122.120和埠3323。
routinator server --rtr 192.168.122.120:3323 --refresh=900
IANA為此通訊指定了埠3323。刷新計時器定義同步和更新本地儲存庫以保持更新的時間間隔。
注意:此演示使用隨機公共AS編號和字首只是為了說明BGP RPKI機制。公共IP是使用,因為RPKI主要用於公共字首保護,而在RIR上建立的所有ROA都是公共字首。最後,本文檔中描述的任何操作、配置等都不會以任何方式影響這些公共IP和AS。
router bgp 100
bgp router-id 10.1.1.1
rpki server 192.168.122.120
transport tcp port 3323
refresh-time 900
address-family ipv4 unicast
!
neighbor 10.0.12.2
remote-as 8100
address-family ipv4 unicast
route-policy Pass in
route-policy Pass out
!
!
neighbor 10.0.13.3
remote-as 100
address-family ipv4 unicast
!
!
// ‘Pass’ is a permit all route-policy.
路由器與驗證器(IP: 192.168.122.120,埠3323)建立TCP會話,以便將ROA快取下載到路由器的記憶體中。
RP/0/RP0/CPU0:Cisco8000#show bgp rpki server 192.168.122.120
Wed Jan 20 22:54:15.763 UTC
RPKI Cache-Server 192.168.122.120
Transport: TCP port 3323
Bind source: (not configured)
Connect state: ESTAB
Conn attempts: 1
Total byte RX: 4428792
Total byte TX: 1400
Last reset
Timest: Jan 20 05:59:58 (16:54:17 ago)
Reason: protocol error
驗證器將ROA資訊提供給路由器。此快取記憶體會定期刷新,以便最小化路由器儲存過時資訊的可能性。在此演示中,已配置刷新時間900秒。 如圖所示,Cisco 8000路由器已從驗172632器下載IPv28350和IPv6 ROA。
RP/0/RP0/CPU0:Cisco8000#show bgp rpki server summary
Wed Jan 20 23:01:59.432 UTC
Hostname/Address Transport State Time ROAs (IPv4/IPv6)
192.168.122.120 TCP:3323 ESTAB 17:00:21 172632/28350
RP/0/RP0/CPU0:Cisco8000#show bgp rpki table ipv4
Wed Jan 20 23:09:26.899 UTC
>>>Snipped output<<<
Network Maxlen Origin-AS Server
10.0.0.0/24 24 13335 192.168.122.120
10.0.4.0/22 22 38803 192.168.122.120
10.0.4.0/24 24 38803 192.168.122.120
10.0.5.0/24 24 38803 192.168.122.120
10.0.6.0/24 24 38803 192.168.122.120
10.0.7.0/24 24 38803 192.168.122.120
10.1.1.0/24 24 13335 192.168.122.120
10.1.4.0/22 22 4134 192.168.122.120
10.1.16.0/20 20 4134 192.168.122.120
10.2.9.0/24 24 4134 192.168.122.120
10.2.10.0/24 24 4134 192.168.122.120
10.2.11.0/24 24 4134 192.168.122.120
10.2.12.0/22 22 4134 192.168.122.120
10.3.0.0/16 16 4134 192.168.122.120
10.6.0.0/22 24 9583 192.168.122.120
本節展示BGP RPKI如何發揮作用,以及如何防止路由器發生錯誤/非法通告。
預設情況下,路由器從驗證器讀取ROA,但直到配置為使用ROA。因此,這些字首被標籤為「D」或禁用。
RP/0/RP0/CPU0:Cisco8000#show bgp origin-as validity
Wed Jan 20 23:27:37.268 UTC
BGP router identifier 10.1.1.1, local AS number 100
BGP generic scan interval 60 secs
Non-stop routing is enabled
BGP table state: Active
Table ID: 0xe0000000 RD version: 30
BGP main routing table version 30
BGP NSR Initial initsync version 2 (Reached)
BGP NSR/ISSU Sync-Group versions 0/0
BGP scan interval 60 secs
Status codes: s suppressed, d damped, h history, * valid, > best
i - internal, r RIB-failure, S stale, N Nexthop-discard
Origin codes: i - IGP, e - EGP, ? - incomplete
Origin-AS validation codes: V valid, I invalid, N not-found, D disabled
Network Next Hop Metric LocPrf Weight Path
D*> 203.0.113.0/24 10.0.12.2 0 0 8100 ?
D*> 203.0.113.1/24 10.0.12.2 0 0 8100 ?
D*> 192.168.122.1/32 10.0.12.2 0 0 8100 ?
為了啟用路由器進行來源有效性檢查,請為相關地址系列啟用此命令。
router bgp 100
address-family ipv4 unicast
bgp origin-as validation enable
!
啟用此命令時,它會使路由器根據從驗證器接收的ROA資訊掃描其BGP表中存在的字首,並且三種狀態之一被分配給字首。
RP/0/RP0/CPU0:Cisco8000#show bgp origin-as validity
Thu Jan 21 00:04:58.136 UTC
Status codes: s suppressed, d damped, h history, * valid, > best
i - internal, r RIB-failure, S stale, N Nexthop-discard
Origin codes: i - IGP, e - EGP, ? - incomplete
Origin-AS validation codes: V valid, I invalid, N not-found, D disabled
Network Next Hop Metric LocPrf Weight Path
V*> 203.0.113.0/24 10.0.12.2 0 0 8100 ?
I* 203.0.113.1/24 10.0.12.2 0 0 8100 ?
N*> 192.168.122.1/32 10.0.12.2 0 0 8100 ?
要使路由器在進行最佳路徑計算時使用字首驗證狀態資訊,需要使用此命令。預設情況下,此功能不會啟用,因為它允許您不將有效性資訊用於最佳路徑計算,但仍允許您在本文檔稍後將討論的路由策略中使用它。
router bgp 100
address-family ipv4 unicast
bgp bestpath origin-as use validity
!
在三種狀態下可以找到字首。
RP/0/RP0/CPU0:Cisco8000#show bgp origin-as validity
Thu Jan 21 00:04:58.136 UTC
Status codes: s suppressed, d damped, h history, * valid, > best
i - internal, r RIB-failure, S stale, N Nexthop-discard
Origin codes: i - IGP, e - EGP, ? - incomplete
Origin-AS validation codes: V valid, I invalid, N not-found, D disabled
Network Next Hop Metric LocPrf Weight Path
V*> 203.0.113.0/24 10.0.12.2 0 0 8100 ?
I* 203.0.113.1/24 10.0.12.2 0 0 8100 ?
N*> 192.168.122.1/32 10.0.12.2 0 0 8100 ?
有效 — 表示在RPKI快取表中找到字首和AS對。
Not Found — 表示字首不在有效或無效字首之列。
本節詳細討論每個字首及其狀態。
AS 8100中的eBGP對等體生成此路由並通告給Cisco8000節點。由於來源AS(8100)與ROA中的來源AS(從驗證器接收)相符,因此此首碼標示為有效,並安裝到路由器的路由表中。
RP/0/RP0/CPU0:Cisco8000#show bgp rpki table | in "203.0.113.0|Max"
Thu Jan 21 00:21:26.026 UTC
Network Maxlen Origin-AS Server
203.0.113.0/24 24 8100 192.168.122.120
該路由安裝在BGP表中。
RP/0/RP0/CPU0:Cisco8000#show bgp 203.0.113.0/24
Thu Jan 21 05:30:13.858 UTC
BGP routing table entry for 203.0.113.0/24
Versions:
Process bRIB/RIB SendTblVer
Speaker 31 31
Last Modified: Jan 21 00:03:33.344 for 05:26:40
Paths: (1 available, best #1)
Not advertised to any peer
Path #1: Received by speaker 0
Not advertised to any peer
8100
10.0.12.2 from 10.0.12.2 (192.168.122.105)
Origin incomplete, metric 0, localpref 100, valid, external, best, group-best
Received Path ID 0, Local Path ID 1, version 31
Origin-AS validity: valid
由於這是最佳的BGP首碼,且每個RPKI也有效,因此它已成功安裝到路由表中。
RP/0/RP0/CPU0:Cisco8000#show route 203.0.113.0/24
Thu Jan 21 00:29:43.667 UTC
Routing entry for 203.0.113.0/24
Known via "bgp 100", distance 20, metric 0
Tag 8100, type external
Installed Jan 21 00:03:33.731 for 00:26:10
Routing Descriptor Blocks
10.0.12.2, from 10.0.12.2, BGP external
Route metric is 0
No advertising protos.
RP/0/RP0/CPU0:Cisco8000#show bgp origin-as validity invalid
Thu Jan 21 00:34:38.171 UTC
BGP router identifier 10.1.1.1, local AS number 100
BGP generic scan interval 60 secs
Non-stop routing is enabled
BGP table state: Active
Table ID: 0xe0000000 RD version: 33
BGP main routing table version 33
BGP NSR Initial initsync version 2 (Reached)
BGP NSR/ISSU Sync-Group versions 0/0
BGP scan interval 60 secs
Status codes: s suppressed, d damped, h history, * valid, > best
i - internal, r RIB-failure, S stale, N Nexthop-discard
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
* 203.0.113.1/24 10.0.12.2 0 0 8100 ?
但是,從驗證器收到的ROA顯示此字首屬於AS 10021。
RP/0/RP0/CPU0:Cisco8000#show bgp rpki table 203.0.113.1/24 max 24
Thu Jan 21 00:37:05.615 UTC
RPKI ROA entry for 203.0.113.1/24-24
Origin-AS: 10021 from 192.168.122.120
Version: 124211
由於收到的BGP通告(AS 8100)中的AS源資訊與ROA(AS 10021)中收到的實際AS源資訊不匹配,因此字首被標籤為「無效」(Invalid),並且未安裝在路由表中。
RP/0/RP0/CPU0:Cisco8000#show bgp 203.0.113.1/24
Thu Jan 21 05:37:26.714 UTC
BGP routing table entry for 203.0.113.1/24
Versions:
Process bRIB/RIB SendTblVer
Speaker 32 32
Last Modified: Jan 21 00:03:33.344 for 05:33:53
Paths: (1 available, no best path)
Not advertised to any peer
Path #1: Received by speaker 0
Not advertised to any peer
8100
10.0.12.2 from 10.0.12.2 (192.168.122.105)
Origin incomplete, metric 0, localpref 100, valid, external
Received Path ID 0, Local Path ID 0, version 0
Origin-AS validity: invalid
這是私人首碼,且不存在於ROA快取中。BGP將此字首宣告為「Not found」。
RP/0/RP0/CPU0:Cisco8000#show bgp 192.168.122.1/32
Thu Jan 21 05:44:39.861 UTC
BGP routing table entry for 192.168.122.1/32
Versions:
Process bRIB/RIB SendTblVer
Speaker 33 33
Last Modified: Jan 21 00:03:33.344 for 05:41:06
Paths: (1 available, best #1)
Not advertised to any peer
Path #1: Received by speaker 0
Not advertised to any peer
8100
10.0.12.2 from 10.0.12.2 (192.168.122.105)
Origin incomplete, metric 0, localpref 100, valid, external, best, group-best
Received Path ID 0, Local Path ID 1, version 33
Origin-AS validity: not-found
由於仍然採用RPKI,因此路由表中會安裝「not-found」字首。否則,BGP將忽略這些未在RPKI資料庫中註冊的合法字首。
雖然不建議這樣做,但軟體確實提供了一個旋鈕,以允許無效字首參與最佳路徑計算演算法。
router bgp 100
address-family ipv4 unicast
bgp bestpath origin-as allow invalid
!
透過此組態,路由器在標籤為「無效」時,確實會為最佳路徑計算考慮無效字首。此輸出顯示「203.0.113.1/24」被標籤為最佳路徑。
RP/0/RP0/CPU0:Cisco8000#show bgp
Thu Jan 21 06:21:34.294 UTC
BGP router identifier 10.1.1.1, local AS number 100
BGP generic scan interval 60 secs
Non-stop routing is enabled
BGP table state: Active
Table ID: 0xe0000000 RD version: 34
BGP main routing table version 34
BGP NSR Initial initsync version 2 (Reached)
BGP NSR/ISSU Sync-Group versions 0/0
BGP scan interval 60 secs
Status codes: s suppressed, d damped, h history, * valid, > best
i - internal, r RIB-failure, S stale, N Nexthop-discard
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> 203.0.113.0/24 10.0.12.2 0 0 8100 ?
*> 203.0.113.1/24 10.0.12.2 0 0 8100 ?
*> 192.168.122.1/32 10.0.12.2 0 0 8100 ?
如以下輸出所示,儘管字首保持無效,但字首仍被標籤為最佳。
RP/0/RP0/CPU0:Cisco8000#show bgp 203.0.113.1/24
Thu Jan 21 06:23:26.994 UTC
BGP routing table entry for 203.0.113.1/24
Versions:
Process bRIB/RIB SendTblVer
Speaker 34 34
Last Modified: Jan 21 06:05:31.344 for 00:17:55
Paths: (1 available, best #1)
Not advertised to any peer
Path #1: Received by speaker 0
Not advertised to any peer
8100
10.0.12.2 from 10.0.12.2 (192.168.122.105)
Origin incomplete, metric 0, localpref 100, valid, external, best, group-best
Received Path ID 0, Local Path ID 1, version 34
Origin-AS validity: invalid
請注意,路由器仍會將「無效」首碼視為最後一個選項,且如果可用的首碼,則總是會偏好有效首碼。
如果由於某種原因,尚未建立、接收或延遲特定字首的ROA,則可以在路由器上配置手動ROA。例如,字首「192.168.122.1/32」標籤為「Not Found」,如此處所示。
RP/0/RP0/CPU0:Cisco8000#show bgp origin-as validity
Thu Jan 21 06:36:31.041 UTC
BGP router identifier 10.1.1.1, local AS number 100
BGP generic scan interval 60 secs
Non-stop routing is enabled
BGP table state: Active
Table ID: 0xe0000000 RD version: 34
BGP main routing table version 34
BGP NSR Initial initsync version 2 (Reached)
BGP NSR/ISSU Sync-Group versions 0/0
BGP scan interval 60 secs
Status codes: s suppressed, d damped, h history, * valid, > best
i - internal, r RIB-failure, S stale, N Nexthop-discard
Origin codes: i - IGP, e - EGP, ? - incomplete
Origin-AS validation codes: V valid, I invalid, N not-found, D disabled
Network Next Hop Metric LocPrf Weight Path
V*> 203.0.113.0/24 10.0.12.2 0 0 8100 ?
I*> 203.0.113.1/24 10.0.12.2 0 0 8100 ?
N*> 192.168.122.1/32 10.0.12.2 0 0 8100 ?
可以配置手動ROA,如下圖所示。此命令將「192.168.122.1/32」字首「與AS 8100關聯」。
router bgp 100
rpki route 192.168.122.1/32 max 32 origin 8100
透過此組態,首碼的狀態會從「N」變更為「V」。
RP/0/RP0/CPU0:Cisco8000#show bgp origin-as validity
Thu Jan 21 06:36:34.151 UTC
BGP router identifier 10.1.1.1, local AS number 100
BGP generic scan interval 60 secs
Non-stop routing is enabled
BGP table state: Active
Table ID: 0xe0000000 RD version: 35
BGP main routing table version 35
BGP NSR Initial initsync version 2 (Reached)
Status codes: s suppressed, d damped, h history, * valid, > best
i - internal, r RIB-failure, S stale, N Nexthop-discard
Origin codes: i - IGP, e - EGP, ? - incomplete
Origin-AS validation codes: V valid, I invalid, N not-found, D disabled
Network Next Hop Metric LocPrf Weight Path
V*> 203.0.113.0/24 10.0.12.2 0 0 8100 ?
I*> 203.0.113.1/24 10.0.12.2 0 0 8100 ?
V*> 192.168.122.1/32 10.0.12.2 0 0 8100 ?
字首狀態結果可用於建立路由策略。可以在match語句中使用這些狀態,並可執行管理員所需的操作。 此示例匹配具有無效狀態的所有字首,並為它們設定權重值12345。
route-policy Invalid
if validation-state is invalid then
set weight 12345
endif
end-policy
!
router bgp 100
remote-as 8100
address-family ipv4 unicast
route-policy Invalid in
!
!
!
此輸出顯示應用了無效的字首權重為12345。
RP/0/RP0/CPU0:Cisco8000#show bgp 203.0.113.1/24
Thu Jan 21 06:57:33.816 UTC
BGP routing table entry for 203.0.113.1/24
Versions:
Process bRIB/RIB SendTblVer
Speaker 38 38
Last Modified: Jan 21 06:54:04.344 for 00:03:29
Paths: (1 available, best #1)
Not advertised to any peer
Path #1: Received by speaker 0
Not advertised to any peer
8100
10.0.12.2 from 10.0.12.2 (192.168.122.105)
Origin incomplete, metric 0, localpref 100, weight 12345, valid, external, best, group-best
Received Path ID 0, Local Path ID 1, version 38
Origin-AS validity: invalid
因為BGP路由器還可以通過BGP擴展社群與其他路由器(驗證器沒有本地快取)共用字首驗證狀態。這節省了網路中每台路由器與驗證器會話以及下載所有ROA的開銷。
BGP延伸社群可以做到這一點。
此命令使路由器能夠與iBGP對等體共用「prefix-validation」資訊。
router bgp 100
address-family ipv4 unicast
bgp origin-as validation signal ibgp
如圖所示配置Cisco 8000路由器後,BGP更新對等體會包含字首驗證資訊。在這種情況下,鄰居iBGP路由器是IOS-XE路由器。
csr2#show ip bgp 203.0.113.1/24
BGP routing table entry for 203.0.113.1/24, version 14
Paths: (1 available, best #1, table default)
Not advertised to any peer
Refresh Epoch 1
8100
10.0.12.2 from 10.0.13.1 (10.1.1.1)
Origin IGP, metric 0, localpref 100, valid, internal, best
Extended Community: 0x4300:0:2
rx pathid: 0, tx pathid: 0x0
Updated on Jan 21 2021 18:16:56 UTC
可以使用0x4300 0x000(4位元組表示狀態)來瞭解此擴展社群對映。
指示狀態的四個位元組被視為32位無符號整數,它具有以下值之一:
字首203.0.113.1/24的社群是0x4300:0:2,該社群對映到「無效」字首。如此一來,即使路由器本身沒有本地快取,CSR2路由器仍能根據首碼驗證狀態做出決策。
現在,字首驗證狀態可用於在路由對映中或BGP最佳路徑演算法中進行匹配。
這些是基於RPKI — 天文台觀測到的不可達網路的一些建議。RPKI觀測站從多個方面分析部署的RPKI環境。
如果為任何字首建立了ROA,則建議在BGP中通告該字首。如果沒有該名稱,則其他人可以通過簡單假裝是ROA中包含的ASN並使用字首來宣佈該名稱。
如果建立的ROA的maxlen大於字首長度,則其等效於為原始字首下一直到maxlen的所有可能字首建立ROA。強烈建議在BGP中通告所有這些字首。
如果為字首建立ROA,並且字首所有者宣佈原始字首的子字首,則ROA將使該子字首失效。子字首的ROA以及原始ROA的maxlen必須擴展以覆蓋子字首。
如果組織擁有字首,但計畫不在BGP中通告它,則必須為AS0的字首建立ROA。這將使任何字首通告失效,因為AS0不能出現在任何AS路徑中。
如果有多個ASN源自同一個字首,則必須為每個ASN建立該字首的ROA。因此,如果路由器具有同一字首的多個ROA,則與其中任何一個匹配的BGP通告將有效。同一字首的多個路由協定不會相互衝突。
如果「A」為其客戶「B」生成一個字首,並代表「B」為該字首建立一個ROA,則「A」必須在公告前加上「B」的ASN,或具有「B」生成字首本身。
更新ROA時,如果路由器為包含「validation-state is」的鄰居提供本地入口路由策略,則根據新的ROA重新驗證字首的狀態非常重要。這通過路由器向其對等體傳送BGP REFRESH請求來實現。
當BGP鄰居收到此消息(如圖所示)時,鄰居再次傳送其字首,並且入站路由策略可以重新驗證傳入字首。
Jan 22 18:28:41.360: BGP: 10.0.12.1 rcv message type 5, length (excl. header) 4
Jan 22 18:28:41.360: BGP: 10.0.12.1 rcvd REFRESH_REQ for afi/safi: 1/1, refresh code is 0
每當更新ROA時,當許多鄰居同時刷新時,問題就會放大。如果鄰居入站路由策略很複雜並且需要大量處理,則在ROA更新後幾分鐘內會導致CPU使用率較高。如果鄰居入站路由策略不包含「validation-state is」命令,則不會出現這些REFRESH消息。
如果為鄰居配置了「總是進行軟重新配置入站」,則不會傳送BGP REFRESH消息,但仍然會以相同的速率執行相同的路由策略,並且可以預期相同的CPU使用情況。
建議優先使用「bgp bestpath origin-as use validity」方法,而不是配置路由策略,原因如下6.2.2所述。
避免出現此處所說明問題的最佳方法是將bestpath origin-as use validity without validation-state列入策略。
router bgp 100
address-family ipv4 unicast
bgp bestpath origin-as use validity
!
此命令保留路由器上接收到的無效路由,但阻止它成為最佳路徑。將不會安裝或進一步通告它。就好比扔下它一樣。如果下次ROA更新生效,則無需刷新,它自動符合最佳路徑的條件,無需執行策略。
如果使用者偏好允許「無效」首碼而不使用它們,則除了bestpath origin-as use validity外,使用組態best path origin-as allow invalid。
在這種情況下,當ROA更改時,自動更新最佳路徑,而不需要REFRESH消息。為了取消首選,路由意味著在BGP路由選擇期間,RPKI無效路徑被視為比通向相同目的地的任何其他路徑更不優選。這類似於為其分配權重或小於0的本地首選項。
RPKI無效的數量相對較少,並且保留在表中不會對資源產生重大影響。
注意:為了使用「bestpath origin-as use validity」,路由的所有路徑(包括IBGP路徑)都必須具有正確的RPKI有效性。如果不是,則仍可使用route-policy中的validation-state測試。
路由器不會根據ROA資料庫驗證IBGP路由。IBGP路由從RPKI擴展社群獲得RPKI有效性。如果收到IBGP路由時沒有使用此擴展社群,則其validation-state設定為not-found。
考慮使用3台RPKI伺服器的路由器,每台在64位路由處理器上提供200,000個IPv4 ROA和20,000個IPv6 ROA將需要此記憶體:
20000 *(125 + 3*53)+ 200000 *(111 + 3*53)位元組= 59.68百萬位元組
在計算記憶體時,來自三個不同驗證器的相同字首的ROA共用相同的索引值。
不帶ROA的BGP進程記憶體:
RP/0/RP0/CPU0:Cisco8000#show processes memory detail location 0/RP0/CPU0 | in $
Fri Jan 22 17:19:57.945 UTC
JID Text Data Stack Dynamic Dyn-Limit Shm-Tot Phy-Tot Process
1069 2M 71M 132K 25M 7447M 50M 74M bgp
RP/0/RP0/CPU0:Cisco8000#show bgp rpki server summary
Fri Jan 22 17:12:09.073 UTC
Hostname/Address Transport State Time ROAs (IPv4/IPv6)
192.168.122.120 TCP:3323 NONE 00:00:25 N/A
在未使用任何ROA的情況下,BGP進程佔用25 MB記憶體。
使用ROA的BGP進程記憶體:
RP/0/RP0/CPU0:Cisco8000#show bgp rpki server summary
Fri Jan 22 17:23:46.769 UTC
Hostname/Address Transport State Time ROAs (IPv4/IPv6)
192.168.122.120 TCP:3323 ESTAB 00:02:42 172796/28411
RP/0/RP0/CPU0:Cisco8000#show processes memory detail location 0/RP0/CPU0 | in $
Fri Jan 22 17:24:14.659 UTC
JID Text Data Stack Dynamic Dyn-Limit Shm-Tot Phy-Tot Process
1069 2M 99M 132K 53M 7447M 50M 102M bgp
在未使用任何ROA的情況下,BGP進程佔用25 MB記憶體。
使用ROA的BGP進程記憶體:
RP/0/RP0/CPU0:Cisco8000#show bgp rpki server summary
Fri Jan 22 17:23:46.769 UTC
Hostname/Address Transport State Time ROAs (IPv4/IPv6)
192.168.122.120 TCP:3323 ESTAB 00:02:42 172796/28411
RP/0/RP0/CPU0:Cisco8000#show processes memory detail location 0/RP0/CPU0 | in $
Fri Jan 22 17:24:14.659 UTC
JID Text Data Stack Dynamic Dyn-Limit Shm-Tot Phy-Tot Process
1069 2M 99M 132K 53M 7447M 50M 102M bgp
Cisco 8000路由器運行64位作業系統。它接172796了IPv4 ROA和28411 ROA。
記憶體(位元組)= 172,796 x [111(索引)+ 53(資料)] + 28411 x [125(索引)+ 53(資料)]。
這些計算得出的大小約為27 MB,大約是上述路由器記憶體中注意到的增量。
修訂 | 發佈日期 | 意見 |
---|---|---|
2.0 |
18-Oct-2022 |
已刪除所有PII問題和疑慮。 |
1.0 |
07-Apr-2021 |
初始版本 |