1、使用IGP传递路由
1、使用IGP传递路由的话可能会导致内部信息泄露的风险,因为IGP之间的传输是完全信任的,所以会根据单个路由器的lsdb知道全网拓补,所以总的来说是不安全的,另外的话IGP的承载量也非常有限
2、使用BGP传递路由信息
BGP:1.是高级的距离矢量路由协议
2.应用层协议,需要传输层提供支持,采用tcp进行传输,因为两个as之间会跨越一个wan的环境,那这个环境是极其不安全的,所以需要使用tcp进行传输
3.使用触发式更新,也就是拓补发生变化时才会进行更新
3.BGP概述
特点:1.BGP使用TCP作为其传输层协议(端口号为179),使用触发式路由更新,而不是周期性路由更新
2.BGP能够承载大批量的路由信息,能够支撑大规模网络
3.BGP提供了丰富的路由策略,能够灵活的进行路由选路,并能指导对等体按策略发布路由
4. ▫BGP能够支撑MPLS/VPN的应用,传递客户VPN路由
5.BGP提供了路由聚合和路由衰减功能用于防止路由振荡,通过这两项功能有效地提高了网络稳定性
4.BGP的邻居关系类型
关于as(自治系统的解释)在互联网中,自治系统AS(Autonomous System)是指在一个(有时是多个)实体管辖下的所有IP网络和路由器的网络,它们对互联网执行共同的路由策略。
IBGP:邻居之间相同的as号,如果IBGP邻居之间使用直连来建立,那么当接口或者链路故障的时候,邻居会中断的。那么我们可以使用逻辑接口的IP来建立IBGP的邻居关系,如果使用Loopback接口建立邻居关系,需要使用peer 4.4.4.4 connect-interface LoopBack0,来告诉邻居我使用自身的环回接口IP和你建立邻居
EBGP:邻居之间不同的as号,EBGP邻居关系的建立一般使用物理接口建立即可。因为BGP规定EBGP只能直连建立(TTL=1),如果EBGP之间需要使用Loopback接口建立,需要设置额外的参数,peer 1.1.1.1 ebgp-max-hop 2配置ebgp建立邻居的最大跳数
条件:因为BGP是使用TCP作为传输层协议,就必须能够建立TCP的三次握手,简单的说就是要有到达邻居的路由
5.BGP报文类型
open:用来建立邻居关系,类似于ospf的hello报文,但是不会维护邻居的关系
update:当bgp有路由更新的时候(路由的增加或者减少),那就会发送update报文
notification:用来中断邻居关系
keepalive:用于维持bgp的邻居关系,每隔一段时间都会发送这个报文,时间间隔为60s发送一次,180秒没有收到回到则认为邻居实效,邻居断开
route-refresh:等我们使用路由策略修改路由的属性之后,会发送这个报文更新属性
6.BGP的状态
idle:这是bgp的初始化状态,这个状态下不能建立TCP三次握手,给我们准备足够的资源。在这个重传定时器的时间里,路由器不会发送任何报文(32s),如果路由器没有到达邻居的路由,就会一直停留在这个状态
connect:表示准备开始建立tcp三次握手,如果三次握手建立失败,则进入active,如果三次握手成功则进入opensent状态
active:一直尝试建立三次握手,表示已经有了到达邻居的路由,但是某些配置参数出错,如果重传定时器超时,还是没有建立起来三次握手的话,就会进入到idle状态,重新来过,如果说把错误的配置修改回来了,则进入到opensent状态
opensent:TCP三次握手建立完成之后,发送Open报文建立对等体关系,此时进入Open Sent状态,当收到对端回应的Open报文,并且参数检查无误,在发送keepalive报文之后进入Open Confirm状态
openconfirm:在OpenConfirm状态下,BGP等待Keepalive或Notification报文。如果收到Keepalive报文,则转至Established状态,如果收到Notification报文,则转至Idle状态
established:BGP可以和对等体交换Update、Keepalive、Route-refresh报文和Notification报文。
注意事项:
- 如果收到正确的Update或Keepalive报文,那么BGP就认为对端处于正常运行状态,将保持BGP连接。
- 如果收到错误的Update或Keepalive报文,那么BGP发送Notification报文通知对端,并转至Idle状态。
- Route-refresh报文不会改变BGP状态。
- 如果收到Notification报文,那么BGP转至Idle状态。
- 如果收到TCP拆链通知,那么BGP断开连接,转至Idle状态
7.路由生成的方式
BGP跟IGP不一样,建立邻居后不会发布路由过来,需要手工注入:第一种方式是network
import:引入直连路由、ospf、静态、isis等等
不管是哪种方式,引入也好还是宣告也好,路由必须是路由表上存在的路由条目
8.路由表
>:表示这条路由是bgp的最优路由
*:表示是一条有效路由,没有*的话表示是无效的内容,但是bgp不会把无效路由添加进来
i:表示是邻居传递过来的路由
9.路由通告原则:
1.路由器只会把最优有效的路由发布给BGP邻居
2.从EBGP接收到的路由会传递给所有的BGP邻居(IBGP和EBGP邻居)
3.从IBGP学习而来的路由不会再次传递给其他的IBGP邻居,但是会产生一些问题,因为IBGP水平分割的方法导致部分的路由器无法学习到路由,解决办法,建立IBGP全互联的邻居关系或者是BGP路由反射器
4.当一台路由器从自己的IBGP对等体学习到一条BGP路由时(这类路由被称为IBGP路由),它将不能使用该条路由或把这条路由通告给自己的EBGP对等体,除非它又从IGP协议(例如OSPF等,此处也包含静态路由)学习到这条路由,该条规则也被称为BGP同步原则。但是华为默认不会检查同步问题