配置IBGP和EBGPR1 R2间IGP运行OSPF协议配置IBGP配置EBGP配置对等体的建议IBGP用环回接口建邻直连物理接口建立 IBGP 邻居可靠性差、扩展性不足环回接口可以提高稳定性、可靠性和可维护性。EBGP用直连接口建邻居如果EBGP用环回口建立邻居则必须配置peer ebgp-max-hop命令查看TCP连接R1与R2间是IBGP。必须配置IGP才能连接TCPTCP连接成功查看对等体状态字段含义说明Peer对端邻居 IP 地址这里是2.2.2.2R2 的环回地址TCP 连接的目的 IPVBGP 版本号版本 4AS对端设备的 AS 号这里是 100代表 IBGP 邻居如果数值不一样就是 EBGP 邻居MsgRcvd本设备收到对端发送的 BGP 报文总数量MsgSent本设备发给对端的 BGP 报文总数量OutQ等待发送给对等体的 BGP 报文队列0 代表队列没有积压状态正常大于 0 说明链路拥塞或者邻居故障Up/Down邻居持续 UP 的时长00:02:16 代表邻居已经建立 2 分 16 秒如果邻居 Down 掉这里会显示 Down 的时间StateBGP 邻居状态Established代表邻居完全就绪可以收发路由其余状态Idle、Connect、Active、OpenSent、OpenConfirmPrefRcv收到对端发送的前缀路由条目数量这里是 0代表目前 R2 还没有向 R1 传递 BGP 路由生成BGP路由在R3上宣告一条BGP路由在R1上以引入的方式产生一条BGP路由只要是路由表中有的都能发布查看路由表1. BGP 路由状态标识符Status codes标识符英文全称含义解析*valid有效路由的下一跳地址可达该路由具备参与 BGP 选路的资格下一跳不可达的路由不会参与选路。best最优在所有有效路由里经过 BGP 选路规则选出的最优路由会写入全局路由表并且可以发送给 BGP 邻居仅有*无代表路由仅本地保存不会传递给邻居。iinternalIBGP 学习该路由是从 IBGP 对等体学习得到没有i标记代表本地产生或者 EBGP 学习的路由。ssuppressed被抑制路由设备配置路由聚合后明细路由被抑制明细路由不会发送给邻居仅发布聚合路由。2. Origin 起源属性标识符含义优先级产生方式iIGP最高使用network命令把 IGP 路由宣告进 BGP。eEGP次之老旧 EGP 协议学习得到现在设备中已经淘汰废弃。?Incomplete不完全最低通过import‑route引入静态路由、OSPF 等外部路由注入 BGP。3. BGP 路由表头字段含义字段名称含义NetworkBGP 路由的目的网段。NextHopBGP 路由下一跳本地产生路由下一跳显示0.0.0.0。MEDMulti‑Exit‑Disc路由度量值只传递给相邻 AS数值越小路由越优先。LocPrfLocal‑Preference本地优先级仅在本 AS 内部传递数值越大越优先默认值 100。PrefValPreferred‑Value协议首选值只在本台路由器生效越大越优先默认值 0。Path/OgnAS‑Path途经的 AS 编号列表 Origin 起源属性。i 3.3.3.3/32iIBGP 学习只有*没有路由下一跳可达但不是最优路由不会发给邻居。该路由不是最优的因此不会再加载到全局路由表中也不会传递给其他路由器。此处不是最优的原因是下一跳不可达。解决办法--next-hop-local使用场景对从EBGP邻居收到的路由在传递给IBGP时修改下一跳地址为本地的connect-interface只能配置在同时拥有 EBGP 邻居和 IBGP 邻居的 ASBR 设备上ASBR一边连外部 ASEBGP一边连本 AS 内部路由器IBGP只对IBGP 邻居生效给 EBGP 邻居发送路由不需要配置这条命令。配置下一跳本地地址。当 AR2ASBR把从 EBGP 学到的路由发给 IBGP 邻居时修改这条 BGP 路由的 Next‑Hop由原来对端 EBGP 的 IP 改为 AR2 自己的环回 IP2.2.2.2。再次查看R1的bgp路由表R2的BGP路由表1.1.1.1/32的下一跳可达但不是最优的和有效的因为如果IGP表里通告了这条路由再在IBGP里通告路由只能本地有效R1 的全局路由表BGP水平分割R1R2R3运行OSPF都在area0中R2分别与R1R3建立IBGP对等体查看R2 的BGP对等体表能看出R2和R1R3间建立了IBGP对等关系调试---水平分割在R1中创建环回并在BGP中宣告查看R1的BGP路由表可以发现4.4.4.4这条路由是最优的会传递给R2看看R2的BGP路由表4.4.4.4这条路由也是最优的但是不会传递给R3路由表为空原因。这是由于水平分割的原因从IBGP对等体获得的路由不会再发送给IBGP对等体目的是防止出现IBGP环路解决方法1全互联2路由反射器3联邦使用路由反射器解决水平分割问题反射规则从非客户机学到的路由只发给所有客户机。从客户机学到的路由发布给全部非客户机 其他所有客户机不发给路由始发的那台客户机。从 EBGP 对等体学到的路由发布给所有客户机与非客户机。只有可用且优的路由信息才能被反射总结非非不传一台非客户端传给 RR 的路由RR 绝不会发给另外一台非客户端设备再次查看R3的BGP路由表由于R2为路由反射器R1为路由反射器的客户机R3为路由反射器的非客户机根据规则则发给了R3BGP路由黑洞R2R3R4配置OSPF协议R2不宣告12.0.0.0/24网段R4不宣告45.0.0.0/24配置IBGPR2与R4用环回口建立邻接关系配置EBGP邻居R1与R2R4与R5使用直连接口建邻接关系在R1上通告1.1.1.1 在R5上通告5.5.5.5在R2R4上配置下一跳next-hop-local如果不设置当1.1.1.1/32这条BGP路由传给R2时下一跳为12.0.0.1R2传递给R4时下一跳也是12.0.0.1 在R4上造成下一跳不可达这样R4也不会传递给R5在R1上查看BGP路由表R1上有5.5.5.5的路由R5上也有1.1.1.1测试连通----路由黑洞原因数据到达R3后R3没有去往1.1.1.1的路由。R1和R5间有路由但是不能访问这种现象称为路由黑洞解决方法把BGP路由引入OSPF全互联MPLS使用全互联解决黑洞路由配置全互联R2、3、4间两两建立IBGP邻接关系再次测试配置BGP地址聚合黑洞路由 NULL‑0 只有配置 aggregate 之后自动生成用来避免数据包来回转发。R2R3运行OSPF都属于area0R1上创建环回192.168.0.0/24192.168.1.0/24192.168.2.0/24192.168.3.0/24在BGP中宣告。R2与R3建立IBGPR1R2建立EBGP 。查看R3 的BGP路由表有四条明细路由在R2上手工汇总aggregate-----聚合这条命令含义是发送明细路由和发送汇总路由常用后缀命令作用aggregate 192.168.0.0 22 detail‑suppressed抑制明细路由只发布聚合路由给邻居常用summary‑only和 detail‑suppressed 效果一致只发送聚合as‑set聚合路由的 AS‑Path 用集合形式携带所有明细经过的 AS防止路由环路不加 as‑set 时聚合后的 AS‑Path 为空发给外网时外部 AS 认为这条路由起源于本 AS会造成环路问题容易产生环路此时R3上不仅有汇总还有明细路由detail-suppressddetail---细节suppressd抑制aggregate 192.168.0.0 22 detail-suppressed:只发送汇总路由且不发送明细路由使用策略汇总--suppress-policy 策略名作用只发送汇总路由和没有被suppress-policy匹配的路由前缀列表不写 index系统会自动分配序号默认步长为 5route‑policy 的 node 后面的数字不能省略。此时的R3上有汇总路由和没有被策略匹配的路由as-set查看R1的bgp路由表汇总的路由又发布给了R1因为汇总后的路由丢失了可能出现路由环路修改汇总命令再次查看汇总路由消失as-set作用为了避免路由聚合可能引起的路由环路BGP 设计了 AS_Set 属性。AS_Set 属性是一种无序的 AS‑Path 属性标明聚合路由所经过的 AS 号。当聚合路由重新进入 AS_Set 属性中列出的任何一个 AS 时BGP 将会检测到自己的 AS 号在聚合路由的 AS_Set 属性中于是会丢弃该聚合路由从而避免了路由环路的形成。加上as‑set把所有明细路由经过的 AS 号放进集合{AS‑N}里面收到聚合路由的设备发现自己的 AS 号在 AS‑Set 里面依据 BGP 水平分割原则拒收该路由防止路由环路。配置路由反射器R1与R2建立EBGPR2与R3R3与R4建立IBGP邻接关系R234运行OSPF在R1 bgp中宣告1.1.1.1 32查看R3的bgp路由表1.1.1.1是最优的路由但是R4上看不到1.1.1.1这条路由在R3上查看BGP详细路由表查看是否传递给了R4verbose---详细的display bgp peer 4.4.4.4 verbose由于水平分割R3并没有把路由传递给R4.BGP路由器从IBGP邻居收到一条路由不会传递给其他IBGP邻居。路由反射器把R3配置为路由反射器指定R4为客户端reflect--反射代表 R3 作为路由反射器4.4.4.4 成为它的客户机。该命令只在 RR 设备上配置Client 端不需要输入这条命令防环机制Originator‑ID集群内部防环、Cluster‑List多个集群之间防环。此时查看1.1.1.1的BGP明细路由Originator-ID始发者 ID作用集群内部防环标记路由最初的始发 Client 路由器。规则由 RR 生成值为始发 Client 的 Router-ID收到携带自身 Originator-ID 的路由直接丢弃避免路由在集群内环路该属性不会被后续路由器修改。2. Cluster_List集群列表作用集群之间防环记录路由途经的所有 RR 集群编号。基础概念一个 RR 多个 Client 构成一个集群用Cluster_ID标识整个集群同一个集群内所有 RR 必须配置相同 Cluster-ID。单 RR 环境Cluster‑ID 默认取值为RR 自己的 Router‑ID。多台 RR 属于同一个集群冗余备份必须手动配置相同的cluster‑id不能依靠默认值若不手动配置每台 RR 会拿自己 Router‑ID 作为 Cluster‑ID集群失效。处理逻辑RR 第一次反射路由时把本地 Cluster_ID 插入 Cluster_List 表头若原本没有该属性则新建RR 收到路由后检查 Cluster_List如果列表中已经包含自己本地的 Cluster_ID说明路由已经在本集群转发过直接丢弃若不存在本地 Cluster_ID将本集群 ID 添加到列表头部再向外反射。路由反射器和它的客户机组成一个集群Cluster使用 AS 内唯一的 Cluster_ID 作为标识。为了防止集群间产生路由环路路由反射器使用 Cluster_List 属性记录路由经过的所有集群的 Cluster_ID。当一条路由第一次被 RR 反射时RR 会把本地 Cluster_ID 添加到 Cluster_List 的前面。如果没有 Cluster_List 属性RR 就创建一个。当 RR 接收到一条更新路由时RR 会检查 Cluster_List。如果 Cluster_List 中已经有本地 Cluster_ID则丢弃该路由如果没有本地 Cluster_ID则将其加入 Cluster_List然后反射该更新路由。