由于重发布技术的种子度量值的问题,将必然导致选路不佳的情况产生。这种情况只能依赖路由策略来人为干涉选路。
路由策略
控制层流量:路由协议传递路由由信息产生流量
数据层流量:设备访问目标网段所产生的流量
路由策略:在控制层流量传递过程中,截取流量,之后修改流量再转发或者不转发,最终影响路由表的生成,达到干涉选路的目的。
1.抓取流量
1.ACL列表---本身应用于限制数据层流量进出,也可以应用再抓取控制层流量上,但由于其通配符的设计,不能进行精准的匹配。
2.前缀列表---IP-prefix
[r1]ip ip-prefix aa(自定义的前缀列表名称,唯一区分和标定不同前缀的参数)
premit(和ACL一样,可以选择拒绝或者允许两种动作,抓取流量时选择允许即可)192.168.1.0 24--目标网段的路由信息
[r1]display ip ip-prefix aa 查看前缀列表命令
前缀列表中的规则默认是以10为步调自动添加序号,其目的是为了方便插入和删除规则。
[r1]ip ip-prefix aa index 15 premit192.168.3.0 24
[r1]undo ip ip-prefix aa index 15
前缀列表的匹配规则:自上而下,逐一匹配,一旦匹配到则按照对应的动作来执行,就不再向下匹配。末尾隐含一条拒绝所有的规则。
前缀列表可以实现范围匹配
[r1]ip ip-prefix aa permit 192.168.3.0 24 less-equal 28----可以匹配掩码为24-28的所有路由信息
[r1]ip ip-prefix aa permit 192.168.1.4.0 24 greater-equal 28---如果出现前后矛盾的情况,则将按照后面的来执行,前面的将不代表掩码长度,代表前24位固定
[r1]ip ip-prefix aa permit192.168.5.0 24 greater-equal28 less-equal 30--代表前24位固定,抓取掩码长度为28-30的
[r1]ip ip-prefix aa permit 192.168.6.0 24 greater-equal 28 less-equal 28---代表前24位固定,抓取掩码长度为28的路由信息
匹配所有的主机路由:
[R1]IP IP-prefix aa permit 0.0.0.0 0 greater-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
2.路由策略
1.RIP的merticin和merticout----偏移列表---偏移列表只能应用在距离矢量型协议中,而并不能应用在链路状态型协议中。
1.抓取流量
[r1]ip ip-prefix aa permit 23.0.0.0 24
2.在接口上配置偏移列表调用前缀列表
[r1-GigabitEthernet0/0/1]rip merticin ip-prefix aa 10
2.filter-policy过滤策略/过略列表---过滤列表在距离矢量型协议中和链路状态型协议中都可以使用。
1.抓取流量
[r1]ip ip-prefix bb deny 34.0.0.0 24---过滤列表没有过滤能力,所以需要调用低阶列表的过滤功能,这里在抓取流量时,动作需要选择为deny
[r1]ip ip-prefix bb permit 0.0.0.0 0 less-equal 32---放通所有,不添加这条规则,过滤列表将过滤掉所有的流量。
2.在进程中进行调用
[r1-rip-1]filter-policy ip-prefix bb import GigabitEthernet 0/0/0
注意:在链路状态协议中,因为同区域内部传递的是拓扑信息,所以过滤列表无法过滤拓扑信息,只能进行入方向的调用。而入方向的调用也不是过滤拓扑信息,只是将对应的路由信息拒绝加表。
3.route-policy路由策略
1抓流量
Basic ACL 2000 1rule
ACL's step is 5
rule 5 permit source 1.1.1.0 0
Basic ACL 2001 1rule
ACL's step is 5
rule 5 permit source 2.2.2.0 0
ip ip-prefix aa index 10 permit 3.3.3.0 24
ip ip-prefix bb index 10permit 4.4.4.0 24
2.配置路由策略
[r2]route-policy aa (自定义的路由策略名称)deny node 10---创建了一张叫做aa的路由策略
info:New Sequence of this List
[r2]route-policy aa deny node 10---node 10 相当于路由策略的规则编号,这个编号需要手动添加,建议参考前缀列表的序号模式,以10为步调手动添加。
info:New Sequence of this List
[r2-route-pollicy]if-match acl 2000 ----如果匹配---代表如果匹配到列表抓取的流量,则执行对应的操作。
[r2]route-policy aa permit node 20
info:New Sequence of this List
[r2-route-policy]if-match acl 2001
[r2-route-policy]apply cost-type type-1
[r2]display route-policy aa ---查看路由策略
[r2]route-policy aa permit node 30
info:New Sequence of this List
[r2-route-policy]if-match ip ip-prefix aa
[r2-route-policy]apply cost 10
[r2]route-policy aa permit node 40
info:New Sequence of this List
[r2-route-policy]if-match ip ip-prefix bb
[r2-route-policy]apply cost type type-1
[r2-route-policy]apply tag 6666----如果规则中存在多个id-match或者apply,则他们之间的关系为与关系。
[r2]route-policy aa permit node50 ---- 允许所有
1.如果if-match,则将匹配所有流量
2.如果没有小动作,则只按照大动作执行即可。
3.在重发布中调用路由策略
[r2-ospf-1]import-route rip 1 route-policy aa
[r3]display ospf routing----这个命令可以查看ospf的路由表
路由策略的匹配原则:自上而下,逐一匹配,一旦匹配上则按照对应的动作来执行,就不再向下匹配。在末尾隐含一条拒绝所有的规则。
Route-policy的配置指南:
1.即使要拒绝一条流量,再抓取流量时必须要使用允许,之后在路由策略中拒绝。
2.在一条规则中,若没有进行流量匹配,那就是匹配所有的流量,若没有应用(小动作),则对匹配的流量只执行大动作。因此,大动作为允许的空表代表放通所有。
BGP---边界网关协议
IGP----内部网关协议---RIP,OSPF
EGP---外部网关协议---BGP
AS---自治系统--由单一的机构或者组织所管理的一系列IP网络及设备组成的集合。
1.范围太大,协议跑不过来,需要划分。
2.自治
为了方便对AS--自治系统进行管理,我们给每一个自治系统设置了一个编号,这个编号称为AS号----由16位二进制构成---取值范围:0-65535,其中0和65535保留,可用范围1-65534.其中64512-65534这一部分的AS号称为私有AS号。公有AS号的取值范围1-64511(这一部分AS号要求全球唯一,统一由IANA组织分配)
所以,目前大多数设备支持拓展版的AS号---32位二进制构成
目前,在ipv4领域下,我们使用最广泛的BGP协议版本为BGPV4版本,但是,目前市面上也存在BGPV4+的版本---特点:支持多种地址族。
在BGP的情况下,我们通过重发布技术也可以实现不同AS之间的路由信息共享。但是,之所以采用BGP而不是重发布,主要是因为重发布本身存在缺陷:
1.在实现重发布时,必然会出现选路不佳的情况
2.归属问题
BGP协议被称为无类别的路径矢量协议
路径矢量和距离矢量的区别:
1.距离矢量中的距离指的是开销也就是跳数,是以一台路由器作为一跳。而路径矢量中则是将一个AS看作一个整体,将一个AS作为一跳。
2.EGP协议不存在算法的概念,而距离矢量是根据算法来划分的。BGP协议只是将IGP协议计算出来的路由信息传递到其他运行BGP的设备。
EGP协议的评判标准---选路佳,收敛快,占用资源少
IGP协议的关注点:
1.可控性---AS之间需要传递大量的路由信息,所谓可控,就是可以更加方便的干涉选路,做策略---为了弥补重发布的缺陷。
为了保证路由的可控性,方便选路。BGP协议直接舍弃掉了开销值,取而代之的是BGP给每条路由信息附加了丰富的路径属性。
我们可以我们可以通过多种路径属性进行灵活的选路,使得BGP协议具有强大的可操控性。
因为BGP需要传递的路由信息的数量非常庞大,所以,他无法采用周
期更新,只存在触发更新。
2,可靠性--- BGP协议为了保证传输的可靠性,直接采用TCP协议作为传输层的协议来工作。使用TCP的179号端口来工作。
IGP协议不选择TCP的原因:
1,TCP速度较慢;2,TCP占用资源较大;3,TCP只能实现单播
因为BGP采用TCP作为传输层协议,所以,只能通过单播的形式建立邻
居关系,需要手工指定邻居而不能自动发现。
BGP支持非直连建邻---因为只要网络可达,即可以实现TCP会话通道的建立,则可以建立BGP的邻居关系。
BGP的非直连建邻是承载在IGP(静态路由)的基础上的。
AS之间的---EBGP对等体关系---如果建立对等体的两台路由器位于不同的AS中,则他们的关系就被称为EBGP对等体关系。AS内部的---IBGP对等体关系---如果建立对等体的两台路由器位于同一个的AS中,则他们的关系就被称为IBGP对等体关系。
一般情况下,IBGP对等体关系可以非直连建邻,而EBGP对等体关系之间是直连建邻的,所以,IBGP间建邻时,他所构成的数据包中的TTL值为255。但是,在EBGP对等体关系建邻时,他构成的数据报中TTL值为1。若RBGP对等体之间需要非直连建邻,则必须将数据包中的TTL值修改。
3,AS-BY - AS:在BGP中,始终是将一个
AS看作是一个整体。-----BGP不支持负载均衡。不管到达相同网段存在多少条路由信息,BGP只会选择其中的一条加载到路由表中。
1,BGP的数据包
因为BGP传输层使用的是TCP协议,所以,传输的可靠性全部由TCP协议来保证,不需要额外的设计确认报文。
ospf中的hello包可以实现周期性的发现,建立和保活邻居关系
BGP中发现邻居关系---需要通过人手工来指定邻居关系。
BGP中建立邻居关系---由open报文来完成
BGP中保活邻居关系--- Keeplive包来完成
OPEN包----主要作用用来建立BGP对等体关系,其实质就是协商参数。
AS号---在创建邻居关系时需要指定对方的AS号,并且,这个AS号会在OPEN报文中携带。若对方收到数据包中发AS号和本地的AS号不同,则将无法正常建立邻居关系。
认证---在BGP中也可以进行邻居间的认证,在数据包中将携带认证口令,口令相同,则将正常建立邻居关系,不同,则无法建立。
Router-ID ---其作用也是用来区分和标定不同路由器的,在
OPEN报文中也会携带这个参数。对端在收到后将会比较数据包中的RID和本地的RID,相同则代表冲突,无法建立邻居关系。不同,则可
以正常建立邻居关系。
BGP中的RID和OSPF中的完全一样---也是由32位二进制构成,按
照IP地址的格式配置。
生成方法:
1,手工配置;
2,自动生成(先看本地环回接口,取最大的作为RID,如果没有环回,则取物理接口IP最大的作为RID。)
手工指定邻居关系时所配置的目标IP地址必须和邻居发来的OPEN报文中的源IP地址一
致,否则将无法正常建立邻居关系
OPEN报文中还会协商一些参数:
保活时间(Hold time) --- 默认为180S。这个参数也会携带在OPEN包中,但不要求必
须相同,但是执行时又必须相同。当双方保活时间不同时,则将按照数值小的执行。是
否支持路由刷新功能,如果有一方不支持,则间不启用该功能
Keeplive包 --- 主要任务就是保活对等体之间的邻居关系。周期发送时间为保活时间的
1/3,默认保活时间为180S,则周期发送时间为60S
除了正常的周期保活外,还将在收到对方OPEN报文后临时充当确认包的作用。Keeplive
包确认的不是OPEN报文是否收到,而是OPEN报文中的参数是否同意,同意则回
复 keeplive报文进行确认
Update包 (更新包) --- 主要包含目标网段及掩码信息,以及BGP附加给路由的各种路径属性
当一条路由信息失效时,BGP将直接把该路由信息携带在更新包中的撤销路由条目字段下,代 表该路由失效,而不需要像RIP一样采用带毒传输的方式
Notification包 --- BGP设置的一个告警机制
Route-refresh包 --- 用于改变路由策略后请求对等体重新发送路由信息。前提是对等体双方
都需要支持路由刷新功能
2,BGP的状态机
BGP的状态机一共6种,主要描述的是BGP对等体建立过程中的状态变化,而不包含路由收发
过程。因为BGP可以将邻居建立和路由收发分开
Idle(空闲状态) --- 一开始,设备启动BGP进程后先进入空闲状态, 当手工指定邻居关系后,将进入到一个检查步骤。需要先确认指定地址在本地路由表中的可达情况。如果可达,则进入到Connect,尝试建立TCP的会话。如果不可达,则将停留在空闲状态
Connect(连接状态) --- 该状态需要完成TCP会话的建立
如果建立成功,则进入Opensent状态
如果建立失败,则进入Active状态,则将反复尝试建立TCP会话
Opensent --- 发送OPEN包,同时也会收到对方发送的OPEN报文。则将检查对方报文中的参数,如果没问题则将发送keeplive包进行确认。
Openconfirm --- Open确认状态。等待对方发送keepolive报文确认自己的参数。如果收到keeplive报文则进入下一个状态
Established --- 标志着邻居关系建立成功
3、BGP的工作过程
4、BGP的基本配置