一、BGP协议特性
二、BGP基本术语
三、邻居状态机制
图解
四、路由属性
五、选路原则
首先,路由的下一跳必须可达,然后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 (越小越好)六、BGP路由发布策略
七、路由产生方式
八、反射器、联邦
九、配置命令
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位路由反射器的clientnetwork 21.1.1.0 255.255.255.0 #将本地路由发布到BGP路由表中(必须宣告自己真实存在的网络)import-route ospf 11 #引入其它路由协议的路由undo synchronization #关闭同步,高版本IOS默认开启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属性值