自治系统:AS
AS是一组被统一管理的路由器,他们使用相同的内部网关路由协议(IGP),并且在同一个AS内使用相同的度量值。不同的AS使用不同的IGP,采用不同的度量值。
想要AS之间通信,使用外部网关路由协议。
内部网关路由协议IGP:RIP、EIGRP、OSPF
外部网关路由协议:BGP
BGP:broader gateway protocol边界网关路由协议
基于TCP的179端口
属于高级路径矢量协议,路径来源于IGP
BGP对于路由的承载数目达到无穷大(10W)
BGP的特性:
(1)可靠性:采用TCP连接,并且通过keepalive机制来保持联系
(2)稳定性:具有NSF(不中断连接)
(3)可拓展性:公网上有超过10W条路由条目
(4)灵活性
IGP:路由器之间称为邻居neighbor,自治系统内部交换信息,负责数据传输。
BGP:路由器之间称为对等体peer(配置中写作neighbor),类似于IGP的邻居,负责路由传输。
BGP的两种对等体形式:
(1)IBGP:内部BGP,两台设备在一个AS内建立的对等体,通告时间5s
对等体在建立的时候,不需要直接相连(底层一定要ping通),
只要建立对等体的更新源通过IGP可达,即可建立。
(2)EBGP:外部BGP,两台设备在不同AS内建立对等体,通告时间30s
建立对等体的时候,通常情况下,需要直接相连。
BGP在满足下列条件之一,才能够使用:
(1)AS允许分组穿越自身,并前往其他的自治系统(服务提供商)
(2)AS有多条到其他自治系统的连接
(3)必须对数据流进入和离开AS的方式进行控制
满足下列条件之一,则不能使用BGP:
(1)只有一条连接外部的路径
(2)设备没有足够的空间和处理能力来处理BGP的路由更新
(3)对于BGP的选路和策略没有足够的了解
(4)BGP对等体之间带宽很低,没有足够带宽为BGP更新提供可靠传输
BGP的TTL
TTL:time to live生存时间,指数据包每经过一条网络设备,TTL减1,用于数据包防环。范围1-255,字段长度为8位。
默认情况下:IBGP之间的数据包TTL为255
EBGP之间的数据包TTL为1
RIP的TTL为2
EIGRP的TTL为2
OSPF的TTL为1
BGP的信息类型:
(1)OPEN:打开消息,包含了bgp router-id、版本号,类似于hello包
(2)Keepalive:保持激活信息,类似于hold包
(3)Update:更新包
(4)Notification:通知包,当BGP发生故障时发送,检测错误
BGP的三张表
(1)邻居表:show ip bgp summary
(2)数据表:show ip bgp
(3)路由表:show ip route bgp
BGP邻居建立的工作状态
1、Idle:标志正在启动BGP进程,即初始状态
2、Connect:标志正在进行TCP连接
3、Active:标志TCP连接建立失败,重新尝试建立邻居
4、Openstart:标志TCP连接建立成功,发送open报文建立bgp邻居
5、Open confirm:标志open参数协商成功,发送keepalive维持bgp邻居
6、Established:标志bgp邻居建立成功
外部邻居EBGP
对等体的建立:BGP利用指定的更新源建立邻居
指定的更新源:发出open报文的源地址,即TCP建立连接的本端地址
EBGP邻居使用物理口作为更新源
IBGP邻居使用环回口作为更新源
邻居建立的前提:更新源之间可达(能ping通)
EBGP的配置
router bgp 200
bgp router-id 3.3.3.3
neighbor 192.168.23.2 remote-as 100
内部邻居IBGP
IBGP指定的更新源:建议使用环回口作为更新源。
为了保证环回口之间作为更新源可达,底层使用IGP连通。
router bgp 100
bgp router-id 1.1.1.1
neighbor 2.2.2.2 remote-as 100
neighbor 2.2.2.2 update-source Loopback0
查看BGP邻居
只要查看到最后一列有数字,即代表邻居建立成功。
数字表示邻居通过bgp传递来的路由。
关闭信息提示:(全局模式下)no logging console
清bgp进程(对bgp对任何改动之后都需要清bgp进程)
硬清:clear ip bgp *
软清:clear ip bgp * soft (首选)
BGP的宣告:network路由宣告
Router bgp AS号
Network 网段 mask 掩码
Network 1.1.1.1 mask 255.255.255.255
Network 192.168.12.0 mask 255.255.255.0
Bgp的network是指路由宣告,只要本地路由表中存在,就可以宣告,但是宣告的时候所接的掩码。必须是路由表中的掩码,将存在于路由表中的网段,放入BGP的路由表中,BGP之间传递的路由只能是BGP表中的内容。
当一台路由器(R2)既有EBGP邻居又有IBGP邻居时,该路由器在对内部邻居传输路由信息时下一跳会指向外部邻居,从而导致路由信息不优
需要在既有EBGP邻居又有IBGP邻居的路由器上(R2),强行将下一跳指向自己。
router bgp 200
bgp router-id 2.2.2.2
neighbor 3.3.3.3 remote-as 200
neighbor 3.3.3.3 update-source Loopback0
neighbor 3.3.3.3 next-hop-self
neighbor 192.168.12.1 remote-as 100
BGP表中的符号:
(1)如果NEXT HOP上的地址是0.0.0.0,则说明这条路由是由自身宣告出去的,注意对应的特殊路由器(既有EBGP邻居又有IBGP邻居)写上next-hop-self
(2)* 表示被BGP路由器所承认的有效路由
(3)> 表示BGP认为的最优路由,会放入BGP路由表中
PS:BGP只会传递自己认为最优的路由条目
内部邻居的水平分割:从内部邻居收到的路由不传给下一个内部bgp邻居
解决办法:
1、内部邻居全互联:所有的内部路由,两两之间建立内部邻居
2、配置路由反射器RR
BGP的对等体组peer-group
作用简化IBGP内部建立邻居的步骤
router bgp 300
neighbor IBGP peer-group /// 建立对等体组,命名为IBGP,本地有效
neighbor IBGP remote-as 300 /// 建立对等体组邻居
neighbor IBGP update-source Loopback0 ///确定对等体组更新源
neighbor IBGP next-hop-self ///将对等体组传递路由下一跳指向自己
neighbor 5.5.5.5 peer-group IBGP ///添加组成员
neighbor 6.6.6.6 peer-group IBGP
neighbor 7.7.7.7 peer-group IBGP
路由反射器RR( route-reflector-client)的配置规则:
(1)RR从EBGP收到的路由,会直接反射给客户端和非客户端
(2)RR从客户端收到的路由,会反射给客户端、非客户端、EBGP邻居
(3)RR从非客户端收到的路由会反射给客户端、EBGP邻居
配置RR:
R4配置路由反射器,并指其他的邻居为自己的客户端
Router bgp 300
Nei 5.5.5.5 route-reflector-client
Nei 6.6.6.6 route-reflector-client
Nei 7.7.7.7 route-reflector-client
或者Nei IBGP route-reflector-client
PS:配置路由反射器之前,带源trace一下,到哪一跳不同,就在下一跳上配置路由反射器。
用环回口建立Ebgp邻居
第一步:保证更新源可达
写静态
Ip route 2.2.2.2 255.255.255.255 192.168.12.2
第二步:用环回口建立EBGP邻居
Router bgp 100
Bgp router-id 1.1.1.1
Nei 2.2.2.2 remote-as 200
Nei 2.2.2.2 up lo0
Nei 2.2.2.2 ebgp-multihop 255 ///修改ebgp的TTL为255
1、BGP的手动聚合(汇总)
聚合成:172.16.8.0/21 (172.16.8.0 255.255.248.0)
R3
Router bgp 300
aggregate-address 172.16.8.0 255.255.248.0
///依旧能看见明细路由
Router bgp 300
aggregate-address 172.16.8.0 255.255.248.0 summary-only
///不显示明细路由,只看到一条聚合路由
2、BGP的自动聚合
(1)当采用宣告的形式学习路由
A.如果宣告的是无类路由,那么自动聚合不成功
B.如果宣告的是有类路由,自动聚合成功
(2)当采用重分发的形式学习路由,自动聚合成功
BGP学习路由的方式:
(1)宣告
(2)重分发
Router bgp 100
Red connected ///将直连路由重分发进bgp
在BGP中,一条路由以宣告的形式或者聚合的形式进入BGP表,则在表中会打上i的标记;如果是以重分发的形式进入BGP表,那么会在表中打上?的标记。
BGP的属性
(1)weight权重值:描述对邻居路由器的优先程度,越大越优
默认情况下。对于邻居的weight值为0,本地weight值为32768,传播的范围在自身AS内。
方法一:针对一条路由做精确修改
R1
ip prefix-list 4 permit 4.4.4.4/32 ///抓取4.4.4.4/32的路由
route-map weight permit 10 ///“weight”指的是route-map的名称
match ip address prefix-list 4
Set weight 1 ///设置权值为1
route-map weight permit 20 ///写一条空的route-map,放行没有抓取的路由,对这部分路由不做任何操作
Router bgp 100
Nei 3.3.3.3 route-map weight in ///在BGP的进程下面调用route-map,在权值调用时只能之用in方向
方法二:针对所有路由的路径进行修改
R1
Router bgp 100
Nei 3.3.3.3 weight 1
(2)本地优先级local-preference:默认的本地优先级为100,最大为200,越大越优,传播范围自身AS内
方法一:针对一条路由做修改
R3:
ip prefix-list 1 permit 172.16.11.0/24
route-map LOC permit 10
Match ip address prefix-list 1
set local-preference 101
route-map LOC permit 20
Router bgp 100
neighbor 1.1.1.1 route-map LOC out ///修改优先级,一般方向为out
方法二:针对所有的路由做修改
Router bgp 100
Bgp default local-preference 101
(3)起源属性:描述bgp路由是以什么样的形式进入bgp协议的
取值:按照优先级排列为igp>incomplete
1、igp:表示该路由是以宣告或者聚合的形式进入bgp
2、incomplete:表示路由是以重分发的形式进入bgp
3、egp
(4)下一跳属性:next-hop-self
(5)As-path:描述本地到达目标路由所经过的AS号,按照顺序排列
作用:可用于防环,as-path的路径越短越优。
ip prefix-list 12 permit 172.16.12.0/24
route-map AS permit 10
match ip address prefix-list 12
set as-path prepend 300
route-map AS permit 20
Router bgp 200(R4)
neighbor 192.168.24.2 route-map AS out ///out方向是指增加的AS300会在原来的AS200之后增加
Router bgp 100(R2)
neighbor 192.168.24.4 route-map AS in ///in方向是指增加的AS300会在原来的AS200之前增加
(6)MED属性(类似于IGP的metric)
默认为0,越小越优,在同一个AS内传递,只比较来自同一个AS内的各EBGP邻居路径的MED属性。
R2:
ip prefix-list 4 seq 5 permit 4.4.4.4/32
route-map MED permit 10
match ip address prefix-list 4
set metric 1
route-map MED permit 20
Router bgp 100
nei 192.168.24.4 route-map MED in
BGP的13条选路原则(从上往下,依次匹配)
1、优选最大weight的路由(范围0-65535)
2、优选最大local-pref值的路由
3、优选从本地始发的路由(下一跳为0.0.0.0)
4、优选as-path数量最少的路由
5、根据origin属性,优选具有最低的起源类型的路由(IGP>EGP>incomplete)
6、优选最MED值的路由(只有EBGP要比较,IBGP不需要比较)
7、外部路由优先于联盟,外部路由优先于内部路由
8、优选能过最近的IGP邻居到达的路径(优选对BGP下一跳具有最低的IGP度量值的路径)
9、如果在路由器上配置了maximum-path X(2-6),则实现负载均衡
10、如果都是外部路由,优选最老的路由(最先被学习到的路由)
11、如果在同一时间学习到多条到达同一目的地的路由,优选最小的bgp router-id的路由
12、如果路由是从路由反射器上学习到的,优选最小的cluster-id的路由
13、优选具有最低对等体地址接收到的路径(邻居ip地址最小的)
配置路由反射器的cluster-id
Router bgp 100
Bgp cluster-id 1.1.1.1
配置bgp的负载均衡
Router bgp 100
Maximum-path X /// X的范围2-6
路由过滤
第一种:使用前缀列表进行过滤
一条路由想要在前缀列表的抓取范围内,必须满足两个条件:
1、前缀要相同 2、掩码必须要在抓取的范围内
需求:在R2上写一条prefix-list,在bgp表中,同时看不见R3的lo1、lo2
lo1:172.16.11.1/24 lo2:172.16.12.1/24
Ip pre 2 deny 172.16.0.0/16 ge 17 le 32 //抓取要过滤的路由
Ip pre 2 permit 0.0.0.0/0 le 32 ///放行其他所有路由
Router bgp 200
Nei 192.168.23.3 prefix-list 2 in ///在bgp下调用
注意前缀列表的序号,写的时候默认隐藏,show run 可以看到
ip prefix-list 2 seq 5 deny 172.16.0.0/16 ge 17
ip prefix-list 2 seq 10 permit 0.0.0.0/0 le 32
第二种:使用分发列表(distribute)进行路由过滤
(在使用分发列表之前,使用ACL或者前缀列表抓取路由)
需求:R3过滤掉R4的lo0的路由
Access-list 4 deny host 4.4.4.4
Access-list 4 permit any
Router bgp 300
Nei 192.168.23.2 distribute-list 4 in ///在指邻居的时候调用
第三种:使用route-map进行过滤
(在使用route-map之前,先使用ACL或者前缀列表抓取路由)
R2:R4上查看过滤掉3.3.3.3/32的路由
ip prefix-list 3 deny 3.3.3.3/32
ip prefix-list 3 permit 0.0.0.0/0 le 32
route-map A permit 10
match ip address prefix-list 3
Router bgp 200
neighbor 192.168.24.4 route-map A out ///在跟R4建立邻居时调用
或者:
Ip prefix-list 3 permit 3.3.3.3/32
route-map A deny 10
match ip address prefix-list 3
route-map A permit 20
Router bgp 200
neighbor 192.168.24.4 route-map A out
第四种:使用as-path列表
因为bgp的路由是携带as-path属性的,因此我们可以通过as-path来进行过滤,那么需要匹配路由的as-path必须要以正确规则的形式表达。
. 表示任何一个单个的字符,包括空格
* 表示字符出现0次或者多次
^ 表示一行的开始
- 类似于逗号
$ 表示一行的结束
举例:
^123$ 表示只匹配了AS123,起源去AS123的路由并且不经过其他任何AS
^$ 表示没有经过任何的AS,只匹配了本地AS号
.* 表示匹配所有
^12[0-3]$ 表示匹配了AS120 AS121 AS122 AS123
^12. 表示匹配了 AS 120-129 、AS 12
-12- 表示匹配经过了AS 12的路由