HCNP Routing&Switching之BGP團體屬性和團體屬性過濾器

1874 發表於 2021-11-14

  前文我們瞭解了BGP的路由過濾已經as-path過濾器的使用相關話題,回顧請參考https://www.cnblogs.com/qiuhom-1874/p/15542559.html;今天我們來聊一聊BGP的團體屬性和團體屬性過濾器相關話題;

  BGP團體屬性(Community)

  BGP團體屬性是什麼呢?簡單講BGP的團體屬性是指標識具有相同特徵的BGP路由;我們可以理解為具有相同標籤的BGP路由;這個標籤就是它的團體屬性;只不過在BGP裡不叫標籤,而是叫團體屬性;所以tag不是BGP屬性,而團體屬性(community)才是它的屬性;團體屬性主要作用是讓BGP路由策略的應用更加靈活,降低維護管理的難度;不同的團體屬性,它的作用各不相同;如下所示,BGP公認團體屬性

HCNP Routing&Switching之BGP團體屬性和團體屬性過濾器

  提示:如果BGP的某些路由中帶有internet的團體屬性,這就意味著該路由可以向任何BGP鄰居宣告,即收到帶有該團體屬性的路由的路由器,它會把該路由向任何鄰居宣告,不管鄰居是IBGP還是EBGP,它都會宣告該路由;如果是no_advertise的團體屬性,就意味著該路由不能向任何BGP鄰居宣告,即收到該路由的路由器不會再向其他BGP鄰居宣告該網路(即便是IBGP也不會);如果團體屬性是no_export,則意味著該路由不會向EBGP鄰居宣告,但是可以向聯盟內的EBGP鄰居宣告(聯盟就是一個大的AS裡面有許多小AS,該團體屬性就是指在一個大的AS內的小AS之間可以正常傳遞和宣告路,但不會流出大as);如果團體屬性是no_export_dsubconfed,則該路由不但不會向任何EBGP鄰居宣告,包括聯盟內的EBGP鄰居;

  BGP路由預設是不允許宣告團體屬性給鄰居,就有點類似預設不宣告預設路由一樣;在向鄰居宣告帶有團體屬性的路由時,我們需要提前在本端路由器上開啟允許向鄰居宣告團體屬性給鄰居;團體屬性是可選可過渡屬性,即如果收到帶有團體屬性的路由的路由器,如果開啟了允許向鄰居傳送團體屬性給鄰居,則該路由器會繼承它收到的團體屬性,如果沒有開啟,則對應路由的團體屬性不會再傳遞給其他鄰居;當然團體屬性是可以繼承,也可以修改和疊加;

  BGP私有團體屬性

  當然團體屬性除了有公認的團體屬性,也有私有團體屬性;私有團體屬性就是自定義規則和應用方法;格式是AS(2位元組):Number(2位元組);一般私有團體屬性結合路由策略來做;

  實驗:根據拓撲配置BGP

HCNP Routing&Switching之BGP團體屬性和團體屬性過濾器

  各路由器配置,請參考https://www.cnblogs.com/qiuhom-1874/p/15495585.html

  在R1上使用路由策略將傳送個R2的1.1.1.1/32的路由打上internet的團體屬性

HCNP Routing&Switching之BGP團體屬性和團體屬性過濾器

  提示:首先我們需要用匹配工具將對應需要打上團體屬性的路由匹配出來,然後根據在根據路由策略將滿足匹配工具匹配出來的路由做打上團體屬性的操作;對於匹配工具預設沒有匹配上的路由,預設是拒絕操作,但是我們在路由策略裡允許所有,即放行沒有被匹配工具匹配上的路由(對沒有匹配上的路由不做任何操做);

  驗證:在R2上檢視對應路由是否被打上團體屬性?

HCNP Routing&Switching之BGP團體屬性和團體屬性過濾器

  提示:可以看到R2上並沒有收到任何團體屬性;這是因為團體屬性預設是不允許傳送的,要想傳送團體屬性,我們需要用命令明確開啟允許傳送團體屬性給鄰居;

  在R1上開啟允許團體屬性傳送給鄰居

HCNP Routing&Switching之BGP團體屬性和團體屬性過濾器

  提示:以上命令就表示允許向12.0.0.2宣告團體屬性;

  驗證:在R2上檢視是否收到R1傳送的團體屬性呢?

HCNP Routing&Switching之BGP團體屬性和團體屬性過濾器

  提示:可以看到R2收到的路由中只有1.1.1.1/32的路由帶有internet的屬性;這個屬性就是告訴R2該路由可以傳給任何鄰居;

  驗證:在R4上是否可以看到R1傳送的團體屬性呢?

HCNP Routing&Switching之BGP團體屬性和團體屬性過濾器

  提示:在R4上並沒有看到任何團體屬性,這是因為團體屬性本身就是可選可傳遞;在R1開啟允許傳送團體屬性給鄰居以後,對應R2可以收到R1傳送的團體屬性,但是R2並沒有明且允許傳送團體屬性給鄰居,所以R2傳送R4的路由中並不會攜帶團體屬性;要想R4能夠收到對應的團體屬性,我們只需要在R2上開啟允許團體屬性傳遞給鄰居即可;

  在R2上開啟允許團體屬性傳送給鄰居

HCNP Routing&Switching之BGP團體屬性和團體屬性過濾器

  驗證:在R4上檢視團體屬性,是否能夠收到R2傳送到團體屬性呢?

HCNP Routing&Switching之BGP團體屬性和團體屬性過濾器

  提示:如果R2上只是開啟了允許傳送團體屬性給鄰居,並沒有做團體屬性的修改,則預設R2會將R1傳送到團體屬性繼承傳送給R4;

  在R1上配置將7.7.7.7/32的路由傳送給R3時打上no_advertise的團體屬性

HCNP Routing&Switching之BGP團體屬性和團體屬性過濾器

  驗證:在R3上檢視R1傳送到團體屬性,看看對應團體屬性是否收到?

HCNP Routing&Switching之BGP團體屬性和團體屬性過濾器

  提示:可以看到R3上能夠正常收到7.7.7.7/32對應路由的團體屬性為no-advertise;該屬性表示7.7.7.7/32的路由不傳遞給其他任何鄰居;

  驗證:在R4上檢視是否能夠學習到7.7.7.7/32的路由呢?

HCNP Routing&Switching之BGP團體屬性和團體屬性過濾器

  提示:此時在R4的路由表中,對應7.7.7.7/32的路由就只有一條了,對應下一跳為12.0.0.1,並非13.0.0.1;說明該路由是經過R2學習到的;其原因是對應R3並不會傳送7.7.7.7/32的路由給R4,所以R4的BGP路由表中就只有一條從R2學習到的7.7.7.7/32的路由;

  在R1上將8.8.8.8/32的路由傳送給R2時打上no_export的團體屬性

HCNP Routing&Switching之BGP團體屬性和團體屬性過濾器

  提示:對於同一鄰居在同一方向只允許呼叫一條路由策略,所以此時我們看到對應1.1.1.1/32的路由策略就被8.8.8.8/32的路由策略覆蓋;如果需要都生效,我們需要該之前里加上對8.8.8.8/32的處理即可(匹配工具可以重新寫);

  驗證:在R2上檢視是否收到R1傳送的團體屬性?

HCNP Routing&Switching之BGP團體屬性和團體屬性過濾器

  提示:該屬性表示不將此路由傳送給EBGP鄰居,但可以向聯盟內的EBGP鄰居傳送;此環境沒有聯盟,所以我們驗證可以看對應R5是否能夠收到R2這邊傳送的8.8.8.8/32的路由即可;

  驗證:在R5上檢視對應8.8.8.8/32的路由是否能夠學習到呢?

HCNP Routing&Switching之BGP團體屬性和團體屬性過濾器

  提示:可以看到R5上並沒有學習到8.8.8.8/32的路由;這是因為R4上對應從R2學習過來的8.8.8.8/32的路由被打上了no-export的團體屬性,在R2上有配置了允許傳送團體屬性給鄰居,所以R2會將R1傳送到團體屬性繼承傳送給R4;恰好R4的BGP路由表中,對應從R2學習到的8.8.8.8/32的路由又是最優路由,所以R5並不會學習到8.8.8.8/32的路由(R4只會把最優路由傳送給R5,恰好R4上8.8.8.8/32的最優路由被打上了no-export的團體屬性,所以R5收不到8.8.8.8/32的路由);

  在R1上將傳送給R3的1.1.1.1/32的路由打上no-export-subconfed團體屬性

HCNP Routing&Switching之BGP團體屬性和團體屬性過濾器

  驗證:在R3上檢視對應團體屬性是否收到?

HCNP Routing&Switching之BGP團體屬性和團體屬性過濾器

  提示:該團體屬性表示對應路由不傳送給任何EBGP鄰居,包括聯盟內的EBGP鄰居;我這裡沒有配置聯盟,所以和上面的no-export效果一樣;最終都不會傳送給R5;但是此環境R3還是會將1.1.1.1/32的路由傳送給R4,因為R3並沒有開啟允許團體屬性傳送給鄰居,所以R3傳送給R4的路由對應團體屬性會丟失,即R4還是會將1.1.1.1/32的路由正常傳送給R5(如果從R3這邊學習到的1.1.1.1/32的路由是最優路由的話);

  在R3上開啟允許傳送團體屬性給鄰居

HCNP Routing&Switching之BGP團體屬性和團體屬性過濾器

  驗證:在R4上檢視對應的團體屬性

HCNP Routing&Switching之BGP團體屬性和團體屬性過濾器

  將R4的BGP路由表中從R3學習到的1.1.1.1/32的路由,本地優先順序修改為101,讓1.1.1.1/32 的路由,最優路由的下一跳為13.0.0.1

HCNP Routing&Switching之BGP團體屬性和團體屬性過濾器

  驗證:檢視R4的路由表,看看對應1.1.1.1/32的路由對應下一跳是否為13.0.0.1為最優路由呢?

HCNP Routing&Switching之BGP團體屬性和團體屬性過濾器

  驗證:在R5上檢視對應是否能夠學習到1.1.1.1/32的路由呢?

HCNP Routing&Switching之BGP團體屬性和團體屬性過濾器

  提示:可以看到R5上對應1.1.1.1/32的路由並不會學習到,這是因為R4上1.1.1.1/32的路由最優路由被打上了no-export-subconfed的團體屬性,該團體屬性就是告訴R4不要將此路由傳送給任何EBGP鄰居;所以R5學習不到;

  BGP團體屬性過濾器

  BGP團體屬性過濾器是指通過團體屬性來過濾路由,結合路由策略,將團體屬性過濾器當作匹配條件,從而達到修改路由的某些屬性等;BGP團體屬性過濾器分基本團體屬性過濾器和高階團體屬性過濾器,兩者最大的區別在於高階團體屬性過濾器可以使用正則來匹配,比基本團體屬性過濾器要更加靈活和強大;

  BGP團體屬性過濾器建立

  在R2上建立團體屬性過濾器

HCNP Routing&Switching之BGP團體屬性和團體屬性過濾器

  提示:團體屬性過濾器和acl差不多,1-99的編號表示基本的團體屬性過濾器,100-199是高階團體屬性過濾器;後面接允許或拒絕模式,模式後面接團體屬性,可以跟多個團體屬性,多個團體屬性之間是或關係,即表示滿足其中一個即可;

  團體屬性過濾器呼叫

HCNP Routing&Switching之BGP團體屬性和團體屬性過濾器

  提示:團體屬性過濾器可以通過路由策略來呼叫;上述命令表示匹配R1傳送的團體屬性no-export,將對應匹配的路由的團體屬性修改為internet;然後在R2的入方向呼叫對應的路由策略;

  驗證:在R2上檢視對應的團體屬性

HCNP Routing&Switching之BGP團體屬性和團體屬性過濾器

  提示:可以看到對應的團體屬性已經重寫為internet;

  私有團體屬性

  私有團體是屬性的格式為數字(2位元組):數字(2位元組);這兩數字本質沒有什麼貼吧的要求,只啊喲滿足2位元組即可;

  示例:在R1上將1.1.1.1/32的路由打上私有團體屬性1:2

HCNP Routing&Switching之BGP團體屬性和團體屬性過濾器

  在R3上檢視團體屬性

HCNP Routing&Switching之BGP團體屬性和團體屬性過濾器

  附加團體屬性

  在R3上附加團體屬性8:8

HCNP Routing&Switching之BGP團體屬性和團體屬性過濾器

  驗證:在R3上檢視團體屬性

HCNP Routing&Switching之BGP團體屬性和團體屬性過濾器

  提示:可以看到此時R3的1.1.1.1/32的路由就攜帶了兩個團體屬性1:2和8:8;後續R4可以根據這兩個團體屬性建立團體屬性過濾器來修改路由屬性等操作;

  示例:在R4上建立團體屬性過濾器,拒絕帶有1:2的團體屬性的路由

HCNP Routing&Switching之BGP團體屬性和團體屬性過濾器

  驗證:在R4上檢視bgp路由表,看看對應是否能夠從R3上學習到1.1.1.1/32的路由呢?

HCNP Routing&Switching之BGP團體屬性和團體屬性過濾器

  提示:可以看到此時R4上就沒有從R3傳送攜帶1:2的團體屬性的路由了;這裡需要提示一下,團體屬性過濾器和ip字首列表匹配規則類似,預設規則是拒絕,所以在路由策略裡需要加上空語句允許其他未被匹配到的路由;其實團體屬性過濾器就是針對BGP路由的專有過濾器,用法和其他過濾器大同小異,都是用作路由策略的匹配條件來修改路由屬性;