BGP学习总结笔记

本文深入探讨BGP协议的核心概念,包括属性、路由传递规则、应用场景及配置技巧。覆盖BGP的三张表、路由聚合、防环机制、EBGP与IBGP的区别,以及如何通过PEER-GROUP简化配置。

1.BGP属性

可支持ipv4和ipv6单播,也支持vpnv6等。

2.BGP的三张表

1.Neighbor table邻居表    show ip bgp summary/neighbors

2. BGP table转发数据库     show ip bgp

3. IP routing table路由表   show ip route bgp

3.BGP应用场景

  • 应用BGP的环境

 1.当允许数据包穿越As号去访问其他AS号的时候

 2.对于一个用户的AS号,如果他需要同时连接到多个AS号时。

 3.当需要对数据进入或离开AS,进行人为控制/操纵的时候

  • 不应该应用BGP的环境

 1.与isp只有单连接,没有同时连接到多个ISP

 2.如果链路带宽不足,或者硬件设备的档次不够

 3.对BGP路由操纵理解有限,无法预计BGP后的结果

4.BGP路由传递规则(很重要)!!!!

1.从EBGP学习到的路由会传递给所有的IBGP邻居

2.从IBGP学习到的路由不会传递给任何IBGP邻居(在AS内部避免环路

3.从IBGP学习到的路由会不会传递给EBGP邻居,看是否开启了同步功能

  3.1 若开启了同步功能,则会查看从IBGP学习到的路由是否存在于IGP路由表中,存在则传递给EBGP,不存在则不传递给EBGP

  3.2 若关闭了同步功能,则直接传递给EBGP

5.宣告路由的方式

  1.Network方式 (i)

  2.redistribute方式  (?)

6.BGP4中的IBGP

6.1 IGP中的network

   1) 传递路由

   2) 从network包含的接口中发出hello

6.2 IBGP

      IBGP使用环回口建立邻居,TTL=255。使用环回口建邻居时,注意BGP报文的源IP地址,通常采用路由更新源update-source(可以只写一边)。使得环回口间互相通信时,默认路由无效,必须使用明细;

    router bgp 100
       neighbors 2.2.2.2 remote-as 100
       neighbors 2.2.2.2 update-source loopback0

从EBGP学习到的路由传递给IBGP时,由于默认不更改下一跳,会导致IBGP邻居对该路由的下一跳不可达,需要更改为当前设置。因此,解决下一跳不可达的办法可以采用两种方式:

  1. 使用静态或IGP使下一跳可达  
  2. next-hop-self,该命令使其下一跳强制为更新源地址  [控制层面解决]   neighbor 2.2.2.2 next-hop-self;一般放在边界EBGP路由上.

7.BGP4中的EBGP

EBGP一般使用直连口建立,也可使用多跳方式(注意update-source和multihop)。BGP建立邻居的TCP连接时随机的,邻居间都会建立两条TCP连接,但会随机DOWN一条。

  • 直连方式(TTL=1)
  router bgp 100
    neighbors 12.1.1.1 remote-as 200
  • 环回口方式(修改TTL)

若使用环回口建立EBGP邻居关系

  1. 将TTL设置成大于1
  2. 使用静态路由或IGP使得环回口间能互相通讯
  3. 建邻居接口不要宣告BGP中,否则会导致BGP邻居关系翻滚
router bgp 100
       neighbor 2.2.2.2 remote-as 200
       neighbor 2.2.2.2 ebgp-multihop 2
  • 手工写静态路由 NULL 0
 network 汇总路由
 ip route 172.16.0.0 255.255.248.0 Null0
 outer bgp 1
 network 172.16.0.0 mask 255.255.248.0 

8.BGP聚合

  • BGP在汇总路由时,默认会发出汇总和明细路由,如果想阻止明细发出,可在后面添加summary-only;
aggregate-address 3.3.0.0 255.255.252.0 summary-only
  • 聚合后,AS-PATH信息会丢失,可能导致路由环路,可加入as-set将其还原;
aggregate-address 3.3.0.0 255.255.252.0 summary-only as-set

 9.BGP的防环机制

  1. EBGP之间使用as-path进行防环;
  2. IBGP之间使用水平分割法则防环;

水平分割:从IBGP路由之间,只能传递一跳;

   解决水平分割:

1.全互联

2.路由反射器:客户端和非客户端; 非非不传;适用于星型网络;

客户端——>客户端 可传递
非客户端——>客户端 可传递
客户端——>非客户端 可传递
非客户端——>非客户端 不可传递
router bgp 123
neighbor 1.1.1.1 route-reflecctor-client

3.联邦:适用于线型网络;

router bgp 65060
bgp confederation identifier 100 //bgp联盟为100
bgp confederation peers 65050 //bgp联盟内的EBGP邻居AS
neighbor 20.0.0.1 remote-as 65050 //指定联盟内部的EBGP邻居
neighbor x.x.x.x remote-as 65060 //指定联盟内部的IBGP邻居

10.BGPPEER-GROUP配置方式

  • 1.简化配置,适用于EBGP或者IBGP
  • 2.减少buffer(缓冲
router bgp 200
neighbor IBGP1 peer-group
neighbor IBGP1 remote-as 200
neighbor IBGP1 update-source Loopback0
neighbor IBGP1 router-reflector-client
neighbor 2.2.2.2 peer-group IBGP1
neighbor 4.4.4.4 peer-group IBGP1
neighbor 5.5.5.5 peer-group IBGP1

 

 

BGP(Border Gateway Protocol)是用于在自治系统(AS)之间交换路由信息的路径向量协议,是互联网中最重要的路由协议之一。BGP 的主要功能是实现自治系统之间的可达性信息交换,同时提供基于策略的路由控制。 ### BGP 的基本原理 #### 1. **BGP 的基本概念** - **自治系统(AS)**:一个由单一管理机构控制的网络区域,使用统一的路由策略。AS 编号为 16 位或 32 位数字。 - **BGP 对等体(Peer)**:运行 BGP路由器之间建立 TCP 连接(端口号 179),交换路由信息。 - **BGP 路由器角色**: - **IBGP(Internal BGP)**:在同一 AS 内部的 BGP 路由器之间运行。 - **EBGP(External BGP)**:在不同 AS 之间的 BGP 路由器之间运行。 #### 2. **BGP 的工作过程** BGP 的工作过程包括邻居建立、路由交换和路由选择三个主要阶段: - **邻居建立**:BGP 使用 TCP 连接来建立邻居关系。邻居可以是 IBGPEBGPEBGP 邻居通常直连,而 IBGP 邻居可以非直连。 - **路由交换**:一旦邻居关系建立,BGP 会发送初始的全量路由更新,之后仅发送增量更新。 - **路由选择**:BGP 根据本地策略和路径属性选择最佳路由,并将这些路由安装到路由表中。 #### 3. **BGP 路径属性** BGP 使用路径属性来决定路由选择。常见的路径属性包括: - **ORIGIN**:表示路由信息的来源,可以是 IGP(i)、EGP(e)或 Incomplete(?)。 - **AS_PATH**:记录路由经过的 AS 编号,用于防止环路。 - **NEXT_HOP**:下一跳地址。 - **LOCAL_PREF**:用于 IBGP 路由选择,值越高优先级越高。 - **MED(Multi-Exit Discriminator)**:用于 EBGP 路由选择,值越低优先级越高。 - **COMMUNITY**:用于标记路由,便于策略控制。 #### 4. **BGP路由聚合** BGP 支持两种路由聚合方式: - **手动聚合**:通过 `aggregate-address` 命令配置,可以控制聚合路由的属性,如是否携带原子聚合属性(`atomic aggregate`)。 - **自动聚合**:通过 `auto-summary` 命令启用,但不推荐使用,因为它可能导致路由信息丢失。 #### 5. **BGP路由策略** BGP 支持灵活的路由策略控制,包括: - **路由过滤**:通过访问控制列表(ACL)或前缀列表(Prefix List)控制路由的接收和发送。 - **路由映射(Route Map)**:用于复杂的路由策略控制,如修改路径属性、过滤路由等。 - **策略路由**:根据特定条件选择不同的路由策略。 #### 6. **BGP 的邻居状态机** BGP 邻居状态机包括以下几个状态: - **Idle**:初始状态,等待启动事件。 - **Connect**:等待 TCP 连接建立。 - **Active**:尝试建立 TCP 连接。 - **OpenSent**:已发送 Open 消息,等待对方的 Open 消息。 - **OpenConfirm**:收到对方的 Open 消息,等待 Keepalive 或 Notification 消息。 - **Established**:邻居关系建立,可以交换路由信息。 #### 7. **BGP 的常见配置命令** 以下是一些常见的 BGP 配置命令: - **启动 BGP 进程**: ```bash router bgp <AS号> ``` - **配置邻居**: ```bash neighbor <IP地址> remote-as <AS号> ``` - **通告网络**: ```bash network <网络地址> mask <子网掩码> ``` - **手动聚合**: ```bash aggregate-address <聚合地址> <子网掩码> [summary-only] [as-set] ``` - **路由映射**: ```bash route-map <名称> <permit/deny> <序列号> match ip address <ACL或前缀列表> set metric <MED值> ``` ### BGP 的应用场景 - **多宿主网络**:一个 AS 连接到多个 ISP,BGP 可以实现负载均衡和故障切换。 - **路由控制**:通过 BGP 路由策略控制路由的传播和选择,确保流量按照预期路径传输。 - **网络扩展**:BGP 支持大规模网络的路由管理,适用于互联网骨干网。 ### BGP 的优缺点 - **优点**: - 支持大规模网络。 - 提供灵活的路由策略控制。 - 支持多种路径属性,便于路由选择。 - **缺点**: - 配置复杂,学习曲线较陡。 - 路由收敛速度较慢。 - 对资源消耗较大,尤其是路由表规模较大时。 ### BGP 的典型问题与解决方法 - **路由环路**:通过 AS_PATH 属性防止环路。 - **路由黑洞**:确保所有路由器都能正确转发流量,通常通过 IGP 或标签交换(如 MPLS)解决。 - **路由震荡**:通过路由衰减(Route Flap Damping)机制减少频繁的路由变化。 ### 示例:BGP 配置 以下是一个简单的 BGP 配置示例,假设路由器 R1 在 AS 65001,邻居 R2 在 AS 65002: ```bash router bgp 65001 neighbor 192.168.1.2 remote-as 65002 network 172.16.8.0 mask 255.255.254.0 ``` 在 R2 上配置: ```bash router bgp 65002 neighbor 192.168.1.1 remote-as 65001 network 172.16.9.0 mask 255.255.254.0 ``` ### 总结 BGP 是一个复杂的路由协议,广泛应用于互联网中,提供灵活的路由控制和强大的扩展能力。通过合理配置和优化,BGP 可以实现高效的路由管理和网络稳定性。 --- ###
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值