读完《CCNP ROUTE》后,我深深感受到网络工程师的重要性和挑战。这本书系统地介绍了路由技术和协议,帮助读者掌握网络规划、优化和故障处理的关键知识。通过学习实例和案例分析,读者可以更好地理解和应用所学知识,提升自己在网络领域的技术水平。
《CCNP ROUTE》读后感(一)
BGP
BGP(边界网关协议)和其他的内部路由协议(IGP)不同,它是属于外部网关路由协议(EGP)。
它不像eigrp或ospf一样要求准确的路由信息,尽快的转发包,快速收敛。它主要的任务是通过策略对数据或路由经行控制。也不像eigrp和ospf那样根据成本值和度量值来判断。而是有点像rip,根据跳数判断。不同点是rip是每一个router是一跳,BGP每一个AS是一跳。
另外BGP工作在传输层,靠tcp179端口传输。通过周期性发送keeplive保活。
应该使用BGP的情况:
1.服务供应商使用:当AS1的数据需要穿越AS2,但不允许AS1的用户访问AS2内部的时候。
2.多宿主:同时连接到多个AS或服务供应商
3.PBR:需要对BGP路由/数据,进行人为控制的时候
不该使用BGP的情况:
1.与ISP只有单连接,没有同时连接到多个ISP
2.网络硬件设备的档次不够(内存/CPU)
3.对BGP路由操纵理解有限,无法预计BGP的后果
4.链路带宽不足
BGP的基本概念
1.BGP的选路规则:(1)最先收到路由优先于后收到的路由。(2)优先选择BGP的Router-ID较低的路由。
2.EBGP和IBGP
EBGP是指在不同AS里的BGP对等体,IBGP是指在同一个AS里的BGP对等体(不一定是直连的)
3.BGP与IGP协议配置理念的不同:
在IGP里路由协议是在接口上被激活并发送路由更新,同时将本接口上的网段进行路由。
在BGP里路由协议是向BGP neighbor发送路由更新的,没有激活接口的概念。所以BGP需要先手动指定邻居再用network宣告要转发的条目
BGP当检测到本地network命令,首先会检查路由表,查看是否此条路由存在,如果有,则将此条路由通过给对等体,否则忽略此条network命令
4.BGP的自动汇总和水平分割:
不像rip和eigrp那样在主类边界汇总,BGP将多个相同主类网络下的无类网络向主类网络进行汇总并向邻居通告,不管其本身是否处于主类边界。 这点通告有类网络时即可发现
默认情况下通过IBGP邻居学到的路由是不会传给其他IBGP邻居的(直传一跳)
5.BGP同步特性:
如果一个AS要提供到达别的AS的穿越服务的话,BGP是不会宣告路由的,除非这个提供穿越服务的AS里的路由器都通过AS学到了这些路由。(不使用或不通告给任何EBGP邻居从IBGP邻居学到的路由,直到从IGP也学到相同的路由)
如下情况可关闭同步:(1)不想让某个AS提供到达别的AS的穿越服务 (2)AS内所有穿越路由器都运行BGP
6.BGP更新源规则:
(1)默认情况下,BGP路由器以自己路由表中--到达对方地址的那条路由所指的出接口(物理接口)地址作为自己BGP更新源(源地址)
(2)当BGP路由器收到邻居发来的BGP信息时,会检查其源地址,然后和自己宣告的neighbor目标进行比较,如果一直,则可建立BGP连接
BGP的三张表
1 邻居表(show ip bgp summary)
BGP的邻居可以是直连设备,也可以跨越着建立
EBGP邻居分别属于两个不同的AS 通常是直连的
IBGP邻居同时属于一个AS 可以是直连的 也可以非直连
2 转发数据库(show ip bgp)
BGP路由器可以从多个邻居那里学到多条到达同一目标的路径,但是bgp默认是不会负载均衡的,也就是说只有一条可用路径,这条路径是靠“BGP属性”的优先顺序选出来的“优化路径”。只有获得“优化路径”(会标上一个>号)才能作为BGP选出的种子选手去参加 到达目标网络的“AD竞选”
3 路由表
选出AD竞选的路由,才能成功进入路由表
BGP的属性:
1.origin (源属性)
(1)IGP:网络是通过IGP学到的,优先级最高
(2)EGP:网络是通过EGP学到的,优先级次高
(3)不完全:网络是通过其他方式学到的,如重分发,优先级最低
2.AS_path (AS路径属性)
AS_path属性使用AS号的顺序组合来决定AS间的路径。当BGP路由器在它自己的AS里宣告目标网络,AS号加进AS_path里。以此类推(IBGP的AS号不会被加进AS_path属性,只有EBGP的AS号才会被加进)
------ EBGP依靠AS_path防环,IBGP依靠IBGP水平分割防环 ------
3.local_pref (本地优先级) <——在IBGP中影响离开AS的数据流
local_pref属性只用于IBGP对等体之间,不会被传输到其他AS中去,它用于决定到达相同目标网络路径的优先级。值越高,优先级越高(默认100)
local_pref属性是包含在BGP路由更新里的,会在整个AS的BGP的对等体之间进行交换
4.MED (多出口鉴别器) <——在EBGP中影响进入AS的数据流
Multi-exit-discriminator,定义了到达相同目标网络,AS之间多条路径的优先级,值越低优先级越高,默认是0.
和本地优先级不同的是,MED属性是在AS之间交换的。进入一个AS里的MED属性是不会再离开该AS的。也就是说:当一个带有MED属性的BGP路由更新要发送到其他AS的时候,MED就会被重置为默认(0)。除非使用 bgp alway-compare-med命令
5.admin weight (管理权重)
只对本地BGP路由器生效,本地BGP路由器产生的管理权重默认是32768,从别的路由器所产生的路由管理权重默认是0,值越高优先级越高。
1/3页《CCNP ROUTE》读后感(二)
ospf (最短路径优先)
是ieee公有的动态路由协议协议,市面上路由器基本上都支持,由ietf推荐,并且使用最广的IGP动态路由协议。在一个ospf进程内可以分出主干区域和多个非主干区域,有效的降低路由协议本身大量的广播对网络造成负担,并具有很好的可扩展性。它的优点甚多 具体的我就不说了。大家可以百度一下。
ospf有三张表:
邻居表:列出所有和本路由器直连的ospf邻居
链路状态数据库:列出所有从自己邻居那里得到的lsa,并且在同一个区域的路由器,拥有同样的链路状态数据库
路由表:在链路状态数据库中,通过spf算法得出的路由再添加到路由表中
从时间角度上看先有邻居表 再有链路状态数据库 最后添加进路由表
从空间角度上看邻居表在最底下,链路状态数据库建立在邻居表之上,ospf的路由表又建立在链路状态数据库上。
邻居表:
邻居表是由hello包建立和维护
hello包包含以下信息:
1.路由id:在ospf进程中的本路由器标识
(选举顺序:手工设-loopback最大ip-活动物理接口最大ip)
2.邻居
*3.hello包时间间隔:广播链路10秒,40秒没收到就挂掉。NBMA是30秒,120秒没收到就挂掉
*4.区域id
5.路由器优先级
6.DR的ip地址
7.BDR的ip地址
*8.认证密码
*9.stub区域标记
*注意:只有3489项匹配才能够建立邻接关系,这个很重要
那么邻接关系是怎么建立的呢?
分以下几个步骤:
1.down (路由器A从运行ospf的接口以组播地址224.0.0.5发送hello包)
2.init (所有收到从路由器A发送来hello包的路由器都把A添加到邻居表中)
3.two way (所有收到A发来hello包的路由器都向其回发一个hello包,A收到这些包以后会检查这些包,如果包中含有自己的id,那么把那个路由器加到自己里来)
如果是非广播链路就直接full了,广播链路需要在此同时选出DR/BDR
4.exstart (DR/BDR与其他路由器建立相邻关系)
5.exchange (由DR向其他路由器发送数据库描述数据包DBD)
6.loading (发送链路状态请求包的过程)
7.full (区域内所有邻居都同步了,每个链路都有相同的链路状态数据库了,可以转发数据了)
为什么说邻居表属于最底层?
不光因为要先建立邻居才能有链路状态数据库。而且邻居的建立是和物理网络链路是密切相关的
在ospf看来物理网络链路类型分三种:
1 点到点链路:如HDLC和PPP的串行链路,它们不支持广播和多播,它要求必须是full状态,所以也不需要DR/BDR
2 广播链路:如以太网,令牌环,它们支持广播和多播,为了集中管理减少广播,需要选出DR/BDR
3 非广播多路访问:如帧中继和ATM这些默认不传输广播流量但支持多点的广域网链路,这也需要DR/BDR(它默认不支持广播你可以手动设置成广播嘛 或者设成点到点链路那种)
OSPF的区域
ospf一般分为两个区域:主干区域(area 0)和非主干区域
每个非主干区域都必须至少有一个路由器连接至主干区域,这台路由器叫ABR(区域边界路由器)
连接并重分发至其他ospf进程或其他路由协议的路由器叫做ASBR(自治系统边界路由器)
划分多区域有两个好处:一是减少每个区域的路由条目,进而减少设备内存消耗提高转发效率
二可以利用ABR或ASBR的路由汇总,防止抖动
非主干区域又可以分成几种类型:
1.stub区域(末梢区域):只有域内/域间路由没有域外的(阻止lsa 4/5)
2.totally stub(完全末梢区域):只有域内路由,然后一条默认路由从ABR出去(阻止lsa 3/4/5)
3.NSSA(not-so-stub area):虽然是完全末梢,但可以允许外部路由进来
另外,如果违反规定,非主干区域未直连至主干区域,可以用虚链路作为桥接进主干
链路状态数据库(LSDB)
LSDB起着承上起下的作用,它收集区域内每一个路由器收到的邻居信息,生成链路状态数据库,利用spf算法,算出最优路径,生成路由条目。概括的说LSDB在ospf中起着“地图”的作用
LSDB是由各种LSA组成,下面列出常见的六个LSA类型:
1.router lsa
每一个路由器都会产生一条关于自身的router lsa,它包含本路由器直连链路信息列表并对ip前缀进行鉴别
router lsa只在区域内泛洪,不会穿越ABR
2.network lsa
network lsa由DR产生,包含广播网络和NBMA网络信息如:ip,掩码,DRID
network lsa只在区域内泛洪,不会穿越ABR
3.summary lsa
summary lsa由ABR产生,包含了区域内的LSA汇总,由router lsa+network lsa得出。包括网络号,掩码,metric(不包括接口)
在整个运行本ospf进程中的路由域中泛洪
4.asbr-summary lsa
asbr-summary lsa由ABR产生,至包含了ASBR的route-id,目的只是告诉大家ASBR的位置
在整个运行本ospf进程中的路由域中泛洪
5.external lsa
external lsa由ASBR产生,包含网络号,掩码,metric
在整个运行本ospf进程中的路由域中泛洪
7.nssa lsa
NSSA 就是运行外部路由进入stub,
nssa lsa只在NSSA区域内传播,然后在ABR上被转换成external lsa再向别的区域泛洪
2/3页《CCNP ROUTE》读后感(三)
BGP常见使用技巧
一,黑洞的解决方案
1.使用环回口建立邻居
在使用bgp建立邻居时,有时会有多条冗余链路,为防止单点故障和路由表抖动,建议使用环回口建立邻居关系。
方法很简单,建立邻居时填写对方环回口地址,然后指定更新源是环回口(neighbor X.X.X.X update-source loopback X),记得要有路由哦。
如果是EBGP的话,还要指定跳数(neighbor [ip] ebgp-multihop X)
BGP路由黑洞的解决方案:
1:选择性重分布(Redistribute Selected BGP Route into IGP);
2:冗余的IBGP(Full-mesh IBGP);
3:路由反射器(Part-mesh IBGP+Refilector);
4:联邦(Confederation);
5:(MPLS)。
二,使用手工汇聚路由条目和简单的认证
同上为了防止单点故障造成的抖动,可以将多条路由汇聚成一条。
有两种办法 一种是 通过指向NULL0 口的静态路由进行汇总。但这种不利于排错
二是 通过汇聚命令 aggregate-address [network] [mask] summary-only。此命令只起汇聚不添加路由,比较好
在BGP建立邻居时可使用简单的认证如:neighbor [ip] password [password] 两端需一致哦
四,使用本地优先级操纵离开BGP的数据流
如图:
http://www.douban.com/photos/photo/886203721/
1.当R4想访问130.130.1.0 时,是这样走的:R4——R3——R1——130.130.1.1
主要原因是,BGP在选择最佳路由时,并不会考虑具体带宽。为解决此问题,可以配置本地优先级来操纵路由,使其按照需求选择路径。
如果需要使R4的数据流:R4——R2——R1——130.130.1.1
可以在R2上的BGP进程里将本地优先级设成200(值越高优先级越高)
R2(config-router)#bgp default local-preference 200
然后通告R4下一跳是自己
r2(config-router)#neighbor 10.1.1.1 next-hop-self
就OK了
2.如果R4想访问130.130.1.0和150.150.1.0,并希望去130.130.1.0通告R2走,去150.150.1.0是通过R3走怎么办?
因为在默认情况下都是通过R3走的,所以我们只需要把去往130.130.1.0的流量单独提出来就好了。
在R2上建一个访问列表匹配去130.130.1.0的网段
r2(config)#access-list 1 permit 130.130.1.0 0.0.0.255
然后用route-map调用它,设一个名为set_lp的route-map,匹配允许,进程为10
r2(config)#route-map set_lp permit 10
当匹配访问列表1时
r2(config-route-map)#match ip address 1
设置本地优先级为200
r2(config-route-map)#set local-preference 200
当出现其他情况时,按默认方式进行
r2(config)#route-map set_lp permit 20
在进程下指定方向并套用route-map
R2(config-router)#neighbor 192.168.2.2 route-map set_lp in
将下一跳指为自己
r2(config-router)#neighbor 10.1.1.1 next-hop-self
就OK了
五,使用MED(多出口鉴别器)操纵流入BGP的数据流
http://www.douban.com/photos/photo/886203721/
根据以上例子,想让R4通过R2访问130.130.1.0,让R4通过R3访问150.150.1.0。
通常访问这两个网段 都从R3走,那么需要将去往130.130.1.0网络的流量改成从R2走
因为MED是操纵流入的流量,我们只要将R2通过R3去往130.130.1.0流量的metric值提高。那么它自然会从R2走了
下面是命令:
和上一个例子一样,设置一个访问列表,route-map匹配它时执行MED,然后在BGP进程下套用。
在R3上输入
access-list 1 permit 130.130.1.0 0.0.0.255
route-map set-med permit 10
match ip address 1
set metric 100
route-map set-med permit 20
router bgp 64512
neighbor 192.168.1.2 route-map set-med out
最后记得在R2上nei 10.1.1.1 next-hop-self
六,使用weight(权重)在本地路由器上操纵去往多个AS的流量
如图
http://www.douban.com/photos/photo/886203773/#next_photo
R2要去往150.150.1.0。由于R4的route-id比较小,根据BGP选路原则可能会选R4,但我们想让去150.150.1.0的流量从R1走。所以我们必须人为操纵。使用weight是一种办法。当然,就像前面两个例子一样,我们也使用route-map,因为route-map可以精确匹配。
在R2上输入
access-list 1 permit 150.150.1.0 0.0.0.255
route-map weight permit 10
match ip address 1
set weight 100
route-map weight permit 20
router bgp 64512
neighbor 192.168.4.1 route-map weight in
七,使用AS_path(路径欺骗)在本地路由器上操纵去往多个AS的流量
还是如上图
http://www.douban.com/photos/photo/886203773/#next_photo
其实AS-path和MED差不多,可以算是MED的一种替代解决方法,但是它适用范围不大
access-list 1 permit 150.150.1.0 0.0.0.255
route-map as-path permit 10
match ip address 1
set as-path prepend 64514 64514
在set as-path prepend后添加的AS号,最好是本地自治系统号,否则可能会产生无效路由
route-map as-path permit 20
router bgp 64514
neighbor 192.168.2.1 route-map as-path out
3/3页