第二部分
- HCIA回顾
- 一、广域网技术
- 1、HDLC
- 2、PPP
- 3、PAP
- 4、CHAP
- 5、GRE
- 6、运行路由协议
- 二、动态路由协议
- 1、OSPF
- 2、重发布
- 3、路由策略
- 3.1 抓流量
- 3.2 具体过程
- 4、BGP
- 三、BGP边界网关协议
- 1、BGP的数据包
- 2、BGP的状态机
- 3、BGP的工作过程
- 4、BGP的路由黑洞问题
- 5、BGP的防环问题
- 6、BGP的基本配置
- 6.1 对等体关系建立
- 1)EBGP直连邻居建立
- 2)IBGP对等体之间环回接口建邻
- 3)EBGP对等体之间的非直连建邻
- 4)路由发布
- 四、BGP的选路原则以及社会团属性
- 1、BGP的选路原则
- 2、BGP的路由过滤
- 3、BGP的社会团属性
HCIA回顾
1、七层参考模型及IP讲解
2、TCP三次握手讲解
3、TCP四次挥手讲解及抓包分析
4、DHCP协议讲解及抓包分析
5、静态综合实验讲解
7、静态路由讲解
8、RIP路由信息协议讲解
9、动态路由协议讲解
10、抓包进行分析RIP以及OSPF的包
11、动态路由OSPF配置综合实验讲解
12、Vlan虚拟局域网技术讲解
13、ACL访问控制列表讲解
14、NAT技术讲解
15、网络综合实验讲解
一、广域网技术
数据链路层面: 针对不同的物理链路定义不同的封装
- 局域网封装:
Ethernet 2 (TCP/IP) , IEEE802.3 (OSI)
- 广域网封装:
PPP HDLC FR ATM
1、HDLC
HDLC
: 高级数据链路控制协议,默认思科的串行链路封装为HDLC,分为工业标准的HDLC
和思科私有的HDLC
,两者不同通用,思科私有的HDLC中加入一些控制字符,识别上层协议,以及三层的传输方式。
定义接口封装为HDLC :
2、PPP
PPP
:点对点封装协议,华为串行链路默认封装为PPP , PPP链路需要建立一条端到端的会话链路。
PPP会话建立分为:
- 1.LCP
- 2.PPP认证
- 3.NCP
LCP:链路控制协议,通过发送LCP数据进行物理链路和封装的确认
PPP认证:增加PPP会话的安全性, PAP
CHAP
NCP:网络控制协议,通过发送NCP 针对上层协议进行封装, IPCP 协商,在NCP协商过程中,会自动将自己本端IP地址以路由方式发送给对方,当PPP会话建立之后,会产生到达对方接口IP地址的32位主机路由。
3、PAP
PAP
: 密码认证协议,是一种一次性的简单的明文认证
主认证方:
接口调用:
被认证方: 提供账号密码
4、CHAP
CHAP
:挑战握手认证协议, 通过三次握手的方式进行安全的MD5
认证 ,在认证过程中需要发送挑战信息(类似 HMAC 密钥化哈希)。
接口启用chap认证:
被认证方:
在广域网技术中, PPP HDLC FR ATM PPPOE PPPOA
5、GRE
GRE
: 通用路由封装,标准的三层隧道技术 ,是一种点对点的隧道技术
查看:
MGRE
: 多点通用路由封装协议
NHRP
:下一跳可达协议,所有的MGRE接口将自己的MGRE接口IP地址和对应隧道物理接口地址信息发送给NHS进行注册,NHS 上存在所有接入MGRE的接口映射关系。其他MGRE接口之间彼此通信时向NHS进行请求, 形成隧道的目标地址。
6、运行路由协议
hub端配置:
spoke端配置:
查看:
二、动态路由协议
1、OSPF
1、OSPF的选路原则
- 域内路由 — 1类,2类LSA
- 域间路由 — 3类LSA
- 域外路由 — 5类,7类LSA — 类型1,类型2
1.1 域内路由
如果都是通过1类和2类LSA学习到的域内路由信息,则将直接比较开销值;
开销值小的,优先选择,
如果开销值相同,则将负载均衡。
1.2 域间路由
如果都是通过3类LSA学习到的域间路由信息,则将直接比较开销值,
开销值小的,优先选择;
如果开销值相同,则将负载均衡。
1.3 域外路由
- 类型1:如果采用类型1,则所有域内设备到达域外网段的开销值都等于种子度量值加本地到达通告者的开销值。
- 类型2:OSPF默认采用类型2,如果开销值的类型为类型2,则所有域内设备到达域外网段的开销值都等于种子度量值。
2、5类LSA类型2比较:
优先比较种子度量值,种子度量值小的优先选择;
- 如果种子度量值相同,则比较沿途累加的开销值,沿途累加开销值小的优先选择;
- 如果两种开销值都相同,则将负载均衡。
类型1永远优于类型2。
3、5类LSA类型1比较:
直接比较总度量(种子度量值加沿途累加值),
- 总度量小的优先选择,
- 如果相同,则负载均衡。
域内和域间: 域内优于域间,不比较开销值
域间和域外: 域间优于域外,不比较开销值
4、OSPF的防环机制
- 域间防环
1,区域水平分割 — 路由信息从哪个区域学到的就不再发回哪个区域
2,星型拓扑的区域划分本身就是一种防环机制 - 域内防环
SPF
—最短路径优先算法
拓扑信息 — 有向图 — 最短路径树
2、重发布
1、作用:
在一个网络中,若运行多种路由协议或者相同协议的不同进程,协议间不能直接沟通计算,进程间也是独立转发和计算的,所以,需要使用重发布来实现路由的共享。
2、条件:
- 1,必须存在
ASBR
设备。 —所谓ASBR设备指的是同时运行两种协议或者两个进程的设备。 - 2,必须关注种子度量值 — 一个起始度量。A协议和B协议的度量标准计算逻辑不通,无法直接使用 所以,在将A协议导入到B协议时,ASBR将不携带A协议的度量值到B协议,而是在共享到B协议时,将由ASBR设备定义一个初始值。
3、规则:
- 1,将A协议发布到B协议时,在ASBR上的B协议进程中配置。
- 2,将A协议导入到B协议中,是将ASBR设备上通过A协议学习到的以及ASBR上宣告在A协议中的所有直连路由,全部共享到B协议中。
点
- 单点 — 两个协议或两个进程之间存在1个ASBR
- 双点 — 两个协议或两个进程之间存在2个ASBR
- 多点 — 两个协议或两个进程之间存在多个ASBR
向
- 单向 — 仅将A协议的路由共享到B协议中
- 双向 — A/B协议的路由均共享
4、RIP协议
A - B
:将一种动态协议发布到另一种动态协议中
[r2-rip-1]import-route ospf 1
结论:
RIP协议导入的初始种子度量值为0;
[r2-rip-1]default-cost 2
---- 全局修改,之后所有重发布到RIP进程中的路由其初始的种子度量值都将修改
[r2-ospf-1]default cost ?
— OSPF中全局修改种子度量值的方法
INTEGER<0-16777214> Cost value
[r2-rip-1]import-route ospf 1 cost 3
— 仅针对本次导入进行种子度量值的修改
[r2-rip-1]
5、静态 - B:将静态路由发布到动态路由中
[r2-rip-1]import-route static
结论:
- 1,导入静态路由时,无法导入缺省路由
- 2,RIP协议导入的初始种子度量值为0;
6、直连 - B:将直连路由发布到动态路由中
[r2-rip-1]import-route direct
- 1,RIP协议导入的初始种子度量值为0;
- 2,若ASBR设备进行A-B的重发布,同时进行了直连到B的重发布,两种重发布又包含相同的路由信息时,则优先选择直连重发布的路由。
7、双点重发布
默认RIP和OSPF协议,若进行多点双向重发布,由于两者的优先级不同,故第一台ASBR设备重发布动作结束后,将影响其他ASBR设备的路由表;使得路由可能被回传回源协议,发生路由回馈 — A协议的路由重发布到B协议中,之后又被B协议重发布回A协议。
华为设备为了消除路由回馈现象,将OSPF协议域外导入的信息的优先级默认设置为150,这个值大于所有华为体系内定义的IGP协议的默认优先级,所以,将不会导致路由回馈的产生。
由于重发布技术的种子度量值问题,将必然导致选路不佳,只能依赖路由策略来人为干涉选路。
- 控制层面流量 — 路由协议传递路由信息产生的流量
- 数据层面流量 — 设备访问目标地址时,产生的数据流量
3、路由策略
路由策略 — 在控制层流量流动的过程中,截取流量,之后修改流量再转发或者不转发,最终达到影响路由器路由表生成,起到干涉选路的效果。
3.1 抓流量
-
1、
ACL
— 因为ACL列表本身主要抓取数据层面流量, 其通配符设计导致数据流量可以精确匹配, 但是,在抓取控制层面流量时,无法准确的匹配掩码信息,导致无法精确抓取控制层流量。 -
2、前缀列表 —
ip-prefix
[r1]ip ip-prefix aa permit 192.168.1.0 24
#前缀列表主要靠自定义名称来进行区分
[r1]display ip ip-prefix aa
#查看名称为aa列表的规则
#前缀列表中的规则默认是以10为步调自动添加序列号的,便于插入规则。
[r1]ip ip-prefix aa index 15 permit 192.168.2.0 24
#添加序号插入规则
#前缀列表的匹配规则
#从上而下,逐一匹配,一旦匹配上则将按照该规则执行,不再向下匹配。末尾隐含拒绝所有的规则。
[r1]undo ip ip-prefix aa index 12
#删除规则的方法
[r1]ip ip-prefix aa permit 192.168.1.0 24 less-equal 28
#抓取掩码长度为24到28的网段信息
[r1]ip ip-prefix aa permit 192.168.1.0 24 greater-equal 28
#如果前后矛盾,则将按照后面的执行,而前面的将变成前24位固定
[r1]ip ip-prefix aa permit 192.168.1.0 24 greater-equal 28 less-equal 30
#匹配掩码长度为28到30的网段,前24位固定
[r1]ip ip-prefix aa permit 192.168.1.0 24 greater-equal 28 less-equal 28
#匹配掩码长度为28的网段,前24位固定
[r1]ip ip-prefix aa permit 0.0.0.0 0 greater-equal 32 less-equal 32
#匹配所有主机路由
[r1]ip ip-prefix aa permit 0.0.0.0 0 less-equal 32
#允许所有
[r1]ip ip-prefix aa permit 0.0.0.0 0
#抓取缺省路由
3.2 具体过程
1、RIP
的merticin和merticout
— 偏移列表
只能针对距离矢量型协议进行控制
注意: 在RIP中对开销值进行修改时只能将开销值改大,而不能改小。
- 1、抓取流量
[r4]acl 2000
[r4-acl-basic-2000]
[r4-acl-basic-2000]rule permit source 23.0.0.0 0
#使用ACL列表抓取
[r1]ip ip-prefix aa permit 23.0.0.0 24
#用前缀列表抓取
- 2、在接口上调用偏移列表
[r4-GigabitEthernet0/0/1]rip metricout 2000 2
#使用的出方向的列表,后面的设定值修改的是RIP数据包中携带开销值
#计算时默认的增加量。(默认增加量为1,该命令将增加量修改为2。)
[r1-GigabitEthernet0/0/1]rip metricin ip-prefix aa 2
#使用的入方向的列表,其效果是在本地路由表中的开销值的基础上
#再增加后面的设定值
2、过滤列表 — filter-policy
注意: 过滤列表也是分方向的,而且,可以应用在OSPF和RIP当中
- 1、抓流量
[r2]acl 2000
[r2-acl-basic-2000]
[r2-acl-basic-2000]rule deny s 34.0.0.0 0
#注意,过滤列表本身没有过滤能力,所以,需要在抓取流量时使用拒绝动作。
[r2-acl-basic-2000]rule permit source any
#注意,在抓流量时,末尾一定要放通剩余流量,
#否则将会把所有流量全部过滤掉。
[r1]ip ip-prefix cc deny 34.0.0.0 24
#使用前缀列表抓取流量
[r1]ip ip-prefix cc permit 0.0.0.0 0 less-equal 32
#后面添加放通所有的规则
- 2、在进程中调用过滤策略
[r2-rip-1]filter-policy 2000 export GigabitEthernet 0/0/0
#出方向的调用
#出方向影响他人
[r1-rip-1]filter-policy ip-prefix cc import GigabitEthernet 0/0/0
#入方向调用
#入方向影响自身,注意,需要选择接口,
#否则所有接口学到的路由信息都将过滤
注意: 过滤列表可以在OSPF中使用,但是,因为OSPF中传递的是拓扑信息,所以,无法进行出方向的过滤,只能进行入方向的调用,并且,调用的效果是仅过滤抓取的路由信息不加表。
- 3,
Route-policy
— 路由策略 -
- 1,抓流量
[r2]acl 2000
[r2-acl-basic-2000]rule permit source 1.1.1.0 0
[r2]acl 2001
[r2-acl-basic-2001]rule permit source 2.2.2.0 0
[r2]ip ip-prefix aa permit 3.3.3.0 24
[r2]ip ip-prefix bb permit 4.4.4.0 24
-
- 2,做路由策略
[r2]route-policy aa deny node 10
Info: New Sequence of this List.
[r2-route-policy]if-match acl 2000
[r2]route-policy aa permit node 20
[r2-route-policy]if-match acl 2001
[r2-route-policy]apply cost-type type-1
[r2]route-policy aa permit node 30
Info: New Sequence of this List.
[r2-route-policy]if-match ip-prefix aa
[r2-route-policy]apply cost 2
[r2]route-policy aa permit node 40
Info: New Sequence of this List.
[r2-route-policy]if-match ip-prefix bb
[r2-route-policy]apply cost 10
[r2-route-policy]apply tag ?
INTEGER<0-4294967295> Tag value
[r2-route-policy]apply tag 666
[r2]route-policy aa permit node 50
Info: New Sequence of this List.
[r2-route-policy
注意:
- 如果没有
if-match
,则代表匹配所有; - 如果没有
APPLY
,则只执行大动作
路由策略的匹配规则 — 从上而下,逐一匹配,一旦匹配上则将按照该规则执行,不再向下匹配。末尾隐含拒绝所有的规则。
- 3,在重发布中调用
[r2-ospf-1]import-route rip route-policy aa
3、Route-policy的配置指南
- 1,即便要拒绝一个流量,在抓取流量的时候,也必须使用允许,之后由路由策略来拒绝。
- 2,在一条规则中,
-
- 若没有进行流量匹配,则代表匹配所有;
-
- 若没有apply,则仅对匹配到的流量执行大动作,
- 因此,大动作为允许的空表为允许所有。
4、BGP
BGP — 边界网关协议
AS
— 自治系统 — 由单一机构或者组织所管理的一些列IP网络及其设备所构成的集合原因:
- 1,范围大,需要划分;
- 2,自治管理
AS号
— 由16位二进制构成 — 0 - 65535,其中0和65535保留,1 - 65534;其中64512 - 65534被称为私有AS号 — 目前也存在扩展版的AS号 — 32位二进制构成
目前市场上针对IPV4环境使用的BGP协议版本为BGPV4,目前市场上也已经存在BGPV4+(MP - BGP — 可以支持多种地址族)协议。
AS之间不使用重发布获取路由信息的原因:
- 1,选路不佳;
- 2,ASBR设备的归属问题
BGP共享AS之间的路由信息的方式应该是直接传递路由信息而不是共享拓扑信息,因为拓扑信息一方面更新量更大,其次将暴露本AS的拓扑情况,所以,传递路由信息更加合理。
BGP被称为 — 无类别的路径矢量型协议
无类别 — 传递的路由信息携带子网掩码
路径矢量 | 距离矢量 |
---|---|
一个AS为一跳 | 一个路由器为一跳 |
不是算法概念,仅将IGP协议算好的路由信息传递出去,仅完成搬运工作。 | 是一个算法的概念,用来计算到达未知网段的路由信息 |
IGP
— 选路佳,收敛快,占用资源小
EGP协议的关注点:
- 1,可控性 — AS之间需要传递大量的路由信息,所谓可控,就是可以方便的干涉选路,更容易做策略。
BGP为了保证可控性,直接舍弃了开销值。取而代之的是BGP定义了很多路径属性。
注意: BGP协议存在触发更新,但是,不存在周期更新, 因为BGP需要更新的路由信息量太大,周期更新太浪费资源。
- 2,可靠性 — BGP协议为了保证可靠性,传输层直接选择使用TCP协议,使用179号端口。
在IGP当中,没有使用TCP协议,主要是因为TCP协议传输效率较低,占用资源较大,只能实现单播,不能自动发线邻居关系。而在BGP中,为了保证可靠性,选择使用TCP。
在BGP中,是可以实现非直连建邻,BGP的非直连建邻是承载在IGP之上的。
- AS内部 —
IBGP对等体关系
— 如果建立对等体的路由器位于相同的AS中,则建立的是IBGP对等体关系 - AS外部 —
EBGP对等体关系
— 如果建立对等体的路由器位于不同的AS中,则建立的是EBGP对等体关系
注意: 为了保证EBGP对等体关系之间使用直连建邻,我们将他们之间传递的数据报中TTL值设置为1,若EBGP对等体之间需要非直连建邻,则需要修改TTL值。IBGP对等体之间,一般使用非直连建邻,所以TTL值设置为255。
- 3,
AS-BY-AS
— 将一个AS
看作是一个单位。 — bgp不支持负载均衡,如果到达同一个目标网络存在多条路由信息时,则将只选择其中一条。
三、BGP边界网关协议
1、BGP的数据包
在BGP中,因为使用TCP协议,需要建立点到点的连接,所以,无法通过组播或者广播来自动发现邻居,只能手工指定邻居关系。
- Open报文 — 主要完成BGP对等体关系的建立,协商参数。
- AS号 — 在创建邻居关系时,需要指定对等体设备所在的AS号,之后,将该参数通过OPEN报文携带,对端收到后,将该参数和本地所在AS号进行比对,一致,则可以正常建立对等体关系,不一致则对等体关系建立失败。
- 认证 — BGP也可以做认证,则认证口令将成为邻居关系建立的核查条件。
Router ID
— 用于区分和标定不同的路由设备。 OPEN报文中将携带本地的RID,之后对等体将核查该参数,需要确保RID不冲突,则需要保证和本地的RID不一致,一致则无法建立邻居关系。
BGP中的RID其生成方法和OSPF中的相同,可以手工配置,也可以自动生成。
(自动生成规则 — 先在本地环回接口的IP地址中取最大的最为RID,如果本地没有环回接口,则在所有物理接口的IP地址中取最大的作为RID。)
在指定邻居关系时,指定的IP地址作为后续的更新源IP,如果对等体发送的数据报中的源IP地址和给定的地址不同,则也将影响邻居关系的建立。
Holdtime
— 保活时间 — 周期保活的失效判定时间 — 默认180S — 如果在保活时间内,没有收到Keeplive
报文或者Update
报文,则判定对方失效,将中断BGP
会话连接。 — 双方在发送OPEN
报文中都需要携带保活时间,这个时间可以不同,但执行时必须相同,所以,如果双方的保活时间不同,则按照时间较短的执行。
包括设备是否支持路由刷新功能,也需要在OPEN报文中进行协商。
Keeplive报文
— 仅完成周期保活即可,周期发送时间为保活时间的1/3。默认为60S — 除了保活之外,keeplive报文在收到对方发送的open报文时,将临时充当确认包的作用。 — BGP协议所有数据包传输的可靠性由TCP协议来保障,而此时的确认,指的是确认对方OPEN报文中的参数,如果认可对方所携带的参数,则将发送keeplive报文进行确认。Update报文
— 真正携带路由信息的数据报。主要携带目标网络号及掩码信息和路径属性 — 在UPDATE报文中,存在一个撤销路由条目的参数,可以将失效的路由信息放置其中,则对端将会删除失效的路由信息,而不需要带毒传输。Notification报文
— BGP协议设计的一个告警机制 — 在BGP协议运行的全过程中,如果发生错误导致对等体关系断开,则设备将在断开之前,发送该报文来报告错误原因。Route-refresh报文
— 用于改变路由策略后请求对等体重新发送路由信息。改报文使用存在前置要求,即对等体双方路由设备必须都支持路由刷新功能。
2、BGP的状态机
BGP的状态机仅描述的是BGP对等体建立过程中的状态变化,而不包含数据收发过程。因为BGP中建立邻居关系和收发数据可以分开完成。
IDLE
— 空闲状态 — 所有设备启动BGP进城后将首先进入空闲状态。
当手工指定邻居关系后,将会进入到一个检查环节,需要检查手工指定的IP地址在本地路由表中是否可达,只有可达,才可以正常建立TCP的会话,如果不可达,则邻居关系建立失败,停留在IDLE状态。
如果检查成功,则将进入到Connect状态 — 连接状态 — 建立TCP会话连接的状态。
(注意,对等体关系指定是双向的,双方都将发起TCP会话连接请求,最终将会建立两个双向的TCP会话通道,只需要保留一个即可。所以,在之后发送的open报文中,将比较其中的RID参数,RID大的设备发起的TCP会话连接将被保留,RID小的发起的连接将被关闭。)
如果TCP会话连接失败,则将进入到Active
状态 — 尝试重新建立TCP会连接(多次失败后,将超时,回退到空闲状态,如果成功,则进入到opensent状态。)
如果TCP会话连接成功,则将直接进入到opensent状态 — 发送open报文来协商参数,建立对等体关系。 同时,也将收到对方发来的open报文,则将查看其中的参数,如果参数没问题,则将发送keeplive报文进行确认。则将进入到openconfirm状态。 — 等待对方发送keeplive报文,确认本地参数。
如果,收到对方发送的keeplive报文, 则代表双方open报文中的参数协商完成,则邻居关系建立成功,将进入到最终状态 — Established状态
。
3、BGP的工作过程
- 1,基于
IGP
实现IP可达 - 2,指定邻居关系,邻居之间单播传输,通过三次握手,建立TCP会话通道。BGP之后所有的通信都将基于TCP会话通道来传输。包括提供传输的可靠性
- 3,使用
OPEN
报文和Keeplive
报文进行邻居关系的建立。OPEN报文用来携带建邻使用的参数,keeplive报文用于参数的确认。最终完成对等体关系的建立。生成邻居表。 - 4,使用
update
报文来共享路由信息。信息中将携带目标网络号,掩码及路径属性;之后,将发送以及收集到的路由信息记录在一张表中 — BGP表。 - 5,之后,将BGP表中最优的路由信息(通过路由属性选择的结果)加载到路由表中。
- 6,收敛完成后,将使用
keeplive
报文进行周期保活,默认的保活时间为180S
,发送周期为60S
。 - 7,如果出现错误,将使用notification报文进行告警。
- 8,若出现结构突变,则将使用update报进行触发更新。
4、BGP的路由黑洞问题
由于BGP协议可以非直连建邻,所以导致BGP协议可能出现跨越未运行BGP协议的设备,导致BGP路由传递后,控制层面显示可达,但是,数据层面,流量流经未运行BGP协议的设备时,无法通过,形成路由黑洞。
解决方案:
- 1,让未运行BGP协议的设备运行BGP协议 — 问题,所有设备都需要运行BGP则都将承载大量的路由信息,造成设备成本增加。
- 2,在IGP协议中,重发布BGP协议的路由信息
- 3,MPLS
为了避免路由黑洞的情况,BGP提出了同步机制 — 即当一台路由器从自己的IBGP对等体处学到一条BGP路由时,他将不能将该路由通告给自己的EBGP对等体关系。除非,他从自己IGP协议中也学习到这条路由信息。 — 华为设备默认关闭同步机制。
5、BGP的防环问题
BGP使用的防环手段 — 水平分割机制
- EBGP的水平分割 — 针对EBGP对等体之间可能出现的环路问题所提供的解决方案
AS_PATH
— 专门记录AS路径信息的一个属性。
所谓EBGP的水平分割,主要用于防止EBGP环境下的环路问题 — BGP协议在路由条目中将经过的AS号进行记录,生成一个属性 —AS_PATH
(记载所有经过的AS的AS号),之后,在接收到的路由条目中的AS_PATH属性中,如果存在本地的AS号,则将拒绝学习该路由信息,防止路由回传,形成环路。 —AS_PATH
属性也可以用于选路,其可以反应经过AS的数量。
IBGP
的水平分割 — 针对IBGP对等体之间可能出现的环路问题所提供的解决方案
注意: 因为BGP
的AS-BY-AS
的特性,要求其将一个AS看作是一个整体,所以,在默认情况下,AS内部传递的路由信息的路径属性是不会发生变化的。
所以,IBGP水平分割的做法是 — 要求当路由器从一个IBGP对等体出学习到某条BGP路由时,他将不再把这条路由信息通告给其他的IBGP对等体。
因为IBGP
水平分割的限制,导致在IBGP对等体内部,BGP的路由信息只能传递一次,这样将会造成通信障碍。
==可以通过建立全联的IBGP对等体关系来解决通信障碍。 ==- 1,资源占用将变大;
- 2,将降低网络的可拓展性。
1,路由反射器;
2,联邦 — 专门用来解决IBGP水平分割机制造成的通信障碍。
6、BGP的基本配置
6.1 对等体关系建立
1)EBGP直连邻居建立
- 1,启动BGP进程
[R1]bgp 1#AS号
#因为BGP设备只能存在在一个AS中,
#所以,BGP一台设备上只能启动一个进程
[R1-bgp]
- 2,配置
RID
[R1-bgp]router-id 1.1.1.1
- 3,手动指定邻居关系
[R1-bgp]peer 12.0.0.2 as-number 2
#注意,手工指定一定是双向的
[R1]display bgp peer
#查看BGP邻居表
2)IBGP对等体之间环回接口建邻
由于IBGP对等体之间处于同一个AS中,正常一个AS内部将存在大量的备份路径,若使用物理接口建立邻居关系,将浪费备份资源,所以建议使用环回接口来建立IBGP对等体关系。
[r2-bgp]peer 3.3.3.3 as-number 2
[r2-bgp]peer 3.3.3.3 connect-interface
LoopBack 0
— 给3.3.3.3发消息使用环回接口的IP地址。 — 使用环回接口建立对等体关系一定需要执行这个命令,否则邻居关系将建立失败。
3)EBGP对等体之间的非直连建邻
前提条件: 建邻的IP之间必须可达,可以使用静态路由来保证。
[r4-bgp]peer 5.5.5.5 ebgp-max-hop 2
#修改EBGP对等体之间发送数据报中的TTL值
[r5-bgp]peer 4.4.4.4 ebgp-max-hop
#直接将ttl值修改为255
4)路由发布
对于BGP而言,只要是路由表中存在的路由信息,都可以发布
1)通过network命令发布路由
[R1-bgp]network 1.1.1.0 24
#后面跟目标网络号及掩码信息
[R1]display bgp routing-table
#查看BGP表
NextHop
- 谁发送的路由信息,则下一跳就写谁;
- 如果是自己始发的,则下一跳写0.0.0.0
状态码
*--
代表可用。 — 所有设备收到路由条目后,首先会根据下一跳属性中的参数来查询本地路由表,查看该地址的可达性。如果,本地路由表中可达,则代表该路由信息可用;如果不可达,则该路由信息将不可用。 ---- 如果该路由条目不可用,则将不会参与路由信息的优选。
>
–代表优选。 ---- 当收到多条到达相同网段的路由信息时,并且都可用,则将依据属性在其中选择最优的进行加表及传递。
1.1.1.0/24 EBGP 255 0 D 12.0.0.1 GigabitEthernet0/0/0
— 下一跳字段将直接使用下一跳属性中的地址,我们将BGP的路由信息的优先级设置为255。
i--
状态码为I,代表该路由信息是通过IBGP对等体学到的。
[r2-bgp]peer 3.3.3.3 next-hop-local --- 将下一跳属性修改为自身
2)重发布
[r2-bgp]import-route ospf 1
Ogn
— 起源码
一共存在三种
- — I — 代表这条路由信息起源于AS内部使用network通告出来的。
- — e — 代表来自于EGP协议。
- — ? — 除了以上两种方式,其他方式获取的路由信息都是?
3)通过汇总发布
在BGP中我们将这样的操作成为路由聚合
四、BGP的选路原则以及社会团属性
1、BGP的选路原则
BGP选路的前提条件 — BGP首先需要进行可用的校验,只有可用的路由才会参与BGP的选举。
1,优选PV属性值最大的路由
PV
属性是在本设备上选路优先级最高的一个属性。属性值越大越优。 ---- 这个属性不能传播。
PV属性是华为设备的私有属性。
[r4-bgp]peer 3.3.3.3 preferred-value ? --- 修改R3发来的路由的PV值
INTEGER<0-65535> Preference value
[r4-bgp]peer 3.3.3.3 preferred-value 100
AS-path 1, origin igp, MED 0, localpref 100, pref-val 0, valid, internal, pre 2
55, IGP cost 1, not preferred for PreVal
负载分担 — 即让不同的流量走不同的线路,分担单一线路的压力。
使用路由策略干涉选路:
- 1,抓取流量
[r4]ip ip-prefix PV permit 10.0.0.0 24
- 2,使用路由策略修改PV值
[r4]route-policy PV permit node 10
Info: New Sequence of this List.
[r4-route-policy]if-match ip-prefix PV
[r4-route-policy]apply preferred-value 100
[r4-route-policy]q
[r4]route-policy PV permit node 20
#创建空表放通剩余所有流量
Info: New Sequence of this List.
[r4-route-policy]q
[r4]
- 3,在BGP进程中调用策略
[r4-bgp]peer 3.3.3.3 route-policy PV import #注意,因为这个属性不能传递,所以,只能使用入方向。
2,优选LP属性值最大的路由。
LP
— 本地优先级 — 默认值100,越大越优 — 这个属性是在IBGP内部选路时最常用的属性。 — 这个属性可以在IBGP对等体之间进行传递,但是,不能传递给自己的EBGP对等体。
[r3-bgp]default local-preference 200
#3发布路由条目所携带的默认LP值改为200
AS-path 1, origin igp, MED 0, localpref 100, pref-val 0, valid, internal, pre 2
55, IGP cost 1, not preferred for Local_Pref
- 1,抓取流量
[r3]ip ip-prefix LP permit 10.0.0.0 24
- 2,做路由策略
[r3]route-policy LP permit node 10
Info: New Sequence of this List.
[r3-route-policy]if-match ip-prefix LP
[r3-route-policy]apply local-preference ?
INTEGER<0-4294967295> Specify a local preference value
[r3-route-policy]apply local-preference 300
[r3-route-policy]q
[r3]route-policy LP permit node 20
Info: New Sequence of this List.
[r3-route-policy]q
- 3,在BGP中调用
[r3-bgp]peer 4.4.4.4 route-policy LP export
3,手工聚合 > 自动聚合 > network > import > 从对等体处学来的
AS-path Nil, origin igp, MED 0, localpref 100, pref-val 0, valid, internal, pre
255, IGP cost 1, not preferred for route type
4,优选AS_PATH属性最短的路由
AS_PATH属性在进行选路时,最基本的原则是记录的数量越少越优,但有两点需要额外
注意:
- 1,在聚合路由时,**如果激活AS_SET关键字,将不同的AS明细路由的AS号使用大括号括起来,**在进行防环是,所有AS都不能回传,当进行选路时,不管大括号中存在多少个AS,都将按照1个AS来看。
- 2,联邦时,联邦内部将使用
AS_PATH
属性防环,我们用小括号括起来。这种情况下,我们计算AS_PATH长度时,将不考虑小括号里的内容。
注意: AS_PATH
属性虽然可以在所有的BGP对等体之间进行传递,但是,只有在EBGP对等体之间传递时才会修改,所以,在进行策略干涉选路时,也需要在EBGP对等体之间来完成。
在R1上进行出方向的修改:
- 1,抓取流量
[r1]ip ip-prefix AS permit 10.0.0.0 24
- 2,做路由策略
[r1]route-policy AS permit node 10
Info: New Sequence of this List.
[r1-route-policy]if-match ip-prefix AS
[r1-route-policy]apply as-path 11 22 33 ?
INTEGER<1-4294967295> AS number in asplain format (number<1-4294967295>)
STRING<3-11>
AS number in asdot format
(number<1-65535>.number<0-65535>)
additive
Append to original As Number
#只在原先AS_PATH属性基础上
#添加额外的AS号
#因为AS_PATH属性主要用于防环,所以,建议使用添加的方法。
overwrite Overwrite original As Number
#覆盖原先的AS_PATH
[r1-route-policy]apply as-path 11 22 33 additive
[r1-route-policy]q
[r1]route-policy AS permit node 20
Info: New Sequence of this List.
[r2-route-policy]q
- 3,在BGP进程中调用
[r1-bgp]peer 12.0.0.2 route-policy AS export
Total Number of Routes: 2
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 1.1.1.0/24 12.0.0.1 0 0 1i
*> 10.0.0.0/24 12.0.0.1 0 0 1 11 22 33
i
在R2的入方向修改
Total Number of Routes: 2
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 1.1.1.0/24 12.0.0.1 0 0 1i
*> 10.0.0.0/24 12.0.0.1 0 0 11 22 33 1
i
AS-path 11 22 33 1, origin igp, MED 0, localpref 100, pref-val 0, valid, intern
al, pre 255, IGP cost 1, not preferred for AS-Path
[r2-route-policy]apply as-path 1 1 1 additive
注意: 因为AS_PATH
属性在进行选路时,
只关注长短,不关注内容,所以,建议增加使用过的AS号,这样不会影响防环效果。
5,OGN属性的优选规则
Ogn — 起源码
一共存在三种
- — I — 代表这条路由信息起源于AS内部使用network通告出来的。
- — e — 代表来自于EGP协议。
- — ? — 除了以上两种方式,其他方式获取的路由信息都是?
AS-path 1, origin incomplete, MED 0, pref-val 0, valid, external, pre 255, notpreferred for Origin
在R1的出方向修改
- 1,抓取流量
[r1]ip ip-prefix OGN permit 10.0.0.0 24
- 2,做路由策略
[r1]route-policy OGN permit node 19
Info: New Sequence of this List.
[r1-route-policy]if-match ip-prefix OGN
[r1-route-policy]apply origin ?
egp Remote EGP
igp Local IGP
incomplete Unknown heritage
[r1-route-policy]apply origin incomplete
[r1-route-policy]q
[r1]route-policy OGN permit node 20
Info: New Sequence of this List.
[r1-route-policy]q
- 3,在BGP中进行调用
[r1-bgp]peer 12.0.0.2 route-policy OGN export
6,优选MED值最小的路由
MED
— 多出口鉴别属性
MED值的初始默认值并不是0,而是继承了全局路由表中该路由信息的开销值。
因为MED值反应的是AS边界设备到达内部网段的开销情况,所以,如果存在多个出口,则可以通过这个属性判断走那个出口到达目标网段开销更小。
BGP
协议在进行宣告时,是宣告本地路由表中的任意路由,不关注这些路由条目的产生方式,默认将携带这些路由的开销值,到BGP的路由条目中的MED属性中。 若将本地宣告的BGP路由传递给本地的EBGP对等体时,将携带这些MED值,便于其他AS选择出口进入本地AS;如果通过IBGP对等体学来的路由信息中包含MED属性,则将该路由信息再通告给其他的EBGP对等体时,将不会携带MED属性,因为这些度量并不是本地产生的
总结: 若存在多对EBGP对等体关系时,建议所有设备都将AS内部的路由进行通告,避免选路不佳的情况产生。
注意: MED
属性是为了方便判断一个AS的多个出口到达目标网段的开销,所以,在接受
多条路由时,将查看AS_PATH最左边的AS号,相同,则比较MED属性,不同则不比较,将直接比较第七条规则。
在R2上做出方向的策略影响R1的选路
- 1,抓取流量
[r2]ip ip-prefix MED permit 99.0.0.0 24
- 2,做路由策略
[r2]route-policy MED permit node 10
Info: New Sequence of this List.
[r2-route-policy]if-match ip-prefix MED
[r2-route-policy]apply cost 10
[r2-route-policy]q
[[r2]route-policy MED permit node 20
Info: New Sequence of this List.
[r2-route-policy]q
- 3,在BGP进程中调用
[r2-bgp]peer 12.0.0.1 route-policy MED export
7,优先选择来自EBGP对等体的路由。
AS-path 3, origin igp, MED 0, localpref 100, pref-val 0, valid, internal, pre 2
55, IGP cost 1, not preferred for peer type
8,优选到NEXT-HOP的IGP度量最小的路由
这条规则比较的就是到达下一跳地址本地路由表中的开销值。
AS-path 1, origin igp, MED 0, localpref 100, pref-val 0, valid, internal, pre 2
55, IGP cost 11, not preferred for IGP cost
2、BGP的路由过滤
1,通过路由策略进行过滤
- 1,抓取流量
[r1]ip ip-prefix aa permit 192.168.1.0 24
- 2,配置路由策略
[r1]route-policy aa deny node 10
Info: New Sequence of this List.
[r1-route-policy]if-match ip-prefix aa
[r1-route-policy]q
[r1]route-policy aa permit node 20
Info: New Sequence of this List.
[r1-route-policy]q
- 3,在BGP进程调用
[r1-bgp]peer 12.0.0.2 route-policy aa export
2,通过前缀列表来过滤路由
- 1,抓取流量并过滤
[r2]ip ip-prefix aa deny 192.168.2.0 24
[r2]ip ip-prefix aa permit 0.0.0.0 0 less-equal 32 #注意,需要放通所有剩余流量
- 2,在BGP进程中进行调用
[r2-bgp]peer 12.0.0.1 ip-prefix aa import
- 3,通过过滤策略来进行过滤
-
- 1,抓流量
[r3]ip ip-prefix aa deny 192.168.2.0 24
[r3]ip ip-prefix aa permit 0.0.0.0 0 less-equal 32
-
- 2,在BGP进程中调用
[r3-bgp]filter-policy ip-prefix aa import
#直接在进程中调用过滤策略
#也可以在peer中调用,
#注意,在peer中调用时,只能使用ACL列表抓取流量。
[r3-acl-basic-2000]rule deny source 192.168.3.0 0
[r3-acl-basic-2000]rule permit source any
[r3-bgp]peer 13.0.0.1 filter-policy 2000 import
3、BGP的社会团属性
所谓社团属性,相当于是一个路由标记,我们可以给需要通告的路由信息打上不同的社团属性,之后,我们可以根据不同的社团属性抓取流量,执行不同的策略。 — 社团属性本质由32位二进制构成— 1,直接使用十进制表示;2,AS:NN — AS号
:自定义值(各占16位) — 一条路由信息,可以存在多个社团属性。
BGP中也定义了几个公认的BGP社团属性。
- 1,
0X00000000
— 全0的社团属性 — “internet” — 相当于是最大的一个集合,所有BGP路由默认都属于该集合中。 - 2,
0XFFFFFF02
— “no - Advertise” — 一旦一条路由信息打上该社团属性,则他将不会通告给自己的BGP对等体。 - 3,
0XFFFFFF01
— “No - Export” — 一旦一条路由信息打上该社团属性,则他将不会通告给自己的EBGP对等体关系。(但是可以通告给自己的联邦EBGP对等体) - 4,
0XFFFFFF03
— “No - Export - subconfed” — 一旦一条路由信息打上该社团属性,则他将不会通告给自己的EBGP对等体关系。(则也不可以通告给自己的联邦EBGP对等体)
配置路由策略
[r1]route-policy com permit node 10
Info: New Sequence of this List.
[r1-route-policy]apply community ?
INTEGER<0-4294967295> Specify community number
STRING<3-11> Specify aa<0-65535>:nn<0-65535>
internet Internet(well-known community attributes)
no-advertise Do not advertise to any peer (well-known community attributes)
no-export Do not export to external peers(well-known community attributes)
no-export-subconfed Do not send outside a sub-confederation(well-known community attributes)
none No community attribute
[r1-route-policy]apply community no-advertise
[r1-route-policy]q
[r1-bgp]peer 12.0.0.2 route-policy com export
注意: 华为体系中,默认关闭了社团属性的传递,需要手工配置打开
[r1-bgp]peer 12.0.0.2 advertise-community
Community:no-advertise
Community:<1:11>
- 1,配置策略
[r1]route-policy com1 permit node 10
Info: New Sequence of this List.
[r1-route-policy]apply community 1:11
[r1]route-policy com2 permit node 10
Info: New Sequence of this List.
[r1-route-policy]apply community 1:22
2,在发布路由时调用
[r1-bgp]network 172.16.1.0 24 route-policy com1
[r1-bgp]network 172.16.2.0 24 route-policy com1
[r1-bgp]network 172.16.3.0 24 route-policy com2
[r1-bgp]network 172.16.4.0 24 route-policy com2
社团属性过滤器 — community - filter
- 1,通过过滤器抓流量
[r2]ip community-filter 1 permit 1:11
[r2]ip community-filter 2 permit 1:22
- 2,配置路由策略
[r2]route-policy aa deny node 10
Info: New Sequence of this List.
[[r2-route-policy]if-match community-filter 1
[r2-route-policy]q
[r2]route-policy aa permit node 20
Info: New Sequence of this List.
[r2-route-policy]if-match community-filter 2
[r2-route-policy]apply community no-export additive
#添加多个社团属性需要后面增加additive命令
[r2-route-policy]q
[[r2]route-policy aa permit node 30
Info: New Sequence of this List.
[r2-route-policy]q
- 3,调用
[r2-bgp]peer 12.0.0.1 route-policy aa import
[r2-bgp]