配置BGP
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
配置BGP
BGP协议概述
BGP是目前Internet使用最广的外部网关协议(Exterior Gateway Protocol,EGP),其提供的主要功能是在不同的自治系统(autonomous systems,AS)之间交换网络可达信息,并通过协议自身机制消除路由环路。
BGP使用TCP作为传输协议,用TCP协议的可靠传输机制保证BGP的传输可靠性。
运行BGP协议的router称为BGP speaker,建立了BGP会话连接(BGP session)的BGP speakers之间被称作对等体(BGP peers)。
BGP speaker之间建立对等体的模式有两种:IBGP(Internal BGP)和EBGP(External BGP)。
IBGP是指在相同AS内建立的BGP连接,EBGP是指在不同AS之间建立的BGP连接。
二者的作用简而言之就是:EBGP是完成不同AS之间路由信息的交换,IBGP是完成路由信息在本AS内的过渡。
锐捷网络的BGP协议有如下特点:
●支持BGP-4
●支持路径属性
✓ORIGN Attribute
✓AS_PATH Attribute
✓NEXT_HOP Attribute
✓MULTI_EXIT_DISC Attribute
✓LOCAL-PREFERENCE Attribute
✓ATOMIC_AGGREGATE Attribute
✓AGGREGATOR Attribute
✓COMMUNITY Attribute
✓ORIGINATOR_ID Attribute
✓CLUSTER_LIST Attribute
●支持BGP对等体组
●支持使用Loopback接口
●支持使用TCP的MD5认证
●支持BGP和IGP的同步
●支持BGP路由聚合
●支持BGP路由衰减
●支持BGP路由反射器
●支持AS联盟
●支持BGP软复位
缺省的BGP配置:
要运行交换机的BGP ,在特权模式下,按照如下步骤进行: Step1 Step2 Step3 Step4 Step5 Step6 Step7
使用no router bgp 关闭BGP 。
配置BGP network 命令
要配置BGP speaker 要公告的网络信息,在BGP 配置模式下执行:
使用no network network-number network-mask 命令取消要发送的网络。
network 命令是用来将IGP 的路由注入BGP 的路由表中,公告的networks 可以是直连路由,静态路由和动态路由。
配置命令中的network-mask 用来 支持超网和子网。
对外部网关协议(EGP)来说network 命令表示将要公告的网络,这和内部网关 协议(IGP 协议,如OSPF 、RIP)不同,后者用network 命令来确定路由更新发 往哪里。
参看BGP 和IGP 的交互,您能够使用redistribute 命令得到相同的效果。
有时候,如果发现存在其他路由比通过BGP
学习到的路由拥有更高的优先级,可以使用配置命令network backdoor 指示存在这样一条路由,在BGP 配置模式下执行:
使用no network network-number network-mask backdoor 命令取消指示的后门网络信息。
缺省情况下,从建立EBGP 连接的BGP speaker 学习到的网络信息的管理 距离为20。
通过network backdoor 将这些网络信息的管理距离设置为
200, 从而使得从
IGP 学习到的相同的网络信息拥有更高的优先级,将从IGP 学习
到的这些网络认为是后门网络,并不公告出去。
配置BGP 对等体及参数
作为一个外部网关协议(EGP),BGP speaker 必须知道谁是其对等体(BGP peer)。
BGP 协议概述中提到,BGP speaker 之间建立连接关系的模式有两种:IBGP (Internal BGP)
和EBGP (External BGP)。
通过BGP peer所在的AS和本BGP speaker所在的AS来判断BGP speakers之间建立的是哪种连接模式。
正常情况下,建立EBGP连接的BGP speakers之间要求物理上的直接相连,而建立IBGP 连接的BGP speakers可以在AS内的任何地方。
要配置BGP对等体,在BGP配置模式下执行:
使用no neighbor address删除一个对等体。
对BGP speaker来说,对许多对等体的配置信息(包括执行的路由策略等)都相同,为了简化配置,提高效率,推荐使用BGP对等体组。
要配置BGP的对等体组,在BGP配置模式下执行:
Step1
Step2
Step2
使用no neighbor peer-group删除对等体组中某一成员。
使用no neighbor peer-group-name peer-group删除整个对等体组。
使用no neighbor peer-group-name remote-as删除对等体组的所有成员和对等体组的AS号。
使用clear ip bgp peer-group peer-group-name members删除对等体组的所有成员。
要配置BGP speaker对等体或者对等体组的可选参数,在BGP配置模式下执行:
使用以上命令的no 模式,可以使配置的内容失效。
如果一个对等体组没有配置remote-as ,那么其每个成员可以使用neighbor remote-as 命令单独配置。
缺省情况下,对等体组的每个成员继承对等体组的所有配置。
但是每个成员允许单独配置那些不影响输出更新的可选配置,从而取代对等体组的统一配置。
允许对等体组的每个成员单独配置从而取代对等体组的统一配置,但这些 单独配置的信息不包含那些影响输出更新的配置信息。
就是说,对等体组的每个成员将一直继承对等体组的如下配置:
remote-as 、update-source 、local-as 、reconnect-interval 、times 、 advertisemet-interval 、default-originate 、next-hop-self 、 remove-private-as 、send-community 、distribute-list out 、filter-list out 、 prefix-list out 、route-map out 、unspress-map 、route-reflector-client 。
使用neighbor update-source 命令,可以选定任何有效接口建立TCP 连接。
该命令的最大作用是提供给loopback 接口使用,使得到达IBGP speaker 的连接更加稳定。
缺省情况下,建立EBGP 连接的BGP peers 要求在物理上直连。
如果您希望在非直连的external BGP speakers 之间建立EBGP peers ,那么可以使用neighbor ebgp-multihop 命令。
为了防止出现路由环路和振荡现象,对需要多跳才能建立BGP 连接的EBGP peers 之间必须要求存在到达对方的非缺省的路由。
为了安全需要,您可以为建立连接的BGP peers 设置认证,认证使用MD5算法。
在BGP
peers上设置的认证密码必须相同。
使用neighbor shutdown命令能立即关闭同对等体(组)建立的有效连接,并删除对等体(组)关联的所有路由信息。
如果您希望关闭同指定的对等体(组)建立的连接,但又需要保留为该指定Array对等体(组)的设置的配置信息,请使用neighbor shutdown命令。
如果
您不再需要这些配置信息,请使用no neighbor [peer-group]命令。
配置BGP和IGP的同步
对将穿越本AS到达另一个AS的路由信息,只有保证本AS内所有的router都学习到该路由信息时才允许将路由信息发布到另一个AS。
否则,如果本AS内存在router(运行IGP 协议)未学习到该路由信息,那么当数据报文穿过本AS时,就可能因为这些router不知道该路由而将数据报文丢弃,即引起路由黑洞现象。
保证本AS内所有router都学习到到达AS外的路由信息,我们称为BGP和IGP的同步。
简单的实现同步方法是BGP speaker将BGP协议学习到的路由全部重分发到IGP中,从而保证在AS内部的router能够学习到这些路由信息。
在两种情况下,可以取消BGP的同步机制:
1、不存在穿越本AS的路由信息(一般情况下,本AS是一个末梢AS);
2、本AS内所有的router都运行BGP协议,所有的BGP speaker之间建立全连接关系
(BGP speaker两两建立邻接关系)。
缺省情况下,同步是打开的。
但是为了保证路由信息的快速收敛,我们建议Array
您只要条件允许,请取消同步机制。
要取消BGP speaker的同步机制,在BGP配置模式下执行:
执行synchronization命令启动同步机制。
配置BGP和IGP的交互
BGP speaker要将本AS内的网络信息发布出去,有两种方式:
1、使用network命令配置BGP要发送的网络信息;
2、将由IGP协议生成的路由信息注入BGP中。
要配置将IGP协议生成的路由信息注入BGP中,在BGP配置模式下执行:
缺省情况下,是不允许重分发网络0.0.0.0,如果要允许重分发,在BGP配置模式下执行:
配置BGP的定时器
BGP使用keepalive定时器来维持和对等体的有效连接,使用holdtime定时器来判断对等体是否有效。
缺省情况下,keepalive定时器的值为30 seconds,holdtime定时器的值为90 seconds。
当BGP speakers之间建立BGP连接时,双方将对holdtime进行协商,值更小的holdtime将被选择,而keepalive 定时器值的选择将基于协商后的holdtime和配置的keepalive。
为了能基于所有对等体调整BGP定时器的值,在BGP配置模式下执行:
当然,您也能基于指定的对等体调整BGP定时器的值,在BGP配置模式下执行:
使用no命令清除配置的定时器的值。
配置BGP 路径属性的操作
AS_PATH Attribute 关联配置
BGP 能基于三种方式控制路由信息的分发: ● IP 地址,您可以使用neighbor distribute-list 和neighbor prefix-list 实现。
● AS_PATH 属性,参看本节描述。
● COMMUNITY 属性,参看COMMUNITY Attribute 关联配置。
您可以使用基于AS 路径的access list 控制路由信息的分发,其中基于AS 路径的access list 将使用正则表达式(regular expression)对AS 路径进行解析。
要配置基于AS 路径的路由信息的分发,在特权模式下,按照如下步骤进行:
Step1 Step2
Step3
Step4 Step5
Step6
按照标准(RFC1771)实现,BGP 进行最优路径选举时并不考虑AS 路径长度。
但一般情况下,AS 路径长度越短,路径优先级应该越高,所以我们在进行最优路径选举时考虑了AS 路径的长度。
您可以在根据实际情况确定在选举最优路径时是否考虑AS 路径长度。
如果您希望选举最优路径时不考虑AS 路径长度,在BGP 配置模式下执行:
在整个AS 内,所有BGP speaker 选举最优路径时是否考虑AS 路径长度应 保持一致,否则可能使得各BGP speaker 选举出来的最优路径信息不一致。
NEXT_HOP Attribute 关联配置
如果您希望在朝指定BGP 对等体发送路由时将下一跳设置为本BGP speaker ,可以使用neighbor next-hop-self 命令,该命令主要是提供给一些非网状的网络中(如帧中继,X.25) 使用。
在BGP 配置模式下执行:
您也可以通过route-map 的set next-hop 命令修改指定路径的下一跳值。
在全网状的网络环境中(如以太网),我们并不推荐您使用该命令,因为使用 该命令,可能引起报文产生额外跳,增加不必要的开销。
MULTI_EXIT_DISC (MED) Attribute 关联配置
BGP 使用MED(metric)值作为从EBGP peers 学习到的路径进行优先级比较的依据之一,MED 值越小,路径优先级越高。
通常情况下,不同协议使用的metric 标准不同,对于从其他路由协议重分发而来的路
由信息,我们可以使用default-metric 为其设置统一的度量值。
在BGP 配置模式下执行:
缺省情况下,选举最优路径时,只对来自同一AS
的对等体的路径才比较MED 值,如果您希望允许比较来自不同AS 的对等体的路径的MED 值,在BGP 配置模式下执行:
缺省情况下,选举最优路径时,对来自AS 联盟内部其他子AS 的对等体的路径是不进行MED 比较的,如果您希望来自AS 联盟内部对等体的路径允许比较MED 值,在BGP 配置模式下执行:
缺省情况下,如果接收到未设置MED属性的路径,该路径的MED值被认为是0,根据MED 值越小,路径优先级越高,所以该路径的MED达到了最高的优先级。
如果您希望未设置MED 属性的路径的MED属性优先级为最低,在BGP配置模式下执行:
缺省情况下,选举最优路径时,将根据接收到的路径的顺序进行比较,如果您希望来自
LOCAL_PREF Attribute关联配置
BGP使用LOCAL_PREF作为从IBGP peers学习到的路径进行优先级比较的依据之一,LOCAL_PREF值越大优先级越高。
BGP speaker将接收到的外部路由发送给IBGP peers时添加本地优先级属性,如果需要修改本地优先级属性,在BGP配置模式下执行:
您也可以通过route-map的set local-preference命令修改指定路径的本地优先级属性。
COMMUNITY Attribute关联配置
COMMUNITY Attribute(团体属性)是能控制路由信息分发的又一种方式。
团体是一组目的地的集合,定义团体属性的作用是为了方便实施基于团体的路由策略,从而简化在BGP speaker上控制路由信息分发的配置。
每个目的地可以属于多个团体,自治系统管理员可以定义一个目的地属于哪些团体。
缺省情况下,所有的目的地都属于Internet 团体,携带在路径的团体属性中。
目前共预定义了四个公共的团体属性值:
● internet ,表示Internet 团体,所有的路径都属于该团体。
● no-export ,表示本路径不发布给EBGP peers 。
● no-advertise ,表示本路径不发布任何一个BGP peers 。
● local-as ,表示本路径不发布到本AS 外部,当配置联盟时,本路径不发布给其它
的自治系统或子自治系统。
通过团体属性,您可以控制路由信息的接收,优先权和分发。
BGP speaker 可以在学习、发布或者重分发路由时,设置、添加或者修改团体属性值。
在进行路由聚合时,聚合后的路径将包含所有被聚合的路径的团体属性值。
要配置基于团体属性的路由信息的分发,在特权模式下,按照如下步骤进行:
Step1 Step2
Step3 Step4 Step5
Step6
路径信息其他配置
缺省情况下,在选举最优路径过程中,如果接收到两条从不同EBGP peers 接收来的所有路径属性都相同的路径,我们是根据接收的顺序选举最优路径。
您可以通过配置如下命令,选举router ID 更小的路径为最优路径。
缺省情况下,将BGP 生成的最优路由添加到IP 路由表时,我们并不改变BGP 路径属性
值。
如果您希望修改这些属性(如MED属性值或者下一跳值),在BGP配置模式下执行:
BGP最优路由的选择
最优路由的选举是BGP协议很重要的一个环节,下面我们将详细描述BGP路由协议的选举过程:
1、如果路由表项无效,那么不参与最优路由的选择;
注意:这里无效的表项包括下一跳无法到达的表项以及处于振荡中的表项。
2、选举LOCAL_PREF属性值高的路由;
3、否则,选举由本BGP speaker生成的路由;
本BGP speaker生成的路由包括network命令、redistribute命令和aggregate命令生成的路由。
4、否则,选举AS长度最短的路由;
5、否则,选举ORIGIN属性值最低的路由;
6、否则,选择MED值最小的路由;
7、否则,EBGP路径优先级高于IBGP路径和AS联盟内的路由;
9、否则,选举到达下一跳的IGP metric最小的路由;
10、否则,选举公告该路由的BGP speaker的router ID小的路由。
11、否则,两条路由被认为优先级相同。
注意:上述部分比较项需要相关命令支持。
配置BGP路由聚合
BGP-4支持CIDR,所以允许创建聚合表项,以减小BGP路由表的大小。
当然,只有当聚合范围内存在有效的路径时,才将BGP聚合表项添加到BGP路由表中。
要配置BGP路由聚合,在BGP配置模式下执行:
使用以上命令的no 模式,可以使配置的内容失效。
缺省情况下,BGP 是同时公告聚合前后的所有路径信息,如果您只希望公
告聚合后的路径信息,请使用aggregate-address summary-only 命令。
配置BGP 路由衰减
路由在被认为有效和无效之间来回变化时,称为路由振荡。
路由振荡常引起不稳定的路由在网上传播,从而引起了网络的不稳定性。
BGP 路由衰减是一种减少路由振荡的方法。
BGP 的路由衰减使用如下术语:
● 路由振荡:route flap ,路由在有效和无效之间来回变化。
● 惩罚值:penalty ,每一次路由振荡,启动路由衰减的BGP speaker 为该路由增加
一次惩罚值,该值累计直到超过抑制上限。
● 抑制上限:suppress limit ,当路由的惩罚值超过该值时,路由被抑制。
● 半衰期:half-life-time ,惩罚值减为一半的所经过的时间。
● 重新启用值:reuse limit ,当路由的惩罚值低于该值时,路由抑制解除。
● 最大抑制时间:max-suppress-time ,路由能被抑制的最长时间。
路由衰减处理的简单描述:对每一次路由振荡,BGP speaker 对该路由进行一次惩罚(累加到惩罚值中),当惩罚值达到抑制上限,路由将被抑制。
在半衰期到达时,惩罚值减为一半,当惩罚值减到重新启用值时,路由重新被激活。
路由被抑制的最长时限为最大抑制时间值。
要配置BGP 的路由衰减,在BGP 配置模式下执行:
Step1 Step2
如果需要监控路由衰减的信息,在特权配置模式下执行:
如果需要清除路由衰减的信息,或者需要清除抑制的路由,在BGP配置模式下执行:
配置BGP路由反射器
为了加快路由信息的收敛,通常一个AS内的所有BGP speaker将建立全连接关系(BGP speaker两两建立邻接关系)。
当AS内的BGP speaker数量过多,将增加BGP speaker的资源开销,同时也给网络管理员增加了配置任务的工作量和复杂度,降低了网络的扩张性能。
对此,提出了路由反射器和AS联盟两种方法来较少AS内IBGP对等体的连接数量。
路由反射器是一种减少自治系统内IBGP 对等体连接数量的方法。
将一台BGP speaker 设置为路由反射器,其将本自治系统内的IBGP 对等体分为两类:客户端和非客户端。
在AS 内实现路由反射器,其规则如下:
● 配置路由反射器,并指定其客户端,路由反射器和其客户端形成一个群。
路由反
射器和客户端之间将建立连接关系。
● 一个群内路由反射器的客户端不应该同群外的其他BGP speakers 建立连接关系。
● 在AS 内,非客户端的IBGP 对等体之间建立完全连接关系,这里的非客户端的IBGP
对等体包括以下几种情况:一个群内的多个路由反射器之间(群内的多个路由反射将在随后描述);群内的路由反射器和群外不参与路由反射器功能的BGP speaker(通常这些BGP speaker 不支持路由反射器功能);群内的路由反射器和其他群的路由反射器之间。
路由反射器接收到一条路由的处理规则如下:
● 从EBGP speaker 接收到,将发送给所有的客户端和非客户端; ● 从客户端接收到,将发送其他客户端和所有非客户端; ● 从非客户端接收到,将发送给其所有客户端。
要配置BGP 路由反射器,在BGP 配置模式下执行:
通常一个群只配置一个路由反射器,在这种情况下,可以使用路由反射器的router ID 标识这个群。
为了增加冗余,您可以在群内设置多个路由反射器,在这种情况下,您必须配置群ID ,以便一个路由反射器可以识别来自于群内其他路由反射器的路由更新。
为一个群设置多个路由反射器,必须为该群配置一个群ID 。
要配置BGP 的群
ID ,在BGP 配置模式下执行:
通常情况下,群内的路由反射器的客户端之间并不需要建立连接关系,路由反射器将反射客户端之间的路由。
但是,如果所有客户端之间都已经建立了全连接关系,可以取消路由
反射器反射客户端路由的功能。
要取消反射客户端路由的功能,在
BGP 配置模式下执行:
配置AS 联盟
联盟是另一种减少自治系统内IBGP 对等体连接数量的方法。
将一个自治系统划分为多个子自治系统,并通过设置一个统一的联盟ID(即联盟AS 号)将这些子自治系统组成一个联盟。
对联盟外部来说,整个联盟仍然认为是一个AS ,且只有联盟的AS 号对外可见。
在联盟内部,子自治系统内部的BGP speakers 之间仍然建立完全IBGP 对等体连接,子自治系统间的BGP speaker 之间建立EBGP 连接。
虽然在子自治系统的BGP speakers 之间建立的是EBGP 连接,但交换信息时,对于NEXT_HOP 、MED 以及LOCAL_PREF 等路径属性信息仍然保持不变。
要实现AS 联盟,在BGP 配置模式下执行:
Step1
Step2
使用以上命令的no 模式,可以使配置的内容失效。
配置BGP 软复位
无论什么时候,只要路由策略(包括distribute-list 、neighbor route-map 、neighbor prefix-list 和neighbor filter-list )发生改变,必须提供有效的方法使得新的路由策略能够实施。
传统的方法是先关闭再重新建立BGP 连接以达到目的。
锐捷网络交换机支持通过配置BGP 的软复位,在不关闭BGP 会话连接的情况下,有效的实施新的路由策略。
为了方便BGP 软复位描述,下面我们称影响输入路由信息的路由策略为输入路由策略
(如in-route-map 、in-dist-list 等),影响输出路由信息的路由策略为输出路由策略(如out-route-map 、out-dist-list 等)。
如果输出路由策略发生变化,那么在BGP 配置模式下执行:
如果输入路由策略发生变化,其操作将比输出路由策略变化更复杂。
这是因为输出路由策略是实施在本BGP speaker 的路由信息表上。
而输入路由策略是实施在从BGP peer 接收来的路由信息上,出于节约内存考虑,本地BGP speaker 并不保留原始的从BGP peer 接收
来的路由信息。
如果确实修改了输入路由策略,常用做法是通过命令neighbor soft-reconfiguration inbound 为指定的每个BGP 对等体在本BGP speaker 上保存一份原始的路由信息,为随后修改输入路由策略提供原始路由信息依据。
目前存在一种称为“路由刷新性能”的标准实现方式,支持在不保存原始路由信息的条件下,修改路由策略并能得到实施。
锐捷网络交换机支持路由刷新性能。
如果输入路由策略发生变化,那么在BGP 配置模式下执行:
您可以通过show ip bgp neighbors 命令来判断BGP 的对等体是否支持路由刷新性能,如果能够支持,在输入路由策略发生变化时就无需执行neighbor soft-reconfiguration inbound 命令。
配置BGP 管理距离
管理距离表示一个路由信息源的可信度,其范围是从1~255,管理距离的值越大,其可信度越低。
BGP 对所学习到的路由信息的不同来源设定不同的管理距离,分为external-distance 、internal-distance 和local-distance 三类:
● external-distance :从EBGP peers 学习到路由的管理距离。
● internal-distance :从IBGP peers 学习到路由的管理距离。
●
local-distance :从peers 学习到,但被认为存在可以从IGP 学习到更优的路由
的管理距离,通常这些路由通过network backdoor 命令表示。
要修改BGP 协议的管理距离,在BGP 配置模式下执行:
使用no 命令可以恢复BGP 协议的缺省管理距离。
我们并不推荐您改变BGP 路由的管理距离。
如果确实存在需要,请记住:
1、external-distance应当比其他IGP路由协议(OSPF、RIP等)的管理距离更低;
2、internal-distance和local-distance应当比其他IGP路由协议的管理距离
更高。
BGP的监控
使用BGP的监控您可以读出BGP的路由表,缓存和数据库等信息。
在特权模式下执行:
协议无关配置
对原有配置指南的route-map命令的match、set规则进行相应修改和增加。
route-map配置
BGP协议大量的应用了route-map策略,关于route-map策略的配置,请参看《配置IP 单址路由》的“7.3路由信息重新分配”一章。
正则表达式配置
在BGP路径属性中使用到了正则表达式,在这里简要介绍正则表达式中特殊字符的用
下面将举一些常用例子对上面的特殊字符进行说明:
.*:所有AS路径。
^$:将任意的空字符串(没有路径信息,表示是一个本地路由)进行匹配。
^300$:仅指源自AS300且未经过任何其他AS的路由
^300_:AS300为相邻的AS自治区域;
_300$:匹配所有源自AS300开始始发的路径;
_300_:经过AS300的路径;
^90*$匹配的结果为:可以匹配90、900、9000等;
^90+$匹配的结果为:不可以匹配90,但可以匹配900、9000……等;
^90?$匹配的结果为:只能匹配90或者900,但不能是9000……等。