BGP只传递最优先的路由
路由不存在* > (*:可用的路由,>:最优的路由)
1.从EBGP邻居收到的路由传递给IBGP邻居时,不会更改路由的下一跳
1.在传递路由给IBGP邻居时,将路由的下一跳修改为自身的更新源地址
[AR3-bgp]peer 1.1.1.1 next-hop-local
2.从IBGP邻居收到的路由 不能 传递给IBGP邻居(水平分割)
会导致BGP出现路由黑洞:
1.因为BGP基于TCP可以跨跳建立邻居关系
2.水平分割机制的存在
如何解决路由黑洞?
1.在AS内部 部署全互联的邻居关系
[AR3-bgp]peer 1.1.1.1 next-hop-local
向IBGP邻居传递路由时,将路由的下一跳改变为自身的更新源地址
1.邻居建立的连接数随着设备数量的增多而增加:说人话就是设备变多后不好互联,有些没有访外需求
2.因为全互联,所以做路由信息管理时 较复杂:说人话就是路由信息多,要做的策略多
2.使用反射器(RR)
3.使用联盟
4.可以在AR1和AR3之间部署隧道
1.GRE
2.MPLS
[AR4-bgp]network 100.4.4.4 32 在BGP下通告路由
100.1.1.1在AR1 IGP一定要有信息
从IBGP邻居收到的路由 传递给EBGP邻居时,需要考虑BGP与IGP同步的问题
1.AR3从IBGP邻居AR1收到路由100.1.1.1/32
2.AR3将路由100.1.1.1/32传递给EBGP邻居AR4时,需要判断是否可以通过IGP学习100.1.1.1/32的路由
1.判断可以通过IGP学习100.1.1.1/32的路由,则正常将路由传递给AR4
2.判断不可以通过IGP学习100.1.1.1/32的路由,则不会将路由传递给AR4
1.因为BGP路由是递归查找的,即最终BGP的数据会通过IGP进行转发
2.因为BGP默认关闭了BGP与IGP的同步功能,所以就算没有通过IGP学习100.1.1.1/32的路由,也会将路由传递给AR4
3.BGP与IGP的同步功能,是默认关闭的,且不能开启
所有BGP学习的路由,全部通过路由递归的方式,通过下一跳递归查找转发出口
4.如果BGP与IGP的同步功能开启,则IGP与BGP所有的路由条目都是相同的
就算IGP没有宣告1.1.1.1的AR1的环回口,AR1和AR3建立了IBGP邻居之后NETWORK宣告100.1.1.1 之后依然还是可以通信的
IBGP通信类似于路由递归,AR3通过1.1.1.1找到AR1路径 查找1.1.1.1的BGP路由下一跳是10.1.23.2会通过IGP给到AR1 路由递归
因为BGP没有拓扑信息会根据下一跳去转发,BGP路由下一跳会查找IGP生成的路由表查找BGP的下一条的IGP路由进行转发,如果IGP路由没有BGP路由的下一跳则会路由黑洞
peer next-hop-invariable
命令功能
peer next-hop-invariable命令配置不同AS域的PE向EBGP对等体发布路由时不改变下一跳;向IBGP对等体发布引入的IGP路由时使用IGP路由的下一跳地址。
undo peer next-hop-invariable命令用来恢复缺省配置。
缺省情况下,BGP发言者在向EBGP对等体发布路由时和向IBGP对等体发布引入的IGP路由时将下一跳改为自己的接口地址。
命令格式
peer { ipv4-address | group-name } next-hop-invariable
undo peer { ipv4-address | group-name } next-hop-invariable