IGP(Interior Gateway Protocol)——内部网关协议
OSPF RIP IS-IS IGRP EIGRP
EGP(External Gateway Protocol)——外部网关协议
EGP BGP——边界网关协议
AS——自治系统
由单一组织or机构独立维护的网络设备&网络资源的集合
网络范围太大
自治
AS号
为了区分不同的AS,网络世界提出了AS号:0~65535(0&65535一般作为保留AS号)
IANA组织:分配IPv4&IPv6地址、AS号
1~65534
1~64511——公有AS号——IANA分配给运营商
64512~65534——私有AS号
拓展AS号
将原本十六位AS号拓展到三十二位
IANA组织公布IP地址&AS号:CIDR Report
BGP
现版本:BGPV4、BGPV4+
BGP的一些特性
高可控性——路径属性
BGP设计了很多路径属性,可以通过路由策略关联这些属性到达路由控制的效果
IGP:选路、收敛、资源占用
BGP:
BGP传递一定是路由条目信息
BGP没有使用周期更新传递路由信息
BGP存在触发更新
高可靠性——TCP
BGP在传递层使用TCP进行传递:179
UDP:520
BGP建邻时,必须指定建邻的对象;BGP支持非直连建邻
RIP——无类别的距离矢量路由协议
BGP——无类别的路径矢量协议
BGP在传递路由条目信息时携带子网掩码
AS-BY-AS——BGP把一个AS看作一个整体
BGP默认情况下不支持负载均衡;BGP会根据传递过来的路由信息中携带的路径属性
选择最优的路由信息加载到路由表中
BGP把一个AS看作一个整体
RIP(IGP)实际上是一个算法的概念,BGP不是一个算法的概念,BGP也不需要计算路由信息,只负责转发路由信息
EBGP对等体——一般建议采用直连建立对等体关系
IBGP对等体——一般建议采用非直连建邻
BGP为了实现这两个规则,规定BGP规定EBGP对等体之间发送的数据包中携带的TTL值为1,而IBGP对等体之间传递的数据包TTL值为255
BGP的数据包
BGP的公共头部
Open数据包
用来建立BGP对等体关系的数据报文
AS号——自身的AS号,对比逻辑对等体发过来的OPEN报文中携带的AS号,必须&指定建邻的AS必须一致,否则会导致建邻失败
RID——建邻双方的RID不能一致,if相同会导致建立对等体失败
保活时间:类似OSPF的死亡时间默认180S,if对等体双方保活时间不一致,会按照时间更小的执行
Keepalive
1.用于周期保活BGP对等体关系,默认是1/3的保活时间,60S
2.用来做OPEN报文的临时确认包
Update
传递BGP路由信息的数据包
Notification
告警报文,在BGP工作过程中,if出现故障导致出现问题,会发送Notification报文告知对等体问题的原因。
Route-refresh
BGP的状态机
建立对等体之间TCP会话:指定建立对等体的对象
BGP在建立对等体过程中会建立两次TCP会话,会保留RID大的设备发起的TCP会话
六种状态机
BGP一共存在6种状态机
Idle
在Idle状态下,启动BGP协议后,必须指定建立对等体的目标之后,进入下一个状态。必须路由可达(依靠IGP协议or静态,直连)
Connect
在Connect状态下,BGP对等体之间,开始建立TCP会话连接。ifTCP会话建立成功,则进入OpenSent状态;ifTCP会话建立失败,则进入Active状态
Active
OpenSent
ifTCP会话(三次握手)建立成功,则会进入OpenSent状态,在OpenSent状态下,开始发送OpenSent报文以建立BGP对等体关系。
if认可对等体发过来的Open报文中的参数,首先会回复一个Keepalive报文用来确认Open报文中的参数我已认可,并且进入OpenConfirm状态
OpenConfirm
在OpenConfirm状态下,if收到对等体发送的Keepalive报文,则进入最终状态Established
Established
BGP的工作过程
1.基于IGP(静态、直连、RIP、OSPF ... )实现路由可达,原因:BGP需要建立TCP会话(单播)
2.指定建立邻居/对等体关系之后,邻居之间单播传输,通过三次握手,建立TCP会话通道,之后所有的BGP通信都将基于TCP会话通道来传输,并且依靠TCP提供传输的可靠性
3.使用Open报文&Keepalive报文进行邻居关系的建立。Open报文用来携带建邻使用的参数,Keepalive报文用于Open报文参数的确认,最终完成对等体关系的建立,生成邻居表,存储BGP对等体关系信息。
4.建立邻居关系后,使用Update报文来共享路由条目信息。信息中将携带目标网络号、掩码以及路径属性,之后,将发送&收到的路由信息记录在一张表中——BGP表
5.之后,会将BGP表中最优的路由信息(通过路径属性选择的结果)加载到路由表中。
6.收到收敛后,将使用Keepalive报文进行对等体之间周期保活,默认保活时间为180S(hold time),发送周期为60S。
7.if这个过程中出现任何问题,都将使用Notification报文进行告警。
8.if出现结构突变(网段消失or新增网段),则将使用Update报文进行触发更新,并通告给其他的对等体。
BGP的路由黑洞
控制层面的可达
数据层面实际不可达
IGP内部存在没有运行BGP的设备,当访问BGP网段的流量来到这些设备之后,由于控制层面可达,数据层面不可达(这些设备没有运行BGP,没有BGP网段的路由信息),那么将丢弃这些流量。
解决办法:
1.所有设备均运行BGP
2.重发布
3.MPLS——最早专门用来解决BGP路由黑洞,MPLS VPN
同步机制——当设备学习到一条BGP路由,if本地IGP路由表认为下一跳不可达,将视该BGP路由无效。默认关闭
BGP的防环
水平分割
EBGP水平分割
BGP为了解决EBGP路由环路问题,设计了一个AS-PATH属性,设备在发出AS时,会携带本AS的AS号,当路由信息携带该AS号,那么对于该AS的设备不会接收该路由,后转发的AS号在前面。同时AS-PATH属性也是BGP的一个选路依据,当其他属性一致时,会选择AS-PATH属性更短的路径
IBGP水平分割
当运行BGP的设备从IBGP对等体处学习到一条IBGP路由,那么将不在转发给其他IBGP对等体
解决方案:在IBGP对等体之间构建全连的IBGP对等体关系,1.增加拓扑的复杂性导致网络可拓展性变差,2.增加了占用资源
联邦 反射器
BGP的基础配置
配置IP地址&环回地址
以R1为例,R2~R5同理
interface GigabitEthernet 0/0/0
ip address 12.0.0.1 24
interface LoopBack 0
ip address 1.1.1.1 24
interface LoopBack 1
ip address 172.16.1.1 24
interface LoopBack 2
ip address 172.16.2.1 24
interface LoopBack 3
ip address 172.16.3.1 24
interface LoopBack 4
ip address 172.16.4.1 24
display ip interface brief //查看IP表
配置BGP
R1:
bgp 100 //启动BGP协议,并指定自身AS号
router-id 1.1.1.1 //手工配置BGPRID
peer 12.0.0.2 as-number 200 //直连建邻,指定建邻的IP地址&对应的AS号
display bgp peer //查看BGP邻居关系(BGP的邻居表)
R2:
bgp 200
route-id 2.2.2.2
peer 3.3.3.3 as-number 200 //IBGP之间使用环回建邻
peer 3.3.3.3 connect-interface LookBack 0 //注意环回建邻改变跟新源
更新源地址不一致将导致建邻失败
EBGP对等体之间使用环回建邻
R5:
ip route-static 4.4.4.0 24 45.0.0.1 //必须实现路由可达(建议使用静态)
bgp 300
peer 4.4.4.4 as-number 200
peer 4.4.4.4 connect-interface LookBack 0 //使用环回建邻注意:必须修改更新源
R4:
bgp 200
peer 5.5.5.5 ebgp-max-hop 2 //修改EBGP数据包TTL值
R5:
bgp 300
peer 4.4.4.4 ebgp-max-hop //默认直接回车将修改TTL值255
BGP的路由发布
R1:
bgp 100
network 1.1.1.0 24 //宣告含义仅发布路由信息,并且注意:只能发布路由表中存在的路由信息
display bgp routing-table //查看BGP表——记录发布的&接收到的所有BGP路由信息
Network——接收到的路由信息
NextHop——下一跳,if是本地始发的BGP路由信息,则该字段为0.0.0.0
*>——状态码
*vaild——有效,first当BGP设备接收到一条BGP路由信息,首先将验算下一跳是否可达,if可达,则代表该路由可用;if not,则认为该路由无效。注意:只有可用的路由信息才会参与BGP路由的选举,并加载到路由表中
>best——最优的路由信息最终根据路径属性选择的结果,只有最优的路由信息才会最终加载到路由表中,并且只有最终的路由才会被BGP传递
i——internal,内部通过IBGP对等体学到的
R2:
bgp 200
peer 3.3.3.3 next-hop-local /当IBGP对等体学到一条EBGP路由,由于AS-BY-AS属性导致下一跳不可达,协议在传递这条IBGP路由的IBGP设备上修改下一跳为本地
BGP不能发布建邻网段
宣告BGP网段的方法——重发布
R2:
bgp 200
import-route ospf 1 //开启重发布
display bgp routing-table //查看BGP表
重发布的路由信息本地下一跳也是0.0.0.0,相当于本地始发
Ogn——起源码:象征该路由通过何种方式学习到
I——表示该路由是通过IBGP对等体学到的路由信息,包括Network宣告的路由
E——表示该路由是通过EGP协议学到的路由信息,保留仅为了兼容性
?——除了前两种都是?
BGP的路由聚合——自动聚合、手动聚合
R1:
ip ip-prefix aaa permit 172.16.0.0 16 greater-equal 24 less-equal 24 //创建前缀列表抓取想要发布的路由网段
route-policy aaa permit node 10 //创建路由策略,匹配前缀列表抓取的流量——大的方向一定选择运行,否则视为拒绝发布这些匹配到的网段
if-match ip-prefix aaa //匹配列表
display this