BGP--笔记03
1.BGP邻居状态机
idle, connect, active, opensent, openconfirm, established 状态
[ active表明TCP连接己建立]
查看命令:
show ip bgp summary ---最后一列为 数字即为established
show ip bgp neighbors [detail] ---能够查看到established
调试命令:
debug ip bgp
debug ip bgp events
中断bgp邻居关系命令:clear ip bgp *
邻居关系 长时间停留在active( 本端没问题)状态 或者 在 active<--->idle 间频繁切换?
原因:
a)邻居 路由器 不存在到达本 路由器的路由
b)邻居路由器 的neighbor命令中IP地址 设置错误
c)邻居路由器 末配置neighbor
d)AS号 配置错误等
debug ip bgp keepalive 查看keepalive消息,通常是不会显示出来的
2,BGP转发 数据库( BGP表)---保存从BGP邻居处学习到的 所有 BGP路由信息.
第 一列:
*---valid有效的路由
s---suppressed 被抑制的路由 (通常是进行路由汇总时,对明细路由进行抑制)
r--- RIB-failure(路由R信息I库B) ---表示这条BGP路由在 写入IP路由表时 失败了(其他路由 协议具有更优的AD)
d--- 衰减的路由
h--- 历史的路由
第二列:
>---表示 最优路由
空白
第三列:
i 表示该路由是从iBGP邻居处学习到的
空白 表示 该路由是从eBGP邻居处学习到的
或者 该路由是 本路由器起源的
注:什么是"本路由器起源的路由"?--表示 在本路由器上将这条路由引入到BGP中来通告
第四列:IP前缀/掩码(路由)
第五列:下一跳地址
第六列:metric值(狭义的Metric)--严格的说,应该称为MED(多出口标识符)
第七列:Local Preference---本地优先级 默认为 100,,, 空白=100
第八列:Weight---权重
第九列:AS-Path
第十列:起源代码 (i,e,?)---表示这条路由是怎样引入到BGP中?
network命令:起源代码为 i
redistribute命令:从IGP重分发到BGP中,起源代码为 ?
从EGP重分发到BGP中,起源代码为 e
show ip bgp rib-faiure
3,如何维护BGP会话?
Clearing the BGP Session
1)Hard reset--- 硬复位
clear ip bgp * ---清除本路由器的 所有BGP邻居(TCP连接中断, 所有的BGP路由信息丢失)
clear ip bgp x.x.x.x ---清除本路由器的某个特定邻居(TCP连接中断,从这个邻居学习的BGP路由信息丢失)
2)Soft reset--- 软复位
soft out:
clear ip bgp * soft out ---首先BGP 邻居关系并没有中断,只是向本路由器的所有BGP邻居 重新发送一次BGP路由信息
clear ip bgp x.x.x.x soft out---首先BGP邻居关系并没有中断,只是向本路由器某个特定的BGP邻居 重新发送一次BGP路由信息
应用场合: 当 本路由器的 出口out策略 改变时,
或当 邻居路由器的 入口in 策略 改变时!
------------------------
soft in:
使用 soft in 时,分为以下2种情况:
(a)-邻居路由器支持Route Refresh特性:
clear ip bgp * soft in ---BGP邻居并没有中断,本路由器向所有BGP邻居发送Route-Refresh Request消息
BGP邻居收到该消息后将会 重新发送BGP路由信息 给 本路由器
eg,
x.x.x.x sending REFRESH_REQ(5) for afi/safi:1/1
clear ip bgp x.x.x.x soft in
应用场合:
支持Route-Refresh特性,当本路由器的 入口策略 改变时,
或当邻居路由器的 出口策略 改变时!
(b)-邻居路由器不支持Route Refresh特性:
若需要使用soft in ,则需要 额外配置一条命令
Router(config)#router bgp xxx
Router(config-router)# neighbor x.x.x.x soft-reconfiguration inbound
将邻居x.x.x.x发送给我们的原始BGP路由信息保存下来
soft-reconfiguration Per neighbor soft reconfiguration
eg.
R3(config-router)#neighbor 155.1.13.1 soft-reconfiguration ?
inbound Allow inbound soft reconfiguration for this neighbor
clear ip bgp * soft in ---BGP邻居并没有中断,使用我们保存的 原始BGP路由信息 +新的入口策略
clear ip bgp x.x.x.x soft in---BGP邻居并没有中断,使用我们保存的 原始BGP路由信息+新的入口策略
应用场合:若路由器不支持Route-Refresh特性,
当本路由器的 入口策略 改变时,
或当邻居路由器的 出口策略 改变时!
3)Route refresh---路由刷新(新增特性)发个请求
4,观察BGP路由更新
debug ip bgp update
注:在发送BGP路由更新时
a, 通告路由 【 可达性】 信息
问题:能否在一个Update中通告多个路由?
i. 如果这些路由的 路径属性 是一致的,则可以在同一个update中通告
ii.如果这些路由的 路径属性 是不一致的,则必须在不同update中通告
b. 通告路由 【 不可达】 信息(【路由撤销】)
问题:能否在 一个Update中通告多个路由?
因为在 通告路由不可达信息时,并 不包含路径属性,因此可以同时通告
5,BGP的选路原则
1)BGP的路径属性
a) 路径属性的分类
i, Wel-known VS Optional
well-known:【 公认属性】,表示该路径属性 能够被【所有的BGP实现者支持】
optional:【 可选属性】,表示该路径属性 【不一定】能够被所有的BGP实现者支持
说明:RFC(Requet For Comment),should be,must be,may be
ii,Mandatory VS Discretionary
Mandatory:【 强制属性】, 要求在每个BGP更新中,必须包含该路径属性 eg.AS-PATH
Dicretionary:【 自由选择属性】,在BGP更新中,可以包含也可以不包含该路径属性
iii,Transitive VS nontransitive
Transitive: 【 传递 属性】若一个bgp实现者收到无法识别的optional属性,若该属性为transitive,保留并传给其他的bgp实现者
nontransitive: 【 非传递属性】若一个bgp实现者收到无法识别的optional属性,若该属性为nontransitive,丢弃
iv. Partial
针对 可选 传递
若一个bgp实现者收到无法识别的 optoinal属性,若该属性为 transitive,则保留并传给其他的bgp实现者,同时将该属性标为 Partial
常见BGP路径属性:
Well-known Mandatory: 公认强制属性
Well-known Discretionary: 公认自由选择属性
Optoinal Transitive: 可选传递属性
Optional Nontransitive: 可选非传递属性
6,BGP路径属性:
1)【 AS-Path】: ( 公认强制)
防止As之间的环路
AS-PATH 等于?
当一个BGP路由器向 e BGP邻居通告路由时,会将本路由器所属的AS添加在AS_PATH的 最左边。
400 500 600 700
<----
当一个BGP路由器向 i BGP邻居通告路由时, AS_PATH 保持不变。
2)【 Next-hop】: ( 公认强制)
Next-hop 等于?
当一个BGP路由器向 e BGP邻居通告路由时,Nexthop 修改为本路由器
当一个BGP路由器向 i BGP邻居通告路由时,Nexthop保持不变。
3)【 Origin】: ( 公认强制)
i/e/?
i: 表示该BGP路由是通过 network命令引入的
e:表示该BGP路由是通过redistribute命令从EGP引入的
?:表示该BGP路由是通过redistribute命令从IGP引入的
以下是 作BGP策略控制的参数
4)【 Local Preference】(公认自由选择) iBGP中
目的:控制【 离开】本AS的 流量。--------路由是 in 的方向 [学习路由的方向]
在BGP中 ,【LocPref越高】,路由越优先,缺省情况下,Local Preference为100,空白 也是100
LocalPreference属性 只能在 【i BGP】邻居间 传播!
5)【 MED】: ( cisco设备----metric , 可选非传递) eBGP中
目的:控制【 进入】本AS的 流量。
MED属性传播给 e BGP邻居,并在 e BGP所属的AS中传播( 注:对方AS不能将MED再发送给其他AS)
在BGP中 ,【MED越小】,路由越优先。
注:缺省情况下,BGP路由器只会比较来自【 同一个AS】的MED值!
6)【 Weight】:权重。( Cisco私有属性) Local Router
Weight属性不传播给任何BGP邻居,只能在【 同一个路由器】上使用!
【 Weight越大】,路由越优先!
其它…………
注: 数据流量的方向<------->路由的学习方向 相 反
BGP的选路原则
注意:BGP 设计不是为了负载均衡,它的选路是 【 根据 策略】 来进行的!它的选路 与带宽无关
最终,BGP将为每个目标 网络 选择出【一条】 最优的路由 提交给IP路由表,再使用AD来筛选路由
(若需要进行负载均衡,需要额外的命令配置)
首先BGP只考虑 【同步】(如果同步原则开启的话 ),【无AS环路 】,【有效的下一跳地址】 情况下:
:
1)优先选择 Weight最 大
注:cisco路由器上,本地路由器起源的路由Weight设为32768,而从其他路由器学习的均为0
(因为Weight属性不传播给任何BGP邻居)(假设末做任何策略)
*2)优先选择 Local Preference最高 (控制 离开流量)
3)优先选择 本路由器起源 ( next-hop为0.0.0.0) Cisco路由器Weight=32768
4)优先选择 AS-Path最短
5)优先选择 Origin Code最小(i<e<?) ---[ i(IGP) < e(EGP) < ?(Incomplete) ]
*6)优先选择 MED值 最小 (控制 进入流量)
7)优先选择从 eBGP邻居学习的路由
8)优先选择 从最近的IGP邻居学习的路由
9)优先选择 最老的路由(既最稳定的路由)
10)优先选择从具有 最小BGP RouterID的邻 居学习的路由
11)优先选择 the path with the lowest neighbor IP address
idle, connect, active, opensent, openconfirm, established 状态
[ active表明TCP连接己建立]
查看命令:
show ip bgp summary ---最后一列为 数字即为established
show ip bgp neighbors [detail] ---能够查看到established
调试命令:
debug ip bgp
debug ip bgp events
中断bgp邻居关系命令:clear ip bgp *
邻居关系 长时间停留在active( 本端没问题)状态 或者 在 active<--->idle 间频繁切换?
原因:
a)邻居 路由器 不存在到达本 路由器的路由
b)邻居路由器 的neighbor命令中IP地址 设置错误
c)邻居路由器 末配置neighbor
d)AS号 配置错误等
debug ip bgp keepalive 查看keepalive消息,通常是不会显示出来的
2,BGP转发 数据库( BGP表)---保存从BGP邻居处学习到的 所有 BGP路由信息.
第 一列:
*---valid有效的路由
s---suppressed 被抑制的路由 (通常是进行路由汇总时,对明细路由进行抑制)
r--- RIB-failure(路由R信息I库B) ---表示这条BGP路由在 写入IP路由表时 失败了(其他路由 协议具有更优的AD)
d--- 衰减的路由
h--- 历史的路由
第二列:
>---表示 最优路由
空白
第三列:
i 表示该路由是从iBGP邻居处学习到的
空白 表示 该路由是从eBGP邻居处学习到的
或者 该路由是 本路由器起源的
注:什么是"本路由器起源的路由"?--表示 在本路由器上将这条路由引入到BGP中来通告
第四列:IP前缀/掩码(路由)
第五列:下一跳地址
第六列:metric值(狭义的Metric)--严格的说,应该称为MED(多出口标识符)
第七列:Local Preference---本地优先级 默认为 100,,, 空白=100
第八列:Weight---权重
第九列:AS-Path
第十列:起源代码 (i,e,?)---表示这条路由是怎样引入到BGP中?
network命令:起源代码为 i
redistribute命令:从IGP重分发到BGP中,起源代码为 ?
从EGP重分发到BGP中,起源代码为 e
show ip bgp rib-faiure
3,如何维护BGP会话?
Clearing the BGP Session
1)Hard reset--- 硬复位
clear ip bgp * ---清除本路由器的 所有BGP邻居(TCP连接中断, 所有的BGP路由信息丢失)
clear ip bgp x.x.x.x ---清除本路由器的某个特定邻居(TCP连接中断,从这个邻居学习的BGP路由信息丢失)
2)Soft reset--- 软复位
soft out:
clear ip bgp * soft out ---首先BGP 邻居关系并没有中断,只是向本路由器的所有BGP邻居 重新发送一次BGP路由信息
clear ip bgp x.x.x.x soft out---首先BGP邻居关系并没有中断,只是向本路由器某个特定的BGP邻居 重新发送一次BGP路由信息
应用场合: 当 本路由器的 出口out策略 改变时,
或当 邻居路由器的 入口in 策略 改变时!
------------------------
soft in:
使用 soft in 时,分为以下2种情况:
(a)-邻居路由器支持Route Refresh特性:
clear ip bgp * soft in ---BGP邻居并没有中断,本路由器向所有BGP邻居发送Route-Refresh Request消息
BGP邻居收到该消息后将会 重新发送BGP路由信息 给 本路由器
eg,
x.x.x.x sending REFRESH_REQ(5) for afi/safi:1/1
clear ip bgp x.x.x.x soft in
应用场合:
支持Route-Refresh特性,当本路由器的 入口策略 改变时,
或当邻居路由器的 出口策略 改变时!
(b)-邻居路由器不支持Route Refresh特性:
若需要使用soft in ,则需要 额外配置一条命令
Router(config)#router bgp xxx
Router(config-router)# neighbor x.x.x.x soft-reconfiguration inbound
将邻居x.x.x.x发送给我们的原始BGP路由信息保存下来
soft-reconfiguration Per neighbor soft reconfiguration
eg.
R3(config-router)#neighbor 155.1.13.1 soft-reconfiguration ?
inbound Allow inbound soft reconfiguration for this neighbor
clear ip bgp * soft in ---BGP邻居并没有中断,使用我们保存的 原始BGP路由信息 +新的入口策略
clear ip bgp x.x.x.x soft in---BGP邻居并没有中断,使用我们保存的 原始BGP路由信息+新的入口策略
应用场合:若路由器不支持Route-Refresh特性,
当本路由器的 入口策略 改变时,
或当邻居路由器的 出口策略 改变时!
3)Route refresh---路由刷新(新增特性)发个请求
4,观察BGP路由更新
debug ip bgp update
注:在发送BGP路由更新时
a, 通告路由 【 可达性】 信息
问题:能否在一个Update中通告多个路由?
i. 如果这些路由的 路径属性 是一致的,则可以在同一个update中通告
ii.如果这些路由的 路径属性 是不一致的,则必须在不同update中通告
b. 通告路由 【 不可达】 信息(【路由撤销】)
问题:能否在 一个Update中通告多个路由?
因为在 通告路由不可达信息时,并 不包含路径属性,因此可以同时通告
5,BGP的选路原则
1)BGP的路径属性
a) 路径属性的分类
i, Wel-known VS Optional
well-known:【 公认属性】,表示该路径属性 能够被【所有的BGP实现者支持】
optional:【 可选属性】,表示该路径属性 【不一定】能够被所有的BGP实现者支持
说明:RFC(Requet For Comment),should be,must be,may be
ii,Mandatory VS Discretionary
Mandatory:【 强制属性】, 要求在每个BGP更新中,必须包含该路径属性 eg.AS-PATH
Dicretionary:【 自由选择属性】,在BGP更新中,可以包含也可以不包含该路径属性
iii,Transitive VS nontransitive
Transitive: 【 传递 属性】若一个bgp实现者收到无法识别的optional属性,若该属性为transitive,保留并传给其他的bgp实现者
nontransitive: 【 非传递属性】若一个bgp实现者收到无法识别的optional属性,若该属性为nontransitive,丢弃
iv. Partial
针对 可选 传递
若一个bgp实现者收到无法识别的 optoinal属性,若该属性为 transitive,则保留并传给其他的bgp实现者,同时将该属性标为 Partial
常见BGP路径属性:
Well-known Mandatory: 公认强制属性
Well-known Discretionary: 公认自由选择属性
Optoinal Transitive: 可选传递属性
Optional Nontransitive: 可选非传递属性
6,BGP路径属性:
1)【 AS-Path】: ( 公认强制)
防止As之间的环路
AS-PATH 等于?
当一个BGP路由器向 e BGP邻居通告路由时,会将本路由器所属的AS添加在AS_PATH的 最左边。
400 500 600 700
<----
当一个BGP路由器向 i BGP邻居通告路由时, AS_PATH 保持不变。
2)【 Next-hop】: ( 公认强制)
Next-hop 等于?
当一个BGP路由器向 e BGP邻居通告路由时,Nexthop 修改为本路由器
当一个BGP路由器向 i BGP邻居通告路由时,Nexthop保持不变。
3)【 Origin】: ( 公认强制)
i/e/?
i: 表示该BGP路由是通过 network命令引入的
e:表示该BGP路由是通过redistribute命令从EGP引入的
?:表示该BGP路由是通过redistribute命令从IGP引入的
以下是 作BGP策略控制的参数
4)【 Local Preference】(公认自由选择) iBGP中
目的:控制【 离开】本AS的 流量。--------路由是 in 的方向 [学习路由的方向]
在BGP中 ,【LocPref越高】,路由越优先,缺省情况下,Local Preference为100,空白 也是100
LocalPreference属性 只能在 【i BGP】邻居间 传播!
5)【 MED】: ( cisco设备----metric , 可选非传递) eBGP中
目的:控制【 进入】本AS的 流量。
MED属性传播给 e BGP邻居,并在 e BGP所属的AS中传播( 注:对方AS不能将MED再发送给其他AS)
在BGP中 ,【MED越小】,路由越优先。
注:缺省情况下,BGP路由器只会比较来自【 同一个AS】的MED值!
6)【 Weight】:权重。( Cisco私有属性) Local Router
Weight属性不传播给任何BGP邻居,只能在【 同一个路由器】上使用!
【 Weight越大】,路由越优先!
其它…………
注: 数据流量的方向<------->路由的学习方向 相 反
BGP的选路原则
注意:BGP 设计不是为了负载均衡,它的选路是 【 根据 策略】 来进行的!它的选路 与带宽无关
最终,BGP将为每个目标 网络 选择出【一条】 最优的路由 提交给IP路由表,再使用AD来筛选路由
(若需要进行负载均衡,需要额外的命令配置)
首先BGP只考虑 【同步】(如果同步原则开启的话 ),【无AS环路 】,【有效的下一跳地址】 情况下:
:
1)优先选择 Weight最 大
注:cisco路由器上,本地路由器起源的路由Weight设为32768,而从其他路由器学习的均为0
(因为Weight属性不传播给任何BGP邻居)(假设末做任何策略)
*2)优先选择 Local Preference最高 (控制 离开流量)
3)优先选择 本路由器起源 ( next-hop为0.0.0.0) Cisco路由器Weight=32768
4)优先选择 AS-Path最短
5)优先选择 Origin Code最小(i<e<?) ---[ i(IGP) < e(EGP) < ?(Incomplete) ]
*6)优先选择 MED值 最小 (控制 进入流量)
7)优先选择从 eBGP邻居学习的路由
8)优先选择 从最近的IGP邻居学习的路由
9)优先选择 最老的路由(既最稳定的路由)
10)优先选择从具有 最小BGP RouterID的邻 居学习的路由
11)优先选择 the path with the lowest neighbor IP address