一、BGP协议特性

图片.png

二、BGP基本术语

图片.png

三、邻居状态机制

图片.png

图解

图片.png

四、路由属性

图片.png

五、选路原则

图片.png

首先,路由的下一跳必须可达,然后BGP按照下面顺序选路:
<1>prefer-value (越大越好)
<2>local-pref (越大越好)
<3>本地始发
<4>as-path  (越短越好)
<5>origin(i>e>?)
<6>med  (越小越好)
<7>ebgp>ibgp
<8>igp costfornext-hop  (越小越好)
<9>是否支持负载均衡(maximumload-balance)
<10>cluster-list (越短越好)
<11>originator-id (越小越好)
<12>router-id(越小越好)
<13>next-hop ip address#neighbor‘s ip address (越小越好)

图片.png

六、BGP路由发布策略
图片.png

七、路由产生方式

图片.png

八、反射器、联邦

图片.png

九、配置命令

bgp 1 #创建并启动BGP
router-id 1.1.1.1 #配置router-id
peer 12.1.1.2 as-number 2 #指定BGP对等体及AS号
peer 12.1.1.2 connect-interface loop0 #使用自己的loopback0做为更新源,和对方建立邻居
peer 12.1.1.2 ebgp-max-hop 1 #配置允许同非直接相连的网络上的邻居建立EBGP连接
peer 3.3.3.3 next-hop-local #
peer 1.1.1.1 reflect-client #设置1.1.1.1位路由反射器的client
network 21.1.1.0 255.255.255.0 #将本地路由发布到BGP路由表中(必须宣告自己真实存在的网络)
import-route ospf 11 #引入其它路由协议的路由
undo synchronization #关闭同步,高版本IOS默认开启

图片.png

图片.png

ip route 2.2.2.0 255.255.255.0 24.1.1.2  //先确保有去邻居的路由

Cisco配置

router bgp 4
  no auto-summary   //关闭自动汇总
  no synchronization     //关闭同步,高版本IOS默认开启
  bgp router-id 4.4.4.4
  neighbor 2.2.2.2 remote-as 123         //指定EBGP邻居
  neighbor 2.2.2.2 update-source lo0     //指定自已的更新源
  neighbor 2.2.2.2 ebgp-multihop 2       //设置EBGP的多跳
  neighbor 3.3.3.3 next-hop-self    
  network 172.16.1.0 mask 255.255.255.0   //宣告网络时要说明掩码
  neighbor 3.3.3.3 soft-reconfiguration inbound  //开启查看接收到的路由信息的功能
  neighbor 3.3.3.3 peer-group WOLF      //在邻居上调用

各类显示命令:
show ip bgp summary      //摘要的邻居邻居信息
show ip bgp 2.2.2.0/24   //显示明细路由的详细信息
show tcp brief           //可以看到是谁发起的TCP链接
show ip bgp neighbors    //详细的邻居信息
show ip bgp rib-failure  //可以看到提示有更高AD的路由
show ip bgp neighbors 2.2.2.2 advertised-routes  //看向这个邻居发了哪些路由信息
show ip bgp neighbors 3.3.3.3 received-routes    //看这个邻居给我发了哪些路由信息,必须在本路由器上用下面这条命令开启
show ip bgp nei x.x.x.x advertised-router 查看向邻居通告的路由器有哪些
show ip bgp nei x.x.x.x received-router 查看邻居向本地通告的路由有哪些,前提开启入站配置

clear ip bgp *         //来硬的,会DOWN掉邻居关系
clear ip bgp nei xxxxx //具体清楚掉某一个邻居
clear ip bgp * soft    //软清,不会down掉邻居关系
clear ip bgp * soft  in/out  //在in或out方向软清,不会down掉邻居关系


BGP路由不优的2个原因:
1、同步问题
2、下一跳是否可达  
BGP的下一跳机制
BGP是一个AS-by-AS的路由协议,而不是一个router-by-router的路由协议。
BGP路由的下一跳并不是指下一个路由器的IP地址,而是指到达下一个AS的IP地址。
所以,默认情况下,从EBGP邻居学到的路由再向其它的IBGP邻居传递的时候,下一跳不改变。


华为配置

bgp 100  #启动bgp指定as号
 router-id 1.1.1.1  #配置BGP的router-id
 peer 12.1.1.1 as-number 100 #创建BGP对等体
 peer 12.1.1.1 connet-interface lookback 0 #指定发送BGP报文的源接口,并可指定发起连接时使用的源地址

 peer 12.1.1.1 ebgp-max-hop 2 #指定建立EBGP连接允许的最大跳数。缺省情况下,EBGP连接允许的最大跳数为1,即只能在物理直连链路上建立EBGP连接
 peer 12.1.1.1 next-hop-local #配置BGP设备向IBGP对等体(组)发布路由时,把下一跳地址设为自身的IP地址。 缺省情况下,BGP设备向IBGP对等体发布路由时,不修改下一跳地址
 nexthop recursive-loolup router-policy #配置BGP按路由策略进行下一跳迭代。

 peer 12.1.1.1 next-hop-invariable #配置发布引入的IGP路由时不改变该IGP路由的下一跳地址。缺省情况下,对等体在发布所引入的IGP路由时会将下一跳地址改为本地与对端连接的接口地址

 import-router protocol  #引入路由
 default-route imported  #允许BGP引入本地IP路由表中已经存在的缺省路由
 network 1.1.1.1 mask 32 #配置BGP逐条引入IPv4路由表或IPv6路由表中的路由
 peer 12.1.1.2 password cipher Huawei #配置MD5认证密码
 peer 12.1.1.2 keychain 1 #配置Keychain认证 Keychain认证推荐使用SHA256和HMAC-SHA256加密算法

 group 1  [ external | internal ] #创建对等体组
 peer 1 as-number 100 #配置EBGP对等体组的AS号
 peer 12.1.1.2 group 1 #向对等体组中加入对等体

 peer 12.1.1.2 valid-ttl-hops 254 #配置BGP GTSM功能。缺省情况下,BGP对等体(组)上未配置GTSM功能
 gtsm default-action { drop | pass}  #设置未匹配GTSM策略的报文的缺省动作。 缺省情况下,未匹配GTSM策略的报文可以通过过滤
 peer { group-name | ipv4-address | ipv6-address } reflect-client #配置路由反射器及其客户
 refelctor cluster-id 1.1.1.1 #配置路由反射器的集群ID
 undo reflect between-clients #禁止客户机之间的路由反射
 routing-table rib-noly [ route-policy route-policy-name ] #禁止BGP将优选的路由下发到IP路由表

 confederation id { as-number-plain | as-number-dot } #配置联盟ID
 confederation peer-as { as-number-plain | as-number-dot } &<1-32> #指定属于同一个联盟的子AS号
 confederation nonstandard #配置联盟的兼容性

 peer 12.1.1.1 perferred-value value #为从指定对等体学来的所有路由配置首选值。 缺省情况下,从对等体学来的路由的初始首选值为0
 defaut local-preference 100 #配置本机的缺省Local_Pref属性值。 缺省情况下,BGP本地优先级的值为100

 route-policy AS-path permit node 10 apply as-path 100 { additive | overwrite }  #设置BGP路由的AS_Path属性
 peer 12.1.1.1 route-policy AS-path export #对向对等体(组)发布的路由添加AS_Path属性
 import-route protocol route-policy AS-path #BGP以import方式引入的路由添加AS_Path属性
 network 12.1.1.1 route-policy AS-path #对BGP以network方式引入的路由添加AS_Path属性
 bestrouter as-path-ignore #不将AS_Path属性作为选路条件
 peer 12.1.1.1 allow-as-loop 100 #允许本地AS编号重复出现 ,缺省情况下,不允许本地AS号重复
 peer 12.1.1.1 public-as-only #配置发送EBGP更新报文时,AS_Path属性中仅携带公有AS编号。 缺省情况下,发送EBGP更新报文时,AS_Path属性中可以同时携带公有AS号和私有AS号
 as-path-limit 255 #配置AS_Path属性中AS号的最大个数。缺省情况下,AS_Path属性中AS号的最大个数是255
 peer 12.1.1.1 fake-as 200 #配置EBGP对等体的伪AS号
 default med 0 #配置缺省MED值。配置缺省MED值
 bestroute med-none-as-maximum #设置当路由没有MED值时将其作为最大值处理。缺省情况下,当路由属性中没有MED值时,BGP在选路时将使用缺省MED值
compare-different-as-med #允许BGP比较属于任意AS的EBGP对等体的路由的MED值。 缺省情况下,BGP只比较属于同一AS的EBGP对等体的路由的MED属性值 deterministic-med #使能Deterministic-MED的功能。在路由选路时优先比较AS_Path最左边的AS号相同的路由。Deterministic :确定性的
 bestroute med- confederation #比较联盟内路由的MED值。 缺省情况下,BGP仅比较来自同一AS的路由的MED属性值