一、BGP笔记梳理:
1.BGP---边界网关协议
2.其他两种协议:
IGP---内部网关协议---OSPF RIP ISIS
EGP---外部网关协议---EGP BGP
3.AS---自治系统:由单一的组织(IANA组织)或者机构独立维护的网络设备以及网络资源的集合
1)网络范围太大
2)自治
3)为了区分不同的AS,网络世界IANA提出了AS号(范围)---0-65535 0和65535一般作为保留AS号
1-65534 1-64511---公有AS号---16位AS号
64512-65534---私有AS号
4)拓展AS号:将原本16位AS号拓展到32位
两个版本:BGPV4、BGPV4+
4.BGP和IGP的一些特性:
1)高可控性
---BGP设计了很多路径属性,可以通过路由策略关联这些属性达到路由控制的效果
高可靠性---TCP
!!!特性:AS-BY-AS---BGP把一个AS看作一个整体
2)IGP:
选路 收敛(慢) 资源占用
3)BGP:
- BGP传递一定是路由条目信息
- BGP没有使用周期更新传递路由信息
- BGP存在触发更新
- BGP在传输层使用TCP进行传输:179端口号
- UDP:520端口号
- BGP建邻时必须指定建邻的对象,BGP支持非直连建邻
- RIP---无类别的距离矢量路由协议
- BGP---无类别的(BGP在传递路由条目信息时携带子网掩码)路径矢量协议
- BGP默认情况下不支持负载均衡,BGP会根据传递过来的路由信息中携带的路径属性选择最优的路由信息加载到路由表中。
- BGP把一个AS看作一个整体
- RIP(IGP)实际上是一个算法的概念,BGP不是一个算法的概念,BGP也不需要计算路由信息,只负责转发路由信息
- EBGP对等体(邻居的意思)---一般用直连建邻连接对等关系
- IBGP对等体---一般建议采用非直连建邻
- BGP为了实现这两个规则:BGP规定EBGP对等体之间发送的数据包中携带的TTL值为1,而IBGP对等体之间传递的数据包TTL值为255
5.BGP的数据包
!!!BGP建立好TCP才能发送报文
1)Open---用来建立BGP对等体关系的数据报文
- AS号---自身的AS号,比对逻辑对等体发过来的OPEN报文中携带的AS号,必须和指定建邻的AS必须一致,否则会导致建邻失败。
- 保活时间---邻居关系的保持时间;类似OSPF的死亡时间默认180s,如果对等体双方保活时间不一致,会按照时间更小的执行。
- RID---建邻双方的RID不能一致,如果相同会导致建立对等体失败。
- 认证
2)Update---传递BGP路由信息的数据包
3)Notification---告警报文
在BGP工作过程中如果出现问题,会发送Notification报文告知对等体问题的原因。
4)Keepalive
---1.用于周期保活BGP对等体关系,默认是1/3的保持时间60s。
2.用来做OPEN报文的临时确认包
3.包的大小不大
5)Route-refresh
6.BGP的公共头部---Maeker,Length,Type
Hello包---建邻
7.BGP的状态机
一共存在 6种状态机,Peer状态名称:
建立对等体之间TCP会话:指定建立对等体的对象
BGP在建立对等体过程中会建立两次TCP会话,会保留RID大的设备发起的TCP会话
- IDLE状态下,启动BGP协议后必须指定建立对等体的目标之后,进入下一个状态。
必须路由可达(依靠IGP协议或者静态,直连)
2)Connect状态下BGP对等体之间开始建立TCP会话连接。如果TCP会话建立成功则进入OpenSent状态,如果TCP会话建立失败,则进入Active状态。
如果TCP会话(三次握手)建立成功则进入OpenSent状态,OpenSent状态下,开始发送Open报文去建立BGP对等体关系。
如果认可对等体发过来的OPEN报文中的参数,首先会回复一个keepalive报文用来确认OPEN报文中的参数我已经认可。并且进入OpenConfirm状态。
3)OpenConfirm状态---如果收到对等体发送的keepalive报文则进入最终状态Estabished。
8.BGP的工作过程
9.BGP的路由黑洞
有些控制层面的可达,数据层面实际不可达,这是造成黑洞产生的原因之一
路由黑洞产生的原因:IGP内部存在没有运行BGP的设备,当访问BGP网段的流量来到这些设备之后,由于控制层面可达,数据层面不可达(这些设备没有运行BGP,没有BGP网段的路由信息),那么将丢弃这些流量。
解决办法:
- 所有设备均运行BGP(不节约,不现实,但这也是没有办法的办法,前提必须得BGP要通畅)
- 重发布
- MPLS---标签交换,最早专门用来解决BGP路由黑洞
同步机制---当设备学习到一条BGP路由,如果本地IGP路由表不可达,将视该BGP路由无效。默认关闭
10.BGP的防环
---水平分割
1)EBGP水平分割:
BGP为了解决EBGP路由环路问题,设计了一个AS-PATH属性,设备在发生AS时会携带本AS的AS号,当路由信息携带该AS号,那么对于该AS的设备不会接收该路由(即第一个设备发出的AS_Path号后,后面一旦出现有重复的AS_Path号将丢弃,就不和它连接了)。后转发的AS号在前面。同时AS-Path属性也是BGP的一个选路依据,当其他属性一致时,会选择更短的路径。
2)IBGP水平分割:
当运行BGP的设备从IBGP对等体学习到一条IBGP路由,那么将不在转发给其他 IBGP对等体
解决方案---在IBGP对等体之间构建全连的IBGP对等体关系,1.增加拓扑的复杂性导致网络可拓展性变差,2.增大了资源占用
联邦反射器
11.BGP的基础配置大体流程及注意事项:
[R1]bgp100 -----启动BGP协议,并指定自身AS号
[r1-bgp]router-id1.1.1.1---手工配置BGPRID
[R1-bgp]peer 12.0.0.2 as-number 200 -----直连建邻,指定建邻的IP地址和对应的as号
[R1]display bgp peer --查看BGP邻居关系(BGP的邻居表)
IBGP之间使用环回建邻
[r2-bgp]peer 3.3.3.3 as-numberÊ200
Bgp 200
router-id 2.2.2.2
peer 3.3.3.3
as-number 200
[r2-bgp]peer 3.3.3.3 connect-interface
LoopBackÊ0 ---注意环回建邻必须改变跟新源
更新源地址不一致将导致建邻失败。
注意事项:
1.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 LoopBack0---使用环回建邻注意:必须修改更新源
[r4-bgp]peer 5.5.5.5 ebgp-max-hop 2----修改EBGP数据包TTL值
[r5-bgp]peer 4.4.4.4 ebgp-max-hop ----默认直接回车将修改TTL值为255
2.BGP的路由发布
[R1-bgp]network 1.1.1.0 24------宣告含义仅发布路由信息,并且注意:只能发布路由表中存在的路由信息
[R1]display bgp routing-table ----查看BGP表---记录发布的和接收到的所有BGP路由信息
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 1.1.1.0/24 0.0.0.0 0 0 i
Network----接收到的网段信息
NextHop----下一跳,如果是本地始发的BGP路由信息该字段为0.0.0.0
*> ---状态码
*valid----有效,首先当BGP设备接收到一条BGP路由信息,首先将验算下一跳是否可达,如果下一跳可达则代表该路由可用,如果下一跳不可达则认为该路由无效。注意:只有可用的路 由信息才会参与BGP路由的选举,并加载到路由表中
>best---最优的路由信息最终根据路径属性选择的结果,只有最优的路由信息才会最终加载到路由表中,并且只有最优的路由才会被BGP传递
I----internal内部通过IBGP对等体学到的
[r2-bgp]peer 3.3.3.3 next-hop-local------当IBGP对等体学到一条EBGP路由,由于AS-BY-AS属性导致下一跳不可达,协议在传递这条IBGP路由的IBGP设备上修改下一跳为本地BGP不能发布建邻的
BGP不能发布建邻的网段
3.宣告BGP网段的方法---重发布
[r2-bgp]import-route ospf 1 重发布的路由信息本地下一跳也是0.0.0.0相当于本地始发
Ogn------起源码:象征该路由通过何种方式学习到的
I---表示该路由是通过IBGP对等体学到的路由信息,包括Network宣告的路由
E--表示该路由是由EGP协议处学习到的路由信息,保留仅为了兼容性
?--除了前两种都是?
4.BGP的路由聚合-----自动聚合 手工聚合
1)创建前缀列表抓取想要发布的路由网段
[R1]ip ip-prefix aaa permit 172.16.0.0 16 greater-equal 24 less-equal 24
2)创建路由策略
[R1]route-policy aaa permit node 10 ----大的方向一定选择运行,否则视为拒绝发布这些匹配到 的网段
route-policy aaa permit node 10
if-match ip-prefix aaa -----匹配前缀列表抓取的流量
二、BGP的基础配置:
1.实验目的:通过配置BGP环境实现1.1.1.1/24环回与5.5.5.5/24环回的连通(AS200 内部使用OSPF协议)
2.实验拓扑及思路图:
3.为各个路由器创建环回接口,配置IP地址:
1)R1:
2)R2:
3)R3:
4)R4:
5)R5:
4.在AS200内部(即R2/R3/R4)配置OSPF:
[r2]ospf router-id 2.2.2.2
[r2-ospf-1]area 0
[r2-ospf-1-area-0.0.0.0]network 23.0.0.0 0.0.0.255
[r2-ospf-1-area-0.0.0.0]network 2.2.2.2 0.0.0.0
[r3]ospf router-id 3.3.3.3
[r3-ospf-1]area 0
[r3-ospf-1-area-0.0.0.0]network 23.0.0.0 0.0.0.255
[r3-ospf-1-area-0.0.0.0]network 34.0.0.0 0.0.0.255
[r3-ospf-1-area-0.0.0.0]network 3.3.3.3 0.0.0.0
[r4]ospf router-id 4.4.4.4
[r4-ospf-1]area 0
[r4-ospf-1-area-0.0.0.0]network 34.0.0.0 0.0.0.255
[r4-ospf-1-area-0.0.0.0]network 4.4.4.4 0.0.0.0
检查路由表,并ping通测试:
5.建立BGP对等体(建邻居)关系:
[r1]bgp 100
[r1-bgp]router-id 1.1.1.1
[r1-bgp]peer 12.0.0.2 as-number 200
[r2]bgp 100
[r2-bgp]router-id 2.2.2.2
[r2-bgp]peer 12.0.0.1 as-number 100 ---接口地址建邻不用改变更新源
[r2-bgp]peer 3.3.3.3 as-number 200
[r2-bgp]peer 3.3.3.3 connect-interface LoopBack 0 ---环回建邻必须要改变更新源
[r2-bgp]peer 4.4.4.4 as-number 200
[r2-bgp]peer 4.4.4.4 connect-interface LoopBack 0
[r3]bgp 200
[r3-bgp]router-id 3.3.3.3
[r3-bgp]peer 2.2.2.2 as-number 200
[r3-bgp]peer 2.2.2.2 connect-interface LoopBack 0 ---环回建邻必须要改变更新源
[r3-bgp]peer 4.4.4.4 as-number 200
[r3-bgp]peer 4.4.4.4 connect-interface LoopBack 0
[r4]bgp 200
[r4-bgp]router-id 4.4.4.4
[r4-bgp]peer 2.2.2.2 as-number 200
[r4-bgp]peer 2.2.2.2 connect-interface LoopBack 0 ---环回建邻必须要改变更新源
[r4-bgp]peer 3.3.3.3 as-number 200
[r4-bgp]peer 3.3.3.3 connect-interface LoopBack 0
[r4-bgp]peer 45.0.0.2 as-number 300
[r5]bgp 300
[r5-bgp]router-id 5.5.5.5
[r5-bgp]peer 45.0.0.1 as-number 200
查看对等体关系表:
6.发布路由:
1)发布1.1.1.1/24:
[r1-bgp]network 1.1.1.0 24
[r2-bgp]network 1.1.1.0 24
[r2-bgp]peer 3.3.3.3 next-hop-local ---需要修改下一跳为本地。因为当IBGP对等体学到一条EBGP路由,
由于AS-BY-AS属性导致下一跳不可达,协议在传递这条IBGP路由
的IBGP设备上修改下一跳为本地才可以通畅
[r2-bgp]peer 4.4.4.4 next-hop-local
2)发布5.5.5.5/24:
[r5-bgp]network 5.5.5.0 24
[r4-bgp]network 5.5.5.0 24
[r4-bgp]peer 2.2.2.2 next-hop-local ---需要修改下一跳为本地。因为当IBGP对等体学到一条EBGP路由,
由于AS-BY-AS属性导致下一跳不可达,协议在传递这条IBGP路由
的IBGP设备上修改下一跳为本地才可以通畅
[r4-bgp]peer 3.3.3.3 next-hop-local