一、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位路由反射器的client
network 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属性值