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