Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3386015
  • 博文数量: 631
  • 博客积分: 10716
  • 博客等级: 上将
  • 技术积分: 8397
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-01 22:35
文章分类

全部博文(631)

文章存档

2020年(2)

2019年(22)

2018年(4)

2017年(37)

2016年(22)

2015年(1)

2013年(12)

2012年(20)

2011年(19)

2010年(20)

2009年(282)

2008年(190)

分类: 系统运维

2010-05-20 09:34:00

这个属性在一般很少用得上,我估计在运营商的核心网络会用到。在AS域多的情况下将会收到很好的效果,其原理是启用BGP联邦,然后在子AS之间的路由器递送BGP community属性。碰巧俺搞过的企业网中用到这个BGP comunity 属性,我现在做点总结。

 

community属性。这是不同于选路属性的一个属性。该属性具有以下几个特点;

 

1 community是一个任选可透明传送属性,它可以简化策略的执行。

 

2 它是cisco的一个专有属性,现在在RFC1997中已被标准化。

 

3 commnity属性标明一个目的地作为一些目的地团体中的一个成员,这些目的地共享一个或多个共同的特性。

 

4 community值可以自己定义,另外有几个已经定义好的团体属性:

 

NO_ADVERTISE: 表示携带该值的路由不能公布给EBGP和 IBGP邻居

NO_EXPORT:表示携带该值的路由不能公布给EBGP邻居

LOCAL_AS:(NO_EXPORT_SUBCONFED)携带该值的路由可以公布给联盟内的其它子自治系统但不能在构成联盟的AS以外进行公布。

 

以下是一个BGP community 属性的配置实例,我是转载其他人的,我懒得贴我自己的配置了。

 

关于BGP <wbr>community <wbr>属性

 

r1#sh run | b r b

router bgp 100

 no synchronization

network 2.2.2.0 mask 255.255.255.0

 network 22.22.22.0 mask 255.255.255.0

 network 222.222.222.0

 neighbor 12.0.0.2 remote-as 234

 no auto-summary

 

r2#sh run | b r b

router bgp 64512

 no synchronization

bgp confederation identifier 234   /指明联邦号是234

 neighbor 12.0.0.1 remote-as 100

 neighbor 23.0.0.3 remote-as 64512  /R3跟它处于联邦内同一个子AS中

 neighbor 23.0.0.3 next-hop-self     /指定下一跳是它自己

 no auto-summary

 

r3#sh run | b r b

router bgp 64512

 no synchronization

 bgp confederation identifier 234

 bgp confederation peers 64513      /指明该联邦内的另一个子AS

 neighbor 23.0.0.2 remote-as 64512

 neighbor 34.0.0.4 remote-as 64513   /R4跟它处于联邦内不同子AS之间

 no auto-summary

 

r4#sh run | b r b

router bgp 64513

 no synchronization

 bgp confederation identifier 234

 bgp confederation peers 64512

 neighbor 34.0.0.3 remote-as 64512

 neighbor 45.0.0.5 remote-as 500

 no auto-summary

 

r5#sh run | b r b

router bgp 500

 no synchronization

 neighbor 45.0.0.4 remote-as 234

 no auto-summary

 

查看网络

r2#sh ip bgp

   Network          Next Hop            Metric LocPrf Weight Path

*> 2.2.2.0/24       12.0.0.1                            0 100 i

*> 22.22.22.0/24    12.0.0.1                             0 100 i

*> 222.222.222.0    12.0.0.1                            0 100 i

r3#sh ip bgp

   Network          Next Hop            Metric LocPrf Weight Path

*>i2.2.2.0/24       23.0.0.2                   100      0 100 i

*>i22.22.22.0/24    23.0.0.2                   100      0 100 i

*>i222.222.222.0    23.0.0.2                   100      0 100 i

在R2上已经修改了下一跳,所以这时下一跳已经是R2自己了。

r4#sh ip bgp

   Network          Next Hop            Metric LocPrf Weight Path

2.2.2.0/24       23.0.0.2                   100      0 (64512) 100 i

22.22.22.0/24    23.0.0.2                   100      0 (64512) 100 i

222.222.222.0    23.0.0.2                   100      0 (64512) 100 i

注意在R4上看,下一跳依然是R2;为什么不是R3呢?因为R3,R4虽然在同一联邦内,但它们在不同的子AS之间,应该是EBGP关系。EBGP之间传递路由时,下一跳因该是EBGP邻居。但这里为什么不是呢。这就是联邦内EBGP与联邦外EBGP的不同之处。所以现在这些路由的下一跳对于R4来说是不可达的,所以现在路由无法优化,也就无法向R5传递。现在在R3上修改下一跳

r3(config)#router bgp 64512

r3(config-router)#neighbor 34.0.0.4 next-hop-self

r4#sh ip bgp

   Network          Next Hop            Metric LocPrf Weight Path

*> 2.2.2.0/24       34.0.0.3                   100      0 (64512) 100 i

*> 22.22.22.0/24    34.0.0.3                   100      0 (64512) 100 i

*> 222.222.222.0    34.0.0.3                   100      0 (64512) 100 i

这时,在R4上看,下一跳已经变成了R3,路由可以优化。注意在AS路径中可以看到路由经过了子AS 64512

r5#sh ip bgp

   Network          Next Hop            Metric LocPrf Weight Path

*> 2.2.2.0/24       45.0.0.4                               0 234 100 i

*> 22.22.22.0/24    45.0.0.4                               0 234 100 i

*> 222.222.222.0    45.0.0.4                               0 234 100 i

R5上也可以收到这些路由了,注意R5的AS路径看不到子AS ,只能看到联邦的总AS号。因此可以得出这样的结论:联邦内的子AS对于联邦外部来说是隐藏的,不可见的。

 

到现在为止,所有路由器都可以学习到路由,下面就要应用团体属性来控制路由的传递了。

 三  配置团体属性,让2.2.2.0网络只被R2学习到

这里最合适的community属性应该是:no_advertise 因为它不会向任何EBGP IBGP邻居公布路由。

r1(config)#access-list 1 permit 2.2.2.0 0.0.0.255  /用ACL匹配该路由

 

r1(config)#route-map WY permit 10

r1(config-route-map)#match ip add 1

r1(config-route-map)#set community no-advertise  /设定团体属性

r1(config)#route-map WY permit 20 /与ACL一样 route-map最后也隐藏了一句deny any ,所以在这里要允许所有,要不然其它两条路由会因为匹配不上而无法从R1传递出去。

r1(config)#router bgp 100

r1(config-router)#neighbor 12.0.0.2 route-map WY out  /在进程下出方向调用route-map

r1(config-router)#neighbor 12.0.0.2 send-community /让R2传递该社团属性

 

先在R2上进行查看;

r2#sh ip bgp

   Network          Next Hop            Metric LocPrf Weight Path

*> 2.2.2.0/24       12.0.0.1                            0 100 i

*> 22.22.22.0/24    12.0.0.1                            0 100 i

*> 222.222.222.0    12.0.0.1                             0 100 i

R2可以学习到该路由

在R3上查看

r3#sh ip bgp

   Network          Next Hop            Metric LocPrf Weight Path

*>i22.22.22.0/24    23.0.0.2                   100      0 100 i

*>i222.222.222.0    23.0.0.2                   100      0 100 i

可以看到R3已经收不到2.2.2.0这个网络了,往后的路由器也无法收到了。所以社团属性

No_advertise 满足了只让R2学到该路由的需求。

 

四  配置团体属性,让22.22.22.0网络只被R2,R3学习到

因为R2,R3处于联邦内同一个子AS,意思是该路由不能传递出这个子AS,所以可以用community属性:LOCAL_AS

 

r1(config)#access-list 2 permit 22.22.22.0 0.0.0.255

 

r1(config)#route-map WY permit 10

r1(config-route-map)#match ip add 2

r1(config-route-map)#set community local-AS

r1(config)#route-map WY permit 20

 

现在进行查看

r2#sh ip bgp

   Network          Next Hop            Metric LocPrf Weight Path

*> 2.2.2.0/24       12.0.0.1                            0 100 i

*> 22.22.22.0/24    12.0.0.1                            0 100 i

*> 222.222.222.0    12.0.0.1                            0 100 i

R2可以学习到。

r3#sh ip bgp

   Network          Next Hop            Metric LocPrf Weight Path

*>i2.2.2.0/24       23.0.0.2                   100      0 100 i

*>i22.22.22.0/24    23.0.0.2                   100      0 100 i

*>i222.222.222.0    23.0.0.2                    100      0 100 i

R3也可以学到

r4#sh ip bgp

   Network          Next Hop            Metric LocPrf Weight Path

*> 2.2.2.0/24       34.0.0.3                   100      0 (64512) 100 i

*> 22.22.22.0/24    34.0.0.3                   100      0 (64512) 100 i

*> 222.222.222.0    34.0.0.3                   100      0 (64512) 100 i

为什么R4依然可以学习到,难道属性没起作用吗?显然属性没有起作用,这是因为R2向R3传递该路由时没有让R3继承这个属性,所以R4依然可以学习到,现在必须在R2上配置让R3继承这个属性,这样R3向R4传递路由时团体属性才能生效。

r2(config)#router bgp 64512

r2(config-router)#neighbor 23.0.0.3 send-community

在R2上配置让R3继承该属性

r4#sh ip bgp

   Network          Next Hop            Metric LocPrf Weight Path

*> 2.2.2.0/24       34.0.0.3                   100      0 (64512) 100 i

*> 222.222.222.0    34.0.0.3                   100      0 (64512) 100 i

现在R4就收不到这条路由了,R5当然也收不到,LOCAL_AS团体属性满足了这个需求。

 五  配置团体属性,让222.222.222.0网络只被R2,R3,R4学习到

这个需求意思是让这条路由不传到联邦外(大AS之外),所以要用NO_EXPORT属性

 

r1(config)#access-list 3 permit 222.222.222.0 0.0.0.255

 

r1(config)#route-map WY permit 10

r1(config-route-map)#match ip add 3

r1(config-route-map)#set community no-export

r1(config)#route-map WY permit 20

 

为了让R4能继承到该属性,必须在R1,R2,R3都配置send-community以便让该属性进行传递。在配置了传递属性之后,现在进行查看

r4#sh ip bgp

   Network          Next Hop            Metric LocPrf Weight Path

*> 2.2.2.0/24       34.0.0.3                   100      0 (64512) 100 i

*> 22.22.22.0/24    34.0.0.3                   100      0 (64512) 100 i

*> 222.222.222.0    34.0.0.3                    100      0 (64512) 100 i

R4可以收到

 

r5#sh ip bgp

   Network          Next Hop            Metric LocPrf Weight Path

*> 2.2.2.0/24       45.0.0.4                               0 234 100 i

*> 22.22.22.0/24    45.0.0.4                               0 234 100 i

R5已经学习不到222.222.222.0了。需求满足。

 

但上面的做法有一个明显的缺点就是要在R1,R2,R3上配置传递该属性,比较麻烦。

 

现在用另一种比较简单的方法。

在R4上直接进行配置。

r4(config)#access-list 1 permit 222.222.222.0 0.0.0.255

 

r4(config)#route-map WY permit 10

r4(config-route-map)#match ip add 1

r4(config-route-map)#set community no-export

r4(config)#route-map WY permit 20

 

r4(config)#router bgp 64513

r4(config-router)#neighbor 34.0.0.3 route-map WY in

指定R3向R4传递路由时应用该route-map,所以是in方向的。

 

现在在R5上进行查看

r5#sh ip bgp

   Network          Next Hop            Metric LocPrf Weight Path

*> 2.2.2.0/24       45.0.0.4                               0 234 100 i

*> 22.22.22.0/24    45.0.0.4                               0 234 100 i

这时,R5已经学习不到这条路由了,可见这种做法也起了作用 

 
阅读(2358) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~