协议工作过程:
建邻配置完成后,邻居间基于TCP的179端口,通过TCP的三次握手建立TCP会话;
(邻居间已知对端单播地址---地址可达---BGP承载于IGP之上)
会话建立后,所有的BGP数据包全部基于TCP会话进行传递和可靠性的 保障;
邻居间正常仅接受一次open报文,交互RID,相互认识去,建立邻居关系;生成邻居表
邻居关系建立后;正常每一分钟keeplive周期保活TCP会话即可;
之后管理员可以根据网络的实际需要,选择性将本地路由表中通过任何来源产生的路由条目;宣告到BGP协议中,有BGP共享给所有的BGP邻居---更新包 update;
生成BGP表——>装载本地发出以及接受到的所有BGP路由;
仅将本地BGP表中最优(参数最好) 路由条目加载于本地路由表;默认不支持负载均衡 收敛完成,无周期更新;仅keeplive保活;
实验拓扑图:
实验要求:
除R5的环回以外,其余所有的环回均可互相访问;
过程配置:
1.基础的ip地址配置,在这里就不展示了
2.在AS2内部启用OSPF协议
R2:
R3:
R4:
配置结束可以测试一下AS2内是否互通
3.BGP关系的建立
BGP的相关知识点:
BGP协议本身不产生路由,而是转发本地路由表中来自其他协议生成的路由条目;
AS之间正常存在大量的BGP邻居关系,且BGP协议不会计算最佳路径;因此在BGP协议中管理员需要进行策略来干涉选路;
BGP的特点:
- 无类别路径矢量 -----距离矢量的升级版---AS--BY--AS
- 使用单播更新来发送所有信息;基于TCP 179端口工作
- 增量更新--仅触发无周期
- 具有丰富的属性来取代IGP中度量进行选路----多个参数控制协议
- 可以在进项和出项对流量实施强大的策略--可控性
- 默认不被用于负载均衡-----通过各种选路规则仅仅产生一条最佳路径
- BGP支持认证和聚合(汇总)
BGP的数据包:
基于TCP的179端口工作;故BGP协议中所有的数据包均需要在tcp会话建立后,基于TCP的会话来进行传输及可靠性的保障;
首先通过TCP的三次握手来寻找到邻居;
Open 仅负责邻居关系的建立,正常进收发一次即可;携带route-id;
Keeplive 保活 周期1min查询邻居关系是否存在;实际保活TCP会话;hold time 默认3min
Update 携带路由条目 目标网络号+各种属性
Notification 出现错误数据时收发;
需要注重了解的名词:
邻居---直连 因为BGP协议中存在非直连邻居的需求,故BGP邻居称为毗邻关系;
EBGP邻居关系 ---- 外部BGP邻居关系,建邻的两台设备处于不同的AS中
IBGP邻居关系 ---- 内部BGP邻居关系,建邻的两台设备处于相同的AS中
BGP的路由黑洞:
非直连建邻到达控制层面路由条目可传递,递归计算路由可达;
而实际数据层面流量在经过没有运行BGP协议的路由器时无法通过,最终有去无回
- 物理、逻辑拓扑全连 -- 物理链路直连、或者vpn
- 邻居关系全连 – 网络中所有设备运行BGP
- BGP重发布到IGP(LAB)
- MPLS 多协议标签交换--- 推荐做法
BGP的防环机制:水平分割
1、EBGP水平分割—解决EBGP环路;
依赖了BGP路由条目中的一种属性来进行防环;AS-PASH路径属性;
BGP协议在传递路由条目的过程中,将记录所有经过的AS的编号;
EBGP水平分割—接收到的路由条目中,若存在本地的AS号将拒绝该条目进入;
2、IBGP水平分割—解决IBGP环路由中的一种机制
本地从一个IBGP邻居处学习到的路由条目,不得传递给本地的其他IBGP邻居;
AS-BY-AS在一个AS内部条目传递的过程中,默认不会修改任何的属性;
由于BGP可以非直连建立邻居关系,故在一个AS内部,可以通过与多台运行BGP协议的路由器建立BGP邻居关系,来稳定关系网络;因此在一个AS内部运行BGP协议的设备,正常均存在EBGP邻居(均同时连接其他AS)
在IBGP水平分割的限制下,虽然避免了IBGP的环路产生,但同时也使得AS内部为了能够传递路由条目,必须两两间建立IBGP邻居关系,邻居关系成指数上升,配置量巨大;
后期可以依赖打破水平分割的机制来解决---联邦、路由反射器
由图可知R1和R5之间为EBGP
[R1]bgp 1
[R1-bgp]router-id 1.1.1.1
[R1-bgp]peer 12.1.1.2 as-number 2
[R2]bgp 2
[R2-bgp]router-id 2.2.2.2
[R2-bgp]peer 12.1.1.1 as-number 1
[R5]bgp 3
[R5-bgp]router-id 5.5.5.5
[R5-bgp]peer 45.1.1.1 as-number 2
[R4]bgp 3
[R4-bgp]peer 45.1.1.2 as
[R4-bgp]peer 45.1.1.2 as-number 3
注:IBGP邻居关系建立,在一个AS内部,拓扑正常较为负载;建议使用环回接口地址作为源、目标ip地址
为了避免BGP路由黑洞的产生,as2中所有的设备均运行bgp协议,为了让传入的路由为优秀可以传递和加表,需要修改下一跳。
R2,R3,R4之间建邻
[R2]bgp 2
[R2-bgp]peer 3.3.3.3 as
[R2-bgp]peer 3.3.3.3 as-number 2
[R2-bgp]peer 3.3.3.3 co
[R2-bgp]peer 3.3.3.3 connect-interface l
[R2-bgp]peer 3.3.3.3 connect-interface LoopBack 0
[R2-bgp]peer 4.4.4.4 as
[R2-bgp]peer 4.4.4.4 as-number 2
[R2-bgp]peer 4.4.4.4 co
[R2-bgp]peer 4.4.4.4 connect-interface l
[R2-bgp]peer 4.4.4.4 connect-interface LoopBack 0
bgp邻居建立完后,邻居间则通过三次握手,建立TCP会话;当TCP会话建成后,邻居间BGP协议将正常收发一次open报文,建立BGP邻居关系,生成邻居表;
EBGP邻居间存在多条物理链路时,也建议使用环回接口地址来建立
{1}IP可达,建议静态路由
{2}正常环回做为源、目ip地址建立邻居关系
{3}默认IBGP邻居间数据包的TTL值为255,EBGP邻居间TTL为1;故一旦使用环回建立ebgp邻居关系,必须修改TTL值,否则无法建立
R4与R5做相同的操作;
4.宣告
R4进行宣告,
同时写上R4到达R5环回的路由;并查看bgp路由表发现达到目的;
要让R5的5.5.5.5到达R4,则需要删除原来的静态路由,改成如图的情况;R5也要保持和R4相同的静态路由操作
查看各路由器的bgp表---dis bgp routing-table
5.测试ping