笔记 BGP
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了笔记 BGP相关的知识,希望对你有一定的参考价值。
在路由器之间动态的学习路由条目,形成路由表IGP:以最快的速度,计算一个去往目标网络的最短的、无环的转发路径
-DV
RIP
IGRP
EIGRP
-LS
ISIS
OSPF
EGP:在不同的企业之间,实现大量路由的稳定可靠的传输,并且可以实现路由
的灵活控制,并且保证无环;
-BGP:border gateway protocol ,边界网关协议
用于连接不同的企业或者组织结构;
prefix/mask type priority cost next-hop , interface
数据库中 ---(priority/cost)---> 路由表中
-match packet :
最长匹配原则
money money home
优先级:表示的路由的稳定性,值越小越好;0-255 ;
Metric(度量值):表示的是去往一个目标网络的距离的远近,越小越好;
OSPF:
1、邻居表
2、数据库
3、路由表
-hello:是非可靠传输方式;
-DBD:隐式确认,通过DBD报文中的序列号字段进行确认;
-LSU:显式确认,每发送一个LSU,都会返回一个LSAck;
-LSR:显式确认,每发送一个LSR,都会返回一个LSAck;
-LSAck:仅仅对其他报文实现确认作用,但是本身的传输是不可靠的;
L2+L3+OSPF
BGP:
L2+L3+TCP+BGP - tcp 179
L2+L3+UDP+RIP - udp 520
L2+L3+OSFP - protocol-id : 89 , TCP/IP 路由技术卷1,2 | OSPF设计与实现 | OSPF命令手册
L2+L3+EIGRP - protocol-id:88
L2+ISIS
关于交换:
BCMSN chm/pdf
BGP工作原理:
1、邻居表:display bgp peer
2、数据库:display bgp routing-table
3、路由表
bgp {as} # as 分为公有和私有,[64512--65535]
peer {ip-address} as-number {对方设备的}
BGP邻居建立:
-内部邻居
R1;
bgp 64512 # 设备本地运行的 BGP AS 号;
router-id 1.1.1.1
peer 192.168.12.2 as-number 64512 #邻居路由器属于的 AS 号;
R2;
bgp 64512
router-id 2.2.2.2
peer 192.168.12.1 as-number 64512
display bgp peer # 查看设备上的 BGP 邻居表;
local-as
local-router-id
number of peers
peer v as msgrcvd msgsent outq up/down state prefrvcd
R1:
bgp 64512
peer 10.10.2.2 as-number 64512
# R1 主动向 10.10.2.2 发起一个 TCP 179 的链接;
# 10.10.2.2 必须位于 AS 64512
or
10.10.2.2 的回复报文,必须是属于as 64512 的;
# 对方回包时,所使用的源IP地址必须是 10.10.2.2 ,
否则不接受(这就是“更新源检测机制”)
为了解决“非直连端口建立邻居时”所面临的“更新源检测机制”,
所以我们在发送 BGP 链接请求时候,更改报文的源IP地址:
例如:
bgp 64512
peer 10.10.2.2 connect-interface loopback 0
强烈建议:
非直连端口建立BGP邻居关系时,两边的Peer命令,都使用
该参数;
非直连IBGP邻居关系建立:
1、配置IP
2、配置IGP
3、配置BGP
外部BGP邻居建立时候需要考虑的机制:
1、更新源检测机制 -- 与IBGP邻居是相同的;
2、直连检测机制
#在什么时候才会检查该机制
在建立EBGP时,并且发送的BGP报文的 TTL 为 1 时,才会检查;
#该机制的定义是什么
&去往邻居地址时,使用的必须是“直连路由”,
如果不是,则表示不满足“直连检测机制”,从而无法建立EBGP邻居
面对为了链路稳定为建立的“非直连的 EBGP 邻居关系”,我们需要修改 EBGP
报文的 TTL 值不是“1”即可。因为,一旦不是1,就不会关心该机制了。
bgp 64513
peere 10.10.2.2 ebgp-max-hop [255]
============================================================
IBGP邻居防环机制:
-IBGP水平分割
指的是从内部邻居路由器收到的路由,不会再次发送给其他的内部邻居;
解决方案:
-IBGP全互连
-BGP联盟
大AS:在外部邻居关系之间发送的报文中,使用的是大AS;
小AS: 在联盟内部的“内部邻居”之间肯定是用;
在联盟内部的“联盟成员AS”之间的特殊的外部邻居之间也使用;
R1:
bgp 64512
confederation id 200 # BGP联盟的号码,表示的是 大AS
peer 10.10.2.2 as-number 64512
peer 10.10.2.2 connect-interface loopback 10
R2:
bgp 64512
confederation id 200
confederation peer-as 64513
peer 10.10.1.1 as-number 64512 #与R1为内部邻居,所以使用小AS
peer 10.10.1.1 connect-interface loopback 0
peer 10.10.3.3 as-number 64513 #联盟内部的特殊的外部邻居,使用小AS
peer 10.10.3.3 connect-interface loopback 0
peer 10.10.3.3 ebgp-max-hop
peer 192.168.24.4 as-number 400 # 此时与R4建立邻居使用的是大AS
R3:
bgp 64513
confederation id 200
confederation peer-as 64512
peer 10.10.2.2 as-number 64512
peer 10.10.2.2 connect-interface loopback 10
peer 10.10.2.2 ebgp-max-hop
BGP (二)
IGP
EGP
BGP
IBGP
-IBGP的水平分割
#IBGP全互联
#联盟(大AS和小AS)
#路由反射器(route-reflector)
-当我们将一个路由器配置为BGP的“路由反射器”之后,
该路由器就会不关心“IBGP水平分割”机制。
-路由反射器 + 路由反射器客户端 = 路由反射 簇 (cluster)
R5;
bgp 64512
peer 10.10.4.4 reflect-client #将R4作为自己的客户端;
从而自己成为了反射器;
EBGP
BGP路由在传递过程下一跳的变化:
1、在内部邻居之间传递的时候,下一跳是不变化的;
2、在外部邻居之间传递的时候,下一跳是会变化的;
在AS的边界路由器上,对自己的内部邻居配置“下一跳自我”:
R7:
bgp 64513
peer 10.10.6.6 next-hop-local
# R7发送给 R6 的所有的路由的下一跳为 10.10.7.7 ;
BGP在什么情况下使用:
1、运营商之间使用 BGP ;
2、当企业具有多出口网络设计的时候,可以使用 BGP ;
3、当想对路由选路进行灵活控制的时候,可以使用BGP;
BGP 13 条选路原则:
1、权重(prefered value | weight ) ,私有属性,值越大越好;
2、local preference ,本地优先级,越大越好;
3、是否为本地起源
所谓本地起源,表示的是本地产生的BGP路由。
对于BGP路由器而言,BGP路由分为两种:
自己本地产生的
从其他路由器学习的
本地产生的,要优于 “从其他路由器”学习的路由
4、as-path长度 ,越短越好(属性as-path可以实现不同AS之间的路由转发环路的防护)
as-path 表示的是 BGP 路由在传递过程中,前后依次经历过的 AS 号的组成;
当BGP路由器发现收到的BGP路由的 AS-path 属性中包含了自己的 AS号,
则表明该路由在传递过程中,曾经穿越过自己的 AS ,
那么,就不接收该路由条目,以防止路由环路的发生;
as-path 的形成过程是:从右向左;
默认情况下,as-path在 外部邻居之间发送路由的时候,才会变化;
5、origin code ,本地起源属性( i > e > ? )
6、MED,值越小越好(只有当邻居AS相同时,才会进行比较)
7、EBGP优先于IBGP
8、去往BGP路由的下一跳的 IGP Metric ,越小越好;
9、负载均衡
如果开启的话,则将多个路由条目都放入到路由表中;
并且将 best 路由,发送给邻居;
10、越老越好(仅仅对于EBGP)
11、RID(router-id),越小越好;
12、Cluster list 长度,越短越好;
13、peer address ,越小越好;
====================================================================
R1:更改 BGP 属性 - local preference
1、匹配感兴趣的路由;
acl 2000
rule 5 permit source 80.80.80.0 0.0.0.255
2、创建路由策略
route-policy CCNA permit node 10
if-match acl 2000
apply local-preference 333
3、调用路由策略
bgp 100
peer 10.10.3.3 route-policy CCNA import # 调用入向路由策略
4、验证
display bgp routing-table #去往80 的路由,下一跳变成 R3;
display bgp routing-table peer 10.10.3.3 received-route
存在的问题:R1从R3收路由时,少了40和70的相关路由。
注意:
基本ACL在匹配路由条目时,只能匹配路由的前缀,不能匹配掩码;
扩展ACL是可以的;
=================================================================
R2:更改 BGP 属性 - as-path 属性
1、创建ACL,匹配感兴趣的路由(40.40.40.0/24)
acl 2004
rule 5 permit source 40.40.40.0 0.0.0.0
2、创建 route-plicy , 修改 as-path:添加一个 210,将as-path长度变为2;
route-policy R2-R4-IN permit node 10
if-match acl 2004
apply as-path 210 additive
route-policy R2-R4-IN permit node 100
3、调用路由策略
bgp 100
peer 192.168.24.4 route-policy R2-R4-IN import
4、验证、测试、保存
R2:
display bgp routing-table as-path
*> 40.40.40.0/24 10.10.3.3 200
10.10.2.2 100 200
==================================================================
acl 2000
rule 5 permit source 80.80.80.0 0.0.0.0 # 此时ACL匹配的是 prefix
rule max deny source any
40.40.40.0
70.70.70.0
Route-policy : CCNA 【route-map】
permit : 10 (matched counts: 7)
Match clauses :
if-match acl 2000
Apply clauses :
apply local-preference 333
[注意:]
route-plicy 最后有一个隐含的 deny any ;
如果想表示 permit any ;
route-policy {name} permit {node-id}
if-match #不写任何的匹配条件,则表示匹配所有;
apply {路由属性} # 在不写 if-math 的情况下,可以写 apply ;
R1:
bgp 100
peer 10.10.3.3 route-policy CCNA import
display bgp routing-table
少了 40 , 70 ;
以上是关于笔记 BGP的主要内容,如果未能解决你的问题,请参考以下文章
CCIE学习笔记 3---BGP 团体属性 community