边界网关协议学习指引( 九 )


第三章BGP协议高级特性及MBGP
在本章里 , 我们在前面讨论的基础上 , 来看一些BGP协议的高级特性 , 包括团体属性(COMMUNITY) , 扩展团体属性(EXTEND COMMUNITY) , BGP的多协议扩展 , 以及多协议扩展在MPLS-VPN中的应用 。这些高级特性是建立在前面介绍的概念的基础上的 , 在没有把握前面概念的情况下 , 看这部分内容将是很艰难的 , 所以假如读者觉得还没有把握前面的概念 , 建议把第二章内容再复习一遍 。
3.1 BGP团体属性和扩展团体属性
在前面我们介绍了BGP协议的下一跳 , AS-PATH , 本地优先和MED等属性 , 这些属性都有一个特定的目的 , 比如本地优先属性用于在AS内部控制流量怎样流出AS , 而MED属性则是在AS内部控制数据流量怎样进入AS , 这两个属性都是在AS有多条出口链路或多条入口链路的情况下使用的 。有关这两个属性 , 还有一个缺点就是 , 他们在跨越多个AS的时候是不起作用的 , 比如本地优先属性 , 当通过外部对等体连接向外发布的时候 , 该属性被清空 , 而MED属性也仅仅发生在两个AS之间的路由 传播上 。
但在有些情况下 , 我们希望实现跨越多个AS的路由策略 , 举一个例子 , 如下图所示:
三个AS(ISP)联合起来 , 共同提供INTERNET和专线租用服务 。这三个AS都提供这样三种服务:金牌服务 , 银牌服务和普通服务 。所谓金牌服务 , 就是提供最高的质量保证 , 但费用最高 , 银牌服务的服务质量次之 , 普通的服务就是通常的无服务质量要求的IP服务 , 即所谓的BEST EFFORT 。假设一个客户接入AS100 , 申请了金牌服务 , 这时候ISP会分给该客户一个IP地址网段 。现在的问题是 , 怎样在这三个AS内部对这个客户发出的数据流量进行调度 , 使之达到规定的服务质量 。
我们可以这样做:
1、这三个AS通过外EBGP(外部BGP对等体连接)连接起来 , 如上面的图中所示;
2、客户接入的AS(假设为AS10)在向AS20通告客户的路由时 , 把该路由上附加一种非凡的标记 , 这种标记是三个AS事先约定好的;
3、AS20在接收到从AS10发送过来的路由后 , 会查看该路由携带什么样的标记 , 假如携带的标记表示该路由需要金牌服务 , 则该AS内部路由器会对这些路由进行非凡处理;
4、AS20在完成自己的处理后 , 重新把这些带标记的路由分发给AS30 , AS30内的路由器也会进行跟AS20一样的处理 。
在BGP中 , 这种标记也以属性的方式实现 , 在这里 , 这种标记就是团体属性 。所谓团体属性 , 也是跟随路由一起发送出去的一种非凡的数据 , 一般情况下 , 路由携带一个团体属性列表 , 列表中包含许多个团体属性值 , 每个团体属性值是一个四字节的整数 。
有了团体属性 , 就相当于给路由打上了标记(需要注重的是 , 可能不止一个标记 , 因为团体属性是一个四字节整数组成的数组) , 接收到该路由的路由器就可以根据该标记对路由作出适当的处理 。
为了加深对团体属性的理解 , 我们再举一个例子 , 还是上面的网络结构 , AS20通告给AS10的路由分为两部分:一部分是AS20自己产生的 , 另外一部分AS30传播给AS20的 , 这时候 , AS20的治理者想实现这样的功能:在把这两部分路由通告给AS10的时候 , 只想让AS10把AS30的路由再向另外的AS通告 , 而AS20自己本身的路由则不想让AS10再向外通告 , 而保留在AS10内部 。这样 , AS20就可以这样实现(实际上 , 这种实现方式已经成了一种标准 , 并由此而约定了一个非凡的团体属性NO_EXPORT):
1、在向AS10通告路由的时候 , 把自己产生的路由附加上一种非凡的团体属性 , 而从AS30接收的路由则不加任何团体属性;

推荐阅读