BGP

  • 基于 TCP 连接,端口号179
  • 只传递路由信息,不会暴露 AS 拓扑信息
  • 触发式更新

BGP

  • Open
  • KeepALive
  • Update
  • Notification
  • Route-Refresh

对等体关系

IBGP
EBGP

工作过程

建立对等体

建立连接的源地址

BGP 状态机

通告原则

  1. 只发布最优且有效路由
  2. 从 EBGP 对等体获取的路由,会发给所有对等体
  3. IBGP 水平分割:从 IBGP 对等体获取的路由,不会发送给 IBGP 对等体
  4. BGP 同步规则:当一台路由器从自己的 IBGP 对等体学习到一条 BGP 路由时(这类路由被称为 IBGP 路由),它将不能使用该路由或把这条路由通告给自己的 EBGP 对等体,除非它又从 IGP 协议(例如 OSPF 等包含静态路由)学习到这条路由,也就是要求 IBGP 路由与 IGP 路由同步。同步规则主要用于规避 BGP 路由黑洞问题

路径属性

路由属性可以大致分为:公认必遵、公认任意、可选过渡、可选非过度

公认必遵

  • AS_Path
    类型:
    AS_SEQENCE (有序列表)
    AS_SET ()
  • Origin

IGP - i
EGP - e
Incomplete - ?

IGP > EGP > Incomplete

  • Next_Hop

注意事项: 当 IBGP 与 EBGP 处于同一网段内,且能直接连接时,IBGP 发送给 EBGP 路由条目中的下一跳地址不会改变

公认任意

  • Local_Preference

    越大越优先,缺省值为 100

可选过渡

  • Community

公认 Community 属性

可选非过渡

  • MED

    越小越优先,缺省值通常为 IGP 学习路由时的开销值

路由优选规则

  • 丢弃下一跳不可达的路由
  1. Preferred-Value (缺省值为 0,越大越优先)
  2. Local_Perference (缺省值为 100,越大越优先)
  3. 本地始发路由优于从其他对等体学习到的路由 (手动聚合 > 自动聚合 > Network 引入 > import-route 引入 > 从对等体中学习的路由)
  4. AS_Path (越短越优先)
  5. Origin (IGP > EGP > Incomplete)
  6. MED (越小越优先)
  7. EBGP 路由优先级高于 IBGP
  8. Next_Hop (IGP 的度量值越小越优先)
  9. Cluster_List (越短越优先)
  10. Router ID (Orginator_ID) 越小越优先
  11. 优选具有最小 IP 地址的对等体通告的路由

负载分担
当两条路由的前 8 条优选规则无法比较出优劣时,可以通过命令 maximum load-balaning {ebgp|ibgp} [1~8] 指定等价路由,达到负载分担的效果

路由反射器

路由策略

相关指令

用户视图

刷新 BGP 路由条目

refresh bgp all import

系统视图

创建 BGP 进程

# bgp ASid号
bgp 100

查看对等体信息

display bgp peer

查看 BGP 路由信息

# display bgp routing-table [IP地址]
display bgp routing-table 192.168.1.1

路由工具

# ip ip-prefix 过滤器名称 [index 列表编号] {permit|deny} IP地址 子网掩码        # IP 前缀列表
ip ip-prefix test index 10 permit 192.168.1.0 24 

# ip community-filter 类型 过滤器名称 permit 参数           # 路由团体属性过滤
ip community-filter basic test permit 100:10

创建路由策略

# route-policy 策略名 {permit|deny} node 策略编号
route-policy test permit node 10

route-policy test permit node 20        # 必须再加一条策略用于放行非目标的路由

查看筛选路由工具

display ip ip-prefix
display ip community-filter 

查看路由策略

# display route-policy 策略名
display route-policy test   

BGP 视图

指定 route id

# route-id id号
route-id 1.1.1.1

指定对等体

# peer 对等体IP地址 as-number AS编号 
peer 1.1.1.1 as-number 100

指定到达 EBGP 对等体的最大跳数

# peer 对等体IP地址 ebgp-max-hop 跳数
peer 1.1.1.1 ebgp-max-hop 10

指定自身与对等体连接的接口

# peer 对等体IP地址 connect-interface 接口 接口号
peer 1.1.1.1 connect-interface LoopBack 1

单条路由注入

# network IP地址 子网掩码
network 1.1.1.1 24
undo network 1.1.1.1 24     # 撤销路由

批量路由注入

# import-route 路由协议
import-route direct

路由聚合

aggregate IP地址 掩码 detail-suppressed
aggregate 172.16.0.0 22 detail-suppressed   # detail-suppressed 细节抑制:不再发送明细路由

将 IBGP 路由通告的下一跳地址修改为自身地址

# peer 对等体IP地址 next-hop-local
peer 1.1.1.1 next-hop-local

修改 preferred-value 值(缺省值为 0,越大越优先)

# peer 对等体IP地址 preferred-value 值
peer 1.1.1.1 preferred-value 100

修改 local-preference 缺省值

# default local-preference 值
default local-preference 111

进入地址族视图

# [ipv4-family|ipv6-family] [参数]
ipv4-family unicast

修改 MED 缺省值

# default med 值
default med 1111

调用路由策略

peer 对等体IP地址 route-policy 路由策略名 {export|import}
peer 1.1.1.1 route-policy test export

自动聚合路由

summary automatic

启用不同 AS 的 MED 比较功能

compare-different-as-med

指定等价线路数量

maximum load-balaning {ebgp|ibgp} [1~8]

指定路由反射器客户端

peer 对等体IP地址 reflect-client
peer 1.1.1.1 reflect-client

将团体属性发布给对等体

# peer 对等体IP地址 advertise-community
peer 1.1.1.1 advertise-community

路由策略视图

匹配条件

# if-match 匹配条件
if-match ip-prefix test 
if-match community-filter test 

指定参数值

# apply [参数]
apply local-preference 1212
apply as_path 400 additive
apply community 300:100