BGP的课程笔记
BGP(边界网关协议)
- 基本概念
- BGP两种对等体关系,一种是EBGP,另一种是IBGP
- EBGP对等体关系:当BGP运行在不同AS之间时,称为EBGP
- IBGP对等体关系:当BGP运行在同一AS内部时,称为IBGP.
- IBGP水平分割规则:当路由器从一个IBGP对等体学习到某条BGP路由时,它将不能再把这条路由通告给任何IBGP对等体,这就是IBGP水平分割规则。
- 报文类型及格式
BGP是工作在TCP之上的,使用TCP目的端口号179.
有五种报文:
Open报文:建立邻居
Update报文:交换路由信息
Notification报文:保持邻居 60s
Keepalive报文:差错通知
Route-Refresh报文:用于在改变路由策略后请求对等体重新发送路由信息。
注意:只有BGP头部的报文是keeplive
4.BGP状态:
BGP状态描述的是BGP邻居的建立过程,BGP状态共有六种,分别是Idle(空闲)、Connect(连接)、Active(活动)、OpenSent(打开发送)、OpenConfirm(打开确认)和Established(建立成功)。
Idle状态:BGP拒绝任何进入的连接请求,Idle状态是BGP的初始状态。
Connect状态:该状态下,BGP等待TCP连接的建立完成后在决定后续操作。
Active状态:该状态下,BGP将尝试进行TCP连接的建立,是BGP的中间状态。
OpenSent状态:该状态下,BGP等待对等体的Open报文,并对收到的Open报文中的AS号、版本号、Holdtime等进行检查。
OpenConfirm状态:在该状态下,BGP等待KeepAlive或Notification报文。
Established状态:在该状态下,BGP可以在对等体之间交换所有报文,也是BGP正常工作的状态。
在BGP对等体建立的过程中,通常可见的三种状态是Idle、Active、Established。BGP对等体双方的状态必须都为Established,BGP邻居关系才能成立,双方通过Update报文交换路由信息。
- 路由属性:
- BGP的路由引入:
Network X.X.X.X mask X.X.X.X(必须和路由表中掩码相同)
在传递路由时,传递给EBGP时,下一跳会改为本地(邻居neighbor中的地址),传递给IBGP时,下一跳不变,若想变就用next-hop-local,想去谁,将谁的neighbor中配置
- *:有效路由
>:最优的,不优,就算学到也不放进路由表,并且不会传递给任何邻居
bgp table中,前面的i表示internal(内部学习),后面的i才是起源属性
- IBGP传递路由给邻居时:
【1】下一跳不变
【2】收到后不能传递给他的IBGP邻居---只传一跳原则
4.通告BGP路由的方法
BGP路由是通过BGP命令通告而成的,而通告BGP路由的方法有两种:network和Import。
(1)network方式:
使用network命令可以将当前设备路由表中的路由(非BGP)发布到BGP路由表中并通告给邻居,和OSPF中使用network命令的方式大同小异,只不过在BGP宣告时,只需要宣告网段+掩码数即可,如:network 12.12.0.0 16。
- Import方式:
使用Import命令可以将该路由器学到的路由信息重分发到BGP路由表中,是BGP宣告路由的一种方式,可以引入BGP的路由包括:直连路由、静态路由及动态路由协议学到的路由。其命令格式与在RIP中重分发OSPF差不多。
- 配置及实现
- BGP基础配置命令:
[Huawei]bgp 65001
[Huawei-bgp]router-id 1.1.1.1 //配置BGP的Router ID
[Huawei-bgp]peer 2.2.2.2 as-number 65001 //指定对等体的IP地址及其所属的AS编号
[Huawei-bgp]peer 2.2.2.2 connect-interface loo0 //更新源
[Huawei-bgp]peer 6.6.6.6 next-hop-local //指定下一跳自我
[Huawei-bgp]peer 8.8.8.8 ebgp-max-hop 2 //两个AS之间用环回口建的邻居要将它们的邻居的路数改为2,默认的是1
- 汇总命令
- 自动汇总:summary automatic,该命令仅对import-route方式引入BGP的路由有效。
- 手工汇总:
Aggregate //进行手工汇总,不抑制明细路由
aggregate+detail-suppressed //detail-suppressed是抑制明细路由的通告。
aggregate+detail-suppressed+as-set //产生的汇总路由将会继承明细路由的路径属性as-path。(如果在本地路由汇总,则不用配置as-set命令;如果在其邻居汇总,则需要配as-set
aggregate+suppress-policy //有选择性地抑制明细路由。
aggregate+origin-policy //使用关键字origin-policy来选择仅符合route-policy的具体路由来生成聚合路由
- 路由反射器(RR)
1.三大原则
原则一:如果路由反射器从自己的非客户对等体学习到一条IBGP路由,则它会将该路由反射给所有客户。
原则二:如果路由反射器从自己的客户学习到一条IBGP路由,则它会将该路由反射给所有非客户,以及除了该客户之外的其他所有客户。
原则三:当路由反射器执行路由反射时,它只将自己使用的,最优的BGP路由进行 反射。
2.RR环境下的路由防环
- Originator-ID属性:本地AS内的始发路由器的router-id
- Cluster-List属性:反射器的Router-id
3.基础配置
[R3-bgp]peer 2.2.2.2 reflect-client //将R3配置为路由反射器,并且将R2配置为其客户
- 路径属性
- Prefered_Value
华为私有的路径属性,该属性的取值范围为0~65535,越大越优,只在本地有效,而且绝对不会被传递给其他对等体(不会出现在Update报文中)
- Loacl_Preference
只能够在一个AS内部传递(即只能在IBGP对等体之间传递),值越大越优
- AS_Path
只在EBGP对等体之间发生改变,当BGP路由在一个AS内传递时(路由被通告给自己的IBGP对等体),该路由所携带的AS_Path是不会发生改变的。
- Origin
3种类型
IGP:如果路由是由始发的BGP路由器使用network命令发布的,那么 该Origin为IGP
EGP:如果路由通过EGP学习的,那么该属性为EGP
Incomplete:如果路由通过import-route学习到的,那么该属性为Incomplete。
注意:i>e>incomplete(?)
- MED
用于判断流量进入AS时的最佳路由,只能在相邻AS之间传递,默认为0
- 路由优选规则
- 优选Preferred_Value属性值最大的路由
- 优选Local_Preference属性值最大的路由
- 通过手工汇总的方式发布的路由>通过自动汇总的方式发布的路由>通过network命令发布的路由>通过import-route命令发布的路由
- 优选AS_Path属性值最短的路由
- 优选Origin属性最优的路由。IGP>EGP>Incomplete
- 优选MED最小的路由
- 优选从EBGP对等体学到的路由(EBGP路由优先级高于IBGP路由)
- 优选Next_Hop的IGP度量值最小的路由
- 优选Cluster_List最短的路由
- 优选Router-ID最小的设备通告路由
- 优选具有最小IP地址(Peer命令所指定的地址)的对等体通告的路由
- 联邦
将一个AS划分为若干个子AS,每个AS内部建立IBGP全连接关系,子AS之间建立EBGP连接关系。
配置命令:confederation id +所处联邦的AS号
注意:有时候需要使用confederation peer-as命令指定同属一个联邦的相邻成员 AS。
反射器RR和联邦的区别:
RR |
联邦 |
不需要更改现有的网络拓扑 |
需枚逻辑拓扑 |
配置方便,客户机不知道自己是客户机,集群与集群之间仍然需要全连接 |
所有设备需要重新进行配置,且所有设备必须支持联邦功能 |