BGP的更新源(BGP Neighbor Update Source Address):
原则1:
在默认情况下,
BGP路由器以自己路由表中,到达对方BGP邻居的地址的那条路由所指示的出接口(物理接口)的地址,作为自己的BGP更新源(源地址)
原则2:
BGP路由器,收到邻居发来的BGP信息时,会检查其源地址,
然后和自己宣告的Neighbor的目标地址进行比较,
如果一致,这个BGP Session才可建立起来.
BGP路由黑洞的解决方案:
    1:选择性重分布(Redistribute Selected BGP Route into IGP);
    2:冗余的IBGPFull-mesh IBGP);
    3:路由反射器(Part-mesh IBGP+Refilector);
    4:联邦(Confederation);
    5:(MPLS)。
LAB2:验证通过物理接口,构建IBGP邻居的不稳定性:
Step1:确认L1/L2通达
Step2:确认L3IGP通达(RIP),AS123R1/2/3
Step3:通过物理接口,R2/R3之间构建IBGP邻居
show run | begin router bgp
R2#neighbor 23.0.0.3 remote-as 123
R3#neighbor 23.0.0.2 remote-as 123
结论:
IBGP,如果使用物理接口构建邻居,是很不稳定的.
很可能因为某条物理链路的抖动,导致IBGP邻居的Flapping/抖动:
建议:
使用环回口/Loopback接口,构建IBGP邻居.
LAB3:Loopback接口作为BGP更新源,构建稳定的IBGP Session
Step1:为每个IBGP路由器,构建一个环回口:
Step2:把此Loopback接口,宣告到IGP(RIP).
R2/R3#
router rip
network 2.0.0.0
or
network 3.0.0.0
step3:R2/R3,删除原来的,通过物理接口构建的邻居.记得建立router-id
R2#router bgp 123
   no nei 23.0.0.3
r3#no nei 23.0.0.2
Step4:通过环回口构建IBGP邻居:
4-1:
以对方的环回口,作为IBGP的目标地址:
R2#neighbor 3.3.3.3 remote-as 123
R3#neighbor 2.2.2.2 remote-as 123
4-2:
更改了IBGP邻居后需要把下一跳也做相应更改
R2(config-router)#nei 3.3.3.3 next-hop-self
R3(config-router)#nei 2.2.2.2 next-hop-self
注意:删除原物理接口所做的IBGP邻居时,相应的下一跳将自动删除.
4-3:
以自己的环回口,作为IBGP连接的源地址:
R2#neighbor 3.3.3.3 update-source loopback 2
R3#neighbor 2.2.2.2 update-source loopback 3
step5:
任意切断本AS123 中的物理链路,
只要两个IBGP路由器R2/R3之间,还有最后一条能够到达,对方的环回口的路由,IBGP邻居都不会中断.
建议:
凡是构建IBGP,默认都使用环回口做更新新源,以构建稳定的IBGP.
LAB4:在两AS间,存在多条冗余链路的网络环境中:
LoopBack接口作为EBGP更新源,构建稳定的EBGP Session.
Step1:在两AS之间回口,构建多条冗余链路.
如果两AS,没有多条冗余链路,就使用物理接口构建EBGPP即可.
Step2:为两AS间的EBGP路由器,构建环回口
Step3:在各自路由器上,指定到达对方环回口静态路由:
∵有两条冗余链路,
∴要有两条到达对方环口的静态路由
R5:(config)#
ip route 3.3.3.3 255.255.255.255 35.0.0.3
ip route 3.3.3.3 255.255.255.255 100.0.0.1
r3#:(config)#
ip route 5.5.5.5 255.255.255.255 35.0.0.5
ip route 5.5.5.5 255.255.255.255 100.0.0.2
测试:
R3#ping 5.5.5.5 source 3.3.3.3 !!!!!!!!!!!!!
Step4:建立邻居EBGP邻居:
R3#
router bgp 123
bgp router-id 123.0.0.3
neighbor 5.5.5.5 remote-as 150
R5#
router bgp 150
bgp router-id 150.0.0.5
neighbor 3.3.3.3 remote-as 123
step5:告知对方,自己的更新源:
r3(config-router)#neighbor 5.5.5.5 update-source loopback 3 
r5(config-router)#neighbor 3.3.3.3 update-source loopback 5
Step6:更改EBGPTTL(Time to Live)
EBGP TTL值默认是1,
EBGPTTL值最少要设为2
而实际上EBGP多跳这个命令,在不指定其取值时,会自动默认指定为255
r3(config-router)#neighbor 5.5.5.5 EBGP-multihop(255)
r5(config-router)#neighbor 3.3.3.3 EBGP-multihop 2
TTL:time to liveL3IP包头中的一个特定字段,IP包每经过一个路由设备,TTL会自动减1.
如果TTL减到为0,即使路由器有去往目标的路由,也不会继续转发这个IP.
Step7:测试
R3上添加103.0.0.3/24
R5上添加105.5.5.5/24
r3(config)#router bgp 123 
r3(config-router)#net 103.0.0.0 mask 255.255.255.0
r5(config)#router bgp 123 
r5(config-router)#net 105.5.5.0 mask 255.255.255.0
R3#ping 105.5.5.5 source 103.0.0.3 repeat 1000000 size 15000
结论:
在一般情况下,EBGP的邻居关系,是不需要使用环回口构建邻居的.
默认都直接使用物理接口,
在只有单链路的时候,都是使用物理接口构建邻居.
只有在两AS之间,存在多条冗余链路的时候,才需要考虑使用环回口构建EBGP邻居,以确保其EBGP的稳定性.
LAB5:观察BGP黑洞的形成
Step1:按图配置BGP网络
注意:R1不运行BGP.
R2#
router rip
ver 2
network 2.0.0.0
net 23.0.0.0
net 12.0.0.0
R3#
router rip
ver 2
network 3.0.0.0
net 23.0.0.0
net 13.0.0.0
r2/3#
router bgp 123
bgp router-id 123.0.0.2/3
R2#neighbor 3.3.3.3 remote-as 123
R3#neighbor 2.2.2.2 remote-as 123
R2(config-router)#nei 3.3.3.3 next-hop-self
R3(config-router)#nei 2.2.2.2 next-hop-self
R2#neighbor 3.3.3.3 update-source loopback 2
R3#neighbor 2.2.2.2 update-source loopback 3
Step2:AS140/AS150中的BGP路由,宣告到BGP网络中:
R4#(config-if)#
router bgp 140
network 104.0.0.0 mask 255.255.255.0
记得R4R2建邻居
R5(config-if)#
router bgp 150
network 105.5.5.0 mask 255.255.255.0
Step3:过程AS123中的BGP路由用户问题:
3-1:同步
R2#
router bgp 123
no synchronization
Step4:这时候全网络互通
R4#ping 105.5.5.5 source 104.0.0.4 repeat 1000000 size 15000
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Step5:这时候切断23.0.0.0.
R4#ping 105.5.5.5 source 104.0.0.4 repeat 1000000 size 15000
..............................
R1因为没有运行BGP,
∴不会有导致BGP的路由,成为BGP路由的黑洞.
BGP路由黑洞的解决方案:
解决BGP路由黑洞,可供选择的解决方案/Solution:
1:Redistribute Selected BGP Route into IGP
2:Full-mesh IBGP
3:Part-mesh IBGP+Refilector
4:Confederation
5:MPLS
LAB6part-mesh IBGP,Redistribute Selected BGP Route into IGP,with sync(同步/synchronization)
Step1:定义需要重分布到IGP中的,BGP的路由:
R3(config)#ip prefix-list B-105 permit 105.1.0.0/16
R2(config)#ip prefix-list B-104 permit 104.1.0.0/24
Step2:通过Route-map,控制重分布到IGP的范围,
route-map R3-BGP-RP permit 10
match ip address prefix-list B-105
set metric 1
R2#
route-map R2-BGP-PR permit 10
match ip address prefix-list B-104
set metric 1
小提醒:
不要配置:"route-map R3-BGP_RP permit 20"
一旦配置,意味着所有一切BGP路由都进入IGP!
Step3:按照route-map所定义的条件,BGP路由注入RIP:
R3#
router rip
redistribute bgp 123 route-map R3-BGP-RP
Step4:R2上观察,105.5.0.0/16,
R2:同时从RIPBGP,都能学到路由,但因为AD竞争原因,
RIP所获得的路由,成功进入路由表,
而从BGP所获得的路由,不能进入路由表.
R2#show ip route
R      105.5.0.0[120/2]
R2#show ip bgp
r>i105.5.0.0/16              3.3.3.3
Step5:R2观察,如果R2,此时启动了BGP"同步",
是否还能优化?
结果:可以优化~~~!!!
因为:R2此时通过RIP,学到105.5.0.0/16,
结果:可以优化!!!!
Step6:R1观察两条路由:
R       104.4.4.0[120/1] via 12.0.0.2
R       105.5.0.0[120/1] via 13.0.0.3
R1不再是黑洞!!
Step7:R2上观察路由的递归查询:
R      105.5.0.0[120/2] via 12.0.0.1
C      12.0.0.0 is directly connected, serial0
Step8:测试:
R4#ping 105.5.5.5 source 104.4.4.4 !!!!!!!!!!!
LAB7Full-mesh IBGPNo-Sync/(Peer Groups)
Step0:启动BGP进程
R1(config)#
router bgp 123
bgp router-id 123.0.0.1
Step1:R1,使用Peer-Group(一个模版),R2/R3IGBP邻居:
1-1:定义peer-group:(模块R1-PG
R1#
router bgp 123
neighbor R1-PG peer-group
neighbor R1-PG remote-as 123
neighbor R1-PG update-source loopback 1 
1-2:对不同的IBGP邻居,调用peer-group:
neighbor 2.2.2.2 peer-group R1-PG
neighbor 3.3.3.3 peer-group R1-PG
peer-group 只是一种模版,只影响本路由器的,邻居建立的方法.
R2/R3,R1的邻居建立,仍然可以使用普通方法建立.
Step2:确保整个AS123中的所有BGP路由器的,下一跳,同步问题能够解决:
2-1:
R1/R2/R3#关闭同步
2-2:
R2,R1/R3 Say next-hop-self
R3,R1/R2 Say next-hop-self
r2/r3#nei 1.1.1.1 next-hop-self
Step3:R1,观察所有BGP路由:
*>i103.3.3.0/24       3.3.3.3
*>i104.4.4.4.0/24     2.2.2.2
*>i105.5.5.5.0/16     3.3.3.3
Step4:观察在R2上的BGP路由的递归查询:
R2#
B     105.5.0.0[/0]via 3.3.3.3
R     3.3.3.3[120200/2]via 12.0.0.1
C     12.0.0.0 is directly connected, serial0
Step5:测试:
R4#ping 105.5.5.5 source 104.0.0.4
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

1.7-BGP②的更多相关文章

  1. 1.7-BGP⑥

    BGP中的路由控制/过滤: LAB1:Distribute-list调用ACL(较落后) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~      Step1:通过ACL定义 ...

  2. 1.7-BGP⑤

    BGP Attributes/BGP属性 (通过BGP的属性,实现对BGP路由的选择/操纵) BGP Route Selection/BGP的选路原则: 1: The BGP forwarding t ...

  3. 1.7-BGP④

    注意:默认路由ip route 0.0.0.0 0.0.0.0 12.1.1.1是不可以作为BGP邻居TCP始发连接的(但回包可以) 要配静态路由:ip route 13.1.1.3 255.255. ...

  4. 1.7-BGP③

    IBGP的水平分隔原则(Split Horizon Rule): IBGP的水平分割原则:by default,routes learned via IBGP are never propagated ...

  5. 1.7-BGP①

    IGP:   包括RIP/EIGRP/OSPF/ISIS/ODR等动态路由协议   运行在同一个AS中,   通过Cost/Metirc来判断路由的优劣(越小越好):   AS:自治系统(小)   A ...

  6. BGP路由协议详解(完整篇)

    原文链接:http://xuanbo.blog.51cto.com/499334/465596/ 2010-12-27 12:02:45 上个月我写一篇关于BGP协议的博文,曾许诺过要完善这个文档,但 ...

  7. 边界网关协议BGP

    Border Gateway Protocol (BGP) is a standardized exterior gateway protocol designed to exchange routi ...

  8. 1.4-动态路由协议OSPF④

    多区域的OSPF: 划分多区域的主要目的: 1.减少每个区域中的路由条目,进而减少每个路由器的内存中的路由,及其内存消耗,提高转发效率. 2.因为每一个OSPF区域对应在一个OSPF LSDB,配合在 ...

  9. BGP MPLS IP V匹N基本概念

    BGP/MPLS IP VPN基本概念 Site 在介绍VPN时经常会提到"Site",Site(站点)的含义可以从下述几个方面理解: · Site是指相互之间具备IP连通性的一组 ...

随机推荐

  1. centos 7 中防火墙的关闭问题

    新安装的centos 7 发现有些程序端口是关闭的,想到了防火墙和selinux  selinx 好关闭 /etc/sysconfig/selinux 中 追加 SELINUX=disabled 防火 ...

  2. mysql中数据库的设计

      软件开发流程(CMMI): 1):项目启动; 2):项目计划: 3):需求分析; 需要得到的结果是什么? 4):系统设计;         该怎么做? 5):系统开发; 6):系统测试; 7):系 ...

  3. mongo 3.4分片集群系列之七:配置数据库管理

    这个系列大致想跟大家分享以下篇章: 1.mongo 3.4分片集群系列之一:浅谈分片集群 2.mongo 3.4分片集群系列之二:搭建分片集群--哈希分片 3.mongo 3.4分片集群系列之三:搭建 ...

  4. Vue指令7:v-model

    可以用 v-model 指令在表单控件元素上创建双向数据绑定. v-model 会忽略所有表单元素的 value.checked.selected 特性的初始值. 因为它会选择 Vue 实例数据来作为 ...

  5. VC++代码转换为QT代码问题总结

    一边开发一边总结......  QQ937113547

  6. CAD得到指定条件的实体

    主要用到函数说明: IMxDrawSelectionSet::Select2 构造选择集.详细说明如下: 参数 说明 [in] MCAD_McSelect Mode 构造选择集方式 [in] VARI ...

  7. docker 1-->docker compose 转载

    转自:http://www.ityouknow.com/docker/2018/03/22/docker-compose.html Docker-Compose 是 Docker 的一种编排服务,是一 ...

  8. git学习(3)----git 新建分支并提交本地代码到远程分支

    一.步骤 1.在gitlab上创建一个issue,issue一般来说是版本发布说明.比如本次更新了什么功能,修复了什么bug什么的. 2.然后在本地创建一个branch,或者直接在gitlab上申请m ...

  9. python3.7实现九九乘法表

    for i in range(1,10): for j in range(1,i+1): print("%d*%d=%d" % (i,j,i*j),end=" " ...

  10. HTML5定制全选列头

    随着HTML5产品分支的不断深入使用,HTML5的需求也是越来越多,表格组件的使用也不例外,什么排序,分页,自动列宽等.最近有客户提出了如果让表格的列头加上全选的功能.细细分析其实就是两部分,表格的b ...