HCIP---BGP协议1
BGP:边界网关路由协议 — 动态路由协议
无类别路径矢量EGP协议;
动态路由协议分类— IGP 内部网关路由协议–AS内部使用 – RIP OSPF EIGRP ISIS…
EGP外部网关路由协议–AS之间使用 – EGP BGP
AS–自治系统 – 标准编号 16位 0-65535 其中1-64511公有 64512-65535私有
扩展AS号 32位二进制
https://www.cidr-report.org/as2.0/
IGP 追求 — 收敛快 选路佳(前提无环) 占用资源少 必然存在工作半径
**EGP追求 **-- 可控性 – 简单容易的干涉各种选路 — AS与AS之间交互的路由量大,且协议本身无法正常优选路径;
可靠性— 由于AS间更新量巨大,故只能增量更新—仅触发、无周期 — TCP — 只能基于单播工作
BGP协议的工作环境,也需要非直连建立邻居关系,故单播是最好的选择; 非直连单播的前提是IP可达;-- BGP承载于IGP之上;
AS-BY-AS – 以一个AS为一跳
BGP协议本身不产生路由,而是转发本地路由表中来自其他协议生成的路由条目;
AS之间正常存在大量的BGP邻居关系,且BGP协议不会计算最佳路径;因此在BGP协议中管理员需要进行策略来干涉选路;
IGP协议追求:1、无环(选路佳) 2、收敛快 3、占用资源少
EGP协议的追求1:可控性强(管理员可以方便进行策略干涉选路)
2、可靠性(BGP协议设备间需要交互大量的路由条目,但又不能选择周期更新来占用链路资源,故只能进行触发更新;且BGP协议工作环境中为节约成本,必然出现非直连需要建立邻居关系—单播邻居)— 基于TCP工作 -三次握手四次断开 4种可靠传输机制 – TCP只能基于单播工作
单播—需要IP可达—依赖IGP BGP承载于IGP之上
3、AS-BY-AS 以一个AS为一跳;
二、BGP特点:
1)无类别路径矢量 -----距离矢量的升级版—AS–BY–AS
2)使用单播更新来发送所有信息;基于TCP 179端口工作
3)增量更新–仅触发无周期
4)具有丰富的属性来取代IGP中度量进行选路----多个参数控制协议
5)可以在进项和出项对流量实施强大的策略–可控性
6)默认不被用于负载均衡-----通过各种选路规则仅仅产生一条最佳路径
7)BGP支持认证和聚合(汇总)
三、BGP数据包
基于TCP的179端口工作;故BGP协议中所有的数据包均需要在tcp会话建立后,基于TCP的会话来进行传输及可靠性的保障;
首先通过TCP的三次握手来寻找到邻居;
Open 仅负责邻居关系的建立,正常进收发一次即可;携带route-id;
Keeplive 保活 周期1min查询邻居关系是否存在;实际保活TCP会话;hold time 默认3min
Update 携带路由条目 目标网络号+各种属性
Notification 出现错误数据时收发;
四、BGP的工作过程
1、基于IGP实现IP可达;
2、邻居间单播传输,通过三次握手建立建立TCP的会话通道
3、使用open报文进行邻居关系建立,一般收发一次即可;生成邻居表;
4、使用update共享路由信息,信息中携带目标网络号+各种属性
5、生成BGP表—装载本地发出及接收到的所有路由信息
6、之后将BGP表中的最优路径加载于路由表中;
7、收敛完成后,仅keeplive周期保活即可
8、所有BGP的数据包均基于TCP会话来保障传输的可靠性
9、若出现错误信息,将使用Notification进行告警
10、结构突变,使用update触发更新即可
五、名词注解
IBGP –内部BGP邻居关系 在同一个AS的BGP设备间的邻居关系
EBGP – 外部的BGP邻居关系 不同AS的BGP设备间建立的邻居关系
六、BGP的路由黑洞
由于BGP协议可以非直连建立邻居关系,故可能出现BGP协议邻居间跨越了未运行BGP协议的路由器;
导致BGP路由传递后,控制层面显示可达,但数据层面,流量经过未运行BGP协议的路由器时,无法通过;最终不通— 控制层面可达、数据层面不可达—路由黑洞
解决方案:
1、 物理或逻辑链路全连
2、 BGP邻居关系全连—所有路由器均运行BGP
3、 IGP重发布到BGP
4、 MPLS (推荐做法)
七、BGP的防环机制—水平分割
1、EBGP水平分割—防御EBGP环境下的环路
BGP协议将在路由条目中记录所有经过的AS编号;—as-path属性—装载所有经过过的AS编号属性
接收到的BGP条目中,若as-path属性存在本地的AS号将拒绝接收;
2、IBGP水平分割—防御IBGP环境下的环路
AS-BY-AS特性—以一个AS为一跳;因此在一个AS内部传递的路由,其属性默认没有任何变化;
IBGP水平分割—从一个IBGP邻居处学习到的路由,不得传递给本地的其他的IBGP邻居;
为了实现所有BGP设备学习到所有路由,在IBGP水平分割的条件下,两两间均需要建立IBGP邻居关系;
IBGP邻居关系的数量成指数上升;
后期可以使用联邦或路由反射器来打破;
八、BGP的基本配置
《1》在BGP协议中,邻居的建立,与路由条目的宣告是分开进行的;
【1】 直连的EBGP邻居间建立
[r1]bgp 1 启动时需要定义其所在的AS号 没有多进程的概念
[r1-bgp]router-id 1.1.1.1 建议配置RID,与OSPF的RID配置规则一致
[r1-bgp]peer 12.1.1.2 as-number 2 建立邻居关系,定义对端设备的ip地址,及所在AS编号
【2】 建立IBGP邻居关系
由于IBGP邻居处于同一个AS中,正常一个AS的内部存在大量的备份路径;若使用物理接口建立邻居关系,将浪费这些备份或负载均衡路径;故建议使用环回接口来进行IBGP邻居关系;
[r2]bgp 2
[r2-bgp]peer 3.3.3.3 as-number 2
[r2-bgp]peer 3.3.3.3 connect-interface LoopBack 0
切记:一旦使用环回地址做为建邻地址,同时需要修改源ip地址,为本地的环回地址;
【3】 EBGP邻居间,存在多条物理链路的建立方案
建议使用环回来作为源、目标ip地址;便于利用所有物理链路
1) IP可达问题,一般使用静态路由
2) 正常使用环回地址作为源、目来建立邻居关系
[r5]bgp 3
[r5-bgp]peer 4.4.4.4 as-number 2
[r5-bgp]peer 4.4.4.4 connect-interface LoopBack 0
3) EBGP邻居间,默认TTL值为1,IBGP为255;因为理论上EBGP邻居间没有第三台路由器
故TTL值设定为1,将只能和直连的物理接口建立邻居;一旦使用环回,必须修改TTL值
[r4-bgp]peer 5.5.5.5 ebgp-max-hop 2 修改EBGP邻居间的TTL值
两端配置完成后,将基于TCP的三次握手,建立TCP会话
[r1]display tcp status
TCPCB Tid/Soid Local Add:port Foreign Add:port VPNID State
b4d0f018 164/5 12.1.1.1:179 12.1.1.2:49877 0 Established
固定端口的使用者为服务端;
会话建立后,邻居间使用open报文,建立BGP的邻居关系;生成邻居表:
[r1]display bgp peer
BGP local router ID : 1.1.1.1
Local AS number : 1
Total number of peers : 1 Peers in established state : 1
Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv
12.1.1.2 4 2 6 8 0 00:04:22 Established 0
邻居的ip地址 版本4 对端AS号 状态机(以建立) 从该邻居处学习到的条
目数量
《2》BGP路由的宣告
BGP协议可以宣告本地路由表中,任意来源路由;本地直连、静态、IGP动态产生均可;
宣告时,宣告的条目内容必须和本地路由表中完全一致;
[r1]bgp 1
[r1-bgp]network 1.1.1.0 24
本地将生成BGP表;装载本地接收及发送出去的所有路由信息;
[r1]display bgp routing-table
Total Number of Routes: 1
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 1.1.1.0/24 0.0.0.0 0 0 i
状态 网络号 属性
- 可用
优秀
可用且优,意味着该条目,可以传递(共享给本地的其他BGP邻居);可以加表(可以加载到本地的路由表中)
i意味着通过IBGP邻居学习
当下BGP环境,不优主要是因为下一跳不可达;
因为AS-BY-AS 导致,一条路由信息在IBGP邻居传递时,其属性默认不编号;最终时常导致下一跳不可达;
[r2]bgp 2
[r2-bgp]peer 3.3.3.3 next-hop-local 要求路由条目传递给,下一个邻居时,修改下一跳为本地地址;
-------------------------------------------
个性签名:今天做了别人不想做的事,明天你就做得到别人做不到的事,尝试你都不敢,你拿什么赢!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!