Technical documentation
发布日期:2023-05-05 浏览次数:1535 来源:赵顺杰
CCNP培训(思科认证EI方向)-BGP边界网关路由协议引入
WOLFLAB官方微信:17316362402,关注WOLFLAB网络技术实验室,了解CCNP培训相关课程!
一、BGP属于EGP(外部网关路由协议),是高级的距离矢量路由协议,也被称之为路径矢量协议,利用TCP来建立链接,基于TCP的179端口。
BGP的路由条目具有更加丰富的属性,能够有更加多元化的选路,并且,默认情况下BGP不开启负载均衡,仅仅选择最优的一条路由提交到路由表,这取决于它所面向的网络是特大型网络,例如公网。因此更需要考虑到环路和次优路径的情况。
二、BGP当中有四种包类型,CCNP培训相关课程咨询联系网站客服
1. Open数据包:包含了BGP的hold时间和Router-ID,AS ID ,可选参数仅用于建立BGP邻居。
2. Keepalive:用于维持建立好的BGP邻居关系,默认hello时间60s,hold时间180S
3. Update : 包含有BGP的条目更新
4. notification : BGP当中通知数据包,当出现错误的时候才发送通知。
三、BGP当中的邻居关系
BGP当中有两种邻居关系,EBGP邻居和IBGP邻居
1. 不同AS之间建立的BGP邻居关系则是EBGP邻居,且大部分时间里EBGP邻居关系都是通过直连建立的。因为正常建立邻居需要经过TCP的三次握手以建立端到端的连接,而很显然正常情况下由于属于不同的AS那便不会有对端的路由,不过当然可以通过手动写静态路由来帮助建立邻居,因此它也说了,仅仅是大部分时间里是通过直连建立邻居关系。
2. 相同AS之间建立的BGP邻居关系则是IBGP邻居关系,但是IBGP并不是IGP,因为IGP是一种路由协议的分类方式,而IBGP是BGP的一种邻居关系,不能一概而论。而IBGP之间建立邻居关系不一定需要直连路由,因为在同一个AS内部底层有运行相应的IGP路由协议,拥有互相之间的路由。
四、路由黑洞 CCNP培训相关课程咨询联系网站客服
A通告的路由条目传递给EBGP邻居B,B对于这条路由则设置下一跳为A,B通告这条路由给IBGP邻居E,且IBGP邻居之间传递路由下一跳不变,因此E上这条路由下一跳仍然是A,因此需要手动在B上敲一条命令使得E上面关于这条路由下一跳为B,E再将这条路由传递给EBGP邻居F。但是由于这条路由并没有传递到D和C上导致在这一AS之内产生了路由黑洞。
解决路由黑洞的方式:
1. 物理链路
2. 重分布,但是路由条目较多的话OSPF不一定扛得住,并且会丢失BGP条目属性
3. 在两台边界上建立隧道技术
4. IBGP全互连,但是有IBGP的水平分割。
5. 联邦
6. 路由反射器
7. 标签转发协议
五、IBGP建立邻居 CCNP培训相关课程咨询联系网站客服
在BGP当中邻居之间互相之间的称呼为peer,对等体。
BGP建立邻居一定是单播,因为需要TCP的三次握手建立端到端的链接
1. Router BGP 100 //一台设备仅能拥有一个BGP进程
2. BGP Rouer-ID //与OSPF选举Router-ID的方式类似
先建立IBGP邻居,对端也属于AS100
neighbor 1.1.12.2 remote 100
查看BGP邻居关系
show ip bgp summary
但是工作的环境一般在AS内部不通过直连建立邻居,而是通过其背后的回环口建立邻居,否则直连建立的邻居会由于直连链路的断开而导致直接单点链路失效,而工作环境尝尝是有冗余链路的,为此,当使用回环口建立邻居,那么某一个直连链路断开,邻居关系便不会面临着这样子的风险。
neighbor 10.10.1.1 remote-as 100
但是这个时候的BGP邻居没法建立起来,原因在于底层并没有路由。
运行动态路由协议或写静态路由都可以解决,默认路由也可以,但是不能两端都使用默认路由。
neighbor a.a.a.a remote-as AS的含义
指定对方属于哪一个AS,所指的地址,必须在IGP中可达。(例外:双方都是默认路由不行)
1. 会主动地向neighbor后面地址的179端口发起TCP链接,建立BGP邻居
2. 只允许neighbor后面的地址作为源来访问自己的179端口。(tcp链接请求的源检测)
且在这里会发现网络层的TTL值为255.
show tcp brief //查看tcp连接的会话。
而为什么默认路由是被访问的一方,因为默认路由是不会主动发起TCP请求的。
六、EBGP建立邻居
可以通过直连建立EBGP邻居关系。
直连建立EBGP邻居当然没有什么问题
但是通过非直连(loopback)建邻居却有问题
问题出自于EBGP建立邻居时会出现的直连检测,默认情况下TTL=1
认为EBGP建邻居,对端应该和自己处在同一网段。也就是说neighbor后面的地址与自己的直连接口应该处于同一网段,IBGP没有直连检测的原因IBGP默认的TTL=255。
关闭EBGP建邻居直连检测的方式
1. neighbor 10.10.2.2 disable-connected-check //关闭直连检测
2. neighbor 10.10.2.2 ebgp-multihop //ebgp多跳
两种方式根据环境需求来决定哪种方式
七、查看邻居关系建立的过程和状态
debug ip bgp
1. idle 空闲状态 --查找是否拥有去往邻居的路由
2. connect 连接 -- 正在建立TCP三次握手
3. active -- 协商还未成功
4. open sent -- 互相发送参数进行协商,也就是发送open报文
5. open confirm -- 打开确认 协商取得一致
6. established -- 建立成功
八、 BGP宣告路由的方式
Network命令将路由表当中的路由宣告进入BGP(不论是直连路由,静态或是其它)
也就是说network把条目宣告进入BGP的前提便是路由表当中要有一条一模一样的路由才可以。
宣告的前缀和掩码和BGP是否开启了自动汇总也有关系(默认关闭)
no-autosummary
network含义: network后面的网段和掩码必须和路由表中的条目精确匹配才能宣告进入BGP表
重分布: 重分布明细路由进入BGP表
autosummary
network:network后面的网段和掩码必须和路由表中明细路由的主类路由匹配才能够宣告进入BGP表
重分布: 重分布主类路由进入BGP表。
十、BGP表针对于最优路由的动作
1. 向路由表提交这条最优的BGP路由
2. 向BGP的peer邻居发送包含这条BGP最优路由的更新
十一、BGP路由优化的条件
1. 入向策略允许的路由
2. 下一跳可达(本地优化)
3. 路径选择(路径优化),若有多跳路径去往相同的目的网段,选择一条最优路由
4. 同步(默认关闭)
CCNP培训相关课程咨询联系网站客服
WOLFLAB官方微信:17316362402
WOLFLAB官方QQ:2569790740