一、背景
1、其实相对来说路由协议中bgp要比isis协议常用的多。那么bgp又是个什么协议呢,它出现的原因是为了解决什么问题。大家之前都知道ospf,isis是IGP协议,可以通过spf算法快速收敛网络形成拓扑,但是也出现了以下问题:
1)、我要处理10万条以上的路由,那么路由器频繁使用spf算法不得崩溃
2)、常见的igp路由协议基本基于cost进行简单选路,无法满足日益发展的流量调度需求
3)、大家都使用相同的igp路由协议,容易暴露出内部的网络信息
为此,BGP应运而生。
二、什么是bgp
1、bgp(border gateway protocol)边界网关协议。bgp基于tcp协议,只要能建立tcp连接就能建立bgp,bgp是一种基于路径矢量的路由,bgp是触发式更新而非周期性更新,bgp只传递路由信息而非详细的网络拓扑信息,bgp同时具有相当丰富的选路规则适应当下的流量调度需求。
三、bgp基础
1、bgp版本
目前我们针对ipv4使用的是bgp4,针对其他网络如ipv6,则升级为mp-bgp,bgp端口号为179.
2、bgp特征
1)、运行bgp路由器我们称为bgp发言者(bgp speaker),或bgp路由器
2)、两个建立bgp会话的路由器,我们称互为对等体(peer),对等体之间交换路由表,建立对等体无需直连,分为EBGP和IBGP对等体。
注意:对等体组是一些具有相同策略的对等体的集合,且组里的单个对等体也可以配置自己的发布路由和接收路由的策略
3)、bgp是通过各式各样的路径属性来进行路由控制
4)、bgp使用的是增量更新或进行触发性更新,并不会周期性进行更新
3、bgp中的tcp连接源地址选择
1)、ibgp对等体中我们则优先使用router-id作为tcp连接源地址,这是因为ibgp中,两个bgp路由器可能有多条路径进行连接,单独1条路径故障不会影响对等体的建立。
2)、ebgp对等体中我们优先使用直连接口的ip地址作为源地址,如想使用router-id作为源地址,则需注意多跳问题(即ebgp对等体正常只允许1跳,用了router id就要2跳了,这时需多加命令peer router-id ebgp-max-hop 2 )
4、bgp报文(5种)
1)、open:协商bgp对等体参数,建立对等体关系。在tcp连接建立之后
2)、update:发送bgp路由更新。bgp建立后有路由需要发送,或者后期路由发生变化
3)、notification:报告错误星系,中止对等体关系。bgp运行中发生错误,如前面ebgp中配置router id为tcp连接源地址而并未配置ebgp-max-hop 2命令则会出现notification
4)、keepalive:标志对等体成立,维持对等体关系。定期发送保持连接,60s为1/3hold time
5)、route-refresh:用于改变路由测罗后请求对等体重新发送路由信息,只有支持路由刷新能力的bgp设备会发送和响应此报文。路由策略发送变化后触发对等体重新通告路由
5、bgp的状态机
idle:开始准备tcp连接
connect:正在建立tcp连接
active:tcp连接建立没成功,反复尝试建立tcp连接
opensent:tcp建立成功,开始发送open包
openconfirm:参数协商成功,相互发送keepalive包
established:收到对方keepalive包,开始update通告路由信息
6、bgp路由生成(2种)
1)、network :注入的路由必须是已经存在于ip路由表中的路由条目
2)、import-route:可以对直连路由,静态路由,ospf路由,isis路由等协议注入到bgp路由表
7、bgp通告原则(4种)
1)、只发布最优且有效的路由,*代表有效,>代表最优
2)、从ebgp对等体获取的路由,会发送给所有对等体
3)、从ibgp对等体获取的bgp路由,不会再发送给其他对等体(ibgp水平分割,避环)
4)、当一台路由器从自己的ibgp对等体学习到一条bgp路由(如192.168.1.0)时,它将不能使用该条路由或把这条路由发送给自己的ebgp对等体,除非它又从igp协议中学习到该条路由(192.168.1.0)(bgp同步原则)
四、bgp的工作原理(对等体的建立)
1、先启动bgp的一端先发起tcp连接,三次握手成功后发送open报文(router id小的会关闭本地tcp连接,只保留对方创建的tcp连接),携带参数用于建立对等体,协商完成后相互发送keepalive报文之后对等体建立成功,双方定期发生keepalive保持连接。bgp对等体建立后,bgp路由器发送bgp update报文通告给对等体(如没有可通告的路由则不会发送此报文)。
五、BGP的路径属性(常见4类10种)
1、之前我们提过常见的igp协议如ospf和isis中一般只用cost属性来控制路由选路,bgp就完美的解决了单一属性的不足,常见的bgp属性有4类10种。
公认必遵:所有bgp必须识别,且必须包含在每个update消息里。origin,as_path,next_hop
公认任意:所有bgp必须识别,且不必须包含在每个update消息里。local_preference,automic_aggregate
可选过渡:所有bgp可选择是否识别,且该属性会通告给其他对等体。aggregator,community
可选非过渡:所有bgp可选择是否识别,且该属性不会通告给其他对等体。med,cluster-list,originator-id
1)、as_path:前往目标网络的路由经过的as号列表。(包括as_seqence,as_set(一般用于执行聚合之后添加此关键字,as_set携带聚合前as路径信息),还有两种运用于bgp联邦)
作用:确保ebgp对等体之间传递无环;as号个数更少时路由更优
修改:三种方式。additive 左侧追加,dverwrite 替换新值,none清空
2)、origin:标志了路由的起源,有三种,igp(network)>ebgp>incomplete(如import-route)
3)、next_hop:用户指定到达目的网络的下一跳地址
规则(4条):
①、bgp路由器在向ebgp对等体发布路由,会把下一跳属性设置为本地的接口地址
②、bgp路由器将本地始发路由发布ibgp对等体时,下一跳设置为本地的接口地址
③、bgp路由器在收到ebgp对等体通告的bgp路由传递给自己的ibgp对等体时,下一跳不变
④、bgp路由器在收到bgp路由时,下一跳与ebgp对等体同网段,下一跳不变
4)、local_preference:本地优先级属性(越大越优,缺省100),用于告诉as中的路由器走哪条离开本as,无法传递给ebgp对等体
5)、community:是一种路由标记,用于简化路由策略的执行,分自定义和公认团体属性
公认团体属性:Internet,no_advertise,no_export,no_export_subconfed(联邦用)
6)、med:多出口鉴别器(越小越优),用于向外部对等体指出进入本as的首选路径,只比较相邻的两个as。
7)、atomic_aggregate:路由聚合时导致路径信息丢失时自动添加
8)、aggregator:执行路由聚合的路由手动添加或自动添加
9)、prefered-value:协议首选值(越大越优),华为特有,本地有效,只影响本路由器的优选,不传递给其他bgp对等体
2、bgp路径优选(12条)依次优选
不可达路由>prefered-value大的路由(本地路由器)>local_preference值大(出as最优)>(本地始发由于学习,手动聚合>自动聚合>network>import>对等体学习)>as_path短>origin(igp,egp,incomplete)>med小(入as最优)>从ebgp学到大于igbp>next-hop值小>cluster_id短>router id小的>ip地址小的
六、BGP路由反射器
1、背景:由于ibgp中水平分割的问题,如果ibgp中的路由器没有全互联,那么就会出现有些ibgp路由器可能学习不到全局bgp路由表(如R1和R2为ebgp对等体,R2和R3、R3和R4为ibgp对等体,R2和R4非ibgp对等体,这时R4就学不到R2从R1学到的bgp路由)。全互联的话又要维护大量tcp和bgp连接。因此为了解决此问题,特意提出了bgp路由反射器
2、路由反射器有2种角色,分别为RR和client。
规则:(只反射最优路由)
①、RR从非client对等体学到的ibgp路由,会反射给所有client
②、RR从client对等体学到的ibgp路由,会反射给所有非client和该client之外的所有client
③、RR从ebgp对等体学到,发送给所有client和非client
3、RR的设定使得igbp水平分割原则失效,容易发生环路,比如多RR时。为了防环,又出现两条属性,originator_id,cluster_list。
1)、originator:作用范围是单个集群内部,标识路由器原始发起者的router id
2)、cluster_list:跨集群层级,纪录路由经过的集群路径。
注意:为什么需要这两者呢,单独一个originator不行吗?
因为originator id只能防止路由回到原始发起者,但无法检测路由是否在不同集群间循环反射
七、BGP路由控制
1、bgp路由控制一般通过路由匹配工具匹配特定路由,再通过路由测罗工具控制路由发布接收、
路由匹配工具:
as_path filter:将as_path属性作为匹配条件的过滤器,可以直接调用或者通过路由策略进行调用
community filter:2种类型,基本:匹配团体号或公认community属性。高级:正则表达式匹配团体号,华为设备中默认不向任何对等体发布community属性,需配置advertise-community显式启用
2、bgp邻居按需发布路由(ORF)
orf(outbound router filters)出口路由过滤器;bgp基于前缀的orf能力,能将本段设备配置的基于前缀的入口策略通过路由刷新报文发送给bgp邻居,bgp邻居通过这些策略构造出口测罗,在路由发送时对路由进行过滤。
八、bgp安全
1、bgp的攻击主要由两种:建立非法的邻居关系;发送大量的非法bgp报文
2、bgp使用认证和gtsm保证安全
九、4字节的as号
1、目前使用的是2字节1-65535,现在则是4字节向下兼容。