學習筆記——動態路由——OSPF聚合(匯總)

十一、OSPF聚合(匯總)

1、路由聚合(匯總)

路由匯總是一種重要的思想,在大型的項目中是必須考慮的一個重點事項。隨著網絡的規模越來越大,網絡中的設備所需維護的路由表項也就會越來越多,路由表的規模也就會逐漸變大,而路由表是需要占用設備的內存空間的,路由的查詢也是需要占用設備的資源的。

因此需要考慮(尤其在一些大型的網絡中)在保證網絡中路由暢通的同時,減小路由表的規模。在不使用路由匯總的情況下,每個鏈路的LSA會發送到OSPF骨干一級其他區域中,這就造成了不必要的網絡流量和路由開銷。假如使用路由匯總,只有匯總的路由會傳播到骨干區域,避免了大量LSA占用帶寬,CPU以及內存資源。即便鏈路出現了故障,這種變化也不會傳播到骨干網絡中,使得骨干網絡更加穩定。

幾乎所有的路由協議都支持路由匯總。RIP、EIGRP等協議支持自動及手工路由匯總,而OSPF只支持手工路由匯總

路由聚合(Route Aggregation or Route Summarization,路由匯總):是指ABR可以將學習到的具有相同前綴的路由信息,按照一定的規則聚合到一起,只發布一條路由到其它區域。

一般來說,路由匯總可以大大減少設備路由表項和轉發表項。一方面可以減輕設備的負擔,另一方面也可以讓設備保存更多不同地址的路由。

作用:通過匯總路由的方式減小路由表規模以及優化設備資源利用率。

缺陷:最大的問題是它會導致黑洞路由。

(上圖)R2將學習到外網10.1.1.0/28的路由發送給R1,R1將這條路由匯總為10.1.1.0/24。如果R2配備了到R1的默認路由,此時如果R1收到發往10.1.1.1/28的數據包,就會轉發給R2,而R2上沒有到10.1.1.1/28的路由,就會發送數據數據包返回到R1,在這種情況下,會生成一個循環。因此,在配置路由匯總的過程中,需要慎重考慮是否會導致此類問題。

(1)路由聚合的優/缺點

1)針對明細路由做匯總可以有效地減少OSPF路由器的數據庫條目也就是路由表條目,合理的節省了設備性能。

2)可以隱藏明細路由不穩定所造成的路由震蕩問題。

3)在雙出口做路由聚合時,有一個做,有一個沒做會影響到路由選路。

(2)OSPF匯總的使用場景

  當OSPF域內某臺ASBR(自治域邊界路由器)設備重分布了大量的路由進入OSPF域內,而這些路由條目又是連續的,可以匯總成幾條子網掩碼更大的路由條目的時候,就可以考慮在ASBR設備上做路由匯總,以便向OSPF域內傳遞的時候只通告這些匯總的路由,減少OSPF域內的路由數量,節約設備資源。

??當OSPF域內某臺ABR(區域邊界路由器)設備學習到了普通區域傳遞過來的大量的路由,而這些路由條目又是連續的,可以匯總成幾條子網掩碼更大的路由條目的時候,就可以考慮在這臺ABR設備上做路由匯總,以便這些路由條目經過骨干區域(area 0)傳遞到其他普通區域的時候只通告這些匯總的路由,減少OSPF域內的路由數量,節約設備資源。

(3)為什么我們需要OSPF路由匯總?

對于OSPF邊緣路由器,我們可以配置stub area、total stub area、NSSA area或total NSSA area來減少其存儲的LSDB和OSPF路由表項。但是如果骨干路由器上的LSDB表項太多,或者不是骨干但不能配置為特殊區域的區域,如何減少這些路由器上的LSDB和OSPF路由數量呢?

從前面的描述可以知道,可以通過路由匯總來實現。

OSPF是一種鏈路狀態路由協議,因此OSPF路由器不傳輸路由,而是傳輸鏈路狀態信息。因此,OSPF路由通過匯總LSA來控制鏈路狀態信息的傳輸,從而減小LSDB數據庫的大小,進而控制路由的匯總。

由于OSPF路由分為區域內路由、區域間路由和外部路由(即引入OSPF進程的路由),所以區域內路由不需要匯總

概念:將多條具有相同前綴的路由聚合成一條,通告到其他區域

目的:1.減少維護數據庫的規模? 2.減少路由表維護數量? 3.減少其他區域不穩定鏈路的影響

2、聚合機制

與RIP不同,OSPF不支持自動路由聚合,僅支持手動路由聚合

(1)OSPF路由聚合方式

域間匯總(區域間路由聚合) :可以減少路由信息,從而減小路由表的規模,提高設備的性能。

區域間路由聚合,必須配置在ABR路由器上。ABR把與自己直接相連區域(Area)的路由進行聚合,把Type-1和Type-2 LSA轉換成Type-3 LSA時,對生成的Type-3 LSA進行聚合。從而減少傳播至與自己直接相連的其他區域的Type-3 LSA的數量。

需要特別強調的是,區域間路由只能聚合由Type-1 LSA或Type-2 LSA產生的路由;如果路由是由外部或其他區域傳到本區域的(或者說路由是由Type-5 LSA或 Type-3 LSA生成的),則對于這樣的路由ABR是不能夠進行聚合的。

域外匯總(外部路由聚合):必須配置在ASBR路由器上,在ASBR路由器上,針對引入OSPF網絡的外部路由進行的聚合目的是減少在OSPF網絡中的Type-5 LSA的數量

對于NSSA區域,當該區域的ABR將Type-7 LSA轉換為Type-5 LSA時,該ABR也可以充當ASBR的角色,并對Type-5 LSA進行聚合。需要注意的是,當NSSA區域存在多臺ABR時,必須由Router-ID最大的ABR進行Type-7 LSA到Type-5 LSA的轉換操作。

NSSA區域的外部路由聚合有兩種方式:

1)在NSSA區域的ASBR上直接對外部路由進行聚合,

2)在NSSA區域中Router-ID最大的、負責將Type-7 LSA轉成Type-5 LSA的ABR上進行聚合。

1)OSPF區域間路由匯總(ABR聚合)

僅針對本區域域內路由(以O開頭的域內路由)做匯總,本區域的OIA的域間路由沒有辦法匯總。

ABR向其它區域發送路由信息時,以網段為單位生成Type3 LSA。如果該區域中存在一些連續的網段,則可以通過命令將這些連續的網段聚合成一個網段。這樣ABR只發送一條聚合后的LSA,所有屬于命令指定的聚合網段范圍的LSA將不會再被單獨發送出去。(如下右圖)

OSPF區域間路由聚合是指當OSPF LSA在不同區域間擴散時,通過在ABR上配置,將多條LSA聚合為一個LSA,然后進行擴散操作。

????????

(如上左圖)假設R1和R2之間的網段是10.1.1.0/24,R2和R3之間的網段是10.1.0.0/24網段,那么在R4和R5上,你會學到兩條OSPF路由,即10.1.1.0/24和10.1.0.0/24。如果我們把R1上的這兩個網段匯總起來,匯總成10.1.0.0/23,那么R4和R5上就只有一個OSPF網段,即10.1.0.0/23。

需要注意的是,在ABR上配置路由聚合時,需要在區域下進行配置。(如上左圖)我們要匯總區域1中的兩個網段10.1.0.0/24和10.1.1.0/24,那么需要在R1的區域1下配置聚合。

觀察R1和R4上的LSDB數據,我們可以看到R1將10.1.1.0/24和10.1.0.0/24兩條路由聚合成一個 LSA發送到區域0。

[R1]display ospf lsdb

OSPF Process 1 with Router ID 10.1.14.1

Link State Database

Area:0.0.0.0

Type????????? LinkStateID??????? AdvRouter???? Age? ???? Len? ???? Sequence ???? Metric??

Router??????? 10.1.14.1????????? 10.1.14.1???? 1353???? 36?? ??? 88888886????? ???? 1

Router??????? 10.1.14.4????????? 10.1.14.4???? 1362???? 36?????? 80088083????? ???? 1

Network?????? 10.1.14.1????????? 10.1.14.1???? 1353???? 32?????? 80880002????? ???? 0

Sum-Net?????? 10.1.0.0?????????? 10.1.14.1???? 1130???? 28?????? 80888882????? ???? 2

Area:0.0.0.1

Type????????? LinkStateID??????? AdvRouter???? Age????? Len????? Sequence????? Metric??

Router??????? 10.1.0.2?????????? 10.1.0.2????? 1366???? 48?????? 88888885?????????? 1

Router??????? 10.1.14.1????????? 10.1.14.1???? 1396???? 36?????? 88888885?????????? 1

Network?????? 10.1.1.1?????????? 10.1.14.1???? 1396???? 32?????? 88888882?????????? 0

Sum-Net?????? 10.1.14.0????????? 10.1.14.1???? 1438???? 28?????? 80888881?????????? 1

[R4]display ospf lsdb

OSPF Process 1 with Router ID 10.1.14.4

Link State Database

Area:0.0.0.0

Type????????? LinkStateID??????? AdvRouter???? Age????? Len????? Sequence????? Metric??

Router??????? 10.1.14.1????????? 10.1.14.1???? 1393???? 36?????? 808868861????????? 1

Router??????? 10.1.14.4????????? 10.1.14.4???? 1488???? 36?????? 800000031????????? 1

Network?????? 10.1.14.1????????? 10.1.14.1???? 1393???? 32?????? 800660820????????? 0

Sum-Net?????? 10.1.0.0?????????? 10.1.14.1???? 1170???? 28?????? 80000002?????????? 2

2)OSPF外部路由匯總(ASBR聚合)

配置路由聚合后,如果本地設備是自治系統邊界路由器ASBR,將對引入的聚合地址范圍內的Type5 LSA進行聚合。當配置了NSSA區域時,還要對引入的聚合地址范圍內的Type7 LSA進行聚合。

如果本地設備既是ASBR又是ABR,則對由Type7 LSA轉化成的Type5 LSA進行聚合處理。

??? 對于NSSA區域,當該區域的ABR將Type-7LSA轉換為Type-5LSA時,該ABR也可以充當ASBR的角色,并對Type-5LSA進行聚合。

ASBR:針對重分發進來的外部路由做路由匯總

除了OSPF區域間路由匯總,OSPF引入外部路由時,我們還可以在ASBR上配置路由聚合。

????????

與OSPF 區域間路由聚合類似,OSPF 外部路由聚合也是在路由聚合完成后根據聚合路由生成LSA 進行擴散。

查看R2上的LSDB,可以看到聚合的LSA。

3、匯總(聚合)計算方法

(1)簡單的,同一子網的匯總

(下左圖)判斷第幾位發生變化,轉換成二進制,將不變的位,保留下來作為子網掩碼的位數=16+5=21。也可以算變化的位24-3=21,變化的位全部值為0,那么這個時候的網絡地址就是匯總后的地址。

192.168.00000000.0/21=192.168.0.0/21(255.255.248.0)

案例1:

IP地址??????????????????????????????????????????????????????????????????????????

二進制

172.18.129.0/24????????????????????????????????????????????????????????????

129:10000001

172.18.130.0/24????????????????????????????????????????????????????????????

130:10000010

172.18.132.0/24????????????????????????????????????????????????????????????

132:10000100

172.18.133.0/24????????????????????????????????????????????????????????????

133:10000101

前5位相同(10000),后3位不同

相同的前綴有21位,保留相同位數,將相同比特后面的數(到末尾)填充為0將不相同的3個001比特填充為0,得到10000000,根據8\4\2\1法計算出,十進制為128。

結果:路由匯聚的Ip地址就是172.18.128.0,172.18.128.0/21。掩碼=8+8+5,前21位比特為1不能變,變化為后11位。

不變的10000:128+64+32+16+8=128+80+40=248掩碼為255.255.248.0。

案例2:

IP地址??????????????????????????????????????????????????????????????????????????

二進制

202.113.79.128/27????????????????????????????????????????????????????????

128:1000 0000

202.113.79.160/27????????????????????????????????????????????????????????

160:1010 0000

202.113.79.192/27????????????????????????????????????????????????????????

192:1100 0000

202.113.79.224/27????????????????????????????????????????????????????????

133:1110 0000

相同的前綴有25位,保留相同位數,將不相同比特后面的數(到末尾)填充為0。

將不相同的比特填充為0,得到10000000,根據8\4\2\1法計算出,十進制為128。

結果:路由匯聚的Ip地址就是202.113.79.128。202.113.79.128/25。掩碼=8+8+8+1,前25位比特為1不能變,變化為后7位。可用地址數為2^7-2=126。

(2)復雜的,不同子網的匯總

首先判斷是第幾段的地址位發生變化,后面的可以忽略,匯總成這個段的地址的主網絡號,其次使用上面簡單的處理方法 ,匯總后子網為8+1=9 或者16-7=9

4、配置OSPF路由匯總

配置OSPF路由聚合分為:配置OSPF域間路由聚合和配置OSPF外部路由聚合。

注意:OSPF區域間路由聚合只能在ABR上配置,OSPF外部路由聚合只能在ASBR上配置。

配置區域間路由匯總

[R1] ospf 1

[R1-ospf-1] area 1

[R1-ospf-1-area-0.0.0.1] abr-summary 10.1.0.0 255.255.254.0

配置外部路由匯總

[R3] ospf 1

[R3-ospf-1] asbr-summary 1.1.0.0 255.255.252.0

(1)OSPF路由匯總案例(一)

?

(上圖所示)R1、R2、R3、R4及R5運行OSPF,OSPF區域的規劃如圖。

  R5將三個直連網段(172.16.1.0/24、172.16.2.0/24、172.16.3.0/24)都network到OSPF。

  R1將三個直連網段(10.1.1.0/24、10.1.2.0/24、10.1.3.0/24)都重發布到OSPF。

完成上述配置后,所有的路由器應該都能學習到全網的路由。在ABR上執行路由匯總(下圖所示)

在R3(ABR)上對Area2內的路由執行匯總:

  [R3]router ospf 1

  [R3]area 2 range 172.16.0.0 255.255.0.0 cost ?

注意,這種匯總方式(area range)只能在ABR上配置,而且只能對ABR直接連接的區域中的Intra-Area路由(區域內部路由)執行匯總。

R3執行匯總后,R1及R2的路由表中將出現172.16.0.0/16的匯總路由,而不會再學習到明細路由。如此一來,R1及R2的路由表就精簡了,而且當它們需要訪問R5下掛的那三個網段時,可以通過這條匯總路由到達。

  要強點的是,如果不是在R3,而是在R2上對R5下掛的網段進行匯總,則無法實現。因此此時R3作為ABR,已經將描述這些網段的3類LSA注入到了Area0,而在R2上,是無法對這些3類LSA進行路由匯總的。?在ASBR上執行路由匯總(下圖所示)

?

在R1上對其自己重發布進OSPF的路由執行匯總:

  router ospf 1

? summary-address 10.1.0.0 255.255.0.0

  完成上述配置后,R2、R3、R4及R5都會學習到一條10.1.0.0/16的匯總路由(使用Type-5 LSA描述),而不會再學習到10.1.1.0/24、10.1.2.0/24以及10.1.3.0/24這三條明細路由。

在NSSA的ABR上執行路由匯總

?

? 將網絡做一點小小的變更,Area1被配置為NSSA。R1將三條直連路由引入NSSA,R2會學習到這三條外部路由(Type-7 LSA),并執行Type-7 LSA轉Type-5 LSA的動作,因此其實R2既是ABR又是ASBR,這些Type-5 LSA是由其產生的,那么R2也能執行路由匯總:

  router ospf 1

??summary-address 10.1.0.0 255.255.0.0

OSPF匯總路由的防環設計

?

?  在上圖所示的場景中,R3將R5下掛的三個子網匯總成172.16.0.0/16并向R2通告這條匯總路由。R1則下發一條OSPF默認路由到整個OSPF域。此時R5下掛的某個子網里有PC中毒,瘋狂掃描一個并不存在的子網的IP地址(如172.16.222.0/24子網),這些數據包被發給網關R5,R5通過路由表查詢,最終將這些報文依照默認路由進行轉發,也就是發送給R4,而R4也一樣,將報文依照默認路由轉發給R3,R3再轉給R2,而R2由于已經收到R3傳遞過來的匯總路由(172.16.0.0/16),因此經過路由表查詢后,數據包的目的地址匹配上了這條匯總路由,于是它又把這些數據包丟回去給R3,數據包的目的地址在R3處匹配了默認路由,又被丟回R2,如此反復,直到報文的TTL遞減為0。這就出現了環路。

  OSPF為了解決這個問題,在執行路由匯總時,會在本地自動產生一條指向Null0的路由。例如在R3處執行了路由匯總,則它會自動產生一條指向Null0的路由:

  O ??????172.16.0.0/16 is a summary, 00:00:02, Null0

  這樣一來當再有類似事件發生,數據包將在R3這就被丟棄(匹配Null0路由)。

實際上,當執行路由匯總時,自動在本地路由表產生一條指向Null0的路由是一種非常常規的防環手段,許多動態路由協議都具備這個特征。

(2)OSPF路由匯總案例(二)

域間匯總,在ABR上進行

R1配置:

  router ospf 100

  router-id 1.1.1.1

  network 1.1.1.1 0.0.0.0 area 0

  network 12.1.1.0 0.0.0.255 area 0

R2配置:

  router ospf 100

  router-id 2.2.2.2

  network 2.2.2.2 0.0.0.0 area 0

  network 12.1.1.0 0.0.0.255 area 0

 ? network 23.1.1.0 0.0.0.255 area 1

??network 24.1.1.0 0.0.0.255 area 2

R3配置:

  router ospf 100

  router-id 3.3.3.3

  network 3.3.3.3 0.0.0.0 area 1

  network 192.168.20.1 0.0.0.255 area 1

  network 192.168.21.1 0.0.0.255 area 1

  network 192.168.22.1 0.0.0.255 area 1

  network 192.168.23.1 0.0.0.255 area 1

  network 23.1.1.0 0.0.0.255 area 1

R4配置:

  router ospf 100

  router-id 4.4.4.4

  network 4.4.4.4 0.0.0.0 area 2

  network 192.168.32.0 0.0.0.255 area 2

  network 192.168.33.0 0.0.0.255 area 2

  network 192.168.34.0 0.0.0.255 area 2

  network 192.168.35.0 0.0.0.255 area 2

  network 192.168.36.0 0.0.0.255 area 2

  network 192.168.37.0 0.0.0.255 area 2

  network 192.168.38.0 0.0.0.255 area 2

  network 192.168.39.0 0.0.0.255 area 2

  network 24.1.1.0 0.0.0.255 area 2

  show ip route 查看路由表可以看見,由于域間路由的傳播,R1上多達進20條路由,有R3宣告的4個。R4宣告的8個192.68網段的路由如果不進行匯總,會泛洪到全網,所以我們應該在Area 1和Area 2的ABR,也就是R2上進行匯總操作,具體操作如下:  

  R2(config)#router ospf 100?

  R2(config-router)#area 1 range 192.168.20.0 255.255.252.0

  R2(config-router)#area 2 range 192.168.32.0 255.255.248.0

此時查看R1的路由表,發現

  O IA?192.168.20.0/22 [110/21] via?12.1.1.2

   O IA?192.168.32.0/21 [110/12] via?12.1.1.2

  可以看見,Area 1和Area 2上的192.168網段已經完成了匯總。這樣會節省很多資源,拓撲發生變化也不會影響Area 0的路由表。

  域外匯總,在ASBR上進行

  拓撲圖不變,但將Area 2變為EIGRP?

R2更改配置

  router ospf 100

  no network 24.1.1.0 0.0.0.255 area 2

  router eigrp 90

  no auto-summary

  network 24.1.1.0 0.0.0.255

R4更改配置

  no router ospf 100

  router eigrp 90

  no auto-summary

  ? network 24.1.1.0 0.0.0.255

  ? network 4.4.4.4 0.0.0.0

  ? network?192.168.32.0 0.0.0.255

  ? network?192.168.33.0 0.0.0.255

  ? network?192.168.34.0 0.0.0.255

  ? network?192.168.35.0 0.0.0.255

  ? network?192.168.36.0 0.0.0.255

  ? network?192.168.37.0 0.0.0.255

  ? network?192.168.38.0 0.0.0.255

  ? network?192.168.39.0 0.0.0.255

之后在R2上進行雙向重分發

  ?? router ospf 100

  ? redistribute eigrp 90 subnets

  ?? router eigrp 90

  ? redistribute ospf 100 metric 1000 1 255 1 1500

  可以看見O E2標記的為外部的EIGRP路由,并沒有匯總。

在R2上進行域間路由匯總

  ?? router ospf 100

  ? summary-address 192.168.32.0 255.255.248.0

然后查看R1的路由表

  O IA?192.168.20.0/22 [110/21] via?12.1.1.2

  O E2?192.168.32.0/21 [110/20] via?12.1.1.2

  已經完成匯總。


整個華為數通學習筆記系列中,本人是以網絡視頻與網絡文章的方式自學的,并按自己理解的方式總結了學習筆記,某些筆記段落中可能有部分文字或圖片與網絡中有雷同,并非抄襲。完處于學習態度,覺得這段文字更通俗易懂,融入了自己的學習筆記中。如有相關文字涉及到某個人的版權利益,可以直接聯系我,我會把相關文字刪除。【VX:czlingyun ? ?暗號:CSDN】

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/41578.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/41578.shtml
英文地址,請注明出處:http://en.pswp.cn/web/41578.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

React中的useMemo和memo

引言 React是一個聲明式的JavaScript庫,用于構建用戶界面。在開發過程中,性能優化是一個重要的方面。useMemo和memo是React提供的工具,用于幫助開發者避免不必要的渲染和計算,從而提升應用性能。 問題背景 在React應用中&#…

實現antd designable平臺的組件拖拽功能

平臺:designable設計器 github:designable 目錄 1 背景2 技術棧3 組件拖拽和放置3.1 類型定義3.2 拖拽3.3 放置 1 背景 由于業務需求,我們需要實現designable平臺的一個簡易版的組件拖拽功能。 #mermaid-svg-QrxSDGe9YyGG3LbQ {font-family:…

【Unity2D 2022:UI】制作角色血條

一、創建血底UI 1. 創建畫布(Canvas) 2. 在畫布上添加血底圖像(Image)子物體 二、編輯血底UI 1. 將血底圖片拖入源圖像(Source Image)中 2. 點擊設置為圖片的原大小(Set Native Size&#x…

設計一個會員卡系統

會員卡系統在現代商業環境中是一個重要的客戶關系管理工具。通過會員卡系統,企業可以有效地增加客戶粘性,提高客戶滿意度,進而提升銷售額。本文將詳細討論如何設計一個全面的會員卡系統,包括會員卡的類型、權益設計、續費規則、升…

Java | Leetcode Java題解之第219題存在重復元素II

題目&#xff1a; 題解&#xff1a; class Solution {public boolean containsNearbyDuplicate(int[] nums, int k) {Set<Integer> set new HashSet<Integer>();int length nums.length;for (int i 0; i < length; i) {if (i > k) {set.remove(nums[i - …

# 三 JS的流程控制和函數

三 JS的流程控制和函數 3.1 JS分支結構 if結構 這里的if結構幾乎和JAVA中的一樣,需要注意的是 if()中的非空字符串會被認為是trueif()中的非零數字會被認為是true 代碼 if(false){// 非空字符串 if判斷為trueconsole.log(true) }else{console.log(false) } if(){// 長度為0…

GitHub詳解:代碼托管與協作開發平臺

文章目錄 一、GitHub簡介二、GitHub的核心功能2.1 倉庫&#xff08;Repository&#xff09;2.2 版本控制與分支&#xff08;Branch&#xff09;2.3 Pull Request2.4 Issues與Projects2.5 GitHub Actions 三、GitHub的使用方法3.1 注冊與登錄3.2 創建和管理倉庫3.3 使用Git進行代…

【密碼學】密碼學中的四種攻擊方式和兩種攻擊手段

在密碼學中&#xff0c;攻擊方式通常指的是密碼分析者試圖破解加密信息或繞過安全機制的各種策略。根據密碼分析者對明文、密文以及加密算法的知識程度&#xff0c;攻擊可以分為以下四種基本類型&#xff1a; 一、四種攻擊的定義 &#xff08;1&#xff09;唯密文攻擊(COA, C…

PCIe驅動開發(2)— 第一個簡單驅動編寫和測試

PCIe驅動開發&#xff08;2&#xff09;— 第一個簡單驅動編寫和測試 一、前言 教程參考&#xff1a;02_實戰部分_PCIE設備測試 教程參考&#xff1a;03_PCIe設備驅動源碼解析 二、驅動編寫 新建hello_pcie.c文件 touch hello_pcie.c然后編寫內容如下所示&#xff1a; #i…

【持續集成_03課_Jenkins生成Allure報告及Sonar靜態掃描】

1、 一、構建之后的配置 1、安裝allure插件 安裝好之后&#xff0c;可以在這里搜到已經安裝的 2、配置allure的allure-commandline 正常配置&#xff0c;是要么在工具里配置&#xff0c;要么在系統里配置 allure-commandline是在工具里進行配置 兩種方式進行配置 1&#xff…

原生JavaScript實現錄屏功能

1. 前言 使用JavaScript實現瀏覽器中打開系統錄屏功能 示例圖: 2. 源碼 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><…

LabVIEW機器視覺系統中的圖像畸變、校準和矯正

在機器視覺應用中&#xff0c;圖像畸變、校準和矯正是確保圖像準確性的關鍵步驟。LabVIEW作為一種強大的圖像處理和分析工具&#xff0c;提供了一系列功能來處理這些問題。以下是對圖像畸變、校準和矯正的詳細介紹。 圖像畸變 圖像畸變 是指由于攝像鏡頭的光學特性或拍攝角度問…

算法重新刷題

基礎算法 前綴和 一維前綴和 [USACO16JAN] Subsequences Summing to Sevens S - 洛谷 這一題主要是需要結合數學知識來求解&#xff0c; #include <iostream> #include <cstring> #include <cstdio> #include <algorithm>using namespace std;con…

06pymysql

【一】pymysql 1.我們可以利用pymysql在python中操作數據庫 原理是pyMySQL-->是封裝好的執行subprocess鏈接數據庫執行數據庫命令的模塊 官網&#xff1a;https://zetcode.com/python/pymysql/ 【二】使用示例 import pymysql from pymysql.cursors import DictCursor ?…

進入防火墻Web管理頁面(eNSP USG6000V)和管理員模塊

1、進入防火墻Web管理頁面 USG系列是華為提供的一款高端防火墻產品&#xff0c;其特點在于提供強大的安全防護能力和靈活的擴展性。 以eNSP中的USG6000為例&#xff1a; MGMT口&#xff08;web管理口&#xff09;&#xff1a;對應設備上的G0/0/0口&#xff0c;上面初始配有一…

如何在Spring Boot中實現實時通知

如何在Spring Boot中實現實時通知 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01;今天我們將討論如何在Spring Boot應用中實現實時通知功能&#xff0c;這在現代…

Java的awt和swing的區別

AWT&#xff08;Abstract Window Toolkit&#xff09;和Swing都是Java中用于創建圖形用戶界面&#xff08;GUI&#xff09;的工具包&#xff0c;但它們之間存在一些關鍵的區別。下面我將通過具體的例子來說明這些區別&#xff1a; 1. 跨平臺性能 AWT&#xff1a; AWT是基于本…

實驗六 圖像的傅立葉變換

一&#xff0e;實驗目的 1了解圖像變換的意義和手段&#xff1b; 2熟悉傅立葉變換的基本性質&#xff1b; 3熟練掌握FFT變換方法及應用&#xff1b; 4通過實驗了解二維頻譜的分布特點&#xff1b; 5通過本實驗掌握利用MATLAB編程實現數字圖像的傅立葉變換。 6評價人眼對圖…

LeetCode 每日一題 2024/7/1-2024/7/7

記錄了初步解題思路 以及本地實現代碼&#xff1b;并不一定為最優 也希望大家能一起探討 一起進步 目錄 7/1 2065. 最大化一張圖中的路徑價值7/2 3115. 質數的最大距離7/3 3099. 哈沙德數7/4 3086. 拾起 K 個 1 需要的最少行動次數7/5 3033. 修改矩陣7/6 3101. 交替子數組計數7…

第一周周日總結

題目總結 1.給你一個整數數組 hours&#xff0c;表示以 小時 為單位的時間&#xff0c;返回一個整數&#xff0c;表示滿足 i < j 且 hours[i] hours[j] 構成 整天 的下標對 i, j 的數目。 整天 定義為時間持續時間是 24 小時的 整數倍 。 例如&#xff0c;1 天是 24 小時…