BGP知识点
概况:
BGP(Border Gateway Protocol) 边界网关协议,路径矢量协议
协议优先级:255 metric:属性
Hold time:180s Keepalive time:60s
如果BGP 对等体两端的时间不同,以时间小的为准
timer keepalive 20 hold 60 进程下修改
邻居发现:一端端口使用随机端口号向另一端的179端口发起TCP连接
版本是BGP-4
AS(Autonomous System,自治系统)
AS是指由同一个技术管理机构管理,使用统一选路策略的一些路由器的集合。
AS内部使用IGP来计算和发现路由 AS之间使用BGP来传递和控制路由。
BGP 基础配置:
bgp 100
router-id 10.0.1.1
peer 10.0.2.2 as-number 100 建立邻居
peer 10.0.2.2 connect-interface loop 0 以环回口建立邻居
peer 10.0.2.2 ebgp-max-hop 2 环回口建立ebgp邻居时,修改ebgp多跳
network 10.0.1.1 32 宣告路由
peer 10.0.2.2 next-hop-local 将AS内下一跳地址改为本地;从 EBGP 邻居收到的路由,发送给IBGP 邻居的时候,改变下一跳
display bgp peer
display bgp routing-table
dis default-parameter bgp 查看协议默认值
两种邻居关系:IBGP EBGP(环回口物理接口)
AS号相同则为IBGP邻居关系;AS号不同,则为EBGP邻居关系。
IBGP可非直连建立邻居,EBGP必须直连建立邻居。
IBGP采用环回接口建立,EBGP采用直连接口建立。
BGP 5种报文
• Open报文:用于建立BGP对等体连接。
• Update报文:用于在对等体之间交换路由信息。
• Notification报文:用于中断BGP连接。
• Keepalive报文:用于保持BGP连接。
• Route-refresh报文:用于在改变路由策略后请求对等体重新发送路由信息。只有支持路由刷新(Route-refresh)能力的BGP设备会发送和响应此报文。
6种邻居状态:Idle,Connect,Active,OpenSent,OpenConfirm,Established
BGP认证:简单,keychain
bgp 100
peer 10.0.12.2 password simple huawei 简单认证
keychain key mode periodic daily 定义模式
key-id 1
key-string huawei 密码为huawei
algorithm md5 加密算法md5
send daily 09:00 to 17:00 发送时间
receive-time daily 09:00 to 17:00 接收时间
bgp 100
peer 10.0.23.3 keychain key 调用keychain
BGP对等体之间的交互原则:
BGP 设备将最优路由加入 BGP 路由表,形成 BGP 路由。BGP 设备与对等体建立邻居关系后,采取以下交互原则:
1、从IBGP对等体获得的BGP路由,BGP设备只发布给它的EBGP对等体。
2、从 EBGP对等体获得的BGP路由,BGP设备发布给它所有EBGP和IBGP对等体。
3、当存在多条到达同一目的地址的有效路由时,BGP设备只将最优路由发布给
对等体。
4、路由更新时,BGP设备只发送更新的BGP路由。
5、所有对等体发送的路由,BGP设备都会接收
6、只向对等体发送自身可用最优路由信息
fake-as:使用 fake-as 可以将本地真实的 AS 编号隐藏,其他AS 内的对等体在指定本端对等体所在的AS 编号时,应该设置成这个伪AS 编号
bgp 2000
peer 10.0.12.1 fake-as 200
BGP 路由自动聚合:
自动路由聚合是在自然边界路由器上自动执行的,在默认情况下,BGP 的自动路由聚合功能是关闭的,并且BGP不会自动聚合BGP邻居发送的路由以及使用network 命令通告的路由。
自动路由聚合只适用于通过路由引入方式引入的路由;且聚合后为主类(A,B,C)路由。
bgp 100
summary automatic
import-route direct
BGP手动路由聚合(detail-suppressed,suppress-policy,attribute-policy,origin-policy)
相对于自动路由聚合来讲,手动路由聚合具有更高的灵活性和可控性。
手动路由聚合时,可以手动控制聚合路由的掩码长度,修改聚合路由属性等。
有两种方法:
1.配置一条静态路由,然后network 命令进行通告
ip route-static 192.168.0.0 21 NULL 0
bgp 400
network 192.168.0.0 255.255.248.0
ip ip-prefix noad permit 172.16.1.0 24
ip ip-prefix noad permit 192.168.1.0 24
route-policy noad permit node 10
if-match ip-prefix noad
apply community no-advertise
route-policy noad permit node 20
bgp 400
peer 192.168.35.3 route-policy noad export
peer 192.168.35.3 advertise-community 可选过渡属性,向邻居声明可识别
2.使用aggregate命令进行聚合。
bgp 400
aggregate 172.16.0.0 255.255.248.0
detail-suppressed 抑制全部明细
bgp 400
aggregate 172.16.0.0 21 detail-suppressed
suppress-policy 抑制部分明细
bgp 400
aggregate 172.16.0.0 21 suppress-policy sup 设置route-policy(sup)匹配将被抑制的路由
attribute-policy 可以修改聚合后的路由属性
route-policy att permit node 10
apply origin incomplete
bgp 400
aggregate 172.16.0.0 21 attribute-policy att
origin-policy:通过符合route-policy的具体路由来产生聚合路由,不符合时不会聚合,以某条路由为触发条件
acl 2000
rule permit source 192.168.7.0 0.0.0.255
route-policy or permit node 10
if-match acl 2000
bgp 400
aggregate 192.168.0.0 21 origin-policy or
as-set:在聚合的路由中添加AS_Path,防止环路
4大类细分10种属性:
公认必遵:BGP的Update消息中必须包含的属性。
Origin
AS_Path
Next_hop
公认任意:不必存在于BGP的Update消息中,可以根据需求自由选择的属性。
Local_Pref
Atomic_aggregate
可选过渡:BGP 不能识别该属性,但可以接收该属性并将其发布给它的邻居的属性。
Aggregator
Community
可选非过渡:BGP可以忽略包含该属性的消息并且不向它的邻居发布。
MED
cluster-list
originator_id
BGP 选路:
当到达同一目的地存在多条路由且下一跳可达
1.优选协议首选值(Preference_Value)最高的路由。
2.优选本地优先级(Local_Preference)最高的路由。
3.优选本地生成的路由(手动聚合>自动聚合>network>import>对等体传来的)
4.优选AS_Path短的路由
5.比较Origin属性,起源类型IGP>EGP>Incomplete
6.优选MED(Multi Exit Discriminator)值最低的路由。
7.优选从EBGP学来的路由(EBGP>IBGP)。
8.优选AS内部IGP的Metric最小的路由。
9.优选 Cluster_List 最短的路由。
10.优选 Router_ID 最小的路由器发布的路由。
11.优选具有较小 IP 地址的邻居学来的路由。
前8 条选路规则一样,可以实现BGP 的负载分担
bgp 100
maximum load-balancing 2 负载分担
几个重要属性对比:
首选值,默认值为0 ,越大越优,仅在本地有效
优选本地优先级,默认为 100,越大越优,在 IBGP 中传递,选择流量离开 AS时的最佳路由,也就是控制流量从哪个出口离开AS
MED 值,默认值为 0,越小越优,在 EBGP 中传递,控制来自邻居 AS 的流量从哪个入口进入到本AS中
首选值(PrefVal):仅华为设备可识别,不会发送给任何BGP邻居,仅作为本地路由器用来选路使用
BG 路由属性的比较过程中,首先要比较的就是路由信息首选值 Preference Value,也简称为 PreVal. 值越大,优先级越高,默认为 0。
修改邻居所有传来的路由的首选值,在本地修改
bgp 200
peer 10.0.2.2 preferred-value 100
修改邻居传来的一条路由的首选值 ,在本地修改
ip ip-prefix 1 permit 10.0.55.0 24
route-policy 10 permit node 1
if-match ip-prefix 1
apply preferred-value 100 修改首选值
route-policy 10 permit node 2 放行其他路由条目
bgp 100
peer 10.0.2.2 route-policy 10 import 针对该邻居发来的路由修改此属性
本地优先级(LocPrf):公认任意,仅在IBGP邻居传递(出AS的路由器配置)
BGP 首先比较路由信息的首选值,如果 PrefVal 相同,就会比较本地优先级(Local Preference)属性。 越大,越优先,默认为100 ;用于判断流量离开AS时的最佳路径。
修改默认本地优先级 ,在下一跳路由的邻居上修改(连接AS外路由器的设备)
bgp 200
default local-preference 200
修改一条路由的本地优先级 ,在下一跳路由的邻居上修改(连接AS外路由器的设备)
ip ip-prefix 1 permit 10.0.1.0 24
route-policy 10 permit node 1
if-match ip-prefix 1
apply local-preference 500
route-policy 10 permit node 2
bgp 200
peer 10.0.12.1 route-policy 10 import 针对EBGP邻居发来的路由修改属性
AS_Path: 在本地修改
AS_Path 属性顺序记录了某条 BGP 路由所经过的 AS 信息,BGP 在比较AS_Path 属性后,会优选 AS_Path 长度较短的那条路由。另外,AS_Path 还可以用来防止路由之间的环路。当路由器从 EBGP 邻居收到 BGP 路由时,如果该路由的AS_Path中包含了自己的AS 编号,则该路由将会直接丢弃。
ip ip-prefix asp permit 2.2.2.0 24
route-policy 10 permit node 1
if-match ip-prefix asp
apply as-path 500 500 additive 增加AS_Path
route-policy 10 permit node 2 允许其他所有路由
bgp 100
peer 10.0.15.5 route-policy 10 import 针对该邻居发来的路由修改此属性
apply as-path 300 500 500 100 overwrite 覆盖AS_Path
Warning: The AS-Path lists of routes to which this route-policy is applied will be overwritten. Continue? [Y/N] y
MED 多出口区分器:可选非过渡,不会传递给其他AS
MED(Multi-exit-disc)也称为多出口鉴别器,它是一个4字节的整数,默认MED值为0,MED值越小,表明相应的路由优先级越高。MED属性主要作用是用来控制来自邻居AS的流量从哪个入口进入到本AS中。只有去往同一个目标网络的多条路由来自同一个AS时,才比较MED,配置命令compare-different-as-med 后可比较来自不同AS的路由。
acl 2001
rule permit source 172.16.1.0 0.0.0.25
acl 2002
rule permit source 172.16.2.0 0.0.0.25
route-policy R2 permit node 10
if-match acl 2001
apply cost 20
route-policy R2 permit node 20
if-match acl 2002
apply cost 30
route-policy R2 permit node 30
route-policy R3 permit node 10
if-match acl 2001
apply cost 38
route-policy R3 permit node 20
if-match acl 2002
apply cost 20
route-policy R3 permt node 30
bgp 100
peer 192.168.12.2 route-policy R2 export 针对发向该邻居的路由添加该属性
peer 192.168.13.3 route-policy R3 export
bgp 400
compare-different-as-med 配置该命令可比较来自不同AS的路由MED值
优选AS内部IGP的Metric最小的路由
BGP在比较Next Hop 属性时,会优选去往Next Hop 属性中IP 地址的IGP开销最小的路由。 通信双方的往返报文选用不同路径的现象称为不对称路由。对于某些特定的应用,以及部署了某些特别的安全设备和安全策略的情况下,不对称路由的存在可能会导致通过中断的现象。
int g0/0/0
ospf cost 2000
community属性:可选过渡,产生该路由的设备上配置
BGP路由反射器可以用来减少大型AS中IBGP邻居关系的数量和简化IBGP邻居关系的管理和维护,BGP联盟(Condeferation)也可以用来实现类似的目的。
一个 BGP 联盟是一个具有内部层次结构的 AS,一个BGP 联盟由若干个子 AS组成。对于一个 BGP 联盟,其成员 AS 内部的路由器之间需要建立全互联的IBGP邻居使用BGP路由反射器,而成员之间需要建立EBGP邻居关系。从联盟外的 EBGP对等体来看,整个联盟无异于一个普通的 AS,联盟内部的结构对于联盟外的EBGP对等体来说是完全透明的。
若公司网络规模需要扩大,则一般只需要在相应的成员AS中添加路由器并进行相关的配置即可,配置工作量远远小于不使用BGP联盟的情形。
bgp 2001
confederation id 200 创建团体AS200
confederation peer-as 2002 宣布团体AS内的其他邻居as2002
peer 10.0.23.3 as-number 2002
peer 10.0.23.3 next-hop-loacl 在一个团体内的不同AS间也要设置该属性
团体属性是BGP路由的一种可选属性,路由器在向BGP对等体传递路由时,如果希望所传递的路由携带团体的属性,则需要额外的配置 4个特殊的团体:
internet : 可以向任何BGP对等体发布路由
no-export: 不会发给 EBGP 对等体,但可以发布给联盟(Confederation)EBGP对等体
no-export-Subconfed:不会发给 EBGP 对等体,也不会发布给联盟(Confederation)EBGP对等体
no-advertise: 不会发给任何BGP对等体
aa:nn 自定义团体属性
ip ip-prefix 2 permit 10.0.100.2 32
route-policy 10 permit node 2
if-match ip-prefix 2
apply community internet / no-export / no-export-Subconfed / no-advertise
route-policy 10 permit node 10
bgp 100
peer 192.168.12.2 advertise-community 让邻居可识别community属性,每台路由器都设置
peer 192.168.12.2 route-policy 10 export
display bgp routing-table community 查看community信息
正常的团体属性难以满足这样的需求,所以添加自定义团体属性
R1:产生该路由时添加community属性标记
ip ip-prefix 5 permit 10.0.100.5 32
route-policy 10 permit node 5
if-match ip-prefix 5
apply community 100:5
route-policy 10 permit node 10
R4:识别该属性,并拒绝
ip community-filter 1 permit 100:5 识别community 100:5的属性标记
route-policy 10 deny node 10
if-match community-filter 1
route-policy 10 permit node 20
bgp 2001
peer 192.168.24.2 route-policy 10 import
路由反射器:(同一个AS内)
从一个非客户端那里接收到的路由,反射器会将它只传递给所有的客户端;
从一个客户端那里接收到的路由,反射器会将它传递给所有其它的客户端以及非客户端 ;
从 EBGP 对等体那里接收到的路由,反射器会将它传递给所有客户端和非客户端。
禁止客户机之间的路由反射
bgp 100
undo reflect between-clients 关闭邻居间路由反射功能
在反射器服务器上配置,反射器客户端只需要与服务器建立邻居,不用相互建立邻居
bgp 100
router-id 1.1.1.1
group 1 创建组
peer 2.2.2.2 group 1 宣布邻居2.2.2.2为group 1
peer 3.3.3.3 group 1
peer 1 reflect-client 宣告组内的客户端
peer 1 next-hop-local
reflector cluster-id 1 设置cluster-id编号
BGP路由过滤:
路由属性的丰富性可以为实现路由过滤、路由引入等路由策略和控制提供非常有利的条件。
利用AS-Path进行路由过滤
ip as-path-filter 1 permit 100$ 匹配路由始发与AS100
bgp 200
peer 192.168.13.1 as-path-filter 1 import
利用Community 属性进行路由过滤
route-policy 10 permit node 1
apply community no-export
bgp 300
peer 192.168.14.1 route-policy 10 export
peer 192.168.14.1 advertise-community
利用Next Hop属性进行路由过滤
ip ip-prefix 1 permit 192.168.25.5 32
route-policy 10 deny node 1
if-match ip next-hop ip-prefix 1
route-policy 10 permit node 2
bgp 100
peer 192.168.26.6 route-policy 10 export
BGP路由引入:
在多协议混合的网络环境中,不同的路由协议使用的协议报文各不相同,就好比说着不同的语言。如果一种路由协议需要从别的路由协议那里获取路由信息,则可以使用路由引入技术。
ip ip-prefix 10 permit 5.5.5.5 32
route-policy 10 permit node 1
if-match ip-prefix 10
bgp 100
import-route ospf 1 route-policy 10
BGP缺省路由:(下放默认路由)
在BGP网络中,一台路由器可以向它的一个BGP对等体发布一条下一跳为自己的缺省路由,也可以使用 network 向整个 AS 通告一条下一跳为自己的缺省路由,另外,还可以根据需要在BGP路由器上手工配置静态缺省路由。
第一种方法:
default-route-advertise
bgp 100
peer 192.168.14.1 default-route-advertise
第二种方法:手工写一条缺省路由,在BGP中通告
network 0.0.0.0
ip route-static 0.0.0.0 0.0.0.0 NULL 0
bgp 100
network 0.0.0.0 0.0.0.0
第三种方法:手工添加一条静态缺省路由
ip route-static 0.0.0.0 0.0.0.0 192.168.12.2
IBGP防环:
路由器从它的一个BGP对等体那里接收到的路由条目不会将该路由器再传递给其它IBGP对等体,这个原则被称为BGP水平分割。
EBGP防环:
当路由器从EBGP邻居收到BGP路由时,如果该路由的AS_Path中包含了自己的AS编号,则该路由将会直接丢弃。
RR防环:
Originator_id可选非过渡属性,由RR产生,封装在Update消息中,使用router-id值标识路由的始发者,用于防止集群内路由环路。
Cluster_list可选非过渡属性,记录路由经过的每个集群的Cluster_id ,用来在集群间避免环路。