1.概述
1)BGP的基本作用
- AS内部使用IGP来计算和发现路由,如OSPF,ISIS,RIP等;
- AS之间使用BGP来传递和控制路由。
2)AS:(Autonomous System)自治系统
- 自治系统(AS)--单一技术管理下的一组网络。
-16位编号(自2009年1月起使用32 位编号)
-1至65535
-私有AS:64512-65535
- 互联网编号指派机构(IANA) 会分配 AS号
- IGP 在AS 内运行。
- 自治系统间使用 BGP。
AS同时在BGP中还有关键性的作用:最佳路由的选举、避免环路、路由过滤
常用AS:中国电信163(4134)、中国电信CN2 (4809)、中国网通(9929)
常用网站:https://bgp.he.net/ https://www.iana.org/assignments/as-numbers/as-numbers.xml https://ipwhois.cnnic.cn/ https://ispip.clang.cn/
2.BGP的特点
BGP 是一种具有以下特点的路径矢量协议
- 更新可靠:BGP在 TCP(端口179)上运行
- 外部网关协议
- 仅适用单播
- 支持CIDR
- 仅增量式、触发式的更新
- 定期提供存活( keepalive) 消息以验证 TCP 连接性
- 无环路
- 丰富的度量标准(称作路矢量或属性)
- 专门为大型互联网络而设计( 如互联网 )
- 优于距离矢量协议。
使用BGP的三大理由:
- 大量路由需要承载,IGP只能容纳干条,而BGP可以容纳上万
- 支撑MPLS/VPN的应用,传递客户VPN路由。
- 策略能力强,可以很好的实现路由决策与数据控制。
3.BGP邻居
- BGP Speakers:运行BGP的路由器
- BGP Peers = BGP Neighbors = BGP对等体/邻居.
- 邻居关系建立在TCP连接基础上,因此邻居不一定需要直连,可以通过IGP或静态路由来提供TCP连接的可达性。 (区别于其它IGP)
- 邻居必须手动指定,而非自动建立 (区别于其它IGP)
- 一台BGP路由器只能运行在一个AS内 (区别于其它IGP)
- IBGP:内部BGP邻居,位于相同AS
- EBGP:外部BGP邻居,位于不同AS
BGP邻居配置命令:
refresh bgp all export/import:重置bgp出/入所有连接
BGP邻居建立条件:
- 邻居地址可达
- 自身配置中的邻居所在AS号=邻居配置中的声明所在AS号
- 数据包源IP=对方配置的邻居IP (这个源IP也叫更新源,也将作为路由的下一跳IP)
4.BGP邻居优化
为了增加稳定性,通常建议使用回环口来建立邻居。
- 更新源:建立邻居和邻居所学习到的路由的下一跳。
- 多跳:EBGP邻居建立默认需要直连,因为TTL=1,如果非直连,必须修改TTL。
EBGP邻居之间一般采用直连接口建立邻居关系。
5.BGP身份验证
BGP身份验证会在所有的包内启用。
配置命令:peer x.x.x.x password cipher 123 认证形式未MD5。
6.BGP的报文结构和类型
BGP的所有报文都是单播。
7.BGP状态
PS:重连计时器,Connect Retry,默认为32秒
BGP 活跃状态验证
活跃 (Active ) :路由器已发送一个 open 数据包,正在等待响应。状态可能会在活跃与空闲之间不断循环。
由于以下原因,邻居可能不知道如何返回到该路由器:
- 不存在指向 BGP“打开”数据包源IP 地址的路由
- 邻居与错误的地址建立对等关系
- 不存在该路由器的邻居声明
- AS 号配置错误
8.BGP数据库
BGP路由信息处理过程:
9.BGP路由宣告原则
- 缺省情况下,BGP不发布任何本地路由
- 只有明确宣告的网络才会发送给邻居。
- 宣告的网络必须能精确地在路由表中找到
- 当存在多条路径时,只选最优的给自己使用 (默认没有开启负载均衡)
- 只把自己使用的最优路由宣告给邻居
- 从EBGP学习到的路由会宣告给所有邻居
- 从IBGP学习到的路由不会宣告给IBGP(水平分割,避免环路)
- 从IBGP学习到的路由会宣告给EBGP (同步规则默认关闭) 。
10.BGP路由宣告方法: 本地宣告和引入宣告
BGP路由表验证:
11.BGP下一跳
- BGP在给邻居传递路由时的下一跳=更新源。
- 在EBGP间传递时会修改下一跳为自己的更新源
- 在IBGP间传递时不会修改下一跳为自己的更新源
peer 2.2.2.2 next-hop-local 修改下一跳为自己的更新源,建议在IBGP之间要加上此命令
12.BGP防环机制
AS内 (IBGP):水平分割
从IBGP收到的更新不会发布给IBGP (IBGP更新只传一跳)。所以如果要解决RTD接收不到路由的问题,主要由以下几种解决方法:
IBGP邻居全互联:配置、维护开销太大,路由反射器 (Route-Reflector,Originator-ID、Cluster-List)、联盟 (Confederation)
AS间 (EBGP) :AS Path
BGP更新内的重要属性,代表该路由所经过的AS号,如果接收路由器发现AS号与本地AS号一致,则丢弃。
BGP同步:Synchronization
Before a route learned from an IBGP neighbor is entered into the localrouting table, or advertised to an EBGP peer, the route must first be knownvia IGP.
在IBGP路由加入路由表并发布给EBGP对等体之前,会先检查IGP路由表,只有在IGP也知道这条IBGP路由时,它才会被加入到路由表,并发布给EBGP对等体。即指IBGP和IGP之间的同步。
目的是为了避免BGP路由黑洞,避免误导外部AS的路由器。
解决方法:所有路由器运行BGP且保持IBGP全互联;把BGP注入进IGP;MPLS VPN PS:VRP默认关闭同步,且不可改变
13.BGP路由汇总
BGP静态汇总:通过配置静态路由汇总明细路由,再用network进行宣告,这个方法不是特别推荐。
BGP自动汇总:对引入的IGP路由进行主类掩码聚合。而原引入的路由被抑制,不会被优选和发布给BGP邻居。命令summary automatic:开启自动汇总,默认关闭。一般不用。
BGP手动汇总:对引入和本地路由进行汇总。手动汇总 >自动汇总。命令:aggregate 172.16.0.0 255.255.252.0/22 detail-suppressed: 抑制发布明细路由。as-set: 保留原有明细路由的AS PATH属性。默认汇总和明细一起发布。
分别用于告诉下游BGP路由器:1.这是条汇总路由;2.汇总路由发生的AS和路由器。
BGP汇总问题:汇总路由会丢失明细路由的路径属性。
BGP汇总要求必须至少有一条明细路由时存活的。
汇总路由160.0.0.0/8被认为是始发于AS-300,但丢失了所有明细路由160.10.0.0/16 和160.20.0.0/16的AS-PATH信息。
在聚合命令后添加 as-set
aggregate ipv4-address { mask | mask-length } suppress-policy route-policy-name:只发布聚合路由和通过路由策略的被聚合的路由
aggregate ipv4-address { mask | mask-length } origin-policy route-policy-name:只将通过路由策略的路由生成聚合路由
aggregate ipv4-address { mask | mask-length } attribute-policy route-policy-name:设置聚合路由的属性
14.BGP路由属性
一组描述BGP路由特性的参数,在配置路由策略时被广泛使用。对于企业和运营商所关心的问题,如: 如何过滤某些BGP路由,如何影响BGP的选路等可以通过使用BGP丰富的路由属性得到解决。
Local-Preference:
- 除非做了策略否则LP值在AS内的IBGP邻居间传递过程中不会丢失。
- 如果EBGP间收到的路由中携带了LP,会触发Notification报文,会话中断0
- 收到EBGP发来的路由时,LP值为空,然后赋上默认值100传给IBGP。
AS-Path:
对IBGP邻居去执行修改AS-PATH的策略是无效的(华为设备无此限制);
命令总结: apply as-path 1 2 3 4 additive //添加as号到as-path 添加顺序为 4 3 2 1
apply as-path 1 2 3 4 overwrite // 用指定的as-path列表来覆盖原来的列表
apply as-path one overwrite // 清空之前的的as-path列表
peer allow-as-loop xx //用来配置本地的as号重复次数,默认情况下as号不允许重复。xx的取值默认为1,取值范围 1-10
bestroute as-path-ignore //配置bgp路由器选择路由的时候,忽略as-path属性的比较,直接比较下一条
AS-PATH类型:
大括号里的AS号在进行AS_PATH长度计算的时候,只当一跳来算。
MED:
- 仅在相邻两个AS之间传递,不会跨AS传递。
- 在IBGP间传递不会丢失,而在EBGP间是否传递要看路由是否起源于自己。
- 默认不允许比较来自不同AS邻居的路由信息的MED值,除非能够确认不同的。 compare-different-as-med:比较不同AS邻居的MED值
- MED默认值:继承直连、静态、IGP的度量值。default med:修改MED默认值,仅对本设备上引入和聚合的路由有效
Next-Hop:下一跳=更新源
15.BGP选路
BGP路由优选原则
- 该路由是到达目的地的唯一路由,直接优选。
- 对到达同一目的地的多条路由,优选优先级最高的。
- 对到达同一目的地且具有相同优先级的多条路由,使用更细的原则比较
- 1)丢弃下一跳不可达的路由
- 2)优选Preference_Value最高的路由 (私有属性,仅本地有效)
- 3)优选Local_Preference最高的路由
- 4)优选手动聚合>自动聚合>network>import>从对等体学到的
- 5)优选AS Path最短的路由
- 6)起源类型IGP>EGP>Incomplete
- 7)对于来自同一AS的路由,优选MED最小的
- 8)优选从EBGP学来的路由 (EBGP>IBGP)
- 9)优选AS内部IGP的Metric最小的路由
- 10)优选Cluster List最短的路由10
- 11)优选orginator ID最小的路由11
- 12)优选Router_ID最小的路由器发布的路由
- 13)优选IP地址最小的邻居学来的路由。
P/W L L A O M N I 如果比较到第九条全部相同,则为等价路由,可以负载分担 (默认关闭,且AS PATH必须一致)
16.BGP路由控制
BGP可以结合几乎所有的策略工具,并利用BGP路径属性,来影响BGP的选路。
17.路由过滤
As-Path-Filter:通过正则表达式对AS信息进行过滤
18.Community:团体属性
- 一种BGP特有的路由标记,用于简化路由策略的执行
- 标识具有相同特征的BGP路由,使路由策略的应用更加灵活,降低维护管理的难度
- 公认团体属性:
- 私有团体属性:自定义规则和应用方法,格式: AS2B):Number(2B)
peer advertise-ext-community :配置将扩展团体属性发布给对等体(组)
19.BGP路由反射器
RFC 4456:If an RR receives multiple routes to the same destination, it uses the normal BGP decision process to select the best path.
RFC 4456 defines three rules that the RR uses to determine who the route is advertised to, depending upon how the route was learned:
- If the route were learned from a non-client IBGP peer, it is reflected to clients only
- If the route were learned from a client, it is reflected to all nonclients and clients.except for the originating client.
- If the route were learned from an EBGP peer, it is reflected to all clients andnonclients.
层次设计: 冗余设计: 所有的RR之间建议采用IBGP全互联
防环机制:Originator-ID、 Cluster-List
20.BGP联邦: 将一个AS划分为若干成员AS,成员AS之间建立EBGP连接关系。
典型设计:
BGP联邦对路由属性的影响 :
Next-Hop: 在联邦EBGP邻居之间传递不发生改变 Local-Preference: 在联邦成员AS之间传递时,LP属性不发生改变。
AS_PATH:使用联邦专用的AS_PATH类型,同样用于防环 MED:
- 当路由在联邦内传递时,联邦成员AS号才会出现在AS_PATH属性中 当路由在联邦成员AS之间传递时,MED值不发生改变。
- 当路由传出联邦AS时,联邦AS号被移除。 当路由传出联邦时,不会携带MED值。
21.对等体组: Peer Group
- 一些具有某些相同策略的对等体的集合
- 简化配置,提高路由发布效率。
- 即把存在相同配置的BGP对等体,加入一个对等体组进行批量配置
- IPv4单播默认启用,IPv4组播和IPv6单播需要单独启用
22.BGP高级
BGP大规模路由应用:在较大规模组网或者路由条目较多的情况下,出于简化配置,减少路由条目,提升设备性能等等因素的考虑,会需要用到以下几种工具或技术:
路由聚合 (Aggregation)、对等体组 (Peer Group)、团体属性 (Community )、路由反射 (Route Reflection、BGP联盟 (Confederations )
23.BGP安全特性: RFC 4272 (BGP Security Vulnerabilities Analysis)
主要攻击:
- BGP session hijacking
- Man-in-the-Middle (MITM) attacks
- DoS and DDoS attacks
- Disabling an autonomous system (AS)
- Bogus routing information
- Domain Name Service (DNS) attacks
MD5:保护TCP会话
- RFC 2385,定义了TCP option 19。
- 在建立TCP连接时进行MD5认证,但不对BGP报文认证
- 为防止MD5密码被破解,建议周期性的更新MD5认证密码。
GTSM:Generalized TTL Security Mechanism,通用TTL安全保护机制
- RFC 3682。
- 对所有BGP报文的TTL值进行检查
- 对于不符合TTL值范围的报文,GTSM可以设置为通过或丢弃
- 防止攻击者伪造大量的“合法”BGP报文占用CPU.
- 该功能与EBGP多跳互斥,两端必须配置一致。
- 限制从对等体接收的路由数量: 防止资源耗尽性攻击。
- AS Path长度保护:接收和发送路由时检查AS Path属性中的AS号是否超限。如果超限则丢弃路由。
BGP路由衰减: RFD,BGP Flap Route Dampening
RFC 2439;用来解决路由不稳定的问题。
BGP ORF: BGP基于前缀的 ( Outbound Route Filtering ) 能力
- RRC5291、RFC5292.
- 通过Route-Refresh报文,将入口策略发送给邻居,邻居构建出口策略发送路由。
- 有效避免接收大量无用路由,降低CPU使用率,减少邻居的配置工作,降低链路带宽的占用率。
- 实现BGP按需发布路由
- 包括基于前缀的ORF和VPN ORF。
- peer 12.0.0.1 capabilitv-advertiseorf ip-prefix receive
24.活跃路由发布: Active-Route-Advertise
- 默认情况下,路由只需在BGP路由表中优选,即可向邻居发布-独立选路特性
- 该特性要求,路由还需在IP路由表中优选,才能被发送给邻居
- 可保持设备升级前后数据转发路径一致。
1.所有设备都支持独立选路,Link A;2.RR/B不支持独立选路,Link B2
25.MP-BGP
MP-BGP: Multiprotocol BGP,多协议BGP
- RFC 4760
- 为了提供对多种网络层协议的支持,IETF对BGP-4进行了扩展,并向前兼容
- 通过扩展属性和地址族来实现IPv6、组播、VPN的支持。
- 支持IPv6特性称为BGP 4+。
- 支持组播特性称为MBGP (Multicast BGP)
- 为IPv4单播、IPv6单播和组播分别建立独立的路由表
扩展能力协商: RFC 5492
26.4字节AS号
- 将AS号的编码范围由2字节扩大为4字节。
- 通过定义新的能力码和新的可选过渡属性来协商能力和传递信息
扩展属性: AS4 Path和AS4 Aggregator
AS4格式: 整数4字节AS号=x*65536+y,如: 2.3=2*65536+3=131075.
27.按策略进行下一跳迭代
- 在对非直连下一跳进行路由迭代时,如果不进行任何限制,则可能会迭代到一个错误的转发路径上。
- 通过配置路由策略来限制迭代到的路由。
- 如果路由不能通过路由策略,则该路由迭代失败。
- 从而避免将非直连下一跳迭代到错误的转发路径上。
- 相关命令:nexthop recursive-lookup route-policy wakin
28.BGP复位操作
peer x.x.x.x ignore:关闭BGP邻居
29.其他配置