内容发布更新时间 : 2024/11/1 7:19:07星期一 下面是文章的全部内容请认真阅读。
NEXT_HOP中IP地址的填写遵循如下规则:
(1) 如果是发布给EBGP对等体,NEXT_HOP填写BGP发布者的IP地址 (2) 如果是发布给IBGP对等体,且路由来自AS外部,则NEXT_HOP保留原始的AS外部对等体的IP地址
4) MULTI_EXIT_DISC
MULTI_EXIT_DISC被用来区分同一个邻接AS的多个接口,是一个可选非过渡属性,一般简写为MED。MED只在EBGP发布的路由中产生,接收者可以向它的IBGP邻居转发,但不允许向它的EBGP对等体转发。假设一个AS和邻接AS有多个接口相连,通过发布不同的MED给对端,就可以控制进入网络的流量从MED值最小的那个接口进来。通常情况下,BGP只比较来自同一个AS的路由的MED属性值。 5)LOCAL_PREF
LOCAL_PREF用来通告路由的优先程度,是公认可选属性。
LOCAL_PREF属性仅在IBGP对等体之间交换,不通告给其他AS。当BGP的路由器通过不同的IBGP对等体得到目的地址相同但下一跳不同的多条路由时,将优先选择LOCAL_PREF属性值较高的路由。 6) ATOMIC_AGGREGATE
ATOMIC_AGGREGATE是用来通告路由接收者,该路由是经过聚合的,是公认可选属性。
有时BGP发布者会收到两条重叠的路由,其中一条路由包含的地址是另一条路由的子集。一般情况下BGP发布者会优选更精细的路由(前者),但是在对外发布时,如果它选择发布更粗略的那条路由(后者),这时需要附加上ATOMIC-AGGREGATE属性,以知会对等体。它实际上是一种警告,因为发布更粗略的路由意味着更精细的路由信息在发布过程中丢失了。在进行路由聚合时,对于聚合的路由信息会添加ATOMIC-AGGREGATE属性。 7) AGGREGATOR
AGGREGATOR是ATOMIC_AGGREGATE属性的补充,是可选过渡属性。 如前面所述,ATOMIC_AGGREGATE是一种路由信息丢失的警告,AGGREGATOR属性补充了路由信息在哪里丢失——它包含了发起路由聚合的AS号码和形成聚合路由的BGP发布者的IP地址。在进行路由聚合时,当对于聚合的路由信息同添加ATOMIC-AGGREGATE属性的同时,会添加AGGREGATOR属性。 8) COMMUNITY
COMMUNITY是一组共享相同属性的目的地集合,是可选过渡属性[2]。
5
团体属性用来简化路由策略的应用和降低维护管理的难度,没有物理上的边界,与其所在的AS无关。公认的团体属性有:
INTERNET:缺省情况下,所有的路由都属于INTERNET团体。具有此属性的路由可以被通告给所有的BGP对等体。
NO_EXPORT:具有此属性的路由在收到后,不能被发布到本地AS之外。如果使用了联盟,则不能被发布到联盟之外,但可以发布给联盟中的其他子AS。
NO_ADVERTISE:具有此属性的路由被接收后,不能被通告给任何其他的BGP对等体。
NO_EXPORT_SUBCONFED:具有此属性的路由被接收后,不能被发布到本地AS之外,也不能发布到联盟中的其他子AS。 9) ORIGINATOR_ID
ORIGINATOR_ID用于标识路由反射器,是可选非过渡属性[3]。
为了防止引入路由反射器之后出现环路,增加ORIGINATOR_ID这个属性来标识,反射器在发布路由时加入ORIGINATOR_ID,当反射器收到的路由信息中的ORIGINATOR_ID就是自己的ROUTER_ID时,就可以发现路由环路的出现,将该路由丢弃,不再转发。 10) CLUSTER_ID
CLUSTER_ID用于标识路由反射器组,是可选非过渡属性。
CLUSTER_ID属性也是用来防止环路,在路由经过路由反射器时路由反射器会将自己的CLUSTER_ID添加到路由携带的CLUSTER_LIST中,当路由反射器发现接收的路由的CLUSTER_LIST中包含有自己的CLUSTER_ID,则将该路由丢弃,不再转发。
2.1.2 BGP邻居的建立过程
BGP的路由是靠邻居来传播的,所以BGP的应用就是建立在邻居上的。应用BGP 的第一步就是建立起BGP邻居,而BGP邻居的建立是通过相互发送数据包,即Message。之后就是一个相互协商的过程[4]。 1) BGP邻居协商的消息类型
BGP邻居协商分为4种Message : open、keep alive、update、notification. 1. Open (code 1):用于建立连接,包含版本号(如BGP3/BGP4)Hold Time=180s(是一个协商的过程,以较小的Hold Time为准),Router-ID(OSPF和BGP可以手动配置),AS号(范围从1~65535,其中64512~65535 的AS编号范围留作私有);
2. Keep Alive(code 4):周期发送用于维护连接检查路径(这个包是不可靠的),T=Hold Time/3, Hold Time=0 => No Keep Alive.,keep alive 是个19 字
6
节周期发送的BGP 消息头标,没有数据域。
3. Update(code 2):消息包含了三个组件:网络层可达性消息(NLRI)、路径属性和被撤销的路由。包括到达目的网络的路径和属性,更新路由信息用,一次更新只有一条路径,但可以有多条网络。Update可以删除(宣告不可达)和增加(宣告可达)路由.其内容是前缀的长度。
4. Notification(code 3):网络中出现错误(Error),检测到后断开连接并发送通知给对方。
5.Route-Reflesh message:一个可选的message (negotiated during capability advertisement) that is sent to request dynamic BGP route updates from the Adj-RIB-Out table of a remote BGP speaker 。 2) BGP邻居建立会话的5种状态
1、Idle:查找路由表,该过程BGP对它的资源进行初始化,复位一个连接重试计时器,发起一条TCP 连接,并开始倾听远程对等体所发起的连接。 2、Connect:找到路由表后进行TCP三次握手,TCP 连接成功,则转到Open Sent状态,TCP连接失败,则转到active 状态,将尝试再次连接。
3、Open Sent:握上手后发送Open message消息,等待其对等体发送打开消息,如果出错,则发送一条出错消息并退回空闲状态,如果无错,则开始发送Keep alive 并复位keep alive 计时器。
4、Open Confirm:收到对方发来的Open消息,如果收到keep alive 消息,BGP 就进入established状态,邻居关系协商完成;如果系统收到一条更新或keep alive 消息,它将重新启动保持计时器;如果收到Notification消息,BGP 就退回到空闲状态。
5、Established:会话建立,邻居关系协商过程最终状态;这时BGP将开始与它的对等体交换路由更新数据包。
6、Active状态:当路由器发送出OPEN包给邻居等待回应,如果长时间未接收到回应则超时,超时后状态更改为Idle,试图发起TCP连接获得对等体,成功转到Open Sent状态。连接重试计时器超时,退回连接状态,这是由于TCP链路上出现了问题所致。
2.1.3 BGP原则
BGP的路由的通告,路由的选择,下一跳等等问题都是按照一系列的原则来执行的。BGP路由表中的路由就是按照这些原则形成的[5]。 1) BGP路由通告原则
在BGP邻居建立的基础上,将BGP表中最优的路由使用Update报文通告给BGP邻居。
7
1、多条路径时,BGP只选最优的路由给自己用。 2、BGP只把最优的路由通告给它的邻居。
3、从EBGP学到的路由会通告给他所有的BGP邻居(包括EBGP和IBGP)。 4、从IBGP学到的路由不通告给其他的IBGP邻居。
5、从IBGP学到的路由是否通告给它的EBGP邻居视同步情况而定。(在非同步状态下,会降从IBGP学到的路由通告给它的EBGP邻居;同步状态下,只将达到同步的路由通告给它的EBGP邻居)。
6、BGP是距离矢量路由协议,遵从水平分割原则:包括基于邻居的水平分割、基于AS_Path的水平分割。
基于邻居的水平分割:从BGP邻居学到的路由不通告给该BGP邻居。 基于AS_Path的水平分割:向EBGP邻居通告路由时,在As_Path属性中附加上自己的AS号;接受BGP邻居通告过来的路由时,丢弃AS_Path属性中含有自己AS号的路由。
7、BGP邻居一建立,就将自己所有的最优路由通告给它的邻居。 8、增量更新与路由撤销
BGP邻居状态Established,从邻居通告过来的路由有效,BGP只需通过KeepAlive来维持邻居关系,不需要进行路由定期更新。
BGP采用增量更新机制:当新发布某些路由时,BGP只将这些新发布的路由通告给邻居;当某些路由失效时,BGP只向邻居发送Withdrawn消息撤销这些路由。
BGP邻居DOWN,从邻居通告过来的路由立即失效,从BGP表中清楚这些路由并向其他邻居发送路由撤销消息撤销这些路由。
9、BGP路由的管理距离
Cicso: EBGP: 20 IBGP:200 本地始发:200
2) Next_hop原则
(1)向BGP邻居通告路由时,将下一跳改变为自己。(即EBGP路由使用邻居地址作为下一跳)
(2)默认情况下,IBGP路由传播不改变下一跳。(可以使用next-hop-self命令把IBGP邻居通告的路由的下一跳改变为自己)
(3)本地始发的路由的下一跳为0.0.0.0,向BGP邻居通告时,将下一跳改变为自己。
(4)默认情况下,多路访问介质上的BGP路由传播不改变下一跳。(包括IBPG、EBGP)
8
3) BGP路由选择原则
(1)丢弃下一跳不可达的路由
(2)同步状态下,丢弃没有达到同步的路由。
(3)选择weight值最高的路由(weight是Cisco的私有值,不是BGP属性,不能在BGP邻居间传播,只在BGP本路由器内有效)
(4)选择Local Preference最大的路由。 (5)选择本地始发的路由。 (6)选择AS_Path最短的路由
(7)选择Origin最小的路由(IGP (11)选择RouterID最小的BGP邻居通告的路由 4) BGP路由反射原则 (1)从客户端收到的路由反射给它的客户端和非客户端。 (2)从非客户端收到的路由只反射给他的客户端。 (3)在进行路由反射之前,RR会进行路由选择,RR只把最优的路由发射出去。 (4) RR进行路由反射时,不会改变路由的属性(包括下一跳,LP,MED等)。 2.1.3 策略路由 策略路由是一种比基于目标网络进行路由更加灵活的数据包路由转发机制。应用了策略路由,路由器将通过路由图(Route-map)决定如何对需要路由的数据包进行处理,路由图决定了一个数据包的下一跳转发路由器。 应用策略路由,必须要指定策略路由使用的路由图,并且要创建路由图。一个路由图由很多条策略组成,每个策略都定义了一个或多个的匹配规则和对应操作。一个接口应用策略路由后,将对该接口接收到的所有包进行检查,不符合路由图任何策略的数据包将按照通常的路由转发进行处理,符合路由图中某个策略的数据包就按照该策略中定义的操作进行处理。 1)策略路由匹配相关规则 Route-map PBR permit 10 (定义名字叫PBR的route-map.10节点) match 条件匹配结果:匹配permit;命中该节点; 匹配deny;去下一节点继续匹配; 未匹配:去下一节点继续匹配; Match条件为空:所有数据包命中该节点。 9