BGP基础
Ⅰ.EGP和IGP的区别:
IGP(interior Gateway Protocols)内部网关协议,RIP,OSPF和ISIS都属于IGP。IGP的主要目的是发现和计算自治域内的路由信息。
BGP(Border GatewayProtocol)是一种在自治系统之间动态交换路由信息的路由协议。
一台路由器仅能创建一个BGP实例,而IGP更加灵活,每个接口都可以创建一个实例。
IGP协议设计的重点在于发现和计算路由,而BGP重点在于控制路由的传播和选择最好的路由。
BGP的拓扑图更加大局观,没有每个AS域内的拓扑结构,而IGP只能看到该AS域内的拓扑结构。IGP和BGP是分层的关系,即IGP负责在AS内部选择花费最小的路由,BGP负责选择AS间花费最小的路由。
Ⅱ.BGP:
AS号分类:公有:1~64511(全球唯一,不可重复),私有:64512~65535(1024个,可重复,不能进互联网,用于企业网络)
BGP通过TCP(端口179)。BGP路由器会周期地发送19字节的保持存活keep-alive消息来维护连接(默认周期为60秒,hold time,是keepalive time的3倍关系)
Ⅲ.BGP消息类型:
①Open:发现邻居,包含hold time以及BGP router ID,是TCP连接建立后发送的第一个消息,用于建立BGP对等体之间的连接关系。
②Keepalive:维持连接,BGP会周期性地向对等体发出Keepalive消息,用来保持连接的有效性。
③Update:发送如何到达目的的网络的路由更新,包含路径属性以及网络;用于在对等体之间交换路由信息。它既可以发布可达路由信息,也可以撤销不可达路由信息
④Notification:检测到错误, BGP连接关闭消息的发送;当BGP检测到错误状态时,就向对等体发出Notification消息,之后BGP连接会立即中断。
Ⅲ.BGP表中的路由通告规则:
①多条路径时,BGP只选最优的使用,把最优传给邻居(负载均衡和FRR除外)
②从EBGP获得的,直接向自己所有BGP相邻体通告(包括EBGP和IBGP)
③从IBGP获得的,不向自己的IBGP相邻体通告(反射器除外);是否通告给自己的EBGP相邻体要根据IGP和BGP同步的情况来决定:只有优化时才传给EBGP邻居。
Ⅳ.BGP的三张表:
①邻居表(adjancy table)
② BGP表(forwarding database):BGP默认不做负载均衡,会选出一条最优的,放入路由表
③路由表(routing table)
Ⅴ.BGP常见属性:
(1)公认必遵
①ORIGIN(起源):描述源路由是怎样放到BGP表中的。有三个可能的源IGP,EGP,以及INCOMPLETE.路由器选择具有最低ORIGIN类型的路径。
②AS_PATH(AS路径):指出包含在UPDATE报文中的路由信息所经过的自治系统的序列。
③Next_HOP(下一跳)声明路由器所获得的BGP路由的下一跳,对EBGP会话来说,下一跳就是通告该路由的邻居路由器的源地址。
(2)公认自决
①LOCAL_PREF(本地优先级):用于告诉自治系统内的路由器在有多条路径的时候,怎样离开自治系统。本地优先级越高,路由优先级越高。
②ATOMIC_AGGREGATE(原子聚合):原子聚合属性指出已被丢失了的信息。
(3)可选过渡
①AGGREGATOR(聚合者):此属性标明了实施路由聚合的BGP路由器ID和聚合路由的路由器的AS号。
②COMMUNITY(团体):此属性指共享一个公共属性的一组路由器。
(4)可选非过渡
①MED(多出口区分):该属性通知AS以外的路由器采用哪一条路径到达AS,它也被认为是路由的外部度量,低MED值表示高的优先级。
②ORIGINATOR_ID(起源ID):路由反射器会附加到这个属性上,它携带本AS路由器的路由器ID,用以防止环路。
③CLUSTER_LIST(簇列表):此属性显示了采用的反射路径。
Origin:
记录路由如何进入路由表,如果到达同一目的IP有多条路径,且BGP学到这些路由通过不同的方式,则Origin属性是决定最优路径的一个因素,用于标明路由的起源:
①network 宣告本地路由表中的任意路由→ i
②import 将本地通过其他协议学习的路由重发布到BGP协议中→ ?
③ egp 早期的ebg协议学习的路由重发布到BGP协议中→ e
as-path:
路由条目在一个AS内部传递时,不会添加该AS的编号,在传递给其他EBGP邻居时,自动添加该参数,优选经过的AS数量少的路径。
①可以通过添加AS来干涉选路,添加后可干涉EBGP邻居关系和IGBP邻居关系选路,但只能在EBGP邻居修改该参数。
②防止环路,如果收到BGP路由包含自己的AS号,则丢弃。
next-hop(下一跳):
bgp中,IBGP不更新(原因:没有相应的算法),EBGP更新下一跳(区别:IGP每过一个路由器就会更新。)
①不管从什么邻居学习到的路由传递给我的EBGP邻居时,下一跳改变为自己。
②从EBGP邻居学习到的路由传递给我的IBGP邻居时,下一跳不变,还是EBGP邻居,需要使用next-hop-self改变。
③从IBGP邻居学习到的路由不会再传递给我的IBGP邻居(水平分割)
local-preference(本地优先级):
只在本地IBGP邻居间有效,不会通告给其他AS;
①用来选路,通过改变bgp路由流入本台路由器的优先级来达到控制数据怎么流出AS的目的。
注:local-preference值越大,即优先级越高(默认100)如果优先级一样,优选router ID小的
MED(相当于度量值metric):
越小越优,AS间传,只能跨一个AS,比较时也只能是同一个AS。默认不支持不同AS间比较MED值,但可取消默认。
①用于流量进入AS的最佳路径,典型的用在AS间的链路上,以区分到达相同的邻居AS的多个出口点。
②干涉EBGP/IBGP选路,最常用于干涉EBGP选路
③常常用于AS1干涉AS2对AS1的选路;在本路由器干涉别人对我的选路。
Ⅵ.BGP十三条选路原则:
1. 思科私有属性,权重(weight)属性,该属性仅本地有效,不可传递,越大越优,默认为0
2. local preference,本地优先级属性,越大越优,默认为100,针对于EBGP仅本地有效,不可传递,IBGP可传递
3. local next-hop,本地下一跳属性,优选起源于本地的路由,即下一跳是0.0.0.0(在BGP表中,本路由器通告的路由的下一跳为0.0.0.0)
4. AS-path,路径属性,该属性代表一条路由从始发路由器传递到目标路由器经过的AS数量,每经过一个AS就会记录下该AS的编号,该属性规定,经过的AS越少,代表路由更优(IBGP不适用,因为IBGP发送路由更新时不携带AS)
5. origin,起源属性(IGP>EGP>重分布),该属性指定路由的始发源,路由来源包括三种,第一种是通过IGP协议学习到的,以小字母" i "表示;第二种是通过EGP协议学到的,以小字母“ e ”表示;第三种是通过外部重分布/重分发进来的,这一种代表未知的路由来源,以" ? "表示(注:这所指的IGP和EGP协议为内部网关协议和外部网关协议,也就是说,路由始发源是IGP(eigrp ospf rip isis等)或是EGP(External Gateway Protocol-外部网关协议,包含BGP)
6. MED属性(也叫做metric属性),越小越优,默认是0;针对IBGP生效,针对EBGP默认不生效,如果要生效,需要使用命令bgp always-compare-med让它总是比较metric
7. EBGP的路由优先于IBGP的路由
8. 基于以上条件如果无法进行比较(都是IBGP或者都是EBGP),比较IGP协议的metric,metric通常代表两个方向的带宽情况,越小越优,优先走带宽大的(注,如果使用直连建立EBGP邻居是无法进行比较的)
9. 如果配置了maximum-path [Ibgp] +number,BGP默认是没有开启负载均衡的,如果在BGP路由器上开启了负载均衡,证明此条匹配成功,停止往下匹配(注:BGP最大支持16条线路实现负载均衡,也支持非等价的负载均衡)
10. 选择最老的路径(从更老的EBGP邻居学习到的路由),只针对于EBGP。
11. 基于以上情况,默认对于IBGP是无法进行比较的,那么就需要比较邻居的Router-id,优先选择RID最小的IBGP邻居的路由(注,可以使用命令bgp bestpath compare-routerid强制比较router-id)
12. 优选于cluster-list最短的(routing reflector路由反射器),每经过一个Router,cluster-list列表里面就会添加上这个BGP路由器的RID,经过的RR越少越优
13. 如果没有RID,比较邻居的ip地址,越小的BGP邻居路由器传过来的路由越优,如果有环回口,则比较环回口的ip地址大小,(这一条一定是可以比较出来的,因为当在BGP进程下指邻居的时候邻居不能相同)
Ⅶ.BGP防环机制(水平分割):
①EBGP:不接收包含自己AS号的BGP路由。
②IBGP:从IBGP学到的路由不会通告到其他IBGP邻居,所以IBGP邻居需要全部互联(路由映射、联邦)
Ⅷ.思科路由协议优先级: