1.7-BGP①
IGP:
包括RIP/EIGRP/OSPF/ISIS/ODR等动态路由协议
运行在同一个AS中,
通过Cost/Metirc来判断路由的优劣(越小越好);
AS:自治系统(小)
An AS is a collection of networks under a single technical administration.(独立的一个技术/管理域)
IGP主要任务
正确的描述路由信息和尽快的将数据包送到目的地:
IGP强调收敛速度。
BGP(v4)
边界网关协议(Border Gateway Protocol):
运行在不同的AS之间,用于对BGP路由进行控制/策略,
BGP的主要任务:网管的人为意图的集中体现,强调策略控制,不强调收敛.
BGP是通过BGP的属性/Attributes,判断多条路径的优劣,从中进行择优选取.
BGP可以通过网管定义的策略/Policies,实现数据或路由的控制/操纵.
自治系统AS:(autonomous Systems)(大):
独立的技术/管理域,通常是一个大型公司,或者组织,或者国家.
这是区别于IGRP/EIGRP的AS(小)的概念;
BGP本身就是一种策略路由/PBR(Policy-Based Routing)
实现网管的人为意图的集中体现.
BGP是一种AS BYAS的高级距离向量/DV协议.
BGP认为,每经过一个AS是一跳
RIP认为,每经过一个router是一跳
应该使用BGP的情况:
1:ISP:
当允许AS 1 的数据包穿越AS2,
但是不允许AS 1的用户访问AS2内部的时候:
2:Multihome/多宿主:
对于一个用户的AS,如果他同时连接到多个AS/ISP
3:PBR:
当需要对BGP路由/数据,进行人为控制/操纵的时候.
不该使用BGP的情况:
1.与ISP只有单连接,没有同时连接到多个ISP
2.如果网络硬件设备的档次不够(内存/CPU).
3:对BGP路由操纵理解有限,无法预计BGP的后果.
4.链路带宽不足.
BGP特征:
1:BGP是高级DV协议.
2:BGP工作在TCP/IP协议栈的4层:TCP179端口.
3:BGP是触发/增量更新的协议
4:BGP通过周期性的发送Keepalive信息,保证TCP连接的可靠性.
5:BGP使用多种"BGP属性/Attribut",来衡量路径的优劣.
6:BGP是为巨型网络设计的,意味着这种路由协议,可能带来海量的路由和数据.
BGP协议的三张表:
1:BGP的邻居表(BGP neighbor table)
BGP的邻居可以直接相连,也可以凌空建立.
2:BGP表(BGP forwarding table/database)
2-1:一个BGP路由器,可能从它的多个BGP Neighbor那里,学到到达同一个目标网络的多条可能路径.
2-2:但是,BGP这种路由协议,默认情况下,是不进行负载均衡的.也就是说,到达一个目标网络,只允许有一条可用路径.
2-3:BGP路由器通过"BGP属性",从中多条候选路由中,优选出一条,它自己认为最好/最优/Best的路径,作为到达这个目标网络的"最佳路由",这条路由也会被称之为"优化"了.("优化"的路由,会标打上">")
2-4:只有"优化"了的路由,才能作为BGP选送出的,最佳的,种子选手,去参加,到达这个目标网络(10.0.0.0/8)的"AD竞争/竞选."
3:IP路由表:
上面BGP提交的"优化/最佳"路由,在经过不同寻路协议之间的"AD的竞争/竞选"之后,如果获胜,才能成功的送进路由表.
BGP的4种信息包类型:
1:Open
2:Keepalive
3:Update
4:Notification
Peers=neighbors
Any two routers
that have formed a TCP connection,
to exchange BGP routing information,
are called BGP peers or neighbors.
1:EBGP Neighbor
两个BGP Neighbor分别属于两个不同的AS.
EBGP Neighbor通常是直接相连的.(也会有特例哦,CCSP才会遇到这种非直连的情况)
2:IBGP Neighbor
两个BGP Neighbor同时属于一个相同的AS.
IBGP Neighbor可以是直连的,也可以是非直连的.
BGP的操作步骤
1:确认L1/L2连路通(通过Ping,进行链路测试)
2:确认L3的IGP的ROUTE通过(Show ip route rip/eigrp/ospf)
3:启动BGP,建立BGP邻居(TCP179)(show ip bgp summary)
4:宣告BGP路由(network 1.0.0.0 mask 255.0.0.0)
5:判断BGP优化的基础条件(同步,下一跳)
LAB1:BGP的基本配置:
Step1:确认L1/L2的连通性.
可以通过Ping,进行链路测试.
Step2:确保L3的IP路由的通达(是通过IGP实现):
(一般都是在同一个AS中完成)
(两个AS之间是不运行IGP的)
在AS123中的所有路由器(R2/R3),运行IGP:RIP V2
R2/R3#
router rip
version 2
network 23.0.0.0
no auto-summary
测试L3的IGP网络(ping)
show ip route rip
step3:启动BGP,并且立刻指定全局唯一的bgp router-id.
R2(config)#router bgp 123
R2(config-router)#bgp router-id 123.0.0.2
Step4:构建BGP Neighbor
R5-R3 EBGP
R5(config-router)#neighbor 35.0.0.3 remote-as 123
R3(config-router)#neighbor 35.0.0.5 remote-as 150
R3-R2 IBGP:
R3(config-router)#neighbor 23.0.0.2 remote-as 123
R2(config-router)#neighbor 23.0.0.3 remote-as 123
R2-R4 EBGP:
R2(config-router)#neighbor 24.0.0.4 remote-as 140
R4(config-router)#neighbor 24.0.0.2 remote-as 123
Step5:观察BGP邻居建立的过程,及其经历的5个状态:
R4#debug ip bgp 观察BGP邻居建立的过程,及其经历的5个状态:
1-1:Idle:router is searching
1-2:connect:Completed three-way TCP 179 handshake.
1-3:Open sent: Open message sent
1-4:Open confirm:router received agreement
1-5:Established: Peering is established;BGP Routing begins!!
R5#show tcp brief(察看TCP连接的摘要信息)
Local Address Foreign Address (state) state/PfxRcd
35.0.0.5.11001 35.0.0.3.179 ESTAB 收到的路由条目
R5#show ip bgp summary(察看BGP邻居的简要信息)
BGP router identifier 150.0.0.5,local AS number 150
Neighbor V AS *********** State / PfxRcd
35.0.0.3 4 123 * * * (如果邻居已经建立好了,这里必需空白) / 0(收到的路由条目)
18.0.0.8 4 100 * * * / 3
0:没有从这个邻居收到BGP路由,但是和这个邻居的BGP邻居关系已经建好了.
3:从这个邻居收到三条BGP路由,同时和这个邻居的BGP邻居关系已经建好了.
Step6:通过 network 命令,宣告BGP路由
BGP Network配置:
R5(config)#router bgp 150
R5(config-router)#network 105.5.0.0 mask 255.255.0.0
(接口所在的网络号) (这个网络的准确路由长度)
network命令的含义:
在IGP中:
1:激活接口,在这个接口中运行此IGP路由协议.
(在IGP中,路由协议是向运行的接口发送路由更新)
2:这个路由器的IGP路由协议,正在为此接口所在的网段进行路由.
在BGP中:
1.这个路由器的BGP路由协议,正在为此BGP网段进行路由.
(在BGP中,BGP路由协议是向BGP Neighbor发送路由更新.
所以,没有了"激活接口"的含义)
在BGP路由器上,检查自己的BGP路由,是否已经成功地宣告到BGP进程中:
R5#show ip bgp (察看BGP表,BGP数据库)
Network Next Hop(是指更新源)
*>105.5.0.0/16 0.0.0.0(源自本路由器)
* valid
> best
0.0.0.0 表示下一跳为0
R3#sh ip bgp
Network Next Hop Metric LocPrf Weight Path
* i104.4.4.0/24 24.0.0.4(源自AS140) 0 100 0 140 i
*> 105.5.0.0/16 35.0.0.5(源自AS150) 0 0 150 i
BGP 属性:
Metric:MED
LocPrf :local preference
Weight
Path: AS Path
Origin codes: i (表示使用Network命令,宣告到BGP中的)
R2#sh ip bgp
Network Next Hop Metric LocPrf Weight Path
*> 104.4.4.0/24 24.0.0.4 0 0 140 i
* i105.5.0.0/16 35.0.0.5 0 100 0 150 i
step7:EBGP邻居的路由优化问题:
BGP路由优化必要条件(注意是必要而不是充分)
1:下一跳问题:
∵BGP路由的下一跳是其直连路由,
∴不存在下一跳不可达的问题.
(整个AS140中的100个路由器,察看到这条BGP路由的下一跳都是:24.0.0.2)
(整个AS123中的100个路由器,察看到这条BGP路由的下一跳都是:35.0.0.5)
其下一跳保持为相邻的AS的边缘节点(35.0.0.5)
2:同步问题:
对于EBGP邻居,
∵无需遵循同步规则,
∴没有同步问题!!
结论:对于EBGP,只要是从EBGP邻居那里传来的路由,
在不考虑其它BGP属性的情况下,是肯定可以优化的.
注意:只有已经优化了的BGP路由,才能进入IP路由表。
Step8:IBGP路由的优化
BGP路由器,把自己学到的BGP路由,转发给别的BGP邻居的必要条件:(R3)
每个BGP路由器,对于特定的某条BGP路由,
必须是自己已经优化的路由,才具备转发给别的BGP邻居的能力.
注意:
这是必要条件,不是充分条件!!!
这意味着:即使自己已经优化,但此路由器,可能转发,也可能不转发.
察看R3向R2发送了哪些BGP路由条目:
R3#show ip bgp neighbors 23.0.0.2 advertised-routes
IBGP路由的必要优化条件:(以下是必要条件,而不是充分条件)
1:下一跳可达
2:路由的同步
8-1:察看R2上,在R3没有作任何更改前,当前的BGP路由:
注意观察:
1:本路由器R2,是否能够到达这条BGP路由的下一跳?
(在R2上,观察从R3这个IBGP邻居获得的BGP路由)
R2#show ip bgp
Network Next Hop
* i105.5.0.0/16 35.0.0.5
当前下一跳它不可达
解决方案:
R3(config)#router bgp 123
R3(config-router)#neighbor 23.0.0.2 next-hop-self
R3#clear ip bgp *soft out(软清除,避免收敛速度过慢)
R2#show ip bgp
Network Next Hop Metric LocPrf Weight Path
*>i105.5.0.0/16 23.0.0.3 0 100 0 150
当前的下一跳是可达的,所以是最优的
8-2:同步问题(在新版的IOS里面,默认是关闭同步的)
(本质:R2是否能够通过IGP,得到这条105.1.0.0/16路由)
所谓同步,是指:
如果R2能够通过IGP(RIP),学到这条路由(105.5.0.0/16),那么就同步.
(也就是:满足同步要求).(无论此路由是否本AS或者其他AS)
如果R2不能够通过IGP,学到这条路由(105.5.0.0/16),那就不满足同步,(也就是:不满足同步要求).
BGP路由器,对于从IBGP邻居学到的路由,默认要求同步.
但是,
∵实际上R2是不可能通过IGP,学到另外的一个AS中的路由.
∴只能关闭同步规则,也就是不遵循同步规则.
解决方案:关闭同步规则:
R2#
router bgp 123
no synchronization
Step9:检测各路由器能否通达
EBGP
R3#show ip bgp
Network Next Hop
*> 105.5.0.0/16 35.0.0.5
R3#show ip route
B 105.5.0.0 [20/0] via 35.0.0.5,
IBGP:
R2#show ip bgp
Network Next Hop
*>i105.5.0.0/16 23.0.0.3
R2#show ip route
B 105.5.0.0 [200/0] via 23.0.0.3