前言
本文作者:肉肉
本文链接:https://blog.csdn.net/Arouroua/article/details/106093877
更多源代码请参考我的
【GitHub】
bgp
-
边界网关协议( Border Gateway Protocol,BGP)是互联网上一个核心的去中心化自治路由协议
-
bgp本身就是一个多地址的协议簇(mp-bgp,多协议bgp)–地址族(ipv4)
-
bgp刷新很慢,需要手工刷新,加快收敛
-
AS,自治性系统域(16位的号码空间—>会扩展到32位)
1、bgp基本概述
bgp作用
- AS内部使用IGP来计算和发现路由,如OSPF,ISIS,RIP等。
- AS之间使用BGP来传递和控制路由。
bgp特点
- 更新可靠,在
tcp --179
运行 - 仅增量是、触发更新
- 定期提供存活消息以验证tcp连接性
- 丰富的度量标准(称为路径矢量或属性)
- 专门为大型互联网络设计
- 优于距离矢量
bgp的理由
-
大量路由需要承载,能容纳上万条
-
支持mpls\vpn的应用,传递客户vpn路由
-
策略能力强,可以很好的实现路由策略与数据控制
2、bgp邻居关系建立与配置
bgp邻居概述
-
bgp speakers :运行bgp的路由器
-
bgp peers=bgp neighbor=bgp对等体\邻居
-
邻居关系建立在tcp连接基础上,因此邻居不一定需要直连,可以通过igp(keepalive,60s)或静态路由提供tcp连接的可靠性(区别于其他igp)
-
邻居必须手动指定,而非自动建立(区别于其他igp),所有的包都是单播
-
一台bgp路由器只能运行在一个as内(区别于其他igp)
邻居类型
ibgp
:内部bgp邻居,位于相同asebgp
:外部bgp邻居,位于不同as
bgp报文
open
:类似hello,只发一次,建立邻居关系keeplive
:类似hello,维护邻居关系update
:路由更新,包含属性notification
:当检测到错误,发送后关闭bgp连接route-refresh
:当路由策略发生变化时,触发请求邻居重新通告路由
bgp状态机
idle
:初始,路由器查找路由表,是否有到达邻居的路由connect
:发起tcp连接,等待tcp连接完成active
:tcp连接失败继续尝试tcp连接open sent
:tcp连接成功,已发送open包open confirm
:已收到对方正确的open包,如果没有收到就会进入activeestablished
:邻居建立完成,开始传递
活跃状态验证
active
:路由器已经发送一个open包,正在等待响应
- 状态可能会在活跃与空闲之间不断循环
- 原因,邻居可能不知道如何返还到该路由器
- 不存在只想bgp“打开”数据包源ip地址的路由
- 邻居与错误的地址建立对等关系
- 不存在路由器的邻居声明
- as配置错误
邻居建立过程
bgp邻居建立的条件
- 邻居地址可达
- 自身配置中的邻居as号=邻居配置中的声明所在as号
- 数据包源ip=对方配置的邻居ip(这个源ip也叫更新源,也称作路由的下一跳ip)
bgp邻居建立配置命令
bgp 123 //声明所在as号(创建进程)
router-id 1.1.1.1 //和ospf一样,必须唯一
peer 12.0.0.2 asnumber 123 //配置邻居的ip地址和所在as号
display bgp peer //查看邻居
bgp邻居优化
- 建立EBGP邻居关系时,一般使用直连接口的IP地址;建立IBGP邻居关系时,一般使用Loopback接口的IP地址
router id 3.3.3.3
bgp 100
peer 10.1.35.5 as-number 300
peer 2.2.2.2 as-number 100
Peer 2.2.2.2 connect-interface loopback 0
-
使用环回口建立bgp邻居:为了增强稳定性,通常建议使用环回口来建立邻居
-
更新源
:建立邻居和邻居所学习都的路由下一跳 -
多跳:
ebgp
邻居建立默认需要直连,因为TTL=1,如果非直连必须修改TTL(经过一个路由TTL会减一)
peer x.x.x.x connect-intterface lo 1 //配置更新源
peer xxxxx ebgp-max-hop[2] //配置TTL
- ebgp邻居建立一般采用直连接口建立邻居
bgp身份验证
- 会在所有包内运行
peer 2.2.2.2 password cipher xxx //配置身份验证,md5形式
3、bgp路由生成方式
network
bgp xxx
network xxxx xxxx
import
bgp xxx
import-route xxx route-policy import
4、bgp通告原则与路由处理
bgp数据库:
-
邻居表:bgp邻居名单
-
bgp路由表(转发数据库):列出从邻居那里多获取的所有路由及属性
-
ip路由表:列出最佳路由
-
adj-rib-in:邻居宣告给本地的未处理的路由信息库
-
adj-rib-out:本地宣告给指定邻居的路由信息库
宣告原则
- 缺省情况下,bgp不发布任何本地路由
- 只有
明确宣告
的网络才会发送给邻居 - 宣告的网络必须精确地在路由表中找到
- 仅将自己
最优
的路由发布给邻居 - 通过EBGP获得的最优路由发布给所有BGP邻居
通过IBGP获得的最优路由不会发布给其他的IBGP邻居
- BGP与IGP同步
#
display bgp routing-table
#
路由信息处理
-
IP路由表(IP_RIB):全局路由信息库,包括所有的IP路由信息。
-
BGP路由表(Local_RIB):BGP路由信息库,包括本地BGP路由器选择的路由信息,邻居表,邻居清单列表
bgp防环:
as内(ibgp):水平分割
-
从ibgp收到的更新不会发布给备份(ibgp封信只传一跳)
-
ibgp邻居全互联 :配置开销太大
-
路由反射器(route-reflector)
-
联盟(confederation)
as间(ebgp):AS-PATH
- 经过路由器的as号=本地as 号,要丢弃
- 号码从近到远
5、bgp常用属性介绍
- 公认必遵:所有bgp都可以识别,必须存在update中
- 公认任意:所有bgp都可以识别,但不要求存在update中
- 可选过渡:不能被所有bgp路由识别,如果无法识别,可以传递给邻居
- 非可选过渡:不能被所有bgp路由识别,如果无法识别,则丢弃该属性
pre
- 私有属性
- 定义本地路由的优先级,本地有效
- 不传播给邻居
- 越大越优先
origin
- 起源属性
- 定义路由信息来源,标记一条路由是怎么样成为bgp路由的
- Origin的3种属性:
i
表明BGP路由通过network命令注入;e
表明BGP路由是从EGP学来的,EGP协议在现网中很难见到,但可以通过路由策略将路由的Origin属性修改为e;?
即Incomplete表明BGP路由通过其它方式学到路由信息,如使用import命令引入的路由。
- 3种Origin属性的优先级为:i>e>Incomplete(?)。
AS_Path
-
as路径属性
-
定义经过的s的序列,列出此路在传递过程中经过了那些as。可以防止环路,并用于路由的过滤和选择
-
AS_Path的4种类型:
- AS_Sequence
- AS_Set
- AS_Confed_Sequence
- AS_Confed_Set
Next_hop
-
bgp在给邻居传递路由是的下一跳=更新源
-
ebgp间传递是会修改下一跳为自己的更新源
-
在ibgp传递第不会改自己的下一跳
-
BGP路由器将本端始发路由发布给IBGP邻居时,会把该路由信息的Next_hop设为本端建立邻居关系所使用的接口IP。
-
BGP路由器在向EBGP邻居发布路由时,会把路由信息的Next_hop设置为本端与对端建立BGP邻居关系的接口IP。
-
BGP路由器在向IBGP邻居通告从EBGP学来的路由时,不改变该路由下一跳属性。
igbp间
#
peer xxxx next-hop-local //修改下一跳为自己的更新源
#
Local_Preference
- 本地优先级属性
- 用于在as内优选到达某一目的地路由。反映了bgp speaker 对每条bgp路由的偏好程度
- 越大越优
- Local_Pref属性仅在IBGP邻居之间有效,不通告给其他AS。它表明路由器的BGP优先级,值越大越优。
Local_Pref属性用于判断流量离开AS时的最佳路由。当BGP路由器通过不同的IBGP邻居获得目的地址相同但下一跳不同的多条路由时,将优先选择Local_Pref属性值较高的路由,其默认值为100。
MED
-
当耨个as有多个入口时,可以用med属性来帮助其外部的as选择一个较好的入口路径
-
越小越优先
-
MED(Multi-Exit-Discriminator)属性仅在相邻两个AS之间传递,收到此属性的AS不会再将其通告给任何其他第三方AS,用于判断流量进入AS时的最佳路由。
Community
- Community属性分为两类:一类是公认团体属性,另一类是扩展的团体属性。
- 公认团体属性分为4类:
Internet
:缺省属性,所有路由都属于Internet,此属性的路由可以通告给所有BGP邻居;No_Export
:收到此属性的路由后,不将该路由发布到其他AS。如图,RTB上希望10.1.11.0/24的路由发布给AS 12之后,不再发布给其他AS,则可将10.1.11.0/24的Community属性设置为No_Export;No_Advertise
:收到此属性的路由后,不将该路由通告给任何其他的BGP邻居。如图,RTB上希望只将10.1.11.0/24的路由发布给RTC,并且不再通告给任何其他的BGP邻居,则可将10.1.11.0/24的Community属性设置为No_Advertise;No_Export_Subconfed
:在联盟中使用,这里不做介绍。
扩展的团体属性用一组4字节为单位的列表来表示,路由器中扩展的团体属性格式为aa:nn或团体号:
aa:nn中,aa通常为AS编号,nn是管理员定义的团体属性标识;
团体号范围为0-4294967295,在RFC1997中,0-65535与4294901760-4294967295为预留值。
6、bgp选路原则
-
BGP路由器将路由通告给邻居后,每个BGP邻居都会进行路由优选,路由选择有三种情况:
- 该路由是到达目的地的唯一路由,直接优选。
- 对到达同一目的地的多条路由,优选优先级最高的。
-
对到达同一目的地且具有相同优先级的多条路由,必须用更细的原则去选择一条最优的。一般来说,BGP计算路由优先
级的规则如下:
- 丢弃下一跳不可达的路由。
- 优选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地址的邻居学来的路由。
7、bgp路由聚合
静态聚合
- 静态路由汇总用network
#
ip route-s xxxx xxxx null o
#
bgp xx
net xxxxx xxxx
#
自动聚合
- 引入的igp,
主类
掩码的聚合 - 原先路由表上的最优路由不会被显示
- 自动聚合只对引入BGP的路由进行聚合,聚合到自然网段后发送给邻居
#
bgp xx
summary automaticl //开自动,缺省关了
#
手动聚合
- 手动聚合对BGP本地路由表里存在的路由进行聚合,并且能指定聚合路由的掩码。
- 手动聚合>自动聚合
- 命令可选项
detail-supperssed
:抑制明细as-set
:保留as-path属性,可以防环
#
bgp xxx
aggregate xxxx xxxx detail-suppressed
aggregate xxxx xxxx as-path
#
8、实验演示
实验要求
1、所有设备配置基本的ip地址(略)
2、在AS12中配置igp
3、在AS间和AS内配置bgp,使得不同的AS间可以通信
r1
#
ospf 1 router-id 1.1.1.1
a 0
net 10.1.1.0 0.0.0.255
net 1.1.1.1 0.0.0.0
#
ip router-s 3.3.3.3 32 20.1.1.1
#
bgp 12
route-id 1.1.1.1
peer 2.2.2.2 as 12
peer 2.2.2.2 con loop 0
peer 3.3.3.3 as 3
peer 3.3.3.3 con loop 0
#
r2
#
ospf 1 route-id 2.2.2.2
a 0
net 10.1.1.0 0.0.0.255
net 30.1.1.0 0.0.0.255
net 2.2.2.2 0.0.0.0
#
bgp 12
route-id 2.2.2.2
peer 1.1.1.1 as 12
peer 1.1.1.1 con lo 0
peer 4.4.4.4 as 12
peer 4.4.4.4 con lo 0
#
r3
#
bgp 3
route-id 3.3.3.3
peer 1.1.1.1 as 12
peer 1.1.1.1 con lo 0
#
r4
#
ospf 1 route-id 4.4.4.4
a 0
net 30.1.1.0 0.0.0.255
net 4.4.4.4 0.0.0.0
#
bgp 12
route-id 4.4.4.4
peer 2.2.2.2 as 12
peer 2.2.2.2 con lo 0
#
本文均属肉肉原创,阅读过程中如有错误欢迎指出!
往期文章
最最最能测出你数通hcia基础扎不扎实的实验
stp始终学不会?这份思维导图,猛男必点,猛女必看!
华为交换机中hybrid、access、trunk的区别
数通HCIP-ospf知识点