路由策略
控制层流量 – 路由协议发送路由信息是产生的流量。 数据层流量 – 设备访问目标地址时产生的流量。
路由策略: 在控制层流量转发的过程中, 截取流量, 之后, 修改流量 中的参数或直接不转发, 最终影响路由器路由表的生成, 以达到干涉 选路的目的。
一、抓取流量(控制层流量)
1、 通过ACL列表进行抓取 — 本身用于限制数据层流量的进 出, 也可以用于抓取控制层流量, 但由于通配符的设计, 导致其 无法精确匹配控制层流量。
2、 通过前缀列表进行抓取 — IP-Prefix
二、 路由策略
1、 RIP的merticin和merticout — 偏移列表 — 只能应用在 距离矢量型协议上, 链路状态型协议是无法使用的。
[r1]ip ip-prefix aa permit 23.0.0.0 24 — 通过前缀列表 抓取目标网段的流量
[r1-GigabitEthernet0/0/1]rip metricin ip-prefix aa
10 — 在路由器接口上做入方向的偏移列表
2、 filter-policy — 过滤列表/过滤策略
[r1]ip ip-prefix bb deny 34.0.0.0 24 ---- 因为过滤列表 本身并不具备过滤功能, 所以, 在进行流量抓取时, 需要使用抓 取流量列表的过滤功能。
过滤列表 — 可以在距离矢量型协议上使用, 也可以在链路状 态型协议中使用。但是注意, 在链路状态型协议中使用时, 在一 个区域内, 因为他没有办法过滤拓扑信息, 所以, 只能在入方向 进行调用, 用来影响自身, 并且只是在路由加表时不向路由表中加表, 并不是将拓扑信息过滤掉。
3,、Route-policy 路由策略
[r2-route-policy]apply cost-type type-1 ---- 单条规则中如果存在多个小动作或者匹配规则, 则他们之间将按 照“与”关系来执行。而规则之间则按照匹配原则, 满足 “或”关系即可。
4,、在重发布中进行调用
(1) 即便要拒绝一个流量, 在抓取时也使用允许, 之后在路由策 略中进行拒绝。
(2) 在一条规则中, 若没有进行流量匹配的动作, 则代表匹配所 有流量; 如果没有相应的应用(小动作) ,则仅对匹配的流量执 行大动作即可; 因此, 大动作为允许的空表, 代表允许所有。
BGP — 边界网关协议
IGP — 内部网关协议 — RIP OSPF
EGP — 外部网关协议 — BGP
AS — 自治系统 — 由单一的机构或组织所管理的一些列IP网络及 设备所构成集合。
划分AS的原因:
1, 网络范围太大, 协议跑不过来;
2, 自治管理
为了方便对自治系统进行管理, 我们给每一个自治系统设计了一个 号 — AS号 ---- 16位二进制构成 ---- 取值范围:
0 - 65535, 其中0 和65535为保留;
AS号的可用值范围为
1 - 65534
---- 其中 64512 - 65534被设定为私有AS号, 剩下的为公有AS号。
因为传统的AS号存在不够用的情况, 所以, 目前大部分设备均支持 拓展的AS号 — 32位二进制构成。
BGP协议 — 目前在IPV4环境下 — BGPV4 — 目前市场上也存 在BGPV4+
— 在BGPV4的基础上, 可以支持多种地址族
AS之间相互获取路由信息可以使用重发布, 但是以重发布作为解决方案存 在问题:
1、 选路不佳 — 重发布在导入路由时会洗掉开销值。
2、ASBR的归属问题;
BGP协议 — 无类别的路径矢量协议
无类别 — 传递路由信息时携带子网掩码
路径矢量
1、距离矢量中的距离指的是协议将一个路由器作 为一跳来计算开销。而路径矢量是以一个AS作为一个单位来传递 信息的。
2、 距离矢量型协议的分发是根据算法来分的, 但 是BGP协议不存在算法的概念, 因为BGP协议不需要去计算路由, 只需要将现有的传递到自己的邻居处即可。
IGP — 选路佳, 收敛快, 占用资源少
EGP
1, 可控性
— AS之间需要传递大量的路由信息, 所谓可 控, 就是可以更方便的干涉选路, 更容易做策略。
— 弥补重发布 的不足为了保证路由传递的可控性, 更方便干涉选路, BGP协议舍 弃了开销值, 取而代之的是他为路由信息设计了很多路径属 性。可以通过属性进行选路,是的选路过程更加灵活, 可控性更高。
2, 可靠性
----BGP协议为了保证传输的可靠性, 直接选择 TCP协议作为传输层的协议来完成数据收发
----使用的是TCP 179号端口
----使用TCP协议通讯造成的问题是, 传输效率 降低, 只能实现单播通讯(TCP需要去建立会话) ,占用资源会加大。
---- 使用TCP之后, 便不能通过广播或者组播去自动发现邻居进 行通信了。
----BGP协议可以实现非直连建邻,非直连建邻 的前提条件是邻居双方网络可达 ---- BGP的非直连建邻是建立在IGP 的基础上;
3、AS-BY-AS: BGP将一个AS作为一个单位来看待。 ---- BGP的一个特性: BGP是不支持负载均衡。
一、 BGP的数据包
ospf的hello包 — 周期发现, 建立和保活邻居关系。 发现邻居的任务 — 在BGP中由手工指定邻居关系来替代 建立邻居的任务 — 在BGP中由OPEN报文来承担
保活邻居的任务 — 在BGP中由Keeplive报文来承担
Open包 ---- 建立邻居关系
**AS号:**在手工建立邻居关系时声明的邻居的AS号。对端收到后会 检查其是否和本地的AS号一致, 一致则正常建立邻居关系。
**认证:**BGP也可以在建邻时做认证, 需要比对双方认证口令, 不 一致则无法建立邻居关系。
**Router-ID:**主要区分和标定路由器。OPEN报文中携带RID的目的 是为了确保双方的RID不一致。确保其唯一性, 如果相同, 则无 法正常建立邻居关系。
----- RID 也是由32位二进制构成, 并且遵循IP地址的格 式。
---- 也可以通过两种方法获取,
一种是手工配置;
另一 种是自动获取。(先在自己路由器的环回接口中选择最 大的IP地址作为RID, 如果没有环回接口, 则在自己物理 接口中选择IP地址最大的作为RID)
keeplive包 ---- 仅完成周期保活即可
— Keeplive报文的发送周期 — 保活时间(hold time) 的 1/3, 保活时间默认为180S, 则周期发送时间默认为60S。
KeepLive包还有一个作用
---- 在收到对方发送的OPEN报文后, 临时充当确认包的作用。
— TCP本身具有确认机制, 可以确保传输的可靠性。
Update包 — 更新包 — 携带路由信息的数据包 ---- 包括目标网 段, 子网掩码信息以及BGP的各种属性
在UPdate包中存在撤销路由字段, 我们可以直接将不可达的路由 信息放在该字段下进行通告, 以达到传递失效信息的目的。而不需要像RIP那样采用带毒传输的方式。
Notification包 — BGP设计的一个告警机制 — 当BGP检测到一个 错误的时候, 他将会用这个包进行告警, 告知对端错误点在哪
Route-refresh包 — 用于改变路由策略后请求对等体重新发送路由 信息。(前提是对等体双方均支持路由刷新)
2,、BGP的状态机
BGP的状态机仅描述BGP对等体建立过程中的状态变化。 因为BGP可以做到建立邻居关系和发布路由分开完成。
IDLE状态 — 空闲状态 — 一开始, 启动BGP之后, 先处于IDLE状 态, 之后手工指定邻居关系。
当手工指定好邻居之后, BGP将开启检查步骤。他需要确认指定 的IP地址在本地路由表中是否路由可达, 如果可达, 则开始尝试建立TCP会话,进入下一个状态。如果不可达, 则将停留在IDLE 状态。
connect状态 — 进行TCP会话连接的状态。如果TCP会话连接建立成 功, 则进入OPENsent状态; 如果TCP会话建立失败, 则进入Active状 态, 反复尝试重新建立会话连接。
OPENsent — 开始发送OPEN报文, 报文中携带建立邻居关系所需的 参数。当收到对端发送的OPEN报文后, 将检查里面的参数。如果参数 没有问题, 则将回复一个keeplive作为确认, 则进入下一个状态;
OPENConfirm — OPEN确认状态 — 对端收到本段的OPEN报文后, 确认参数无误, 则将发送keeplive包进行确认。此时, 则代表双方的 OPEN包中的参数都确认无误则进入下一个状态;
Established — 建立完成状态 — 标志着对等体关系的建立。
从流程图中可以看出, TCP连接失败, 则进入ACTIVE状态, 尝试重连, 如果重连超时, 则放弃重连, 判断邻居关系建立失效, 回到idle状态。整个环节中, 任意环节出现问题, 都将发送Notification包进行报错,之后将状态退回到IDLE状态。
三、 BGP的工作过程
1、基于IGP(静态, 直连) 实现IP可达;
2、指定邻居关系, 邻居间需要建立TCP会话通道。BGP之后发送的所 有数据包都是通过TCP会话通道发送, 来保证其传输的可靠性的。
3、 使用OPEN报文和keeplive报文进行邻居关系的建立; 生成邻居 表;
4、 使用Update报文共享路由信息, 信息中携带目标网络号, 掩码信 息及各种属性; 将收集和发送的所有路由信息记录在一张表中 — BGP表。
5、之后, 将BGP表中的最优路径加载到路由表中。(到达同一个目标 网段可能收到多条路由信息, BGP仅加载一条(不存在负载均衡) 最优路径, 最优路径是通过属性来选择的)
6, 收敛完成后, 将使用keeplive包进行周期保活, 默认保活时间为 180S, 周期发送时间为60S。
7, 若出现错误信息, 将使用notification报文进行告警; (这个错 误信息可能出现在对等体建立的时候, 也可能出现在之后。)
8, 若发生结构突变, 则将直接发送UPdate报文进行触发更新。