使用范围:BGP范围,在AS之间使用的协议
协议的特点(算法):路径矢量型,没有算法
协议是否传递网络掩码 :传递网络掩码,支持VLSM CIDR
协议消息数据包封装:基于TCP封装,端口号:179
AS:自治系统
自治系统范围:1-65535
公有AS (1-64511) 私有 AS(64512-65535)
一.BGP协议特点
1.BGP是一种路径矢量型路由协议
2.BGP协议版本,当前版本V4(V4+)V1 V2 V3(有类别) V4(无类别 仅仅支持IPV4单播路由传递) V4+(支持IPV4单播路由、IPV6单播 IPV4 组播 、IPV6组播、VPNV4 、VPNV6 等,除了IPV4单播路由之外的其他的 都称为 MP-BGP—多协议BGP; 注意:默认仅仅支持传递IPV4单播路由, 传递其他方式路由时需要开启(激活))
3.更新地址:单播更新
4.更新方式:触发更新、增量更新
5.BGP协议中存在大量的属性(是一种基于规则的路由协议)
6.BGP协议支持路由认证
7.支持BGP路由聚合(汇总)
8.BGP是一种非常消耗资源的路由协议
二.适合使用BGP的网络环境
1.传输AS
2.多宿主
3.需要对进入和离开的流量进行强大的策略控制时
三.BGP邻居关系
IBGP :内部BGP邻居
EBGP:外部BGP邻居
IBGP邻居的防环机制:IBGP 水平分割机制(IBGP只传一跳规则,通过一 个IBGP邻居学习的路由不能传递给其他的IBGP邻居);next-hop、起源 者属性、簇ID列表.
EBGP邻居的防环机制:AS-Path AS路径防环,不接收AS-Path中包含自 身AS号的路由信息
四.BGP 邻居状态机制
Idle : 初始化
Connect :连接 Active : 活动
Opensent:发送open报文 Openconfirm :open报文确认
Established :邻居状态
五.BGP消息数据包
Open keepalive updata notification
1.open :建立BGP邻居关系,只发送一次。
BGP邻居关系建立条件:
1.router-id 必须不同
2.BGP认证一致
3.指定正确的AS号
4.建立TCP三次握手的两端路由可达
2.keepalive :保活,维持BGP邻居关系。周期性发送周期时间keepalive 时间默认为60s
Hold 时间,保持时间默认为180s
3.update :更新
通告路由:
撤销路由:
4.notification :报告(错误报告)
六.BGP配置
IBGP:直连物理接口建立,非直连接口建立(环回接口)
EBGP:直连物理接口建立,非直连接口建立(环回接口)
启用BGP协议:
手工指定router-id
手工指定邻居:
修改更新源:默认更新源为到达peer的本地出接口地址
修改更新源:默认更新源为到达peer的本地出接口地址
修改EBGP之间多跳(EBGP之间数据包TTL默认为1 )
作用:1.关闭EBGP之间直连检测 2.修改EBGP数据包的TTL值
查看BGP 邻居表:
1.BGP邻居表
查看BGP邻居表的摘要信息:
2.BGP路由表
3.IP路由表
BGP 路由AD值:
EBGP:255
IBGP:255
Local BGP : 255
注意:EBGP邻居之间传递路由最小间隔为30s
IBGP邻居之间传递路由最小间隔为15s
1.路由不优问题;
原因:1.下一跳不可达 2.IBGP同步
下一跳属性规则:
1.network 引入 默认next-hop 属性为0.0.0.0
2.IBGP或者EBGP邻居学习到的路由,下一跳默认为对方的更新源地址(即建立TCP三次握手的对方IP地址)
3.IBGP学习路由传递给EBGP邻居时,下一跳为EBGP邻居建立的更新源地址(EBGP邻居路由传递给EBGP邻居时也一样)
4.EBGP学习路由传递给IBGP邻居时,下一跳不发生改变
特点:在思科中, 若IBGP和EBGP邻居都使用MA网络进行连接,同时EBGP邻居使用MA物理接口建立邻居,此时将IBGP邻居路由传递给EBGP邻居时,下一跳属性为到达IBGP邻居的MA物理接口地址
针对传递EBGP路由给IBGP时,下一跳不发生改变,会导致IBGP邻居学习路由由于下一跳不可达导致路由不优,所以在IBGP邻居之间修改next-hop属性为自身:
数据层面的路由黑洞:
1.在边界设备上将BGP重发布引入IGP协议(仅仅引入EBGP邻居学习并加表的路由)
2.在AS内建立全互联的IBGP邻居关系
3.减少IBGP邻居关系的数量,打破IBGP水平分割
a.路由反射器
b.EBGP 联邦
4.MPLS
对等体组 peer group : 将多个peer 划入一个group中,针对group实施BGP邻居关系建立的配置
优点:1.减少BGP配置 2.将多个peer划入一个group仅仅针对一个group一次性消耗CPU 内存等资源,所有可以解决资源
配置:
创建group :
针对group定义配置
将peer划入对等体组:
查看:
路由反射器:
反射规则: 非非不传(非客户端收到的路由不能传递给其他的非客户端)
在路由反射器中,由于破坏了IBGP水平分割机制,可能导致路由环路,所以引入了起源者属性和簇ID属性进行防环
设置路由反射器: 设置对等体组中用户为路由反射器的客户端,同时宣告自身为路由反射器的服务器端。
设置RR的cluster-id
查看反射之后的路由:
EBGP联邦:先部署小AS,再声明大AS
注意: 联邦EBGP邻居既有IBGP邻居特性又有EBGP邻居特性
IBGP特性:1.下一跳问题 2.学习到的路由标记为IBGP
EBGP特性:邻居建立过程中存在EBGP邻居的非直连检测和TTL问题
联邦EBGP防环:引入联邦AS序列号进行防环(与AS-path 区别 1.不计入选路 2.当传递出大的AS时消失)
声明大的AS号:
在需要建立联盟EBGP之间指定peer-as
查看接收到的联邦IBGP邻居路由
查看联邦EBGP邻居路由:
团体属性: 可选可传递属性
标准团体属性:定义BGP路由的传播范围
扩展团体属性:针对传递的路由信息进行标记
Internet—可以传递给所有邻居
no-advertise—不能传递给任何邻居
no-export—不能传递出大的AS
no-export-subconfed—不能传递出小的AS
默认情况下,所有路由器识别并支持所有的属性,但是不传递
开启传递BGP团体属性的能力:
开启支持传递标准团体属性
开启支持传递扩展团体属性
路由导入: 1.network 自身通告(可以通告所有路由表的路由条目)
2.import 重发布引入
1.network 引入next-hop属性永远为0.0.0.0 ,将原本IGP中的metric值以MED属性的方式引入
注意: 在思科中,若引入的路由是存在下一跳地址的(IGP或下一跳做法的静态),则引入的路由下一跳属 性为原始路由的下一跳地址目的是为了IBGP协议防环,BGP不接收下一跳为自己的BGP路由;在华为中, network引入的路由下一跳属性为0.0.0.0 ,失去了下一跳防环机制,可能会导致临时的路由环路。
2.默认import引入属性与network通告属性相同(区别: 起源码属性为?)
3.BGP协议默认关闭自动汇总,若开启自动,仅仅针对重发布进入的路由生效,将引入的明细路由进行抑 制,进行自动汇总(汇总成主类),同时MED属性丢失
开启或关闭自动汇总:
路由的导出: import
华为中,BGP协议import进入IGP协议时,默认只能将EBGP邻居学习并加表的路由导出进入IGP协议;可以通 过参数 permit-ibgp ,将IBGP邻居学习路由以及自身network通告引入的路由 也引入进IGP协议.
增加BGP协议的安全性:
1.BGP路由认证:BGP的路由认证信息存在于TCP数据结构中,密码信息使用MD5 方式
2.限制BGP邻居的TTL值
启用BGP协议路由认证:
启用BGP TTL限制:
BGP邻居关系重置
1.重启BGP邻居
2.开启BGP路由刷新能力(默认该属性已开启)
重置BGP邻居(断开三次握手,重新建立)
手工进行BGP路由刷新:
路由过滤:
使用ACL 或前缀列表定义策略:
在fitter-policy中调用:
查看:
在BGP邻居关系建立过程中进行路由过滤(使用fitter-policy只能调用ACL )
调用:
查看:
BGP 路由聚合(就是IGP中的汇总):
1.利用BGP 可以network 所有加表的路由信息
通告:
查看:
2.使用聚合者属性进行路由聚合
注释:
1.默认情况,发送聚合路由也发送所有的明细路由
2.detail-suppressed ,仅仅发送聚合路由,抑制所有的明细路由发送
3.suppress-policy , 使用抑制列表进行控制,抑制列表调用route-policy,此时route-policy 仅仅抓取感兴趣路 由(只有permit),抑制列表自身有过滤功能
4.origin-policy,就是条件策略,针对origin-policy中匹配的路由存在时,聚合才会生效
5.attribute-policy ,仅仅针对聚合路由进行策略控制
6.as-set,可以还原聚合路由中丢失的某些属性(例如AS-path)
注意: 在进行路由聚合时,会丢弃某些属性,例如AS-path,导致网络故障(严重的会出现路由环路),还 有一些属性会自动生成一些默认值。
存在问题的属性: 1.AS-Path(丢失) 2.origin(默认使用所有明细中最差的 )3.LP(丢失) 4.团体属性(丢 失)
使用AS-SET属性之后:
AS-PATH:会将经过的所有AS恢复,若存在重复的多个AS路径中,将所有经过的AS 写入到一个叫做AS序列 属性中, 在计算AS-path长度时仅仅算一个
Origin:默认使用所有明细中最差的 (思科中默认使用i,使用了AS-SET之后才会选择最差的)
LP:丢失(思科中,使用最小的LP)
COM:丢失(在思科中会恢复所有团体属性,同时使用)
特点:
1.被惩罚的路由不能参与选路,不能加入本地的IP路由表,不能传递
2.路由惩罚仅仅针对EBGP邻居学习的路由,并且针对的是某一个邻居传递的路由 并非路由条目本身
惩罚值:路由条目每翻滚一次,惩罚值增加1000,路由属性每翻滚一次惩罚值增 加500, 1000 500 是硬件编码的,不能修改
惩罚门限:超过了惩罚门限开启进行路由惩罚,默认值为2000
重用门限:当惩罚值低于该值,重新使用该路由信息,默认为750
半衰期:默认为15分钟
思科:设置了一个最大的惩罚时间默认为 60分钟
Maxpenalty=reuselimit*2^(maximulnsuppresstime/halftime)
注意: 在思科中,最大惩罚值是计算出来的,所以值修改路由惩罚参数时,需要 提前运算,保证最大惩罚值一定是大于惩罚门限的
华为:最大惩罚值 ,默认为16000 .
启用BGP路由惩罚:
查看路由惩罚参数:
查看被惩罚的路由:
清楚所有被惩罚的路由信息:
BGP选路:
选路条件: BGP路由必须有效,无环的,不能被惩罚 。
当到达同一目的地存在多条路由时,BGP依次对比下列属性来选择路由:
Preference value : 优先级值 华为私有 (cisco 中使用weight 权重值)
作用: 选路
数值范围: 0-65535 , 越大越优,默认值为0
仅仅在本设备上生效,不能传递
方法一:
1.使用ACL或前缀列表定义感兴趣路由
2.使用route-policy修改优先级值
3.调用
查看:
方法二:
针对某个邻居发送的所有路由修改优先级值 :
Local preference : 本地优先级
作用: 用于控制离开本AS的流量时使用
范围:0-4294967295 , 默认值为100 , 数值越大越优;可以在整个AS之内传输
部署位置: 一般建议在存在EBGP邻居的IBGP邻居之间
方法一:在AS边界路由器上实施
查看:
方法二:
1.使用ACL 或前缀列表抓取路由
2.使用route-policy 修改LP
3.调用:
As-path :
作用:代表本路由信息经过了那些AS
默认值:无,越短越优
注意: 在EBGP邻居之间使用,import(离开其他AS进入本AS之前增加某些AS
号,所以增加的AS 出现在直连AS的左边) export(离开本AS之前已经增加了某 些AS ,所以增加的AS号出现在本AS的右边);在EBGP联邦中出现的AS号不计入 长度的大小, 若出现在大括号时,大括号内无论存在多个少AS号,都只当做一 个;
使用route-policy 增加AS path
Origin : 起源码
作用:代表着BGP路由的来源
默认值: 无, i>e>? i(0) e(1)?(2)
部署位置:所有BGP路由器上
MED:多出口鉴别属性
作用:用于影响进入某AS的流量控制时使用
默认值:med 可以当做metric值,med 属性也是只能在某一个AS之内使用,med 的比较默认一定是来自于直连相同的AS中路由
设置时就是修改cost值
开启IBGP EBGP 负载均衡
注意: 当开启了负载均衡时,仅仅是针对本地的IP路由器执行,BGP协议依然会 继续选路,选出最优的一条路由进行传递
查看:
查看IP路由表: