BGP简介

一、 BGPAS
几种AS
1.Stub AS
是单出入口的AS
2.
传输(传递) AS StubAS经过这个AS才能到达其它的AS
3.
多出口AS (在实际网络环境中,此类最常用)。

每个自治系统有一个16 比特的标识符, 165535 6451265535私有。

BGP
ISIS一样以链路为边界。
二、 BGP的特性
BGP
的一般特性:
Path-Vector Routing
、大型的网络、VLSMCIDRAggregation、可靠的基于TCPPort 179)进行连接、使用属性(Attribute)评价一条路径的好坏、策略和规则、Policy-Based RoutingPBR)、Update是增量 触发的。
何时可以使用:
1.
允许数据穿越一个AS到另一个AS
2.
一个AS有多个连接到其它的AS
3.
有数据进入或离开AS时需要进行(策略)控制。
何时不使用:
1.
连接到互联网或其它AS只有一个出口;(stub as)
2.
路由器等网络设备的内存容量有限、CPU速度不快、带宽很窄;(硬件、网络条件限制)
3.
技术人员(网络管理者)了解BGP但不了解BGP路由如何过滤、路径如何选择;
4.AS
之间带宽比较低(窄)时。
三、 BGP的概念
BGP
邻居 和 对等体组:
1
BGP邻居
BGP
通过TCP来建立邻居关系(不论是否在同一AS中),只要能建立TCP连接交换BGP信息就可以成本PeerPeers=Neighbors)。
邻居关系的建立靠Open(版本、自治系统号、保持时间、BGP标识符)
邻居关系的关系建立后才可以发送Update(不可达路由、路径属性、网络可达性信息)。
邻居关系的维持靠 Keepalive(长度:19BIT,间隔60秒)。
邻居关系的结束靠Notifaction
在这个过程中BGP邻居的状态有下列形式:
1
IDLE(空闲) 查找路由表
2
CONNECT 找到路由表后进行TCP三次握手
3
ACTIVE 活跃
4
OPENSENT 握上手后发送Open message消息
5
OPENCONFIRM 收到对方发来的Open消息
6
ESTABLISHED 会话建立,交换信息。

EBGP
邻居――是在不同的AS之间的路由器,并且要求EBGP的邻居(路由器)是直连的。若使用邻居不是直连或是使用了Loopback接口,会导致EBGP非直连,此时需要额外的命令进行补充。(Router(config-router)#Neighbor ip ebgp-multihop X
IBGP
邻居――要求在同一AS中的路由器,不要求是直连的,只要能建立TCP连接即可。
BGP
邻居源地址――默认情况下从哪个端口发送出数据库哪个端口就是源地址。BGP里要求,源地址必须匹配,如果不匹配,数据包将会被丢弃。为了确保路由器的源地址是稳定、一致不变,一般情况下我们在IBGP上使用Loopback地址。在EBGP上使用LOOPBACK需要额外的配置命令。

2
BGP对等体:
具有相同策略的一组BGP邻居,其作用就是简化了配置。

BGP
的数据库:
邻居表――列出周围的邻居,邻居可以是直连也可以不直连,只要三层(IP)连通,可以建立TCP连接即可。
BGP
――为存储、接收、发送的BGP信息而保存着它自己的表,和IP路由表是分开的,而且可配置路由器在两表中共享信息。
IP
路由表――里存放着到达目的的最好的路径。

BGP
的通告原则:
1
、 多条路径时,只选最优的给自己使用;
2
、 只把自己使用的路由通告给相邻体;
3
、从EBGP获得的路由会向所有BGP相邻体通告(包括IBGPEBGP
4
、从IBGP获得的路由不向它的IBGP相邻体通告;是否通告给它的EBGP相邻体要依IGPBGP的同步情况来决定

BGP
IGP再发布:
再发布就――是将运行不同路由选择协议的router 在协议之间通告所接收的路由选择信息。
BGP
――运行BGP的路由器保持一张由BGP生成的BGP表,该表独立于IGP生成的IP路由表,并且两表的信息可以相互交换。
1
、 将网络发布到BGP(让外部认识内部)
使用”network”命令,将已经存在于IP路由表中的网络(AS中我们已知想再发布的网络)再发布到BGP
将到NULL0的静态路由再发布到BGP(通告非IP路由表中的聚合路由)
将动态的IGP路由在发布到BGP(从其他AS中学到的路由一定不能再从IGP发布到BGP,否则会产生环路)

2
、 从 BGP发布到IGP(让内部认识外部)
⒈ISP
不需要进行从 BGP发布到IGP。(全互联网络里BGP路由一般不会再发布到IGP中去,不需要同步)
ISP 需要进行从 BGP发布到IGP(非全互联网络里BGPIGP需要同步IGPBGP,由于路由表数量过大,还需要进行过滤)

BGP
的同步:
同步是指BGPIGP进行同步,也就是说AS内的所有路由器都要知道到达另一个网络(AS)如何走(路径)
当网络是全互连状态时,就不需要使用同步,非全互连时需要使用同步。

BGP
的水平分割、路由反射器:
1
BGP的水平分割(SPLIT HORIZON
水平分割的作用是避免产生路由环路。从IBGP学习到的路由绝不对再传播给其它的IBGP邻居。IGP中的RIPIGRP是基于端口的水平分割;而IBGP是基于邻居的水平分割。
2
、路由反射器(ROUTER REFLECTOR
水平分割要求AS内要全互联,但是全互联是不现实的。所以引进了路由反射器。路由反射器――让配置为反射器的路由器(IBGP)向其他IBGP对等体传输由IBGP所学到的路由来修改BGP的水平分割。(有点类似OSPF中的DR/BDR)。
路由反射器的术语:路由反射器、客户、非客、户集群(cluster)、Originator ID、集群ID
路由反射器的设计:
1
、 路由反射器 必须用IBGP进行全互联
2
、 可以AS中分多个集群 每个集群至少有一个反射器
3
、 反射器从A客户得到的路由就不能再把该路由通告给A
反射器的运行:
1
、 客户更新 则发送给客户和非客户(除发送客户自己外)
2
、 非客户更新 则 发送给客户
3
EBGP更新 则 发送给客户和非客户
反射器的迁移:
1
、 首先确认那台路由器做反射器
2
、最好一次只配一个反射器,然后删除客户间冗余的对话
3
、 建议每集群建立一个反射器
发射器的的限制:
1
、 在“neighbor next-hop-self”命令中只影响EBGP,而反射的IBGP路由的下一跳不应该改变
2
、 路由反射器的客户和对等体不兼容。
BGP
的属性(Attribute):
Attribute
包含在Update更新里,用来判断一条路径的好坏,从而选择处最佳路由。BGP的属性(类似Metric)丰富复杂。BGP现有16种属性,在CCNP中我们只要求使用其中的6种属性,BGP最多的性可以达到256种。
属性被分为四类:公认必遵、公认自决、任选可传递(可标志)、任选不可传递
CCNP
中要求使用其中的6种属性:
1
AS-Path――(公认,必遵)
2
Next-Hop――(公认,必遵)对EBGP next-hop是通告路由器的IP
IBGP next-hop EBGP被通告的next-hop
特殊:多路访问网络(erthenetNBMA)中要用到第三方下一跳,以避免额外跳数。
3
Origin――(公认,必遵)路由起源于IGPBGP中表示为i
路由起源于EGPBGP中表示为e
路由起源于未知在BGP中表示为?,例如路由被再发布到BGP
4
Local Preference―― (公认,自决)(出AS选择高的优先级别的路由器 100
5
MED Multiexit Discriminator――(任选,非传递)(进AS 选择低的MED 0
6
Weight――Cisco Only)(出AS选择高的Weight的端口)
路由的汇总归纳:

概述
1
BGP4支持VLSM,路由匹配规则是最长匹配。
2
BGP4可以在任一一个AS中的任一一个路由器上进行汇总。
3
BGP4默认是启用自动汇总的。(对不连续的子网要关闭自动汇总)
汇总的方法有
1
Network命令是将已存在(和已由IGP汇总)的路由表宣告到BGP中。Ip route 命令是人工创建一条静态的汇总路由。Network宣告要求汇总后的网络(路由)必须是已存在的,Network命令本身不能做汇总,需要IP route命令配合。这种汇总比较麻烦,我们并不推荐。只当需要将已由IGP汇总(OSPFEIGRP等)后的路由原封不动地发布到BGP里的情况下才使用。
2
Aggregate-address汇总命令它是创建一个汇总的路由并进行宣告。Summary-only参数是只宣告汇总路由,屏蔽具体路由(不发布具体路由)。AS-Set参数:不同路由经过的AS可能不一样,这条命令的作用在于汇总路由知道具体路由所经过的AS(的集合),以避免产生环路。这样汇总不须人工指定空端口,系统会自动产生。BGP中我们推荐使用。

BGP
的路由选择判定过程:

策略控制和 前缀列表(Prefix List
用前缀列表把选择策略应用到BGP网络中。如果我要限制IOS 所学到或通告的路由选择信息,可以定义一个ACL Prefix list,然后应用它们对 进、出 邻居BGP Update进行过滤。Cisco prefix listV12.0)已经取代了应用ACL过滤 的Distrabute list
Prefix list
的特性优点:
1
、对大型列表的的加载和路由查找方面比ACL有显著的改进
2
、 支持增量修改
3
、 友好的用户接口
4
、 更大的灵活性
Prefix list
过滤的规则:
1
、 空 prefix list 允许所有路由通过
2
、 路由前缀被允许则路由可用,否则反之
3
、前缀列表由带序号的语句构成。从顶部低序号开始查找
4
、 发现匹配停止查找
5
、 定了前缀但是无匹配 则隐含拒绝

BGP
的多宿主连接(multihoming)
多宿主连接――描述一个AS连接一个以上的ISP

为什么要使用多宿主
1.
可靠性高
2.
高性能

多宿主情况下的网络设计
1.
使用默认(缺省)路由;(在出口上应用)
2.
使用默认路由和特定路由;(运行BGPBGP再发布到IGP中,需过滤)
3.
所有的路由器运行BGP,关闭BGP同步(会话全互连)。


三、BGP的配置
BGP
的一般配置:
1
对等体组
Router(config-router)# neighbor [peer-group-name] peer-group
Router(config-router)# neighbor [ip-address] peer-group [peer-group-name]
2
、 激活跃BGP
Router(config)# router bgp autonomous-system
3
、 配置邻居
Router(config-router)#neighbor{ip-address|peer-group-name}remote-asautonomous-system
Router(config-router)#neighbor {ip-address | peer-group-name} shutdown
Router(config-router)# no neighbor {ip-address | peer-group-name} shutdown

使用loopback 接口
Router(config-router)# neighbor {ip-address | peer-group-name} update-source interface-type interface-number
Router(config-router)#Neighbor ip ebgp-multihop x
,(邻居是EBGP时要附加的命令)

强制改变next-hop为自己
Router(config-router)# neighbor {ip-address | peer-group-name} next-hop-self
4
、 指定通告网络
Router(config-router)#network network-number [mask network-mask]
5
、 同步开关
Router(config-router)#no synchronization
(缺省是启动的)
6
、 复位BGP
Router# clear ip bgp *
Router# clear ip bgp [ip-address]
Router# clear ip bgp {*|address} [soft out]
Router(config-router)# neighbor [ip-address] soft-reconfiguration inbound
Router# clear ip bgp {*|address} [soft in]
7
、 创建归纳
1 Router(config-router)# network network-number [mask network-mask]
Router(config)# ip route prefix mask null0
2 Router(config-router)# aggregate-address ip-address mask [summary-only] [as-set]
推荐使用2
BGP
的验证:
Show ip bgp BGP
路由表条目

Show ip bgp neighbors
显示有关邻居的TCP BGP信息

Show ip bgp summary
所有BGP连接状态


Debug ip bgp
Dampening
衰减
Events
事件

Keepalive keepalive
报文
Update Update
报文

路由反射器的配置和验证:

反射器的配置
Router(config-router)#neighbor ip-address router-reflector-client (ip-addre
客户的IP)
若集群中有多个反射器 则要配置集群ID
Router(config-router)#bgp cluster-id cluster-id
验证反射器的配置
show ip bgp neighbors

策略和前缀列表的配置及验证:

创建prefix list
Router(config)# ip prefix-list list-name [ seq seq-value ] { deny | permit } network/len [ ge ge-value ] [le le-value ] (
注释:network 32bit的地址 len 是个十进制的数, len < ge < le <=32)

配置已创建的前缀列表
Router(config-router)#neighbor{ip-address|peer-group-name}prefix-list prefix-listname { in | out }

多宿主的配置:

配置权重(weight)和 本地优先(local preference)来影响到外部路由的路径
1
、权重的配置
Router(config-router)# neighbor {ip-address | peer-group-name } weight weight
2
、本地优先的配置
Router(config-router)# bgp default local-preference value (
注:default=100)
3
MED
Router(config-router)# default-metric number (
注:default=0)
注释要迫使新参数生效必须“clear ip bagp”