BGP AS号码
不同AS通过AS号区分,AS号取值范围1-65535,其中64512-65535是
私有AS号。
BGP路由传递
BGP 通过单播方式构建TCP会话以建立BGP 邻居,并要求两端的
设备通过该TCP连接周期性的发送KeepAlive消息保持该会话
BGP通过定义策略或者规则来穿越AS,所以BGP是as-by-as的
可靠的路由更新
• 传输协议:TCP ,端口号179
• 触发式更新:无需周期性更新,只发送增量路由(增加、修改、删除的路由信息)
• 周期性(60s )发送keepAlive 报文检测TCP
基于TCP 连接的邻居关系
• BGP 邻居关系建立在TCP 连接的基础之上
• 可以通过IGP 或静态路由来提供TCP 连接的IP 可达性
BGP的邻居关系
IBGP相同的AS号码
建立IBGP邻接关系,满足的条件
– 自治系统号相同
– 定义邻居建立TCP会话
– IBGP邻居可达
EBGP不是相同的AS号码
建立EBGP邻接关系,必须满足三个条件
– EBGP之间自制系统号不同
– 定义邻居建立TCP会话
– neighbor中指定的IP地址要可达
EBGP 多跳和指定更新源
• EBGP 可以采用直连建立,也可以采用环回口作为更新源建立EBGP 邻居用以备份。但是需要修改TTL 值
BGP 的下一跳行为
BGP 是AS by AS 的协议,不同于IGP 中的下一跳是一个路由器地址,BGP中的下一跳为如何去往其他AS 的一个设备;而且在不同AS之间将保持不变
1)下一跳自我(一般在ASBR实施)
2)ASBR上把直连引入到IGP(不是在IGP中network)
建立ebgp邻居
[AR1]bgp 100
[AR1-bgp]router-id 1.1.1.1
[AR1-bgp]peer 10.1.15.5 as-number 200
[AR1-bgp]network 1.1.1.1 32
验证
[AR1-bgp]display bgp peer
建立环回接口方式的eBGP
[AR2]bgp 100
[AR2-bgp]peer 66.1.1.1 as-number 200
[AR2-bgp]peer 66.1.1.1 connect-interface l0 更新源地址L0
[AR2-bgp]peer 66.1.1.1 ebgp-max-hop 2 EBGP多跳2(针对EBGP邻居实施)
建立IBGP邻居
[AR1]bgp 100
[AR1-bgp]peer 22.1.1.1 as-number 100
[AR1-bgp]peer 22.1.1.1 connect-interface l0
[AR1-bgp]peer 22.1.1.1 next-hop-local
[AR1-bgp]network 1.1.1.1 32
配置对等体模板组
[AR3]bgp 100
[AR3-bgp]group CCIE
[AR3-bgp]peer CCIE connect-interface l0
[AR3-bgp]peer 11.1.1.1 group CCIE
TCP发起配置
[AR3]bgp 100
[AR3-bgp]peer CCIE listen-only 设置本端为TCP的被动端
As欺骗
[AR1-bgp]bgp 100
[AR1-bgp]peer 55.1.1.1 fake-as 64512 AS欺骗
移除私有As
[AR5]bgp 200
[AR5-bgp]peer 10.1.56.10 public-as-only 移除私有AS
BGP 报文有五种类型:
• Open:负责和对等体建立邻居关系。
• KeepAlive:该消息在对等体之间周期性地发送,用以维护连接。
• Update:该消息被用来在BGP对等体之间传递路由信息。
• Notification:当BGP Speaker检测到错误的时候,就发送该消息给对等体。
• Route-refresh:用来通知对等体自己支持路由刷新能力。
BGP 协议中消息的应用
• 通过TCP 建立BGP 连接时,发送OPEN 消息
• 连接建立后,如果有路由需要发送或路由变化时,发送UPDATE 消息通告对端
• 稳定后要定时发送KEEPALIVE 消息以保持BGP 连接的有效性
• 当本地BGP 在运行中发现错误时,要发送NOTIFICATION 消息通告BGP 对等体
• ROUTE-REFRESH当路由策略发生变化时,触发请求邻居重新通告路由
BGP状态机
• 当建立BGP会话,路由器与邻居之间的关系经过如下状态:
- Idle(空闲): 路由器查看路由表,邻居是否可达.
- Connect(连接): 路由器发现路由并完成TCP连接的三次握手.
- Open sent(打开发送): 发送BGP会话之间的连接参数.
- Open confirm(打开确认): 路由器收到连接参数一致性的确认.
- Established(已建立): 邻居关系建立
出现IDLE的错误:没有目标的路由、IP报文中的TTL不足、协商不成功、管理DOWN
出现ACTIVE错误:没有目标的路由、指定了错误的邻居、没有回送报文的路由
BGP 数据库
• IP 路由表 (IP-RIB)
• 全局路由信息库,包括所有IP路由信息。
• BGP 路由表 (Loc-RIB)
dis ip rou pro bgp
• BGP路由信息库,包括本地BGP Speaker选择的路由信息。
dis bgp rou
• 邻居表
• 对等体邻居清单列表
dis bgp peer
• Adj-RIB-In
• 对等体宣告给本地Speaker的未处理的路由信息库
• Adj-RIB-Out
• 本地Speaker宣告给指定对等体的路由信息库
BGP路由信息处理
ORF 出方向路由过滤
R1
[R1]ip ip-prefix ORF permit 5.5.5.5 32
[R1]bgp 100
[R1-bgp] peer 10.1.15.5 ip-prefix ORF import
[R1-bgp] peer 10.1.15.5 capability-advertise orf ip-prefix both(both为即发送也接收)
R5:
[R5-bgp]peer 10.1.15.1 capability-advertise orf ip-prefix both
验证
[R5]display bgp routing-table peer 10.1.15.1 advertised-routes
BGP 路由通告原则( 一)
• 连接建立时,BGP Speaker 只把本身用的最优路由通告给对等体
• 多条路径时,BGP Speaker 只选最优的路由放入路由表
BGP 路由通告原则( 二)
• BGP Speaker 从EBGP 获得的路由会向它所有BGP 对等体通告(包括EBGP 和IBGP)
BGP 路由通告原则( 三)
• BGP Speaker 从IBGP 获得的路由不会通告给它的IBGP 邻居。
IBGP水平分割原则
BGP防环是通过AS_PATH实现的,而AS_PATH仅仅在路由离开AS才回被更改,因此
在AS内,IBGP就没有EBGP的防环能力,为了防止环路的出现,BGP路由器不会将从
IBGP邻居学习过来的路由再通告给自己其他IBGP邻居。— BGP的水平分割原则。
BGP 路由通告原则( 四)
• BGP Speaker 从IBGP 获得的路由是否通告给它的EBGP 对等体要依IGP 和BGP同步的情况来决定
BGP同步
在IBGP路由加入路由表并发布给EBGP对等体之前,会先检查IGP路由表。只有在IGP也知道这条IBGP路由时,它才会被加入到路由表,并发布给EBGP对等体
多点接入的下一跳
为了优化转发数据,直接找到最优转发数据的下一跳
ASBR没有针对IBGP邻居做下一跳自我的情况下,iBGP设备直接把报文转发到了没有BGP邻居的设备(优化转发)
1.2 下一跳不变(域间MPLS),为了数据优化转发
1.3 RR(非ASBR)的情况下针对iBGP邻居使用route-policy修改下一跳为RR(apply ip-address next-hop ),而非ASBR
BGP产生路与的方式
1, network 命令:
BGP的network命令为通告路由
把IGP(比如OSPF)发现的路由信息通过network命令注入到BGP路由表中需要严格匹配掩码
2, import 命令
通过import-route命令把IGP路由或静态路由注入到BGP路由表中
3, 汇聚
aggregate汇总产生的路由,产生的路由可能修改起源属性等内容
BGP路由聚合种类
自动聚合
• 对BGP 引入的子网路由进行自然掩码聚合。配置自动聚合后,生成聚合后的自然网段路
由,而原引入的子网路由被抑制,不会被优选和发布给BGP邻居。
[AR1-route-policy]bgp 100
[AR1-bgp]import-route direct
[AR1-bgp]summary automatic
手动聚合
• 对BGP本地路由进行聚合。通常情况下,手动聚合的优先级高于自动聚合的优先级
任意的明细路由的存在是汇总路由存在的前提;如果所有的明细路由全部消失,汇总路由也会消息
先聚合再生成BGP路由的方式
[AR1]ip route-static 1.1.1.0 255.255.255.0 NULL 0
[AR1]bgp 100
[AR1-bgp]network 1.1.1.0 24
BGP 路由聚合需要考虑的问题
• 明细路由的发布 suppress-policy
• BGP路由属性的继承 attribute-policy
AS-Path
Origin
Community
聚合路由的问题 as-set
• 聚合路由不继承原有BGP 路由属性
过滤策略
• 关键字suppress-policy能产生聚合路由,但抑制指定路由的通告。可以用route-policy 有选择地抑制一些具体路由,其它具体路由仍被通告。
原子聚合和聚合者
• 原子聚合是 公认自决属性 ,用来通知下游的邻居丢失了特定路由的路径信息。当更精确的路由被汇聚为不够精确的路由的时候会引起信息丢失,原子聚合属性只是,用来通知下游的邻居丢失了特定路由的路径信息。当更精确的路由被汇聚为不够精确的路由的时候会引起信息丢失,原子聚合属性只是UPDATE数据包中设置的一个标志位,它提醒下游路由器在聚合的过程中丢失了一些路径信息。当原子聚合属性被设置后,下游路由器不能删除这个属性或是发送到目的网段的更精确路由。
• 聚合者属性是一个 可选过渡属性 ,— 般针对某个NLRI与原子聚合属性同时使用。聚合者属性包含了会聚路由的与原子聚合属性同时使用。聚合者属性包含了会聚路由的SPEAKER的相关信息,属性中包含了创建聚合路由并且标记原子聚合属性的路由器的的相关信息,属性中包含了创建聚合路由并且标记原子聚合属性的路由器的BGP ID和自治系统号码。这些信息指明了非精确会聚合路由的来源,可以用来找到更精确路由的源头
[AR5] bgp 200
[AR5-bgp]aggregate 1.1.1.0 30 detail-suppressed as-set
BGP防止环路
• EBGP
通过AS-Path属性,丢弃从EBGP对等体接收到的在AS-Path属性里包含自身AS号的任何更新信息
• IBGP
BGP路由器不会将任何从IBGP对等体接收到的更新信息传给其它IBGP对等体
射路由反射 (RFC 2796)
• 降低对指定路由器IBGP路由通告机制的限制,允许将从IBGP对等体接收到的更新信息传给某些IBGP对等体
RR的更新规则
从非客户端收到的路由更新给客户端
从客户端收到收到的路由更新给所有邻居(客户端、非客户端、EBGP)
除了非客户端不传非客户端,其他都进行传递!
RR环境下的防环
簇(cluster):RR和它们的客户端就组成簇
新的防环规则:
1) 簇ID(可选配置)
• 通过4 字节的Cluster_ID 来标识Cluster ,通常会使用Loopback 地址作为Cluster_ID
• 一个Cluster 里可以包括一个或多个RR ;一个Client 可以同时属于多个Cluster
路由反射环路防止机制-Cluster_List
• Cluster_List 属性用于防止AS 内部的环路
• Cluster_List 是可选非过渡属性,属性类型编码为10
• 当RR 在它的客户机之间或客户机与非客户机之间反射路由时,RR 会把本地Cluster_ID添加到Cluster_List 的前面。如果Cluster_List 为空,RR 就创建一个
• 当RR 接收到一条更新路由时,RR 会检查Cluster_List 。如果Cluster_List中已经有本地Cluster_ID ,丢弃该路由;如果没有本地Cluster_ID ,将其加入Cluster_List,然后反射该更新路由
2) 起源ID
• Originator ID 属性用于防止在反射器和客户机/ 非客户机之间产生环路
• Originator_ID 属性长4 字节,可选非过渡属性,属性类型为9 ,是由路由反射
器((RR )产生的,携带了本地AS 内部路由发起者的Router ID
• 当一条路由第一次被RR 反射的时候,RR 将Originator_ID属性加入到这条路由,标识这条路由的始发路由器。如果一条路由中已经存在了Originator_ID属性,则RR 将不会创建新的Originator_ID
• 当其它BGP Speaker 接收到这条路由的时候,将比较收到的Originator_ID和本地的Router ID ,如果两个ID 相同,BGP Speaker会忽略掉这条路由,不做处理
[AR1]bgp 100
[AR1-bgp]peer 33.1.1.1 reflect-client 指定R3为客户端
验证
[AR1]display bgp routing-table peer 22.1.1.1 advertised-routes
联盟 (RFC3065)
• 将大的AS分成若干小的AS,而小AS之间建立EBGP对等体关系
[AR5]Bgp 2005
[AR5-bgp]confederation id 200 指定对外的AS号码
[AR5-bgp]confederation peer-as 2067 指定对端内部子联盟的AS号码
注意:两个小AS之间也要解决多跳问题,大AS的边界路由器必须向内做next-hop-self。
BGP的团体属性
必须针对邻居发送团体属性(peer advertise-comm)
应用的位置:1)针对邻居收、发 2)产生路由(network、聚合、引入等)来应用
众所周知的团体属性
internet 表示可以向任何对等体发送匹配的路由。缺省情况下,所有的
路由都属于Internet团体。
no-advertise 表示不向任何对等体发送匹配的路由。即收到具有此属性的路
由后,不能发布给任何其他的BGP对等体。
no-export 表示不向AS外发送匹配的路由,但发布给其它子自治系统。即
收到具有此属性的路由后,不能发布到本地AS之外。
no-export-subconfed 表示不向AS外发送匹配的路由,也不发布给其它子自治系统。
即收到具有此属性的路由后,不能发布给任何其他的子自治系
统。
additive 表示追加路由的团体属性
[AR7]route-policy COMM permit node 10
[AR7-route-policy]apply community no-export-subconfed
[AR7]bgp 2067
[AR7-bgp]network 7.7.7.7 32 route-policy COMM 宣告路由时携带该属性
[AR7-bgp]peer 66.1.1.1 advertise-community 针对邻居通告传递该属性
BGP Community :自定义团体属性值
• 通过干预携带团体属性的路由,影响数据报文转发,也用于路由清洗
[AR2]route-policy COMM permit node 10
[AR2-route-policy]apply community 100:22
[AR2]bgp 100
[AR2-bgp]peer 66.1.1.1 route-policy COMM export
[AR6]bgp 2067
[AR6-bgp]peer 77.1.1.1 advertise-community
[AR7]ip community-filter 1 permit 100:222
[AR7]route-policy PREVAL permit node 10
[AR7-route-policy]if-match community-filter 1
[AR7-route-policy]apply preferred-value 6
[AR7]route-policy PREVAL permit node 20
[AR7]bgp 2067
[AR7-bgp]peer 66.1.1.1 route-policy PREVAL import
BGP选路原则
BGP路由下一跳BGP在选择路由时首先忽略下一跳(Next_hop)不可达的路由。
1 协议首选值BGP优选协议首选值最高的路由。
[AR7]route-policy PrefVal permit node 10
[AR7-route-policy]apply preferred-value 66设置权重值 越大越优先
[AR7-route-policy]bgp 2067
[AR7-bgp]peer 66.1.1.1 route-policy PrefVal import针对邻居传递过来的路由入方向调用
2 本地优先级BGP优选Local_Pref属性值较高的路由。
[AR5]route-policy Local_Pref permit node 10
[AR5-route-policy]apply local-preference 105
[AR5]bgp 2005
[AR5-bgp]peer 10.1.15.1 route-policy Local_Pref import
3 路由生成方式本地引入路由优先级高于从邻居学来的路由
4 AIGPBGP优选AIGP较小的路由。
5 AS_PathBGP优选AS路径(AS_Path)最短的路由(AS_Path中AS号的个数最少)。
可以使用bestroute as-path-ignore(华为)这个命令来跳过这一步
[AR5]route-policy AS permit node 10
[AR5-route-policy]apply as-path 200 200 additive
[AR5]bgp 2005
[AR5-bgp]peer 10.1.15.1 route-policy AS import
6.OriginOrigin属性定义路径信息的来源,i>e>?
[AR2]route-policy Origin permit node 10
[AR2-route-policy]apply origin incomplete
[AR2]bgp 100
[AR2-bgp]peer 66.1.1.1 route-policy Origin export
7 MED通过合理配置MED,可以对网络流量进行合理规划,达到负载均衡的目的。
[AR1]route-policy MEDOUT permit node 10
[AR1-route-policy]apply cost 10000
[AR1]bgp 100
[AR1-bgp]peer 10.1.15.5 route-policy MEDOUT export
8邻居类型当IBGP路由和EBGP路由同时存在时,BGP优选从EBGP邻居学来的路由。
9 IGP CostBGP优选到下一跳IGP Cost较小的路由。
负载均衡必须满足前提条件(前边的选路原则无效、As-path完全相同)
[AR4]bgp 100
[AR4-bgp] maximum load-balancing 8
10 Cluster_ListBGP优选Cluster_List最短的路由(Cluster_List中的Cluster_ID个数最少)。
11 Originator ID如果路由携带Originator ID属性, 选路过程中将比较Originator ID的大小(不再比较RouterID),并优选Originator ID最小的路由。
12 Router ID存在到达同一目的地址的多条路由时,BGP优选Router ID最小的设备发布的路由。
13对等体地址优选从具有较小IP地址的对等体学来的路由
默认路由
方法一
[R5]ip route-static 0.0.0.0 0.0.0.0 10.1.15.1
[R5]bgp 2005
[R5-bgp]network 0.0.0.0
方法二
[R1]bgp 100
[R1-bgp]peer 10.1.15.5 default-route-advertise //该方式路由不会更新回给AS100
验证
[AR5]display ip routing-table protocol bgp
Destination/Mask Proto Pre Cost Flags NextHop Interface
0.0.0.0/0 EBGP 255 0 D 10.1.15.1 GigabitEthernet0/0/0
BGP的ipv6邻居
[AR5]bgp 2005
[AR5-bgp]peer 2015::1 as-number 100
[AR5-bgp]ipv6-family unicast
[AR5-bgp-af-ipv6]peer 2015::1 enable
[AR5-bgp]peer 2057::7 as-number 2067
[AR5-bgp]peer 2057::7 connect-interface l0
[AR5-bgp]peer 2057::7 ebgp-max-hop 2
[AR5-bgp]ipv6-family unicast
[AR5-bgp-af-ipv6]peer 2057::7 enable
[AR5-bgp-af-ipv6]peer 2057::7 next-hop-local
验证
[AR5-bgp]display bgp ipv6 peer
[AR5-bgp]display bgp ipv6 routing-table