以下内容摘笔者编著,现在接受最优惠的7折预订(并送特制的2011年台历),即将于11月8号首发上市的《路由器配置与管理完全手册——H3C篇》。本书完整目录参见:http://winda.blog.51cto.com/55153/353767

其姊妹篇——《路由器配置与管理完全手册——Cisco篇》的完整目录参见:http://winda.blog.51cto.com/55153/333804

10.1.2 BGP的几种主要路由属性

BGP路由属性是BGP 路由的核心概念。它是一组参数,在路由更新消息中一同被发给连接对等体/对等体组。这些参数记录了BGP路由信息,用于选择和过滤路由。它们可以被看作是选择路由的度量(metric)。

BGP路由属性可以分成四类:公认强制(Well-known mandatory attributes)、公认自由选择(Well-known discretionary attributes)、可选传递(Optional transitive attributes)和可选非传递(Optional nontransitive attributes)。

公认的(Well-known)属性对于所有的BGP路由器来说都是可辨别的;每个路由更新消息中都必须包含强制(mandatory)公认属性,而自由选择的(discretionary)公认属性则是可选的,可包括也可不包括。对于可选的(Optional)属性,不是所有的BGP工具都支持它。当BGP不支持这个属性时,如果这个属性是过渡性的(transitive),则会被接受并传给其他的BGP对等体;如果这个属性是非传递性的(nontransitive),则被忽略,不传给其他对等体。
       在技术文档RFC1771定义了1~7号的BGP路由属性,依次是:1,ORIGIN(产生该路由信息的AS);2,AS_PATH(包已通过的AS集或序列);3,NEXT_HOP(要到达该目的下一跳的IP地址,iBGP连接不会改变从EBGP发来的NEXT_HOP);4,MULTI_EXIT_DISC(MED,本地路由器使用,区别到其他AS的多个出口);5,LOCAL-PREF(在本地AS内传播,标明各路径的优先级);6,ATOMIC_AGGREGATE;7,AGGREGATOR。在RFC1997中还定义了8,COMMUNITY。

在上面这些属性中,1、2号属性是公认强制;3、5、6是公认可选;7、8是可选过渡(“过渡”的意思就是可以传播到其他AS中);4是可选非过渡。这些属性在路由的选择中,考虑的优先级是不同的。仅就这8个属性来说,其中优先级最高的是LOCAL-PREF,接下来是ORIGIN和AS_PATH。

在配置BGP路由时,首先需要了解BGP路由的一些主要属性,否则很难正确理解本章后面所要介绍的BGP路由配置步骤,因为尽管有些属性从名字上看起来它与其他路由属性一样,但内涵有着比较明显的区别。

1. ORIGIN(源)属性

这是公认强制的BGP属性。Origin属性指明了当前路由是从哪里得到的,用来标记一条路由的路由信息源。这在显示BGP路由表时每条BGP路由信息中都会有体现的。它有以下三种类型:

IGP(i):是BGP用Network命令通告的IGP路由表中存在的路由,优先级最高,说明路由产生于本AS内。

EGP(e):是从eBGP邻居那里学习得到的路由,优先级次之。

incomplete(?):优先级最低,它并不是说明路由不可达,而是表示路由的来源无法确定。例如,引入的其它路由协议的路由信息。

2. AS_PATH(AS路径)属性

这也是公认强制的BGP属性。AS_PATH属性是一定顺序记录了某条路由从本地到达目的地址,一路所经过的所有AS号,这就是“AS路径”的含义。当BGP将一条路由通告到其他AS时,便会把本地AS号添加在AS_PATH列表的最前面。收到此路由的BGP路由器根据AS_PATH属性就可以知道去目的地址所要经过的AS。离本地AS最近的相邻AS号排在前面,其他AS号按顺序依次排列。通过观察AS_PATH,BGP Speaker可以找出路由是从哪个自治系统产生的,以及这个路由传递经过了多少AS。最右边的AS号就是路由的产生者,最左边的AS号就是刚刚声明了路由的那个相邻的AS。处于AS_PATH中间的AS号是路由传递经过的AS。这样的AS_PATH序列被称为AS_SEQUENCE,AS_PATH序列就处在它的维护的序列中。但通常情况下,BGP不会接受AS_PATH中已包含本地AS号的路由,从而避免了形成路由环路的可能。也就是只有在eBGP Peer之间通告路由时,才会在AS_PATH列表中添加AS号,同一个AS中的通告不会添加AS号的。如果某台BGP路由器从其外部Peer收到某条路由的AS_PATH列表中包含了自己的AS号,则该路由就知道出现了环路,因而丢弃该路由。

如图10-1中有两条从AS 50区域中路由器到达目的网络8.0.0.0的路由,根据箭头所示的路由通告方向(通告方向是路由路径的反方向)可以看出,在AS_PATH列表中依次添加了所经过的AS号,并且是最近的处于最前面,其他AS号按顺序依次排列,中间以逗号分隔。如最后D=8.0.0.0(30,20,10)和D=8.0.0.0(40,10)。

图10-1 AS_PATH属性示例

同时,AS_PATH属性也可用于路由的选择和过滤。在其他因素相同的情况下,BGP会优先选择路径较短的路由。比如在前面的图10-1中,AS 50中的BGP路由器会优先选择经过AS 40的路径作为到目的地址8.0.0.0的最优路由。

在某些应用中,可以使用路由策略来人为地增加AS路径的长度,以便更为灵活地控制BGP路由路径的选择。通过配置AS路径过滤列表,还可以针对AS_PATH属性中所包含的AS号来对路由进行过滤。这些具体将在本章后面介绍。

3. NEXT_HOP(下一跳)属性

这也是公认强制的BGP属性。BGP是一个AS到AS的路由协议,并不是一个路由器到路由器的路由协议。在BGP中,下一跳的意思并不是指下一下路由器,而是指到达另一个AS的IP地址。所以BGP路由的NEXT_HOP属性中所描述的IP地址不总是邻居路由器的IP地址。具体规则如下。

如果发起路由的路由器与接收通告的路由器位于不同AS(它们之间是eBGP关系),那么下一跳是通告路由的对应路由器接口。如图10-2中的AS 100路由器产生到达8.0.0.0网络的路由通告给AS 200路由器时,下一跳地址就是AS 100路由器与AS 2000路由器连接时所用的接口IP地址1.1.1.1/24。

如果BGP Speaker把接收到的路由(并不是由他发起的)发送给eBGP对等体时(它们之间也是eBGP关系),将把该路由信息的下一跳属性设置为转发路由的对应路由器接口。如图10-2中的AS 200向AS 300中左边那台路由器转发从AS 100得到的路由通告时,其路由的下一跳地址为AS 200与AS 300中左边那台路由器相连时所用的接口的IP地址1.1.2.1/24。

图10-2 BGP下一跳属性示例

BGP Speaker把从eBGP邻居得到的路由转发给iBGP邻居时(它们之间是iBGP关系,但路由是来自其他AS),不改变该路由信息的下一跳属性,也就是路由中原来的下一跳是什么地址就是什么地址。如图10-2中AS 300左边那台路由器转发从AS 200获得的路由通告到相同区域中的右边那台路由器时,其下一跳没有改变,仍为AS 200与AS 300中左边那台路由器相连时所用的接口的IP地址1.1.2.1/24。如果配置了负载均衡,路由被发给iBGP邻居时则会修改下一跳属性。

如果通告路由的路由器与接收通告的路由器属于同一个AS(它们之间是iBGP关系),且所通告的路由是本AS中的,则下一跳为邻居路由器的接口IP地址。只有这种情况才与RIP、OSPF路由的下一跳是一样的。

4. LOCAL_PREF(本地优先)属性

这是公认自选的BGP属性。LOCAL_PREF属性用于判断流量离开AS时(后面将要介绍的MED属性是进入AS时)的最优路由。LOCAL_PREF属性仅在iBGP对等体之间交换和比较,不通告给其他AS。它表明BGP路由器的优先级。

当BGP的路由器通过不同的iBGP对等体得到目的地址相同,但下一跳不同的多条路由时,将优先选择LOCAL_PREF属性值较高的路由。如图10-3所示,在Router D上学习到了有两条通过同一AS中的路由器路径可以到达Router A,这时就可以使用本地优先级进行选路了,经过比较最终确定从AS 20到AS 10的流量将选择Router C作为出口,因为Router C中的LOCAL_PREF属性值为200,高于Router B中的LOCAL_PREF属性值100。

图10-3 BGP LOCAL_PREF属性示例

5. MED(MULTI_EXIT_DISC)属性

MED(Multi-Exit Discriminators,多出口区分)属性是一个可选非过渡(也就是不能传播到其他AS中)属性。MED属性相当于IGP使用的度量值(metrics),用于判断流量进入AS时的最优路由。MED属性仅在相邻两个AS之间交换,收到此属性的AS一方不会再将其通告给任何其他第三方AS。当一个BGP路由器通过不同的eBGP对等体得到目的地址相同,但下一跳不同的多条路由时,在其它条件相同的情况下,将优先选择MED值较小者作为最优路由。如图10-4所示,从AS 10到AS 20的流量将选择Router B作为入口,因为Router B中的MED值为0,小于Router C中的MED值100。

图10-4 BGP MED属性示例

一般情况下,路由器只比较来自同一AS中多个eBGP邻居路径(也就是这些路径来自同一个eBGP AS)的MED属性,不比较来自不同AS的MED值。若非得要比较的话,则通过配置compare-different-as-med命令,可以强制BGP比较来自不同AS的路由的MED属性值。

6. COMMUNITY(团体)属性

Community属性是一个可选过渡BGP属性,是一组有相同特征的目的地址的集合,用来简化路由策略的应用和降低维护管理的难度。团体中具体集合的路由数量没有物理上的边界,与其所在的AS无关。公认的团体属性有:

INTERNET:默认情况下,所有的路由都属于INTERNET团体。具有此属性的路由可以被通告给所有的BGP对等体。

NO_EXPORT:具有此属性的路由在收到后,不能被发布到本地AS之外。如果使用了联盟,则不能被发布到联盟之外,但可以发布给联盟中的其他子AS。

NO_ADVERTISE:具有此属性的路由被接收后,不能被通告给任何其他的BGP对等体。

NO_EXPORT_SUBCONFED:具有此属性的路由被接收后,不能被发布到本地AS之外,也不能发布到联盟中的其他子AS。

深入理解BGP的几个路由特性(试读连载六)相关推荐

  1. ASP.NET MVC5+ 路由特性

    概述 ASP.NET MVC 5支持一种新的路由协议,称为路由特性. MVC5也支持以前定义路由的方式,你可以在一个项目中混合使用这两种方式来定义路由. 案例 1.使用Visual Studio 20 ...

  2. 理解 RIPv1使用广播更新路由与RIPv2使用组播更新路由的区别

                 理解 RIPv1使用广播更新路由与RIPv2使用组播更新路由的区别 RIP版本1使用广播更新,版本2使用组播更新,RIP版本2的更新方式比RIP版本1更有效,如图6.25所示 ...

  3. 深入理解C# 3.x的新特性(2):Extension Method[下篇]

    四.Extension Method的本质 通过上面一节的介绍,我们知道了在C#中如何去定义一个Extension Method:它是定义在一个Static class中的.第一个Parameter标 ...

  4. 深入理解C# 3.x的新特性(5):Object Initializer 和 Collection Initializer

    深入理解C# 3.x的新特性系列自开篇以后,已经有两个月了.在前面的章节中,我们先后深入讨论了C# 3.x新引入的一些列新特性:Anomynous Type.Extension Method.Lamb ...

  5. [原创]深入理解C# 3.x的新特性(3):从Delegate、Anonymous Method到Lambda Expression

    较之前一个版本,对于C# 3.x和VB 9来说,LINQ是最具吸引力的.基本上很多的新的特性都是围绕着LINQ的实现来设计的.借助Extension Method,我们可以为LINQ定义一系列的Ope ...

  6. 深入理解JavaScript中的属性和特性

    深入理解JavaScript中的属性和特性 JavaScript中属性和特性是完全不同的两个概念,这里我将根据自己所学,来深入理解JavaScript中的属性和特性. 主要内容如下: 理解JavaSc ...

  7. 最新:深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)周志明

    本书一共分为五个部分:走近Java.自动内存管理.虚拟机执行子系统.程序编译与代码优化. 高效并发.各个部分之间基本上是互相独立的,没有必然的前后依赖关系,读者可以从任何一个感兴 趣的专题开始阅读,但 ...

  8. 读书笔记之《深入理解Java虚拟机:JVM高级特性与最佳实践》

    本篇带来的是周志明老师编写的<深入理解Java虚拟机:JVM高级特性与最佳实践>,十分硬核! 全书共分为 5 部分,围绕内存管理.执行子系统.程序编译与优化.高效并发等核心主题对JVM进行 ...

  9. 深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)读书笔记

    前言 我在读 深入理解java虚拟机 这本书,把整体其中的关键点标记了,希望自己对它有个不一样的理解,也希望大家能看看这本写的很好的书 深入理解Java虚拟机:JVM高级特性与最佳实践(第3版) pd ...

  10. bgp机房的动态路由和静态路由的区别

    文章目录 前言 一.什么是bgp 二.什么是动态bgp路由 三.什么是静态bgp路由 前言 随着互联网产业的高速发展,bgp机房成为助力互联网发展的重要数据中心产品.要想搞清楚bgp动态路由和bgp静 ...

最新文章

  1. 【论文阅读----DDI(1)】MUFFIN: multi-scale feature fusion for drug–drug interaction prediction
  2. 【iOS 开发】基本 UI 控件详解 (UIButton | UITextField | UITextView | UISwitch)
  3. 成功解决AttributeError: module 'tensorflow.nn.rnn_cell' has no attribute 'linear'
  4. MySQL的查询性能优化——《深究MySQL》
  5. Python面向对象基础示例_创建对象
  6. MySQL笔记(八)存储过程procedure
  7. 【工具】之搭建个人博客
  8. TensorFlow学习笔记--第一节 hello TensorFlow
  9. openssl 升级到OpenSSL 1.0.1g 修复HEARTBEATS漏洞
  10. linux select 与 阻塞( blocking ) 及非阻塞 (non blocking)实现io多路复用的示例
  11. 平衡自行车的原理以及制作方法
  12. Xcode真机调试 could not lunch failed to get reply to handshake packet
  13. 输入一个字符串,输出该字符串中字符的所有组合。(腾讯2014笔试附加题)
  14. IPv6基础知识总结
  15. pollard_rho
  16. Android如何做出带有复杂水印的图片
  17. 程序员电脑组装_解密中国互联网企业创始人,程序员是如何打下半壁江山的?...
  18. 计算机考研 | 2020我计算机考研为什么会失败+复盘(备战2022)
  19. Ghost XP SP2下如何安装IIS的解决方案
  20. f4ck论坛的小游戏(灌水贴)

热门文章

  1. win10双显卡怎么切换amd和英特尔_win10双显卡怎么切换
  2. delphi 中文转 ascii编码_【转】Python 中文编码
  3. 力扣-724 寻找数组的中心索引
  4. Android setOnPageChangeListener 过时解决
  5. SQL Server-【知识与实战II】条件查询、比较运算符查询、模糊查询、枚举查询、范围查询、空值查询、多重条件查询
  6. 7-2 温度转换 (5 分)
  7. Android开发过程为C文件或者C++文件配置打印Logcat信息
  8. vs2017安装好后颜色主题、字体、语言包的设置
  9. 通过数据流处理-微信小程序生成临时二维码
  10. JAVA中反射机制五(JavaBean的内省与BeanUtils库)