HCIE面试笔记-BGP
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
IGP 用于AS内互联互通。
EGP 用于AS之间的互联互通,代表BGP。
AS之间互联互通的常用方法:
1、BGP
2、IGP的路由引入。
设备放置不方便,并且与自治不符合。
3、VPN等
在同一个AS内部运行的路由器建立IBGP邻居关系。
不在同一个AS内部运行的路由器建立EBGP邻居关系。
BGP有5种报文
OSPF有5种报文
ISIS有9种报文
rip有2种报文(已经不考了)
OSPF和ISIS如何删除一条LSA
OSPF 3600S后删除
ISIS 倒计时0S后删除
如何删除一条路由?
根据LSA/LSP中所携带的叶子信息来完成。
BGP 路径矢量路由协议。
带有方向的路径。
传递就是路由信息和路由属性。
维护BGP邻居关系,保活TCP会话。
默认60S周期发送,如果180S没有收到邻居的keepalive报文,则认为邻居失效,断开TCP连接,并删除从该邻居收到的所有BGP路由。
BGP更新路由的机制?
1、增量触发更新
2、管理员手动触发更新,全量。
rip更新路由机制?
1、周期性更新 30S发送一次路由表。
2、触发更新
OSPF,ISIS 周期性更新,触发更新。
BGP 使用TCP 目标端口179。
ACL对设备自身产生的流量无效。
华为ACL默认允许。
如果收到notification报文一般是邻居中断。
处于IDLE状态原因:
排错:1、协议层面本身的配置问题2、数据层面的问题。
peer 2.2.2.2 as-number 2 含3重含义:
1、向邻居发送BGP报文的目的地址
2、邻居所在的AS号
3、邻居向本端发送BGP报文的源地址
这条命令,默认情况下,向BGP邻居发送报文的源地址是什么呢?
是:去往邻居地址路由的出接口IP作为BGP报文源地址。
使用loopback建立EBGP邻居,需要设置ebgp-max-hop,因为默认情况下EBGP报文TTL=1,不能跨链路。
注意:断开物理接口,bgp邻居状态不会中断,因为bgp邻居是根据TCP会话来建立的。
思考:两台路由器互指缺省路由邻居能建立吗?
答:思科不能建立邻居。
华为的可以。
思考:两台路由器,一方指明细,一方指默认路由,邻居能建立吗?
答:思科的可以建立邻居,但是需要指明细路由的一方主动发起才可以。
华为的一直可以。
以上3中状态机表明TCP三次握手没有成功。
以上为open消息。
OPEN
Bgp version 如果不一致,高的向下兼容低的。
My AS 要和邻居指定的AS号一样。
否则无法建立邻居。
Hold time 如果不一致,则使用小的hold time
Bgp router id 不能冲突,否则邻居无法建立,默认使用全局router id 充当BGP的router id
(全局router id:
1、华为默认使用设备上第一个ip地址作为全局router id
2、可以使用router id 命令指定全局router id
协议进程下手工指定的router id又称为协议router id,优先级更高
有哪些协议需要router id?
1、ospf
2、bgp
3、ldp)
这是bgp自带的能力。
不需要配置。
默认支持ipv4 单播地址族。
(Open:至少要匹配一种地址族能力。
其他能力不需要匹配。
)
如果想要支持其他地址族,则需要在其他地址族中使用peer XX enable
支持路由刷新功能。
支持4字节AS号。
(取值范围是1-65535,私有64512-65535,2字节,2的16次方。
以后支持4字节的AS号了。
)
导致BGP建立不起来的因素:
1、导致TCP会话建立不起来的因素
2、错误BGP邻居配置
3、open错误的参数
Keepalive time 和hold time时间不一致不影响邻居建立。
如图所示,若是两台运行BGP的路由器之间有一台防火墙,现在为了安全考虑,只允许R1主动发起TCP连接,能不能实现呢?
答:可以。
需要一条命令,配置被动端。
*valid 有效的。
代表下一跳可达的路由,即路由器自身拥有去往该BGP路由下一跳的路由。
从所有去往同一网段的有效路由中选出最优的BGP路由,传递给邻居。
有效的BGP路由才有资格参与最优路由的选择。
1、邻居表
Display bgp peer
Display bgp peer verbose
邻居表中
OutQ参数表示:在出方向队列中发送给邻居的包排队的数量,如果不是0就表示链路有拥塞。
PrefRcv参数表示:从邻居收到的BGP路由条目的数量。
2、Adj-RIB-In表
从邻居收到的为处理的路由信息表。
从邻居收到后原封不动的放入此表中。
3、Adj-RIB-Out表
自己处理后发送给邻居的路由信息表。
4、BGP路由表(Loc-RIB)
bgp路由信息库。
Display bgp routing-table
IP-RIB表是根据Loc-RIB表来生成的,但是在生成之间需要将Loc-RIB表中的条目与其他协议的路由进行优先级比较,低优先级的路由才会放入IP-RIB表中。
华为设备同步规则默认关闭,并且开不起来。
BGP同步用于在非全互联的AS内预防BGP路由黑洞。
但是不能够解决BGP路由黑洞问题。
BGP同步:从IBGP邻居接收到的路由,如果在IGP表中不存在,则认为不同步,则不传递给EBGP邻居。
解决BGP路由黑洞的方法有4种:
1、AS内部采用IBGP全互联架构,让每台路由器都运行BGP协议,从而都拥有BGP路由,防止黑洞产生。
此时BGP同步规则可以关闭。
2、在ASBR上将BGP路由引入到IGP协议中,该方法已经被淘汰,因为IGP协议无力管理大量BGP路由。
3、在ASBR之间建立GRE隧道
4、通过LSP隧道解决黑洞。
1、MED 多出口鉴别器,也称为BGP cost,BGP度量值。
2、MED属性默认值是0,越小越优。
如果是IGP路由则默认值是IGP cost,越小越优。
重分发直连后,med值不变。
通过实验发现default med对import的静态路由传到EBGP邻居后,MED值还是没有生效。
华为设备通告MED属性的规则:
1、始发路由器产生的路由MED值传递给所有邻居。
2、从EBGP邻居收到的MED值传给IBGP邻居。
3、从IBGP邻居或者从EBGP邻居得到的MED值不传给EBGP邻居。
只影响邻居AS。
什么时候用MED呢?一般情况下当本AS管理员希望控制邻居AS如何选择某条链路访问本AS时使用。
选路规则:
1、协议首选值
2、本地优先级
3、本地起源>手工汇总>自动汇总>network>import
4、AS-PATH
5、orgin
6、med
7、EBGP>IBGP
8、下一跳地址IGP开销小的
9、cluster list最短
10、orginotor id 小的
11、router id 小的
12、peer 地址小的
前面的10.1.12.2是指peer指定的邻居地址,第二个10.1.12.2是指邻居的route-id。
Pref-val 指协议首选值
Valid 指下一跳可达
External 指EBGP
Best 指在BGP条目中时最优的
Select 指被bgp选中的
Active 表示被路由选中的。
Pre 指路由协议优先级。
表示这条路由传给了哪个对等体。
MED属性默认只对来自于同一个AS的路由进行比较,即下一跳AS相同的路径才比较MED 属性。
若想比较来自于不同AS的med值,则可以使用下面命令。
其他AS也要改。
需要试验。
Deterministic-med 以确定性的方式比较MED属性。
这条命令是将MED属性设置为BGP路由下一跳的igp开销。
这条命令有什么用呢?
No_advertise,不传给任何邻居。
No_export 不传给EBGP邻居。
只在as内传递.联盟可以传递
No_export_subconfed 只能在成员内传递,不能传出大AS,也不能传给小AS。
1、用来限制BGP路由的传递范围
2、用于给BGP路由添加团体标记,实现路由的匹配和管理,类似于IGP的tag,但是BGP 路由可以拥有多个团体属性,而IGP tag一般一条路由只能携带一个tag,不够多。
团体分为:
1、公共团体属性:控制BGP路由传递范围
2、自定义团体属性:实现路由打标记的。
怎么给路由添加团体属性
1、network/import-route结合route-policy对发布的路由添加团体属性,并在local-rid生效。
2、peer route-policy export/import 对发送和接收的路由添加团体属性。
注意:团体属性不会自动传递给邻居,需要在邻居之间配置传递团体属性的命令,逐跳配置。
2019-8-6
origin
origin 公认必遵
只要不人为修改,该属性就不会自己改变,描述该路由是如何成为BGP路由的
@ i 通过network生成的BGP路由
@ ? 将IGP路由通过import-route生成的BGP路由
@ e 从EGP协议中引入到BGP协议中的路由,EGP协议是BGP的前身,目前已经淘汰。
如何修改origin属性
1、对自身产生BGP路由时做origin的修改
2、对发送给BGP邻居的路由做origin的修改
3、对从BGP邻居收到的BGP路由做origin修改
修改origin属性配置如下:
R1:
bgp 1
router-id 1.1.1.1
peer 10.1.12.2 as-number 234
#
ipv4-family unicast
undo synchronization
network 1.1.1.1 255.255.255.255 route-policy org
peer 10.1.12.2 enable
peer 10.1.12.2 route-policy export-att export
#
route-policy org permit node 10
apply origin incomplete
#
route-policy export-att permit node 10
apply origin igp
#
将R1通过network发布的1.1.1.1/32路由origin属性更改后在本地显示为?
发送给EBGP邻居10.1.12.2时,将origin属性更改为i
R2:
bgp 234
router-id 2.2.2.2
peer 10.1.12.1 as-number 1
#
ipv4-family unicast
peer 10.1.12.1 enable
peer 10.1.12.1 route-policy import import
#
route-policy import permit node 10
apply origin egp 1
#
在R2上,将从10.1.12.1收到的所有路由orgin属性更改为e,不管收到的origin属性是什么。
origin属性可以用在BGP路径优选
i>e>?
AS-PATH
as-path
1、公认必遵
2、AS间防环属性
3、选路属性
防环机制:@当将BGP路由传递给EBGP邻居时,会将自身的AS号添加到AS-PATH属性的前面。
@当从EBGP邻居收到路由时,对AS-PATH属性做检查,如果AP-PATH中存在自身的AS 号,则丢弃该路由。
@IBGP邻居之间不做AS-PATH属性的检测。
AS-PATH选路规则:
1、经过的AS-PATH越少,路径越优。
AS号添加的顺序:
如一条路由的AS-path显示为:
1 200 300 45
可以得出:
1、该路由起源于AS 45
2、去往该路由下一跳AS是 AS 1
AS-PATH如何修改
1、华为设备在任何BGP邻居之间,任何方向都可以对AS-PATH属性做修改,思科仅在EBGP邻居之间修改AS-PATH属性。
AS-PATH属性修改方法:
可以使用route-policy来修改。
可以在产生路由的时候直接改,比如:
bgp 100
import static route-policy add
#
route-policy add permit node 10
apply as-path 200 300 additive
#
但是有个问题,如果使用命令apply as-path 123 additive修改AS-PATH后,路由的AS-PATH属性顺序应该是什么样的?
是将123添加到通告路由的AS号前面还是后面?
答案是添加到通告路由AS号的后面。
比如AS1使用这条命令向AS2通告路由,那么在AS2的BGP路由表中显示路由的AS-PATH 属性的顺序为 1 123
@apply as-path none overwrite 如果引用到import端口,则清空AS-PATH属性。
如果引用到export接口,则清空AS-PATH属性后,将自身的AS-PATH号添加进去。
@apply as-path 1 2 3 additive 如果引用到import端口,则将1 2 3 添加到邻居AS的前面。
如果引用到export接口,则将1 2 3 添加到邻居AS的后面。
@apply as-path 1 2 3 overwrite 如果引用到import端口,则将AS-PATH属性替换为 1 2 3。
如果引用到export接口,则将AS-PATH属性替换为1 2 3后,还需在1 2 3前面加上自己的AS号,比如R1自己的as号是1,那么通告给R2后,R2显示的AS-PATH为 1 1 2 3
PEER 10.1.12.1 allow-as-loop 允许接收携带自身AS号的EBGP路由。
allow-as-loop 后面还可以跟次数,默认是1。
如果邻居发过来的路由,比如使用了apply as-path 100 234 200 234 300 234 add
命令进行as-path添加,那就说明穿过了234这个as 3次。
此时如果使用默认的allow-as-loop命令,那就不会生效,因为这条命令默认只允许穿过1次此AS。
这时候就需要使用PEER 10.1.12.1 allow-as-loop 3来进行修改了。
2019-9-17
AS-PATH其他使用方式:
华为:as-path-filter as-path 列表
思科:as-path-list
as-path-filter
1、通过对AS-PATH的属性匹配进行BGP路由的过滤
ip as-path-filter 10 permit {正则表达式}
常用的有以下几种:
^$ 匹配as-path为null的路由
.* 匹配所有的as-path
^100_表示匹配下一跳AS为100的路由
_400$表示匹配最后一跳AS为400的路由,也就是起源为400的路由。
_200_表示匹配经过AS为200的所有路由。
_(100|210|320|440)_表示匹配经过AS为100或210或320或440的路由。
1[1234]4可以表示114,124,134,144这些AS
1[^12345]7 [ ]内若是以^开始,那么表示补集,补集的意思是除了这些数字之外的其他数字。
也就是不包含12345,那么107/167/177/187/197这些就都包含了。
1[^1-5]7,-表示连接符,1-5表示1到5,这5个数字。
\ 表示去除特殊符号的特殊含义,比如 \()就表示()这个文本,相当于数字一样,没有了特殊含义。
实际使用中如果第一条拒绝了某一个as,那么后面要加一个允许所有的规则,不然就相当于全拒绝了。
使用正则表达式的特点
@、一个正则表达式可以匹配多条路由
@、一条路由的as-path也可能匹配多个正则表达式
因为正则表达式影响的面比较广,所以定义完之后不知道是否能匹配上路由。
所以
可以使用以下命令进行测试:
dis bgp routing-table regular-expression _234$来查看路由表中哪些路由匹配上了你定义的正则表达式。
2、在router-policy 中可以用if-match命令进行调用,用于对匹配的路由做策略。
工作中可能存在以下情况:
针对一个邻居中同样的路由使用了多个多虑策略,比如:
route-policy 使用deny策略
as-path-filter 使用permit策略
当多种过滤策略并存,但策略结果不同,拒绝优先。
所以不建议使用太多的工具对路由做策略,一般首选route-policy。