所以有几点-
1.) NO_ADVERTISE 旨在防止给定的 BGP 发言者进一步传播路由。因此,在这种情况下,将此属性添加到向对等点通告的给定路由实际上会阻止该路由被推送到运营商网络的其余部分。您可能需要考虑 NO_EXPORT,它旨在限制给定前缀的传播超出联盟(如果联盟未使用,则限制整个 AS)。请参阅RFC1997,了解有关一般社区和特别是知名社区的行为的详细信息。
2.) 众所周知的社区不必 - 必须 - 受到尊重,但一般来说,它们在大多数实现中都是默认的(..除非您选择明确去除这些值)。但是,它们在本质上往往是全有或全无 - 因此,例如,表示给定路由不能传播通过直接对等路由器或通过对等路由器的 ASN。在这种情况下,将 NO_EXPORT 放在路由上会阻止 BT 向 Cisco或Sprint 做广告,但会允许它出现在 BT ASN 内的任何其他路由器中。
3.) 在这种情况下,BT 和客户路由器的所有者必须就社区值及其特殊含义达成一致,如果您希望有选择地向给定的上游对等点通告(或不明确地不通告)路由。您的运营商还可能会附加社区,指示给定路线是来自其他直接客户还是来自上游运输(这是减少表格大小的便捷方法)。除了上面提到的众所周知的价值观之外,其他一切都有可能被抢夺,而且如上所述,没有标准保证(除了与运营商协商的内容)什么行为对应于什么社区。也无法保证任何运营商都会在前缀穿过其网络时保留附加的社区。
所以让我们举一个相当简单的例子。在 BT 路由器(我们称之为 ASN2856)上,我们将在其对 CUSTOMER(我们称之为 ASN65400)、Sprint (ASN1239) 和 Cisco (ASN109) 的每个对等点上设置一个过滤器,以便仅使用 xxx:ASN 进行路由将被允许。因此,如果我们将 65400:109 放在路由上而不是65400:1239,那么该路由将被允许到 Cisco 而不是 Sprint。如果65400 :1239和65400:109 都附加到前缀,则路由将同时到达两者。如果两者都不是,那么路由将停留在 ASN2856 内。
所以在BT上我们会有类似的东西
ip community-list to-cisco permit .*:109
ip community-list to-sprint permit .*:1239
ip community-list to-customer permit .*:65400
route-map CISCO-PEER-OUT permit 10
match community to-cisco
set community none
route-map CISCO-PEER-OUT deny 20
route-map SPRINT-PEER-OUT permit 10
match community to-sprint
set community none
route-map SPRINT-PEER-OUT deny 20
route-map CUSTOMER-PEER-OUT permit 10
match community to-customer
set community none
route-map CUSTOMER-PEER-OUT deny 20
! Start the BGP section
neighbor 1.1.1.1 send-communities
neighbor 1.1.1.1 remote-as 109
neighbor 1.1.1.1 route-map CISCO-PEER-OUT out
neighbor 2.2.2.2 send-communities
neighbor 2.2.2.2 remote-as 1239
neighbor 2.2.2.2 route-map SPRINT-PEER-OUT out
neighbor 3.3.3.3 send-communities
neighbor 3.3.3.3 remote-as 65400
neighbor 3.3.3.3 route-map CUSTOMER-PEER-OUT out
在客户路由器上,你会有这样的东西
ip prefix-list ROUTES-FOR-CISCO permit 192.168.1.0/24
route-map MARK-ROUTE permit 10
match ip address prefix-list ROUTES-FOR-CISCO
set community 65400:109
route-map MARK-ROUTE permit 20
match any
set community 65400:109 65400:1239
!BGP section
neighbor 3.3.3.4 remote-as 2856
neighbor 3.3.3.4 send-community
neighbor 3.3.3.4 route-map MARK-ROUTE out
这会将前缀 192.168.1.0/24 设置为社区 65400:109,这将允许路由仅发送到 ASN109。所有其他路线将同时具有 65400:109 和 65400:1239 - 这将允许所述路线前往任一运营商。在 BT 路由器上,我还将其设置为清除发送到对等点的路由上的所有社区 - 例如,CISCO 对等点不会看到您包含的 65400:109 社区。
当然,在实践中,社区的结构可能不会完全像这样,但希望这能让您领略到什么是可能的。
希望这可以帮助-