您的BGP报文学习笔记(三)已抄送完毕,请查收!
BGP防环机制
No.1
BGP防环
路由条目在跨越AS时,每经过一个AS的边界路由器,会将此路由器的AS号放入路由条目的AS-Path属性中(最左边),记录此路由条目所经历的AS-ID。当AS边界路由器收到路由条目,首先查看它的AS-Path属性,如果AS-Path属性中存在自己BGP的AS号,则认为出现环路,丢弃此路由条目。
No.2
IBGP防环
在AS内,没有一种BGP路由属性用来定义AS内防环的,所以IBGP采用水平分割的机制,当从IBGP邻居传递过来的路由,不会再次传递到IBGP邻居。
BGP配置过程
① 启用BGP并配置本地AS号
② Peer对等体
③ 等待建立邻居
④ Network宣告网段
No.1
启用BGP并配置本地AS号
全局模式下使用命令[Huawei]bgp 100启用BGP并配置本地AS号
AS-ID:
其中AS-ID在报文中占16bit,最多可以支持2^16=65535个ID:
① 公有AS号:1-64511
② 私有AS号:64512-65535
No.2
Peer对等体
在BGP进程下,使用命令peer 192.168.1.2 as-number 100指定邻居IP和AS号。
(1)默认直连建立邻居:
默认Peer对等体之后,路由器使用与对端直连的端口或IGP对应的出接口建立邻居。
(2)LoopBack口建立邻居:
当与对等体之间不止一条TCP链路时,可以使用逻辑地址建立邻居加强冗余,当一条实际物理链路断掉时,启用另一条建立TCP邻居。
使用命令[Huawei-bgp]peer 192.168.1.2 connect-interface loop 0进行端口修改,此命令只是对主动端发送Open报文时使用哪个接口的IP地址进行设置,如果被动端收到Open报文时,报文的源地址就是本设备的Peer地址,检测无误,则会使用Open报文中的目的地址为源地址回复Open报文建立邻居。
① AR1为主动端,在Connect状态主动发起Open报文,源地址为1.1.1.1,目标地址为2.2.2.2
② AR2收到Open报文后,源地址为Peer地址,报文通过,并且发送本端的Open报文,由于为TCP连接,使用源Open报文的源地址为本端Open报文的源地址
③ AR1收到Open报文后,通过检查,邻居建立
No.3
等待建立邻居
BGP协议使用单播TCP进行邻居的建立,可以使用本地任何端口进行邻居建立,单播建立邻居的好处是支持多跳邻居建立,默认EBGP TCP报文中的TTL值只有一跳,如果使用Loopback地址或跨跳建立邻居,会造成邻居不可达现象。
使用命令:[Huawei-bgp]peer 192.168.1.2 ebgp-max-hop 10 修改TTL值
EBGP报文抓包:
No.4
Network宣告网段
BGP使用命令network进行路由宣告,宣告路由的必须要存在路由表中,否则无法宣告。
No.5
BGP优化
从IBGP学到的路由条目,有可能没有*,表示没有被优化,如果BGP路由表中的路由没有被优化,此路由条目不会放入IP路由表,通常没有被优化的的原因为:
① 下一跳不可达
② BGP同步
(1)下一跳不可达:
默认从EBGP学习到的路由条目在传递给IBGP邻居的时候默认不会修改路由的下一跳地址,用于防止次优路径,但是会带来路由不可达的现象。
Ø 使用命令[Huawei-bgp]peer 192.168.1.1 next-hop-local修改源地址
Ø 在路由协议中引入之间接口
(2)BGP同步:
通过BGP学习到的路由,并且也可以通过IGP学习到,才能通告给对等体,称之为BGP同步,当开启BGP同步后,
如果足了同步的条件才能通告给邻居,华为undo synchronization默认不开启,并且无法开启
No.6
路由传递
BGP默认不使用附载均衡,所以当同一个目的地存在多条等价路径时,BGP协议也会选择出一条最优的路由放入IGP路由表,传递给邻居。
BGP对等体路由交互原则:
① IBGP路由,只发送给EBGP对等体
② EBGP路由,发布给所有EBGP和IBGP对等体
③ 只将最优路由发布给对等体
④ 只发送增量更新的BGP路由
路由反射器
Route Reflector,由于IBGP水平分割的原因,为保证IBGP对等体之间的连通性,需要在IBGP对等体之间建立全连接关系。假设在一个AS内部有n台设备,那么建立的IBGP连接数就为n(n-1)/2。当设备数目很多时,设备配置将十分复杂,而且配置后网络资源和CPU资源的消耗都很大。在IBGP对等体间使用路由反射器可以解决以上问题。
路由器反射器对路由进行反射,对于同一目标多条路由反射器只会选一条最优的(选路规则),并且默认不会修改任何的属性值,可以在Clint入路由进行修改。
注:如果在反射器上使用命令[Huawei-bgp]reflect change-path-attribute命令,此时可以修改反射器反射发送的路由属性参数(huawei交换机不支持)
No.1
反射器角色
路由反射器定义了以下几种角色:
① Route Reflector 路由反射器
② Client 客户机
③ Non-Client 非客户机
④ Originator 始发者
⑤ Cluster集群
(1)Route Reflector:
路由反射器RR,允许把从IBGP对等体学到的路由反射到其他IBGP对等体的BGP设备,类似OSPF网络中的DR。
(2)Client:
客户机,与RR形成反射邻居关系的IBGP设备。在AS内部客户机只需要与RR直连。
(3)Non-Client:
非客户机,既不是RR也不是客户机的IBGP设备。在AS内部非客户机与RR之间,以及所有的非客户机之间仍然必须建立全连接关系。
(4)Originator:
Originator-ID为始发者Router-ID,在AS内部始发路由的设备。Originator_ID属性用于防止集群内产生路由环路。
(5)Cluster:
集群,路由反射器及其客户机的集合,通常一个集群中只有一个RR和一群客户端。Cluster_list属性用于防止集群间产生路由环路。
No.3
反射器原则
(1)反射器:
① 反射器从IBGP非客户端接收到的路由,传递给所有的客户端和EBGP邻居。
② 反射器从客户端接收到的路由,传递给所有的客户端、非客户端和EBGP邻居
③ 反射器从EBGP邻居接收的路由,传递给所有的客户端、非客户端和EBGP邻居
(2)客户端:
① 客户端从反射器学来的路由,只传递给EBGP邻居
No.3
反射器规划
(1)同一集群内的客户机只与RR建立关系:
客户机需要通过RR便可以知道网络中的路由条目,所以同一个集群内所有的客户端只需要与RR建立邻居关系即可。
ClUSTER1配置:
R2:
[Huawei]bgp 200
[Huawei-bgp]router-id 2.2.2.2
[Huawei-bgp]reflector cluster-id 1----设置本端的簇为1
[Huawei-bgp]group g1----创建组g1
[Huawei-bgp]peer 4.4.4.4 group g1---将对端4.4.4.4加入组1
[Huawei-bgp]peer 5.5.5.5 group g1---将对端5.5.5.5加入组1
[Huawei-bgp]peer 6.6.6.6 group g1---将对端6.6.6.6加入组1
[Huawei-bgp]peer g1 reflect-client----将组g1设为此RR的客户端
CLENT:
在所有的客户端上,只需有建立余RR的邻居关系即可。
(2)集群间RR建立IBGP全互联关系:
每个集群只有一个RR,所以此时IBGP中的RR便可以建立全互联的IBGP邻居关系。
如果一个集群内存在多个RR做冗余:
Ø 由于Cluster id相同,所以另外一台RR不会接收,所以同RR之间不需要建立IBGP邻居
Ø 如果存在EBGP路由,此时RR之间需要建立IBGP邻居传递EBGP路由,因为没有破坏水平分割,所以RR不会增加这两种属性
No.4
反射器防环
增加了路由反射器破坏了IBGP的“水平分割”防环机制,所以为了防止路由在IBGP传递时防止出现环路,RR在传递路由时会增加两种属性值,并且这两种属性只在IBGP之间传递,当在EBGP之间传递时,会将这两种属性删除
注:只有在破坏“水平分割”的情况下才会增加这两种属性值,在RR收到EBGP邻居传递过来的路由时传递给Client时不会增加两种属性值,只有收到IBGP路由时反射给Client时会增加。
(1)Originator id:
起源属性,用于防止集群内出现环路
① 可选非过渡
② 用于集群内的防环
③ 由RR产生,携带了本地AS内该路由发送者的Router ID
原理:
① 路由第一次被RR反射给客户端时,RR会将传递给RR的路由器ID作为Orginator属性加到这条路由中,用来标识这条路由的起源路由器。
② 如果路由中已经存在Originator属性,反射器不会创建新的Originator。
③ 当其他BGP对等体收到这条路由时,将对收到的Originator和本地路由表中的BGP Router-ID进行比较如果两者相同,BGP对等体将会忽略掉这条路由,不做处理Originator属性可以传递给其它的Cluster,路由在AS内传递时该属性不会丢失。
注:如果AR2为AR3的RR,AR2再将1.1.1.1/32的路由传递给AR3时,由于没有破坏水平分割,所以不会增加着两种属性
(2)Cluster List:
Cluster List属性用于防止集群间产生路由环路
① 可选非过渡
② 用于集群间的防环
③ 由每个路由反射器产生,记录反射路由经过的集群
注:一个AS内可以有多个簇,每个簇可以存在多个RR,同簇中的RR相同,不同簇的ID不相同
原理:
① 当路由反射器在客户端之间或客户端与非客户端之间反射路由时,会将自己的
Cluster—ID增加到Cluster List中
② 路由反射器收到BGP路由后检查其中的Cluster List,如果发现自己的Cluster-ID位于Cluster-ID中,则表明出现了路由环路,会忽略掉该路由。
Ø 当客户机Client1从EBGP对等体接收到一条更新路由,它将通过IBGP向RR1和RR2通告这条路由。
Ø RR1和RR2在接收到该更新路由后,将本地Cluster ID添加到Cluster List前面,然后向其他的客户机(Client2、Client3)反射,同时相互反射。
Ø RR1和RR2在接收到该反射路由后,检查Cluster List,发现自己的Cluster ID已经包含在Cluster List中。于是RR1和RR2丢弃该更新路由,从而避免了路由环路。