1、网络AS(自治系统)
边界网关协议BGP(Border Gateway Protocol)是一种实现自治系统AS(Autonomous System)之间的路由可达,并选择最佳路由的距离矢量路由协议。
AS是指在一个实体管辖下的拥有相同选路策略的IP网络。BGP网络中的每个AS都被分配一个唯一的AS号,用于区分不同的AS。AS号分为2字节AS号和4字节AS号,其中2字节AS号的范围为1至65535,4字节AS号的范围为1至4294967295。支持4字节AS号的设备能够与支持2字节AS号的设备兼容。
在统一的管理机构、统一的路由策略之下的一系列网络产品组成的网络实体,被称为一个网络的自治系统。BGP协议用于AS之间,而IGP用于AS内部。
2、BGP特征 不能注入igp 通信靠默认路由 igp注入bgp实现和互联网通信
(1)使用BGP的条件(情况)
一个AS允许数据穿过它到达其他AS
一个AS与其他AS有多条连接
数据报文在进入或者离开AS时,需要对其进行策略处理
(2)BGP是路径矢量协议,是对距离矢量协议的增强
可靠更新:使用TCP:179端口发送更新 *** 不能自动发现邻居
只采用触发的、增量更新
周期性的保活消息(keepalive message)维持TCP连接(默认60秒间隔,保持时间3倍)
丰富的度量值(也被称为路径矢量或路径属性)
3、BGP数据库结构(BGP有几张表)
(1)邻居表
(2)BGP表(拓扑表)
从每个邻居学习到的所有网络的列表
到达每个网络的多条路径
每个路径的BGP属性
(3)IP路由表
4、BGP消息类型
(1)Open
自治系统号(AS号):AS号范围1-65535(其中64512-55535为私有AS号)
保持时间(Holdtime):默认3min
BGP标识符(BGP的router-id)
可选参数(多协议扩展,路由刷新,优雅重启,路由刷新新旧格式,出站路由过滤)
(2)Keepalive:默认60s
(3)Update(更新)
NLRI(网络层可达信息)
路由属性
撤销路由
(4)Notification(通告)
当检测到错误时,会发送此消息并关闭BGP连接
5、BGP邻居关系的种类
(1)IBGP(Internal BGP)
建立BGP邻居(对等体)的路由器在同一个AS里,通常情况下,IBGP对等体不需要直接相连
(2)EBGP(External BGP)
建立BGP邻居(对等体)的路由器不在同一个AS里,通常情况下,EBGP对等体之间需要直连
As内部并且不知道 其他As网段
基础实验:R1,R2分别启用环回口,然后直连建立bgp,再宣发环回口进入bgp
[Huawei]bgp 1
[Huawei-bgp]router-id 2.2.2.2
[Huawei-bgp]peer 12.1.1.1 as-number 1 //对方所属的ip,as区域
Ibgp 建立
[Huawei-bgp]network 10.1.4.0 24 //宣发其他网段进入bgp
验证:
sike:
R1(config)#router bgp 1
R1(config-router)#bgp router-id 1.1.1.1
R1(config-router)#no bgp default ipv4-unicast //关闭消息设置
R1(config-router)#neighbor 12.1.1.2 remote-as 1 // 发现邻居 remote-as 1 邻居的as号
R1(config-router)#address-family ipv4 //进入到IPv4地址簇
R1(config-router-af)#nei 12.1.1.2 activate //激活邻居12.1.1.2
宣发进入bgp
R1(config)#router bgp 1
R1(config-router)#address-family ipv4
R1(config-router-af)#network 10.1.1.0 mask 255.255.255.0
实验:igp注入bgp(反之万万不可以bgp路由表巨大)
[Huawei]bgp 1 //注意不同as 的bgp进程号不同
[Huawei-bgp]router-id 2.2.2.2
[Huawei-bgp]peer 12.1.1.1 as-number 1
注入ospf
[Huawei]bgp 1
[Huawei-bgp]ipv4-family unicast
[Huawei-bgp-af-ipv4]import-route ospf 1
验证:R3,R4都有了全路由
sike:
注入ospf
R1(config)#router bgp 1
R1(config-router)#address-family ipv4
R1(config-router-af)#redistribute ospf 100 match internal external
实验:使用环回口建立ebgp关系
要写静态路由 因为是环回口
[Huawei]ip route 2.2.2.2 255.255.255.255 21.1.1.2
[Huawei]ip route 1.1.1.1 255.255.255.255 12.1.1.1
ebgp一般是直连接口建立
[Huawei-bgp]peer 1.1.1.1 connect-interface LoopBack 0 //数字代表建立关系的环回口
不在同一个as 使用环回口 会增加TTL bgp 默认max是1 所以无法到达 用下面指令修改 max为255
[Huawei-bgp]peer 1.1.1.1 ebgp-max-hop 2 //不使用环回口也会有跳数问题所以尽量拉高
验证:使用环回口建立ebgp关系成功
sike:
R1(config-router)#nei 2.2.2.2 update-source loopback0
R1(config-router)#neighbor 2.2.2.2 ebgp-multihop 255
BGP下一跳行为:
BGP的下一跳为AS的一跳,因此AS边界的BGP路由器,向它的IBGP对等体发送从它的EBGP对等体学习到的路由时,由于AS之间的网段不宣告到AS内部,因此会导致它的IBGP对等体学习到的外部AS的路由的下一跳不可达。
实验:目的使R1到R3路由下一跳为R2 不是R3
R1,R2建立igbp和ospf R2,R3建立ebgp,同时三台都起环回口用于验证
直接查看R1路由表无法看到R3环回口,使用如下命令验证
[Huawei-bgp]peer 12.1.1.1 next-hop-local //在R2上
验证:下一跳更改为了R2对应接口
sike:
R2(config)#router bgp 1
R2(config-router)#add ipv4
R2(config-router-af)#nei 1.1.1.1 next-hop-self
BGP的选路原则 *****(同步端口号179)
1、Prefer highest weight (local to router). --思科私有,作用范围本路由器(最高的权重优先)
2、Prefer highest local preference (global within AS).(最大的本地优先级优先)
3、Prefer route originated by the local router (next hop = 0.0.0.0).(起源路由器优先)
4、Prefer shortest AS path.(最短的AS-PATH优先)as个数
5、Prefer lowest origin code (IGP < EGP < incomplete).(最低的起源代码)
6、Prefer lowest MED (exchanged between autonomous systems).(最小的MED优先)
IGP的选路原则:
1、下一跳可达
2、最长掩码匹配 //同路由掩码越长越优先
3、最优管理距离
4、最小的度量值
实验:修改属性实现指定选路(这里只教一种方法很多大差不差)
上图中R1与R2以及R1与R3之间是EBGP关系,R2与R3之间是IBGP关系
在R1上启用Lo1:11.11.11.11/32,宣告到BGP中
在R2上启用Lo1:22.22.22.22/32,宣告的BGP中
要求在完成以上配置后,通过相关的修改,实现
在R2上:
traceroute 11.11.11.11 source 22.22.22.22
经过的路径是R2-->R3-->R1
注意:R2,R3必须是环回口建立邻居关系,不然修改 preferred-value无效
基本配置后
[Huawei]ip ip-prefix abc permit 11.11.11.11 32 //抓取目标流量
[Huawei]route-policy f1 permit node 10
[Huawei-route-policy]if-match ip-prefix abc
[Huawei-route-policy]apply preferred-value 500 // 赋予PrefVal值越大越优先
[Huawei]route-policy f3 permit node 10
[Huawei-route-policy]if-match ip-prefix abc
[Huawei-route-policy]apply preferred-value 1000
[Huawei]bgp 2
[Huawei-bgp]peer 12.1.1.1 route-policy f1 import //导入
[Huawei-bgp]peer 3.3.3.3 route-policy f3 import
验证:R1,与2 3 不是通过环回口建立但可用此方法(懂得大佬评论区解答以下)
sike:
Weight 优先级
R2(config)#ip prefix-list 10 permit 11.11.11.11/32 抓住这段流量
R2(config)#route-map fromr1 permit 10
R2(config-route-map)#match ip address prefix 10
R2(config-route-map)#set weight 500 //weight值越大越优先
R2(config-route-map)#exit
R2(config)#route-map fromr3 permit 10
R2(config-route-map)#match ip add pre 10
R2(config-route-map)#set wei 1000
R2(config-route-map)#exit
R2(config)#router bgp 2
R2(config-router)#add ipv4
R2(config-router-af)#nei 12.1.1.1 route-map fromr1 in
R2(config-router-af)#nei 3.3.3.3 route-map fromr3 in
汇总(聚合)
聚合
huawei :
aggregate 192.168.0.0 255.255.248.0 as-set detail-suppressed
sike :
R2(config-router)#address-family ipv4
R2(config-router-af)#aggregate-address 10.1.8.0 255.255.252.0 summer-only as-set
BGP联盟(联邦)
相当于As 之上又嵌套一个As,便于网络管理
BGP联盟使管理者可以将大型AS分割成子AS,从而使大型AS更容易管理。被分割的AS本身是联盟,那些子AS是该AS的成员,在联盟以外的AS将整个联盟看作一个AS,它们看不到联盟内部的成员AS,因为这些成员AS对外部是隐藏的,因此成员AS可以使用公共AS号,也可以使用私有AS号,在实际生产环境中,建议使用私有AS号作为成员AS号。
实验时先建立联盟再peer邻居
不在联盟内peer联盟 直接peer联盟号 As号联盟内用
huawei:
[Huawei-bgp]confederation id 1
[Huawei-bgp]confederation peer-as 65002 //发现同联盟并相连的AS
sike:
R2(config-router)#bgp confederation identifier 1 //定义联盟AS号
R2(config-router)#bgp confederation peers 65002 //定义域本AS相连的其他联盟成员AS
路由反射器:
bgp水平分割:同一个As内部的ibgp对等体A从B学习到的路由不会传给C(从ibgp对等体学习的路由不会向其他对等体转发)
解决方法:1.A与C同样建立对等体关系使得C可以从A学习路由(关系复杂不利于网络管理)
2.使B成为路由反射器会将其他客户反射给客户以及非客户,路由反射后的所有属性不发生变化(包括下一跳属性)
R2,R3起环回口宣发进bgp但因为水平分割R2看不到R3路由
[Huawei-bgp]peer 2.2.2.2 reflect-client
[Huawei-bgp]peer 3.3.3.3 reflect-client
验证:
sike:
R1(config)#router bgp 1
R1(config-router)#add ipv4
R1(config-router-af)#nei 2.2.2.2 route-reflector-client
R1(config-router-af)#nei 3.3.3.3 route-reflector-client