BGP简介
一、 BGP和AS
几种AS:
1.Stub AS 是单出入口的AS。
2.传输(传递) AS 是StubAS经过这个AS才能到达其它的AS。
3.多出口AS (在实际网络环境中,此类最常用)。
每个自治系统有一个16 比特的标识符, 1~65535, 64512~65535私有。
BGP和ISIS一样以链路为边界。
二、 BGP的特性
BGP的一般特性:
Path-Vector Routing、大型的网络、VLSM、CIDR、Aggregation、可靠的基于TCP(Port 179)进行连接、使用属性(Attribute)评价一条路径的好坏、策略和规则、Policy-Based Routing(PBR)、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信息就可以成本Peer(Peers=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相邻体通告(包括IBGP和EBGP)
4、从IBGP获得的路由不向它的IBGP相邻体通告;是否通告给它的EBGP相邻体要依IGP和BGP的同步情况来决定
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(非全互联网络里BGP和IGP需要同步IGP和BGP,由于路由表数量过大,还需要进行过滤)
BGP的同步:
同步是指BGP和IGP进行同步,也就是说AS内的所有路由器都要知道到达另一个网络(AS)如何走(路径)
当网络是全互连状态时,就不需要使用同步,非全互连时需要使用同步。
BGP的水平分割、路由反射器:
1、BGP的水平分割(SPLIT HORIZON)
水平分割的作用是避免产生路由环路。从IBGP学习到的路由绝不对再传播给其它的IBGP邻居。IGP中的RIP、IGRP是基于端口的水平分割;而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。
特殊:多路访问网络(erthenet、NBMA)中要用到第三方下一跳,以避免额外跳数。
3、 Origin――(公认,必遵)路由起源于IGP在BGP中表示为i
路由起源于EGP在BGP中表示为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汇总(OSPF、EIGRP等)后的路由原封不动地发布到BGP里的情况下才使用。
2、Aggregate-address汇总命令它是创建一个汇总的路由并进行宣告。Summary-only参数是只宣告汇总路由,屏蔽具体路由(不发布具体路由)。AS-Set参数:不同路由经过的AS可能不一样,这条命令的作用在于汇总路由知道具体路由所经过的AS(的集合),以避免产生环路。这样汇总不须人工指定空端口,系统会自动产生。BGP中我们推荐使用。
BGP的路由选择判定过程:
策略控制和 前缀列表(Prefix List)
用前缀列表把选择策略应用到BGP网络中。如果我要限制IOS 所学到或通告的路由选择信息,可以定义一个ACL或 Prefix list,然后应用它们对 进、出 邻居BGP的 Update进行过滤。Cisco 的prefix list(V12.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. 使用默认路由和特定路由;(运行BGP或BGP再发布到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”