BGP 选路原则
如果此路由的下一跳不可达,忽略此路有(13条选路规则的前提)
Preferred-Value 值越大越优先
等于思科的 Weight 值
Local-Preference 值最高的路由优先
聚合路由优于非聚合路由,本地手动聚合的路由优于本地自动聚合的路由
本地通过 Network 命令引入的路由优先级高于 Import-Route 命令引入的路由
AS路径的长度最短的优先
比较 Origin 属性,IGP优于EGP,EGP优于Incomlete
i>e>? //EGP基本见不到了,除非使用策略进行修改 apple origin xx
选择MED值小的路由
EBGP优于IBGP路由
BGP优先选择到BGP下一跳的IGP度量值最低的路径
当以上全部相同,则为等价路由,可以负载分担(注:AS_Path必须一致,当负载分担时,以下路由原则无效)
的
比较 Cluster-List 长度,短者优先**(路由反射器)**
比较 Originator ID(如果没有 Originator ID,则用Router ID 比较)选择数值较小的路径**(路由反射器)**
比较对等体的 IP 地址,选择 IP 地址数值最小的路径
BGP 配置
基础命令
IBGP
bgp 100 //启动BGP进程
router-id x.x.x.x //指定BGP设备的 RID
peer x.x.x.x as-number 100 //手动指定邻居,并标识对端 AS 号,一般指定的是对端的RID
peer x.x.x.x next-hop-local //指定下一跳为自己,手动更新IBGP邻居下一跳,不然就会出现有路由不可达的状况
peer x.x.x.x connect-interface loop 0 //指定更新源,默认是直连接口
network x.x.x.x x //发布创建BGP路由,前提是必须在路由表中存在且和路由表一致IBGP 默认跳数为 1
思科叫 next-hop-self
EBGP----逻辑端口
bgp 100 //启动BGP进程
router-id x.x.x.x //指定BGP设备的 RID
peer x.x.x.x as-number 200 //手动指定邻居,并标识对端 AS 号
peer x.x.x.x connect-interface loop 0 //指定更新源,默认是接口
peer x.x.x.x ebgp-max-hop //配置 EBGP 指定跳数,只有 EBGP 配置
EBGP----物理端口
bgp 100 //启动BGP进程
router-id x.x.x.x //指定BGP设备的 RID
peer x.x.x.x as-number 200 //手动指定邻居,并标识对端 AS 号使用直连接口建立 EBGP 邻居,一条就够用
手动断开 BGP 邻居
bgp 100
peer x.x.x.x ignore //手动断 BGP 邻居
邻居组的配置
bgp 300
group xxx external ----//创建EBGP group组
peer 10.1.1.1 group xxx
peer 10.1.1.2 group xxx ----//对应邻居加入 group 组
peer xxx as-number 100 ----//针对组指定EBGP AS号
查询命令
dis bgp peer //查询 BGP 的邻居
dis bgp routing-table //查询 BGP 路由表
dis bgp routing-table x.x.x.x //里面可以看到路由的来源,也可以看到因为啥没有被优选
dis ip routing-table //查询 IP 路由表
dis ip routing-table protocol bgp //查询 IP 路由表中的 BGP 路由
dis cu con bgp //查询全局下 BGP 的配置
刷新命令
refresh bgp all import/export //刷新BGP邻居
BGP 下一跳问题
情况一
ICMP重定向、OSPF有FA地址
情况二
IGP使用OSPF建立,之后R1、R2为AS100,R3为AS300,R1与R2 R3建立邻居,R3与R1建立邻居
R3把100网段发给R1的时候,对于R1来讲下一跳是3.3.3.3,R2对于100网段下一跳是R1,此时R1需要指定R2 Next-hop-local
BGP 在给邻居传递路由时的下一跳 = 更新源
在 EBGP 间传递时会修改下一跳为自己的更新源
从 EBGP 学习到的路由在 IBGP 间传递时不会修改下一跳为自己的更新源,于是在 IBGP 邻居传递路由的时候会加上以下命令
peer x.x.x.x next-hop-local // 对邻居说下一跳走我
作者:DC