目录
2.BGP路由宣告规则:缺省情况下,BGP不发布任何本地路由
AS_path:AS路径,BGP路由在传输的路径中所经历的AS列表
MED:Multi-Exit-DISC:相当于IGP的度量值
BGP选路原则:BGP不像IGP,本身并没有路由算法,而是结合丰富的路由属性进行选路
BGP可以结合几乎所有的策略工具,并利用BGP路径属性,来影响BGP的选路
私有团体属性:自定义规则应用方法,格式:AS(2B):Number(2B)
负载均衡:maximum load-balancing 2 #配置最多2个负载均衡
一、BGP的概述以及优点
1.BGP概述:
边界网关协议(Border Gateway Protocol,BGP)是一种用来在路由选择域之间交换网络层可达性信息(Network Layer Reachability Information,NLRI)的路由选择协议。由于不同的管理机构分别控制着他们各自的路由选择域,因此,路由选择域经常被称为自治系统AS(Autonomous System)。现在的Internet是一个由多个自治系统相互连接构成的大网络,BGP作为事实上的Internet外部路由协议标准,被广泛应用于ISP(Internet Service Provider)之间。
早期发布的三个版本分别是BGP-1、BGP-2和BGP-3,主要用于交换AS之间的可达路由信息,构建AS域间的传播路径,防止路由环路的产生,并在AS级别应用一些路由策略。当前使用的版本是BGP-4。
2.BGP的优点
①更新可靠:BGP在TCP(端口179)上运行
②仅增量式,触发式更新
③定期提供存活(keepalive)消息以验证TCP连接性
④丰富的度量标准
⑤专门为大型互联网而设计
二、使用BGP的三大理由
1.大量路由需要承载,IGP只能容纳千条,而BGP可以容纳上万条
2.支撑MPLS/VPN的应用,传递客户VPN路由
3.策略能力强,可以很好的实现路由决策与数据控制
三、BGP邻居概述
BGP邻居类型:EBGP(外部BGP邻居,不同AS号)、IBGP(内部BGP邻居,相同AS号)
1.BGP Speakers:运行BGP的路由器
2.BGP Peers=BGP Neighbors=BGP对等体
3.邻居关系建立在TCP连接基础上,因此邻居不一定需要直连,可以通过IGP或静态路由来提供
4.邻居必须手动指定,而非自动建立
5.一台BGP路由器只能运行在一个AS内
四、BGP配置命令
bgp 123 #声明所在AS号(创建进程)
router-id 1.1.1.1 #配置RID,必须唯一
peer 12.0.0.2 as-number 123 #配置邻居IP地址和所在AS号(如果是EBGP,则是对方AS号)
display bgp peer #显示BGP邻居状态
五、BGP邻居建立条件
1.邻居地址可达
2.自身配置中的邻居所在AS号=邻居配置中声明所在AS号
3.数据包源IP=对方配置的邻居IP(这个源IP也叫更新源,也将作为路由的下一跳IP)
六、使用回环口建立邻居
为了增强稳定性,通常建议使用回环口建立邻居,但是在建立邻居的时候会遇到两个问题:
1.更新源:建立邻居和邻居所学习到的路由的下一跳
2.多跳:EBGP邻居建立默认需要直连,因为TTL为1,如果非直连,必须修改TTL值
peer 2.2.2.2 connect-interface lo1 #配置更新源(数据包源IP)
peer 2.2.2.2 ebgp-max-hop 2 #配置TTL=2,默认=1(在AS之间加上这条命令,两边都要配置)
peer 2.2.2.2 password cipher 123 #配置身份验证,MD5形式,在两边都要配
七、BGP报文和状态
所有报文都是单播!!
L2 Header | IP Header | TCP Header | BGP Packets | FCS |
1.BGP报文类型:
Open包:类似HELLO包,建立邻居关系
Keepalive包:类似HELLO包,维护邻居关系
Update包:路由更新,包含属性
Notfication包:当检测到错误,发送后关闭BGP连接
Route-Refresh包:当路由策略发生变化时,触发请求邻居重新通告路由
2.BGP状态机
Idle:初始,路由器查找路由表,是否有到达邻居的路由
Connect:发起TCP连接,等待TCP连接完成
Active:TCP连接失败,继续尝试TCP连接
Open Sent:TCP连接成功,已发送Open包
Open Confirm:已收到对方正确的Open包,如果没有收到,会进入Active状态
Established:邻居建立完成,开始传递路由
BGP活跃(Active)状态验证:路由器已经发送了一个Open包,正在等待响应
状态可能会在活跃与空闲之间不断循环。
由于以下原因,邻居可能不知道如何返回到该路由器
1.不存在指向BGP“打开”数据包源IP地址的路由
2.邻居与错误的地址建立对等体关系
3.不存在与该路由器的邻居声明
4.AS号配置错误
八、BGP路由宣告
1.BGP数据库:
类型 | 备注 |
邻居表 | BGP邻居名单 |
BGP路由表 | 列出从邻居那里获取到的所有路由及属性 |
IP路由表 | 列出最佳路由 |
Adj-RIB-IN | 邻居宣告给本地的未处理的路由信息数据库 |
Adj-RIB-OUT | 本地宣告给指定邻居的路由信息库 |
2.BGP路由宣告规则:缺省情况下,BGP不发布任何本地路由
①只有明确宣告的网络才会发送给邻居。 # network/import
②宣告的网络必须能精确地在路由表中找到。 # 精确是指路由表中有的路由
③多条路径时,只选最优的给自己使用。
④只把自己使用的最优路由宣告给邻居。
⑤ 从EBGP学习到的路由会宣告给所有邻居。
⑥ 从IBGP学习到的路由不会宣告给IBGP。 # IBGP之间只传一跳
⑦ 从IBGP学习到的路由会宣告给EBGP。
3.BGP路由宣告方法:本地宣告和引入宣告
命令 | 备注 |
network 192.168.0.0 255.255.255.0 | 宣告路由,精确匹配且存在路由表中 |
import-route ospf/rip/static/connect route-policy | 引入路由,通常结合路由策略 |
default-route imported | 允许引入缺省路由,默认不允许 |
peer 2.2.2.2 default-route-advertise | 向邻居宣告一条缺省路由,不论本地是否存在缺省路由 |
九、BGP下一跳
1.BGP在给邻居传递路由时的下一跳=更新源
2.在EBGP间传递时会修改下一跳为自己的更新源
3.在IBGP间传递时不会修改下一跳为自己的更新源
命令 | 备注 |
peer 2.2.2.2 next-hop-local | 修改下一跳为自己的更新源(在IBGP之间建议加) |
十、BGP防环机制和聚合
1.BGP防环机制
AS内(IBGP):水平分割,从IBGP收到 等更新不会发布给IBGP(IBGP更新只传一跳)
所以要解决IBGP内的路由器接收不到路由的问题,主要解决方法如下:
①IBGP邻居全互联:配置,维护开销太大
②路由反射器
③联盟
AS间(EBGP):AS_path,BGP更新内的重要性,代表该路由所经过的AS号,如果接收路由器发现AS号与本地AS号一致,则丢弃
2.BGP路由聚合
①BGP静态聚合:通过配置静态路由汇总明细路由,再用network进行宣告
②BGP自动聚合:对引入的IGP路由进行主类掩码聚合
而原引入的路由被抑制,不会被优选和发布给BGP邻居
summary automatic:开启自动聚合,缺省关闭
③BGP手动聚合:对引入和本地路由进行聚合
手动聚合 > 自动聚合
aggregate 172.16.0.0 255.255.252.0 # 配置手动聚合
+detail-supperssed # 抑制发布明细路由
+as-set # 保留原有明细路由的AS_path属性
十一、BGP路由属性
bgp路由属性:
一组描述BGP路由特性的参数,在配置路由策略时被广泛使用。对于企业和运营商所关心的问题,如:如何过滤某些BGP路由?如何影响BGP的选路?通过使用BGP丰富的路由属性,就可以得到解决。
1.公认必遵:origin,AS_path,next_hop
所有BGP路由器都可以识别,且必须存在于Update消息中
2.公认任意:Local_pref,Atomic_aggregate
所有BGP路由器都可以识别,但不要求必须存在于Update消息中
3.可选过渡:Aggregator,Community
不能被所有BGP路由器识别,如果无法识别,可以传递给邻居
4.可选非过渡:Med
不能被所有BGP路由器识别,如果无法识别,则丢弃该属性
各个路由属性概述:
Prefval:优选值,越大越优点
Origin:起源,BGP路由的生成方式
i:代表IGP,由network宣告的路由
e:代表EGP,由EGP(已经淘汰)学到
?:代表incomplete,由import引入
优先级:i>e>?
AS_path:AS路径,BGP路由在传输的路径中所经历的AS列表
EBGP传递时更新(加入自己的AS号)
丢弃AS_path属性中包含本AS Number的路由(防止AS间环路)
AS数量越少越优先
Next_hop:下一跳=更新源
Local-preference:本地优先级
只传播给IBGP邻居(本地)
越大越优先,默认=100
常用于控制流量怎样流出AS(出站路由)
MED:Multi-Exit-DISC:相当于IGP的度量值
区别到达同一邻居AS的多条入口链路
越小越优先
仅在相邻两个AS之间传递,收到此属性的AS不会再通告给任何其他第三方
常用于控制流量怎样进入本AS(入站路由)
缺省情况下,不允许比较来自不同AS邻居的路由信息的MED值,除非能够确认不同的AS采用了同样的IGP和路由选择方式,则可以用命令:compare-different-as-med
BGP选路原则:BGP不像IGP,本身并没有路由算法,而是结合丰富的路由属性进行选路
有三种情况:
1.该路由是到达目的地的唯一路由,直接优选
2.对到达同一目的地的多条路由,优选优先级最高的
3.对到达同一目的地且具有相同优先级的多条路由,则用更细的原则进行比较:13条
①丢弃下一跳不可达的路由
②优选Preference_value最高的路由(私有属性,仅本地有效)值越大越优先
③优选Local_preference最高的路由
④优选手动聚合>自动聚合>network>import>从对等体学到的
⑤优选AS_path最短的路由
⑥ 起源类型IGP>EGP>Incomplete
⑦对于来自同一AS的路由,优选MED最小的
⑧优选从EBGP学来的路由ebgp>ibgp
⑨优选AS内部IGP的Metric最小的路由
⑩优选cluster_list最短的路由
⑪ 优选orginator_ID最小的路由
⑫优选Router_ID最小的路由器发布的路由
⑬ 优选IP地址最小的邻居学来的路由
十二、BGP路由控制与过滤
BGP可以结合几乎所有的策略工具,并利用BGP路径属性,来影响BGP的选路
命令 | 备注 |
peer 2.2.2.2 prefered-value 100 | #配置优选值,默认=0 |
default local-preference 200 | #配置本地优先级,默认=100 |
default med 100 | #配置MED,默认=0 |
peer 2.2.2.2 allow-as-loop 3 | #配置AS编号重复次数 |
路由方向就是路由从发布到接收的方向 R1>>R2>>R3,从R1发布到R3,R3就是入方向
BGP路由过滤
命令 |
filter-policy 2000 export/import |
peer 2.2.2.2 filter-policy 2000 export/import |
peer 2.2.2.2 as-path-filter pyy export/import |
peer 2.2.2.2 ip-prefix pyy export/import |
peer 2.2.2.2 route-policy pyy export/import |
以上如果同时配置,根据表格顺序进行过滤 |
十三、BGP团体属性(Community)
标识具有相同特征的BGP路由,使路由策略的应用更加灵活,降低维护管理的难度
公认团体属性:
Internet:0(0x00000000) | 向任何BGP邻居宣告 |
NO_Advertise:4294967042(0xFFFFFF02) | 不向任何BGP邻居宣告 |
NO_Export:4294967041(0xFFFFFF01) | 不向EBGP邻居宣告,但可以向联盟内的EBGP邻居宣告 |
NO_Export_Subconfed:4294967043(0xFFFFFF03) | 不向任何EBGP邻居宣告 |
私有团体属性:自定义规则应用方法,格式:AS(2B):Number(2B)
命令 | 备注 |
peer 2.2.2.2 advertise-community | #配置允许邻居发送团体属性给邻居 |
ip community-filter 1 permit | #创建团体属性过滤器 |
display bgp routing-table community | #查看带有团体属性的路由 |
BGP复位操作:高危操作!!
命令 | 备注 |
reset BGP all | 复位所有BGP连接 |
reset bgp as-number | 复位与指定AS间的BGP连接 |
reset bgp x.x.x.x | 复位与指定邻居的BGP连接 |
reset bgp internal | 复位所有IBGP连接 |
reset bgp external | 复位所有EBGP连接 |