为方便管理, 互连网被划分为不同的自治系统, BGP协议用来学习不同的自治系统间的路由信息。
Autonomous Systems:运行同一种选路策略,由统一管理者管理。
自治系统号由IANA (Internet地址授权委员会)分配, 组织使用BGP连接INTERNET 时,必须要申请公有AS号.
AS: 1—65535, 其中 公有: 1—64511
私有: 64512—65535
当前, BGP协议广泛在INTERNET和大型行业及企业网中应用.
路由协议作用:
动态学习非直连网段的路由信息.
内部网关协议IGP, 如RIP /OSPF /EIGRP 在选择路径时, 依据 : 度量值
RIP 跳数
OSPF 开销=100/带宽
EIGRP 带宽+延迟
外部网关协议EGP, 当前使用的是BGP(边界网关协议), 在选择路径时, 采用的是BGP属性(或者可以称之为策略).
使用BGP的原因:
1. 管理:电信 联通
2. 支持更多的路由条目(OSPF最多1万条,ISIS最多2万条)。 13万多
3. 策略:非常丰富的属性(路由策略)对路由进行控制。
4. 扩展:IPV4 IPV6 ×××V4(MBGP, 用于MPLS-×××)
何时使用BGP:
1、AS允许数据包通过自已到达其它AS ISP
2、需要对数据流进入和离开AS的方式进行控制 ISP
3、AS有多条到其它自治系统的连接 ISP 或 大型企业
基本属性:
一. AS路径属性.
BGP是一种路径矢量型协议, 类似于RIP(距离矢量协议).
默认情况下, BGP协议会选择一条从源到目的地的最短无环路径.
分析:
从AS200访问160.1.0.0 /16, BGP协议默认会选择:
160.1.0.0/16 300 600 i
400 500 600 i
类似于RIP的逐跳选择, 以AS为跳数, 选择最短的AS无环路径.
并且, 在向邻居通告时, 只通告自已采用的路由.
EBGP水平分割
不接收路径列表中包含本身AS号的路由更新. 防止环路
二. 下一跳属性
默认, 下一跳为邻接AS路由器的外部接口IP.
如果下一跳不可达,则路由无效,解决办法:
1. 通过IGP学习
2. 修改下一跳属性
R2(config-router) # neighbor 23.0.0.3 next-hop-self
可避免AS间路径在IGP中通告
三. 源头属性
信息来源:
i 由BGP的Network命令通告的路由
e 由EGP(早期的外部网关协议)学来的, 现在已不用
? 通过重分发到BGP进程学到的.
可信度 i >e >?
基本的BGP配置
要求: AS100 BGP + OSPF 重分发
AS200 BGP + EIGRP
AS300 BGP
R5的配置 配置单区的OSPF协议 ( 略 )
R1的配置
R1(config)# router bgp 100 启用BGP协议
# bgp router-id 11.1.1.1
# neighbors 12.0.0.2 remote-as 200 指定邻居
# redistribute ospf 1
R1(config)# router ospf 1
# net 15.0.0.1 0.0.0.0 area 1
# net 110.0.0.1 0.0.0.0 area 1
# redistribute bgp 100 subnet 将BGP重分发到OSPF进程
R2的配置
R2(config)# router bgp 200
# bgp router-id 2.2.2.2
# neighbors 12.0.0.1 remote-as 100
# neighbors 23.0.0.3 remote-as 200
# neighbors 34.0.0.4 remote-as 200
# network 170.1.0.0
# no synchronization 禁用BGP同步
R2(config)# router eigrp 200
# net 23.0.0.0
# net 170.1.0.0
R3的配置
R3(config)# router bgp 200
# bgp router-id 3.3.3.3
# neighbors 23.0.0.2 remote-as 200
# neighbors 34.0.0.4 remote-as 200
# no synch 禁用BGP同步
R3(config)# router eigrp 200
# net 23.0.0.0
# net 34.0.0.0
R4的配置
R4(config)# router bgp 200
# bgp router-id 4.4.4.4
# neighbors 23.0.0.2 remote-as 200
# neighbors 34.0.0.3 remote-as 200
# neighbors 46.0.0.6 remote-as 300
# network 171.1.0.0
# no synch 禁用BGP同步
R4(config)# router eigrp 200
# net 171.1.0.0
# net 34.0.0.0
R6的配置
R6(config)# router bgp 300
# bgp router-id 6.6.6.6
# neighbors 46.0.0.4 remote-as 200
# net 161.1.0.0
# net 150.0.0.0 mask 255.0.0.0
R4(config)# ip route 150.0.0.0 255.0.0.0 null 0
查看:
R# sh ip bgp // 查看BGP表(BGP数据库)
R# sh ip route
Neighbor命令 指定和谁建立邻居关系
Network的作用
向邻居通告哪些路由条目, 区别于IGP协议中的network.
IGP 指定哪些接口参于协议运行(向邻居发送更新,并接收邻居的更新)
BGP 应将哪些网络告诉邻居
说明: 1.BGP一种无类协议, 通告信息携带掩码, 可以通告主网/子网/超网(支持CIDR)
2. 通告主网时, 可以不加掩码, 通告子网/超网时, 必须加掩码.
3.. 通告网络时, 路由表中必须有相匹配的路由条目存在,当需要汇总到大的子网或超网时, 可以:
R(config)# ip route 150.0.0.0 255.0.0.0 null 0 (空接口)
BGP路由汇总
方法一: network 通告汇总后的网络,再配置汇总的静态路由。见上。
方法二:router bgp 300
network 150.1.0.0 通告任一主网或子网
aggregate-address 150.0.0.0 255.0.0.0 summary-only 只发送汇总路由
BGP特点:
BGP是一种路径矢量协议,与其它的标准距离矢量协议有许多不同的地方:
1. 可靠的更新: BGP路由器之间建立TCP(179端口)连接,并通过交换消息来指出和确认连接参数。(单播更新) 可以建立非直连邻居
2. 使用TCP来提供窗口技术和可靠性机制。而不象OSPF和EIGRP那样使用1-TO-1窗口
3. 周期性发送存活消息(keepalive)来保持连接,类似于OSPF等发送的hello消息.
4 .增量式触发更新.
5 .丰富的度量值(更多的路径矢量或属性).
6. 为大型互连网络设计的协议. 13万
BGP 数据库
– 邻居表
• BGP邻居的列表 sh ip bgp neighbors 邻居详细信息
sh ip bgp summary 邻居简略信息
– BGP表 BGP转发数据库
• 从邻居学到的所有网络(路由)
• 包含到达网络的多条路径
• 包含BGP路径的多种属性
– IP 路由选择表 到达网络的最佳路径
BGP: 外部 20
内部 200
IGP: EIGRP 90 OSPF 110 RIP 120
BGP 消息类型
– BGP 定义了下列的消息类型:
– Open(打开消息) // 建立邻居关系 OSPF hello
• 包含版本号 自治系统号 保持时间 RID 等可选参数
– Keepalive(存活消息)60 180 // 检测邻居的存活状态 hello
– Update(更新)
• 只包含一条路径的信息,多条路径需要多条消息。
• 包含网络的路径属性
– Notification(通知消息)
• 当发生错误
• 检测到错误并发出通知,然后立刻关闭BGP连接
建立BGP会话,路由器与邻居之间的关系经过如下状态:
Idle(空闲): 路由器查看路由表,邻居是否可达.
Connect(连接): 路由器发现路由并完成TCP连接的三次握手.
Open sent(打开发送): 发送BGP会话之间的连接参数.
Open confirm(打开确认): 路由器收到连接参数一致性的确认.
Alternatively, router goes into active state if no response to open message
Established(已建立): 邻居关系建立
故障分析:
IDLE : neighbors配置,但无路由,IGP不可达。
ACTIVE: 1. 邻居的neighbors配置错误(或没配置)。2. 邻居无源的路由。3.AS不匹配。4、验证没通过。
将在IDLE和ACTIVE间循环。
Established
BGP邻居
内部 IBGP : 管理距离 200
外部 EBGP: 路由协议自动根据AS号判定 管理距离 20
BGP更新
TCP 方式
将通过BGP获得的更新信息, 以TCP方式可靠地向邻居发送(单播包TCP179端口), 接收此更新的邻居不一定直接相连(只要IGP可达)
BGP水平分割
EBGP 不接收含有本身AS号的BGP路由更新。
IBGP 默认禁止将通过IBGP获得的信息再通告给其它IBGP邻居. (在BGP反射器和联邦中可打破水平分割)
路由黑洞的解决办法:
1. 重分发到IGP 启用同步 (不推荐使用)
2. BGP全互连 禁用同步 (常用)
同步规则定义:
BGP不允许使用从IBGP邻居学习到的路由并发布给EBGP邻居,除非这些路由已经从IGP( BGP重分发进OSPF/EIGRP)学到!
原因: 中间不运行BGP的路由器将不能直接学习到外部的AS信息. 需要通过重分发来保证中间R知道外部路径. 因此需要BGP同步来证实所有中间R路由表的完整性,防止路由黑洞。
说明: 这种方式会导致所有内部R学习到一个庞大的外部路由信息, 扩展性不好. 解决办法: → BGP全互连 ( 需要禁用同步 )
在所有中转路由器中运行BGP协议, 即IBGP全互连. 保证所有R都有外部AS信息. 这种情况下, 不需要同步. 关闭同步!
说明:
从IBGP邻居学习到路由时,必须进行以下检查:
1、next-hop是否可达
2、目标网络是否已经存在于IGP路由表(启用同步);如果禁用同步,则不考虑该问题。
打>号的路由是优的路由,会放进路由表并传给下一个邻居,不优的路由是不会传给下一个邻居,优的路由要满足两个条件:
1、下一跳 2、同步IOS 12.1(8)以前, 同步默认启用 // 必须考虑同步问题
以后, 同步默认禁用 // 不考虑同步问题,但真实网络必须IBGP全互连,否则将导致路由黑洞。