BGP BGP:边界网关路由协议 无类别的路径矢量EGP协议。 EGP类别的路由协议:用于AS与AS间进行路由条目共享。 AS编号:0-65535标准编号,其中1-64511共有,64512-65535私有 BGP设计特性: 1、 可靠性——大量的路由共享,取消周期更新,基于TCP的179端口工作。 TCP仅基于单播通信,BGP需要单播建立邻居关系(手工指定邻居的IP地址) BGP可以非直连建邻(peer),BGP承载于IGP之上。 2、 可控性——建邻、路由、选路控制(干涉选路)方面及其容易进行。 3、 AS-BY-AS——以一个AS为一跳。 BGP协议为不同AS间共享路由,工作时隔离两个AS的内部网络,形成一个独立的交互空间;且同时可以实施强大的策略来干涉选路。 IGP追求:收敛速度快 选择路径佳(无环) 占用资源少 hop-by-hop BGP追求:可控性 可靠性 as-by-as 可控性——BGP协议不是路由的产生者,仅为搬运者,且AS间正常存在大量的链路来保障稳定性;故BGP协议传递的路由条目很难默认最佳选路,需要管理员进行大量的策略来干涉选路。 可靠性:BGP协议虽然像距离矢量型路由协议一样仅传递路由条目,但更新量依然很大。 为了避免对设备资源的占用选择了增量更新——仅触发、无周期 故需要保障所有的路由传递到位——可靠,因此BGP基于TCP工作。 TCP的三次握手条件使得TCP只能基于单播工作,同时BGP需要非直连建邻 BGP基于IGP之上,先IGP使BGP设备间IP可达,然后BGP才能基于TCP建立 非直连邻居关系。 BGP特点: 1、 无类别路径矢量——距离矢量的升级版——AS-BY-AS 2、 使用单播更新来发送所有信息;基于TCP的179端口工作。 3、 增量更新——仅触发无周期 4、 具有丰富的属性来取代IGP中度量进行选路——多个参数控制协议 5、 可以在进项和出项对流量实施强大的策略——可控性 6、 默认不被用于负载均衡——通过各种选路规则仅仅产生一条最佳路径 7、 BGP支持认证和聚合(汇总) BGP数据包:基于TCP的179端口工作,故BGP协议中所有的数据包均需要在TCP会话建立后,基于TCP的会话来进行传输及可靠性的保障 首先通过TCP的三次握手来寻找邻居 Open 仅负责邻居关系的建立,正常收发一次即可,携带route-id、默认3min的hold time KeepLive 周期保活,周期一分钟,查询邻居关系是否存在,实际保活TCP的会话 Update 携带路由条目 目标网络号+各种属性 Notification 出现错误数据时收发
BGP的状态: 1、 idle(空闲):是BGP连接的第一个状态,在空闲状态,BGP在等待一个启动事件,BGP初始化资源,复位连接重试计时器,发起一条TCP连接,同时转入Connect状态。 2、 Connect(连接):BGP发起第一个TCP连接,如果连接重试计时器超时, 就重新发起TCP连接,并保持在Connect状态,如果TCP连接成功,就转入Opensent状态,如果TCP连接失败就转入Active状态。 3、 Active(活跃):在active状态,BGP总是在试图建立TCP连接,如果连接重试计时器超时,就退回Connect状态,如果TCP连接建立成功,就转入Opensent状态,如果TCP连接失败,继续保持此状态,并继续发起TCP连接。 4、 Opensent(打开消息已发送):在Opensent状态,TCP已经建立连接,BGP也发送了第一个Opensent报文,剩下的工作,BGP就在等待其对等体发送Open报文。并对收到的Open报文进行正确性检查,如果有错误,系统就会发送一条出错通知并退回到ldle状态,如果没有错误,BGP就开始发送Keeplive报文,并复位Keeplive计时器,开始计时。同时转入OpenConfirm状态。 5、 OpenConfirm(打开消息确认):BGP发送一个Keeplive报文,同时复位保持计时器,如果收到一个Keeplive报文,就转入Established阶段,BGP邻居就建立起来了。如果TCP连接中断,就退回到ldle状态。 6、 Established(连接已建立):BGP邻居关系已经建立成功,这时,BGP将和它的邻居们交换Update报文,同时复位保持计时器。 BGP的工作过程: 管理员定义邻居的ip地址,前提要求对邻居ip可达——IGP可达 启动BGP协议后,先以目标端口为179进行TCP的三次握手来建立TCP的会话 会话建立后,收发open报文来建立邻居关系,生成邻居表 邻居关系建立后,邻居间使用update共享路由条目,在收发了路由信息后,本地生成BGP表。 BGP表中装载本地发出及接收到的所有路由条目。 之后路由器将BGP表中的最优路径(不一定是最佳路径,仅为BGP参数最佳)加载于路由表中 收敛完成,仅kepplive周期保活即可。 BGP基础配置: 一、建立邻居关系——BGP基于单播进行建邻和沟通,故需要管理员手工指定邻居的ip地址 (1)使用直连接口ip地址建立EBGP邻居关系 Bgp 1 启动时需要定义真实的AS号,没有多进程概念 Route-id 1.1.1.1 建议手工配置route-id,手工—环回最大值—物理接口最大值 Peer 12.1.1.2 as-number 2 对端ip地址,及对端所在的AS号 (2)实际工程中,一个AS的内部正常具有较为复杂的网络拓扑结构,设备到设备间存在大量的备份和负载均衡,因此建立IBGP邻居关系时,建议使用双方的环回接口来作为源/目IP地址。 Bgp 2 Route-id 3.3.3.3 Peer 2.2.2.2 as-number 2 一旦使用换回接口作为目标IP地址时,也应该修改源为本地的环回接口IP地址 Peer 2.2.2.2 connect-interface Loopback 0 (3)若EBGP邻居间存在多条直连链路时,也建议使用环回接口来建立 【1】IP可达 通过静态路由下一跳写法,将两条链路间的环回地址互相连接 【2】建立邻居关系 Bgp 3 Route-id 5.5.5.5 Peer 4.4.4.4 as-number 2 Peer 4.4.4.4 connect-interface LoopBack 0 【3】BGP规定EBGP邻居间默认所有的BGP数据包TTL值为1,导致环回建立邻居关系服务正常,故需修改TTL值 Peer 5.5.5.5 ebgp-max-hop 2 【4】当两端邻居建立配置完成后,将进行TCP的三次握手,建立TCP会话 Display bgp peer 可通过该指令查看建邻关系 二、BGP宣告 BGP协议本身不计算生成路由条目,仅负责转发从其他BGP邻居传递过来的路由条目,同时可以将本地表中任意路由宣告到BGP协议中来,BGP宣告时,只能宣告本地路由表中的路由条目,且宣告配置中网络号的掩码必须和路由表中的记录完全一致。 Bpg 1 Network 1.1.1.0 24 当BGP设备进行宣告后,本地生成BGP表,装载本地发出及接收到所有BGP路由 Display bgp routing-table 查看本地BGP路由表 在相同AS间的BGP传递路由时,需要修改路由属性,包括下一跳为本地 bgp 2 peer 3.3.3.3 next-hop-local 将BGP路由传输给邻居3.3.3.3时修改下一跳属性为本地 宣告问题: 若在一台运行了BGP协议的路由器上,宣告本地路由表中通过其他协议学习到的路由信息时,将携带本地到达这些目标网段的Cost值。 若一台BGP设备通过IBGP关系学习到了一条BGP路由,路由中携带了度量值,之后本地将这条路由转发到本地的其他EBGP邻居时,将删除Cost,因为这些Cost不是本地的度量。故,若需要基于Cost值进行选路干涉,建议本地也配置宣告这些路由条目,来携带本地的Cost到其他EBGP邻居。 三、有条件的打破IBGP的水平分割 IBGP水平分割是为了避免IBGP环路——从一个IBGP邻居处学习到的路由条目不能传递给本地的其他IBGP邻居 因为BGP可以非直连建邻,故正常一台运行了BGP协议的路由器,均存在EBGP邻居,需要从其他AS学习路由条目,再共享到内部AS时,由于水平分割的限制,需要和本地AS内所有的BGP设备建立IBGP邻居关系,IBGP邻居关系成指数型上升 有条件的打破水平分割,其中有条件是指——在管理员确定网络无环的前提下,人为的打破水平分割限制建设邻居关系的数量 无环的核心思想为AS-BY-AS规则:一条路由条目在AS内部传递时其属性默认不变化 【1】 路由反射器 3中角色:RR(反射器)、客户端、非客户端 3者构建一个簇,可以理解为RR为中心站点,客户端和非客户端是分支站点 要求所有分支与中心必须是IBGP邻居关系 在一个簇中至少存在一台客户端 规则: 1、 RR从一台EBGP邻居处学习到的路由可以传输给本地的客户端、非客户端、其他EBGP邻居 2、 RR从一台客户端邻居处学习到的路由,可以传输给本地的其他客户端、非客户端、其他EBGP邻居 3、 RR从一台非客户端邻居处学习到的路由条目,可以传输给本地的客户端,其他EBGP。不得传输给本地的其他非客户端 注意:若路由条目不优,不具有传递性,反射器也无法反射路由 Peer 2.2.2.2 reflect-client 该指令作用是让2.2.2.2成为本地的客户端,同时本地成为路由反射器 【2】 联邦 将一个真实的大AS,逻辑的分为多个小的AS,小AS的编号建议使用私有编号 小AS间构建联邦内的EBGP邻居关系,可以向真实EBGP关系一样传递路由条目,但不修改属性,对于该大AS外的其他AS,是不知道内部的小AS的情况 (1) 所有配置全部基于小AS进行: Bgp 64512 Route-id 3.3.3.3 Peer 2.2.2.2 as-number 64512 Peer 2.2.2.2 connect-interface loopback 0 Peer 4.4.4.4 as-number 64513 Peer 4.4.4.4 connect-interfae loopback 0 Peer 4.4.4.4 ebgp-next-hop 2 (2) 联邦内所有运行BGP协议的设备均声明自己所在的大AS号 Bgp 64512 confederation id 2 声明自己所在的大AS号为AS 2 confederation peer-as 64512 小AS间互指pee,在联邦内的ebgp邻居关系间的两台设备,互相定义对端的小AS号 切记:华为设备,必须先定义联邦的id,和互相小AS号后再配置邻居关系建立的命令 在实际工程中,联邦和路由反射器是同时被使用,降低配置量 四、手工汇总——BGP称为聚合 方法[1] 不是BGP的正常聚合配置,利用了BGP的宣告特征——本地路由表中的路由条目无论来源,无论去向(缺省除外)。先在本地路由表中静态添加一条指向汇总地址的空接口放环路由,然后再在BGP协议中宣告这条空接口路由,减少了宣告明细部分的操作量。 注:BGP工作在互联网环境下,控制选路的情况十分常见,AS间可以在传递聚合条目的同时,让部分路由器来传递明细路由,可以实现干涉选路的功能。 方法[2] 标准的BGP协议聚合配置——先逐条宣告本地所有明细路由,再进行聚合配置 Aggregate 20.1.0.0 22 配置完成后,本地自动生成空接口放环,此时明细和聚合条目同时发出 Aggregate 20.1.0.0 22 detail-suppressed 仅发送聚合条目,不发送明细条目 基于需要,需要在传递聚合条目的同时,再转发部分的明细路由 方法[1]:抑制列表——定制抑制列表,在传递路由的过程中,对部分不希望传递的条目进行抑制 Ip ip-prefix a permit 20.1.1.0 24
Route-policy a permit node 10 If-match ip-prefix a
Bgp 1 Aggregate 20.1.0.0 22 suppress-policy a 使用抑制规则调用route-policy时,被匹配允许的流量最终被抑制传递 方法[2]:分发列表 Bgp 1 Aggregate 20.1.0.0 22
Ip ip-prefix b deny 20.1.1.0 24 Ip ip-prefix b permit 0.0.0.0 0 le 32 Bgp1 Filter-policy ip-prefix b export 方法[3]:route-map 在bgp中直接调用route-map Bgp 1 Aggregate 20.1.0.0 22
Ip-prefix c permit 20.1.1.0 24
Route-policy c deny node 10 If-match ip-prefix c Route-policy c permit node 20
Bgp 1 Peer 12.1.1.2 route-policy c export 方法[4]:直接调用前缀列表实现分发 Bgp 1 Aggregate 20.1.0.0 22
Ip Ip-prefix d deny 20.1.1.0 24 Ip ip-prefix d permit 0.0.0.0 0 le 32
Bgp 1 Peer 12.1.1.2 ip-prefix d export 五、认证 邻居间保证更新安全 Peer 12.1.1.2 password cipher cisco123 两端的邻居配置需要一致
|