BGP--笔记02
BGP
1,BGP邻居关系
Peers = Neighbors
BGP邻居:
首先建立TCP连接,并通过该TCP连接来交换BGP路由信息
1)eBGP(External BGP):外部BGP邻居
建立邻居关系的路由器位于不同的AS中
通常认为【eBGP邻居】是【直连】,因此在发送BGP消息给eBGP邻居时,【缺省】的TTL值为【1】IP报文的TTL
2)iBGP(Internal BGP):内部BGP邻居
建立邻居关系的路由器位于相同的AS中
通常认为iBGP邻居是【非直连】, 因此在发送BGP消息给iBGP邻居时,【缺省】的TTL值为【255】
2,iBGP全互连问题
在Transit AS中,为了避免出现路由黑洞,则存在以下2种解决方案:
1)将BGP路由重分发到IGP中,一般不建议使用
2)中转Transit AS中的【所有路由器】运行BGP,并且形成【全互联iBGP】邻居
--[在末节AS中完全没有必要,只要在出口的部分配置BGP就足够了]--
3,BGP路由通告的原则
1)从iBGP邻居学习的路由,不能通告给iBGP邻居(水平分割原则)--[避免在 【AS内部】 形成环路]
AS_PATH--[避免在 【AS之间】 形成环路,外部会改变]
eBGP------iBGP-----X---->iBGP
2)从eBGP邻居学习的路由,可以通告给iBGP邻居或eBGP邻居
3)从iBGP邻居学习的路由,能否通告给eBGP邻居?
a)若【开启同步原则】
则这条通过iBGP学习的BGP路由,通过IGP也必须能够学习到(即满足同步条件),可以;
否则 本路由器不会使用该路由,并且不可以发送给eBGP邻居
b)若【关闭同步原则】(为了避免该AS中的路由黑洞,在iBGP邻居【全互联】时可以安全的关闭"同步原则")
可以
注:能够通告给BGP邻居的路由应该都是本路由器认为【最优】的路由!
BGP路由通告的原则
i) 从iBGP邻居学习的路由, 不能通告给iBGP邻居(水平分割原则) iBGP ---X---> iBGP
ii)从eBGP邻居学习的路由, 可以通告给iBGP邻居或eBGP邻居 eBGP ------->iBGP or eBGP
iii)从iBGP邻居学习的路由, 能否通告给eBGP邻居? iBGP -------> ? eBGP
a)若开启同步 synchronization On 原则
则这条能通过iBGP学习的BGP路由,通过IGP也必须能够学习到(既满足同步条件)
---可以
否则本路由器不会使用该路由,并且---不可以---发送给eBGP邻居!
自己使用和发给邻居的表明都是最优路由
b)若关闭同步原则(为了避免路由黑洞,在iBGP邻居全互联时可以安全的关闭"同步原则")
---可以
4,BGP的基本配置
1)进入BGP路由协议的配置模式
router(config)#router bgp 65000(本路由器所属的AS号)
---该配置并没有启动BGP,只是进入到该模式,【邻居配置完成】建立好后 才算启用BGP
【一般1个路由器只能运行1个BGP进程】
2)配置BGP邻居
Router(config-router)#neighbor x.x.x.x remote-as 邻居所属的AS号
---对于eBGP和iBGP配置是通用的
** 暂时关闭邻居关系:
Routere(config-router)#neighbor ip-address | peer-group-name 【shutdown】
若想暂时关闭邻居关系,建议采用shutdown而不是前面加no ,
因为neighbor后的配置带有参数情况下,no neighbor xxxx 会将相关参数都删除,恢复起来配置繁琐!
**恢复邻居关系:
Routere(config-router)#【no】neighbor ip-address | peer-group-name 【shutdown】
5,BGP邻居建立时的【源IP地址】问题
一个BGP路由器收到BGP消息时,将检查该BGP消息的源IP地址,如果该源IP地址不在我的BGP邻居列表中,则忽略该BGP消息!
因此在建立BGP邻居时,若BGP邻居间存在多条路径可达,则为了提高邻居的可靠性,同时为了不必建立过多的邻居关系,
通常通过【loopback接口】来建立邻居。
配置1:
RouterA:
router bgp 65102
neighbor 10.2.2.4 remote-as 65102
路由器A如何和路由器D建立BGP邻居?
BGP消息: 源IP为? 目标IP为? 10.2.2.4
此时的源IP地址会根据路由器A的路由表中去往10.2.2.4的下一跳若为10.3.3.3,
则RouterA发送BGP消息的源IP地址为10.3.3.1
因此RouterD收到后,由于10.3.3.1不在RouterD的邻居列表中,RouterD将忽略该BGP消息
RouterD:
router bgp 65102
neighbor 10.1.1.1 remote-as 65102
=========================
配置2:【推荐】
RouterA:
router bgp 65102
neighbor 4.4.4.4 remote-as 65102
neighbor 4.4.4.4 update-source loopback 0
RouterD:
router bgp 65102
neighbor 1.1.1.1 remote-as 65102
neighbor 1.1.1.1 update-source loopback 0
注:使用IGP可以保证loopback接口可达
6,eBGP邻居的多跳问题
eBGP缺省情况下是直连的,实际中并非直连
--当eBGP邻居不是直连时,必须配置eBGP多跳参数,调整其TTL值,使得BGP消息能够正常发送到邻居路由器
Router(config-router)#neighbor x.x.x.x ebgp-multihop 跳数 (修改为能够让BGP消息正常到达对端路由器即可)
步骤
1)配置静态路由.保证建立邻居关系的二个loopback接口的路由是可达的
eg, ip route 1.1.1.1 255.255.255.255 192.168.1.34--(去往环回接口的主机路由)
2)创建eBGP邻居
loopback接口并非直连接口,所以报文至少经过2个路由器才可到达对方
eg,
router bgp 65102
neighbor 1.1.1.1 remote-as 65101
neighbor 1.1.1.1 update-srouce loopback 0
neighbor 1.1.1.1 ebgp-multihop 2
注:
如果是(1)非直连的路由器
或
通过(2)环回接口 来建立的邻居关系的时候,一定要指定多跳的参数,跨路由器来建立eBGP邻居关系
7,下一跳行为
默认情况下,路由器A发送BGP更新给【eBGP邻居】(路由器B)时,该路由的下一跳地址将【修改】为路由器A的某个IP地址
(注:具体的IP地址为路由器A与路由器B建立BGP邻居关系的IP地址)
路由器A发送BGP更新给【iBGP邻居】(路由器B)时,该路由的下一跳地址将【保持不变】!
在iBGP邻居学习BGP路由时,为了保证下一跳是可达的,可以强制更改下一跳地址
*****主要针对 i BGP邻居进行更改
Router(config-router)#neighbor x.x.x.x next-hop-self
表示发送BGP路由更新给x.x.x.x这个邻居时,将路由的下一跳地址更改为本路由器与x.x.x.x建立BGP邻居关系的IP地址
8,Peer-Group(对等体组)
要求:
配置在同一个peer-group中的BGP邻居必须拥有相同的出口(outbound)策略,但是入口策略可以不同
优点:
1)简化BGP邻居的配置
2)提高 BGP更新报文 产生的效率
9,BGP中的路由通告
Router(config-router)#network x.x.x.x [mask y.y.y.y]
1)BGP用来通告某条路由,
2)只要在本路由器的路由表中存在该路由,BGP就可以将它通告出去
network 192.168.1.0 mask 255.255.255.0 -----通告24位掩码路由
network 192.168.1.0 mask 255.255.255.128 ----通告25位掩码路由
-----------------------------------------------------
与IGP中的network对比
1)用来确定本路由器的哪些接口启动该IGP协议
2)network后的网段肯定是与本路由器的接口IP对应
-----------------------------------------------------
若BGP中的network未添加掩码,分为以下2种情况:
1)自动汇总开启
假设在BGP路由协议下配置:
router(config)#router bgp 65000
router(config)#network 172.16.0.0
只要该路由器上存在172.16.0.0路由 或者
它的任何一个子网路由,----->则该路由器将会通告172.16.0.0/16,不会通告子网路由
2)关闭自动汇总(新版本都是关闭的,network后面的网络号+掩码 必须能够在路由表中精确匹配,才可以通告该路由信息)
Router(config)#router bgp 65000
Router(config-router)# no auto-summary
假设在BGP路由协议下配置:
router(config)#router bgp 65000
router(config)#network 172.16.0.0
**只有该路由器上存在172.16.0.0/16时,才会通告172.16.0.0/16;
router(config)#network 172.16.1.0 mask 255.255.255.128
**只有该路由器上存在172.16.0.0/25时,才会通告172.16.0.0/25.
注:可以将IGP学习到的路由直接重分发到BGP中。
10.BGP中如何进行【路由汇总】?
1)【使用network命令进行汇总】
a)首先手工配置一种汇总路由,【指向NULL0 】
b)使用network命令,网络号+掩码为 汇总的路由
例如:R1的路由表中存在以下路由:
172.16.0.0/24
172.16.1.0/24
172.16.2.0/25
172.16.3.0/24
R1(config)#ip route 172.16.0.0 255.255.252.0 null 0
R1(config)#router bgp 65000
R1(config-router)#network 172.16.0.0 mask 255.255.252.0
2)使用【aggregate-address】命令
注:该命令会自动产生一条 null0 的路由
172.16.0.0/24
172.16.1.0/24
172.16.2.0/25
172.16.3.0/24
R1(config)#router bgp 65000
R1(config-router)#network 172.16.0.0 mask 255.255.255.0
R1(config-router)#network 172.16.1.0 mask 255.255.255.0
R1(config-router)#network 172.16.2.0 mask 255.255.255.128
R1(config-router)#network 172.16.3.0 mask 255.255.255.0
R1(config-router)#aggregate-address 172.16.0.0 255.255.252.0 [summary-only]--- 该参数只通告汇总路由,明细路由不通告
另:
R1(config)#router bgp 65000(假设以上IGP路由是通过OSPF学习到的)
R1(config-router)#redistribute ospf 1
R1(config-router)#aggregate-address 172.16.0.0 255.255.252.0 [summary-only]
1,BGP邻居关系
Peers = Neighbors
BGP邻居:
首先建立TCP连接,并通过该TCP连接来交换BGP路由信息
1)eBGP(External BGP):外部BGP邻居
建立邻居关系的路由器位于不同的AS中
通常认为【eBGP邻居】是【直连】,因此在发送BGP消息给eBGP邻居时,【缺省】的TTL值为【1】IP报文的TTL
2)iBGP(Internal BGP):内部BGP邻居
建立邻居关系的路由器位于相同的AS中
通常认为iBGP邻居是【非直连】, 因此在发送BGP消息给iBGP邻居时,【缺省】的TTL值为【255】
2,iBGP全互连问题
在Transit AS中,为了避免出现路由黑洞,则存在以下2种解决方案:
1)将BGP路由重分发到IGP中,一般不建议使用
2)中转Transit AS中的【所有路由器】运行BGP,并且形成【全互联iBGP】邻居
--[在末节AS中完全没有必要,只要在出口的部分配置BGP就足够了]--
3,BGP路由通告的原则
1)从iBGP邻居学习的路由,不能通告给iBGP邻居(水平分割原则)--[避免在 【AS内部】 形成环路]
AS_PATH--[避免在 【AS之间】 形成环路,外部会改变]
eBGP------iBGP-----X---->iBGP
2)从eBGP邻居学习的路由,可以通告给iBGP邻居或eBGP邻居
3)从iBGP邻居学习的路由,能否通告给eBGP邻居?
a)若【开启同步原则】
则这条通过iBGP学习的BGP路由,通过IGP也必须能够学习到(即满足同步条件),可以;
否则 本路由器不会使用该路由,并且不可以发送给eBGP邻居
b)若【关闭同步原则】(为了避免该AS中的路由黑洞,在iBGP邻居【全互联】时可以安全的关闭"同步原则")
可以
注:能够通告给BGP邻居的路由应该都是本路由器认为【最优】的路由!
BGP路由通告的原则
i) 从iBGP邻居学习的路由, 不能通告给iBGP邻居(水平分割原则) iBGP ---X---> iBGP
ii)从eBGP邻居学习的路由, 可以通告给iBGP邻居或eBGP邻居 eBGP ------->iBGP or eBGP
iii)从iBGP邻居学习的路由, 能否通告给eBGP邻居? iBGP -------> ? eBGP
a)若开启同步 synchronization On 原则
则这条能通过iBGP学习的BGP路由,通过IGP也必须能够学习到(既满足同步条件)
---可以
否则本路由器不会使用该路由,并且---不可以---发送给eBGP邻居!
自己使用和发给邻居的表明都是最优路由
b)若关闭同步原则(为了避免路由黑洞,在iBGP邻居全互联时可以安全的关闭"同步原则")
---可以
4,BGP的基本配置
1)进入BGP路由协议的配置模式
router(config)#router bgp 65000(本路由器所属的AS号)
---该配置并没有启动BGP,只是进入到该模式,【邻居配置完成】建立好后 才算启用BGP
【一般1个路由器只能运行1个BGP进程】
2)配置BGP邻居
Router(config-router)#neighbor x.x.x.x remote-as 邻居所属的AS号
---对于eBGP和iBGP配置是通用的
** 暂时关闭邻居关系:
Routere(config-router)#neighbor ip-address | peer-group-name 【shutdown】
若想暂时关闭邻居关系,建议采用shutdown而不是前面加no ,
因为neighbor后的配置带有参数情况下,no neighbor xxxx 会将相关参数都删除,恢复起来配置繁琐!
**恢复邻居关系:
Routere(config-router)#【no】neighbor ip-address | peer-group-name 【shutdown】
5,BGP邻居建立时的【源IP地址】问题
一个BGP路由器收到BGP消息时,将检查该BGP消息的源IP地址,如果该源IP地址不在我的BGP邻居列表中,则忽略该BGP消息!
因此在建立BGP邻居时,若BGP邻居间存在多条路径可达,则为了提高邻居的可靠性,同时为了不必建立过多的邻居关系,
通常通过【loopback接口】来建立邻居。
配置1:
RouterA:
router bgp 65102
neighbor 10.2.2.4 remote-as 65102
路由器A如何和路由器D建立BGP邻居?
BGP消息: 源IP为? 目标IP为? 10.2.2.4
此时的源IP地址会根据路由器A的路由表中去往10.2.2.4的下一跳若为10.3.3.3,
则RouterA发送BGP消息的源IP地址为10.3.3.1
因此RouterD收到后,由于10.3.3.1不在RouterD的邻居列表中,RouterD将忽略该BGP消息
RouterD:
router bgp 65102
neighbor 10.1.1.1 remote-as 65102
=========================
配置2:【推荐】
RouterA:
router bgp 65102
neighbor 4.4.4.4 remote-as 65102
neighbor 4.4.4.4 update-source loopback 0
RouterD:
router bgp 65102
neighbor 1.1.1.1 remote-as 65102
neighbor 1.1.1.1 update-source loopback 0
注:使用IGP可以保证loopback接口可达
6,eBGP邻居的多跳问题
eBGP缺省情况下是直连的,实际中并非直连
--当eBGP邻居不是直连时,必须配置eBGP多跳参数,调整其TTL值,使得BGP消息能够正常发送到邻居路由器
Router(config-router)#neighbor x.x.x.x ebgp-multihop 跳数 (修改为能够让BGP消息正常到达对端路由器即可)
步骤
1)配置静态路由.保证建立邻居关系的二个loopback接口的路由是可达的
eg, ip route 1.1.1.1 255.255.255.255 192.168.1.34--(去往环回接口的主机路由)
2)创建eBGP邻居
loopback接口并非直连接口,所以报文至少经过2个路由器才可到达对方
eg,
router bgp 65102
neighbor 1.1.1.1 remote-as 65101
neighbor 1.1.1.1 update-srouce loopback 0
neighbor 1.1.1.1 ebgp-multihop 2
注:
如果是(1)非直连的路由器
或
通过(2)环回接口 来建立的邻居关系的时候,一定要指定多跳的参数,跨路由器来建立eBGP邻居关系
7,下一跳行为
默认情况下,路由器A发送BGP更新给【eBGP邻居】(路由器B)时,该路由的下一跳地址将【修改】为路由器A的某个IP地址
(注:具体的IP地址为路由器A与路由器B建立BGP邻居关系的IP地址)
路由器A发送BGP更新给【iBGP邻居】(路由器B)时,该路由的下一跳地址将【保持不变】!
在iBGP邻居学习BGP路由时,为了保证下一跳是可达的,可以强制更改下一跳地址
*****主要针对 i BGP邻居进行更改
Router(config-router)#neighbor x.x.x.x next-hop-self
表示发送BGP路由更新给x.x.x.x这个邻居时,将路由的下一跳地址更改为本路由器与x.x.x.x建立BGP邻居关系的IP地址
8,Peer-Group(对等体组)
要求:
配置在同一个peer-group中的BGP邻居必须拥有相同的出口(outbound)策略,但是入口策略可以不同
优点:
1)简化BGP邻居的配置
2)提高 BGP更新报文 产生的效率
9,BGP中的路由通告
Router(config-router)#network x.x.x.x [mask y.y.y.y]
1)BGP用来通告某条路由,
2)只要在本路由器的路由表中存在该路由,BGP就可以将它通告出去
network 192.168.1.0 mask 255.255.255.0 -----通告24位掩码路由
network 192.168.1.0 mask 255.255.255.128 ----通告25位掩码路由
-----------------------------------------------------
与IGP中的network对比
1)用来确定本路由器的哪些接口启动该IGP协议
2)network后的网段肯定是与本路由器的接口IP对应
-----------------------------------------------------
若BGP中的network未添加掩码,分为以下2种情况:
1)自动汇总开启
假设在BGP路由协议下配置:
router(config)#router bgp 65000
router(config)#network 172.16.0.0
只要该路由器上存在172.16.0.0路由 或者
它的任何一个子网路由,----->则该路由器将会通告172.16.0.0/16,不会通告子网路由
2)关闭自动汇总(新版本都是关闭的,network后面的网络号+掩码 必须能够在路由表中精确匹配,才可以通告该路由信息)
Router(config)#router bgp 65000
Router(config-router)# no auto-summary
假设在BGP路由协议下配置:
router(config)#router bgp 65000
router(config)#network 172.16.0.0
**只有该路由器上存在172.16.0.0/16时,才会通告172.16.0.0/16;
router(config)#network 172.16.1.0 mask 255.255.255.128
**只有该路由器上存在172.16.0.0/25时,才会通告172.16.0.0/25.
注:可以将IGP学习到的路由直接重分发到BGP中。
10.BGP中如何进行【路由汇总】?
1)【使用network命令进行汇总】
a)首先手工配置一种汇总路由,【指向NULL0 】
b)使用network命令,网络号+掩码为 汇总的路由
例如:R1的路由表中存在以下路由:
172.16.0.0/24
172.16.1.0/24
172.16.2.0/25
172.16.3.0/24
R1(config)#ip route 172.16.0.0 255.255.252.0 null 0
R1(config)#router bgp 65000
R1(config-router)#network 172.16.0.0 mask 255.255.252.0
2)使用【aggregate-address】命令
注:该命令会自动产生一条 null0 的路由
172.16.0.0/24
172.16.1.0/24
172.16.2.0/25
172.16.3.0/24
R1(config)#router bgp 65000
R1(config-router)#network 172.16.0.0 mask 255.255.255.0
R1(config-router)#network 172.16.1.0 mask 255.255.255.0
R1(config-router)#network 172.16.2.0 mask 255.255.255.128
R1(config-router)#network 172.16.3.0 mask 255.255.255.0
R1(config-router)#aggregate-address 172.16.0.0 255.255.252.0 [summary-only]--- 该参数只通告汇总路由,明细路由不通告
另:
R1(config)#router bgp 65000(假设以上IGP路由是通过OSPF学习到的)
R1(config-router)#redistribute ospf 1
R1(config-router)#aggregate-address 172.16.0.0 255.255.252.0 [summary-only]
本文深入讲解BGP配置细节,包括BGP邻居关系建立、路由通告原则、基本配置、邻居源IP地址选择、eBGP多跳问题、下一跳行为、Peer-Group应用、路由通告方法及汇总技巧等内容。
2275

被折叠的 条评论
为什么被折叠?



