1.实验环境

1.1 实验拓扑

1.2 拓扑说明

(1)R1与R2为eBGP对等体,通过物理口建立邻接。
(2)R1-R2-R3运行OSPF,运行IGP(OSPF),为BGP提供IGP路由(iBGP通过回环接口建立邻接,运行IGP才有环回口路由)。
(3)R1-R2-R3运行两两之间通过回环接口运行iBGP(iBGP有水平分割,iBGP对等体学习到的路由,不会发送给其他iBGP对等体)。
(4)R4和R5之间采用冗余互联,所以只能通过回环接口运行eBGP,使用静态路由的方式使回环接口路由可达。

1.3 基本配置

R1:

acl number 2001  rule 1 permit source 192.168.1.0 0.0.0.255 rule 2 permit source 192.168.2.0 0.0.0.255 interface GigabitEthernet0/0/0ip address 10.1.12.1 255.255.255.0
#
interface LoopBack0ip address 10.10.1.1 255.255.255.255
#
interface LoopBack1ip address 192.168.1.1 255.255.255.0
#
interface LoopBack2ip address 192.168.2.1 255.255.255.0
#
bgp 100router-id 1.1.1.1peer 10.1.12.2 as-number 200 #ipv4-family unicastundo synchronizationaggregate 192.168.0.0 255.255.0.0 detail-suppressed network 10.10.1.1 255.255.255.255 network 192.168.1.0 network 192.168.2.0 peer 10.1.12.2 enable
#
route-policy import-local-route permit node 10 if-match acl 2001

R2:

interface GigabitEthernet0/0/0ip address 10.1.12.2 255.255.255.0
#
interface GigabitEthernet0/0/1ip address 10.1.23.2 255.255.255.0
interface LoopBack0ip address 10.10.1.2 255.255.255.255
#
bgp 200router-id 2.2.2.2peer 10.1.12.1 as-number 100 peer 10.10.1.3 as-number 200 peer 10.10.1.3 connect-interface LoopBack0peer 10.10.1.4 as-number 200 peer 10.10.1.4 connect-interface LoopBack0#ipv4-family unicastundo synchronizationnetwork 10.1.12.0 255.255.255.0 peer 10.1.12.1 enablepeer 10.10.1.3 enablepeer 10.10.1.4 enablepeer 10.10.1.4 next-hop-local
#
ospf 1 router-id 2.2.2.2 area 0.0.0.0 network 10.1.23.2 0.0.0.0 network 10.10.1.2 0.0.0.0

R3:

interface GigabitEthernet0/0/0ip address 10.1.34.3 255.255.255.0
#
interface GigabitEthernet0/0/1ip address 10.1.23.3 255.255.255.0
#
interface NULL0
#
interface LoopBack0ip address 10.10.1.3 255.255.255.255
#
bgp 200router-id 3.3.3.3peer 10.10.1.2 as-number 200 peer 10.10.1.2 connect-interface LoopBack0peer 10.10.1.4 as-number 200 peer 10.10.1.4 connect-interface LoopBack0#ipv4-family unicastundo synchronizationpeer 10.10.1.2 enablepeer 10.10.1.4 enable
#
ospf 1 router-id 3.3.3.3 area 0.0.0.0 network 10.1.23.3 0.0.0.0 network 10.1.34.3 0.0.0.0 network 10.10.1.3 0.0.0.0

R4:

interface GigabitEthernet0/0/0ip address 10.1.34.4 255.255.255.0
#
interface GigabitEthernet0/0/1ip address 10.1.45.4 255.255.255.0
#
interface GigabitEthernet0/0/2ip address 10.1.54.4 255.255.255.0
interface LoopBack0ip address 10.10.1.4 255.255.255.255
#
bgp 200router-id 4.4.4.4peer 10.10.1.2 as-number 200 peer 10.10.1.2 connect-interface LoopBack0peer 10.10.1.3 as-number 200 peer 10.10.1.3 connect-interface LoopBack0peer 10.10.1.5 as-number 300 peer 10.10.1.5 ebgp-max-hop 255 peer 10.10.1.5 connect-interface LoopBack0#ipv4-family unicastundo synchronizationimport-route staticpeer 10.10.1.2 enablepeer 10.10.1.2 next-hop-local peer 10.10.1.3 enablepeer 10.10.1.5 enable
#
ospf 1 router-id 4.4.4.4 area 0.0.0.0 network 10.1.34.4 0.0.0.0 network 10.10.1.4 0.0.0.0
#
ip route-static 10.10.1.5 255.255.255.255 10.1.45.5
ip route-static 10.10.1.5 255.255.255.255 10.1.54.5

R5:

interface GigabitEthernet0/0/1ip address 10.1.45.5 255.255.255.0
#
interface GigabitEthernet0/0/2ip address 10.1.54.5 255.255.255.0
interface LoopBack0ip address 10.10.1.5 255.255.255.255
#
bgp 300router-id 5.5.5.5peer 10.10.1.4 as-number 200 peer 10.10.1.4 ebgp-max-hop 255 peer 10.10.1.4 connect-interface LoopBack0#ipv4-family unicastundo synchronizationpeer 10.10.1.4 enable
#
ip route-static 10.10.1.4 255.255.255.255 10.1.45.4
ip route-static 10.10.1.4 255.255.255.255 10.1.54.4

2.BGP基本概念

2.1 IGP与BGP协议对比

IGP BGP
AS间需要直连链路 基于TCP,只要能建立TCP连接即可建立BGP
IGP有暴露内部网络信息的风险 只传递路由信息,不会暴露AS内的拓扑信息
网络规模增大,路由表规模变大 触发式更新,而不是周期性更新
OSPF、IS-IS通过Cost控制路由路径选择 BGP路由携带多种路径属性,可控制路由选择

2.2 BGP对等体关系的建立过程

在R1和R2间抓包,查看。

2.2.1 TCP 3次握手

TCP 3次握手完成TCP连接的建立。
R1向R2发起TCP连接,连接成功后,R1向R2发送Open报文。

此时R2发现对方的route id比自己小,于是重置了tcp的连接,并向R1发起tcp连接。
开始发送open报文

2.2.2 相互发送Open报文

相互发送Open报文,携带参数建立对等体。

2.2.3 定期发送Keepalive报文

定期发送Keepalive报文,保持连接。

2.2.4 BGP Update报文

对等体关系建立之后,BGP路由器发送BGP Update报文(路由信息)。
R2发送了lo0的路由信息给R1。

R1发送了lo0的路由信息给R2。

2.3 BGP报文类型

2.3.1 报文格式


bgp有5种报文,5种报文拥有相同的报文头。

2.3.2 报文类型

2.3.3 Open报文

Open报文是TCP连接建立之后发送的第一个报文,用于建立BGP对等体之间的连接关系。

Open报文包含:BGP版本号、本地AS号、保持时间(在这个时间内未收到对端的keepalive报文或update报文,认为BGP连接中断)、BGP标识符(识别BGP路由器)。

2.3.3 Updage报文

Update报文用于在对等体之间传递路由信息,可以用于发布、撤销路由。
在R1取消network引入,可以产生撤销路由的update报文:

2.3.4 Notification报文

当BGP检测到错误状态时(对等体关系建立时、建立之后都可能发生),就会向对等体发送Notification,告知对端错误原因。之后BGP连接将会立即中断。
当对端AS号指定错误时,Open协商后,会给对方发送Notification报文,告诉对方AS号错误。
将R1中R2 peer 号配置错误:

2.3.5 Keepalive报文

BGP路由器收到对端发送的Keepalive报文,将对等体状态置为已建立,同时后续定期发送keepalive报文用于保持连接。

2.3.6 Route-refresh报文

Route-refresh报文用来要求对等体重新发送指定地址族的路由信息,一般为本端修改了相关路由策略之后让对方重新发送Update报文,本端执行新的路由策略重新计算BGP路由。
可以手动向peer请求路由:

2.4 BGP状态机



使用debug查看R1和R2建立peer的状态机。

2.4.1 Idle状态

配置完BGP对等体之后,设备会尝试建立TCP连接,此时如果无法发起TCP连接,设备将会一直处于Idle状态。缺乏去往BGP对等体的路由是导致BGP路由器其状态机一直处于idle状态的常见原因。

2.4.2 Connect、Active状态

配置完BGP对等体并成功查找到去往对等体地址的路由之后,会发起TCP三次握手,TCP三次握手建立过程中处于Connect状态,如果TCP连接长期无法建立则进入Active状态。

因为TCP连接被R2重置,所以状态回到了Active。

2.4.3 Open Sent、Open Confirm状态

TCP三次握手建立完成之后,发送Open报文建立对等体关系,此时进入Open Sent状态,当收到对端回应的Open报文,并且参数检查无误,在发送keepalive报文之后进入Open Confirm状态。


2.4.4 Established状态

进入Open Confirm状态之后,BGP路由器如果收到了对端发送的Keeaplive报文,则进入Established状态,对等体关系建立过程就此完成。

2.5 BGP的相关表

2.5.1 bgp对等体表

2.5.2 BGP路由表


2.6 BGP路由的生成

不同于IGP路由协议,BGP自身并不会发现并计算产生路由,BGP将IGP路由表中的路由注入到BGP路由表中,并通过Update报文传递给BGP对等体。
BGP注入路由的方式有两种:Network、import-route
与IGP协议相同,BGP支持根据已有的路由条目进行聚合,生成聚合路由。
在R1上增加两个网段:

2.6.1 network

通过Network引入直连路由:

在R1查看引入的bgp路由指向本地:

在R2查看引入的bgp路由:

2.6.2 import-route

import-route引入直连路由,如果指向引入想要的精确的网段,可通过路由策略。


引入直连路由

R1上查看路由:

R2上查看路由:

2.6.3 聚合路由

在R1上对192.168.1.0和192.168.2.0进行聚合:

查看R1路由表,明细路由被抑制,生成聚合路由。

查看R2的路由表,明细路由消失,变成聚合路由。由此可见,被抑制的路由是不会被传递的。

2.7 BGP通告原则

BGP通告遵循以下原则:
(1)只发布最优且有效路由。
(2)从EBGP对等体获取的路由,会发布给所有对等体。
(3)IBGP水平分割:从IBGP对等体获取的路由,不会发送给IBGP对等体。
(4)BGP同步规则指的是:当一台路由器从自己的IBGP对等体学习到一条BGP路由时(这类路由被称为IBGP路由),它将不能使用该条路由或把这条路由通告给自己的EBGP对等体,除非它又从IGP协议(例如OSPF等,此处也包含静态路由)学习到这条路由,也就是要求IBGP路由与IGP路由同步。同步规则主要用于规避BGP路由黑洞问题。

2.7.1 第一条原则

第一条原则:只发布最优且有效(即下一跳地址可达)路由。
在R2查看去往192.168.0.0/16的路由,为有效且最优的:

但是R4上看确无效:

原因为下一跳10.1.12.1路由不可达。R2将路由传递给R4的过程中,保留了下一跳地址10.1.12.1。

解决方法是,在R2与R4对等体设置下一跳地址为本地地址(这里是回环地址):

重新查看,路由已经优选。

2.7.2 从第二条原则

第二条原则:从EBGP对等体获取的BGP路由,会发布给所有EBGP、IBGP对等体。
R4上有从R2学习的所有R1来的路由。

2.7.3 从第三条原则

第三条原则:从IBGP对等体获取的BGP路由,不会再发送给其他IBGP对等体。该条原则也被称为“IBGP水平分割”。
比如R4的从R2学习来的路由不再发送给R3。
配置R3与R4为iBGP对等体。

2.8 路由黑洞问题

BGP优选路由的原则是,下一条可达便认为是可用路由。假设当前R2与R3、R3与R4还没有配置iBGP邻接。R4中有到达192.168.1.0的路由,下一跳是10.10.1.2。但是R2为非直连下一跳,通过递归查询(10.10.1.2的下一跳为10.1.34.3)真正的下一跳为R3。而R3上并没有到达192.168.1.0的路由,导致数据包从R4发出后到达R3就被丢弃。

解决方法为**:igp路由器全互联。**
R3和R2、R3和R4也建立iBGP路由邻居。



问题:
R2、R3、R4直接已经iBGP全互联了,为什么还配置OSPF协议???
因为R2和R4直接iBGP互联使用的非直连口。如果没有ospf做支撑,R2和R4 lo0口无法相互可达,peer也就无法建立。

2.9 EBGP路由多跳问题


R4和R5之间是eBGP的关系,正常情况eBGP用直连作为peer的互联。但是R4和R5之间采用了冗余链路,无法使用直连建立邻居,只能使用lo0建立邻居关系。
但是发现R4和R5默认无法使用lo0正常建立邻接关系:

原因是缺省情况下,EBGP连接允许的最大跳数为1,即只能在物理直连链路上建立EBGP连接。
**解决方法是:**修改EBGP最大的允许跳数。

2.10 BGP邻居源目地址一致问题

BGP路由器向对等体发送TCP连接,正常使用路由的出口地址。如果使用lo口建立对等体关系,且不指定源地址,会导致两台路由器源目地址不一致,最终无法建立邻居关系。
以R2和R4为例:

因为tcp连接不成功,所以peer状态为active。

出口地址R4 10.1.34.4 向10.10.1.2发起TCP连接。10.10.1.2将连接重置,因为R2发现发起TCP连接的源地址 10.1.34.4 ,和自己指定的peer 10.10.1.4不一致。同理10.1.23.2发起的连接,也被10.10.1.4也被重置。
所以要保证2台路由器源目一致性,需要bgp里面配置源端口。

3.总结

(1)路由黑洞问题:AS内部路由器有多个,iBGP全互联可避免路由黑洞问题(路由存在,但是真正的下一跳路由不存在)。
(2)BGP路由器运行IGP的作用:iBGP路由器之间往往用环回地址建立peer关系,往往用IGP协议做支撑。
(3)BGP源目地址互反问题:iBGP路由器通过回环地址建立peer关系,BGP源地址默认使用出口地址。需要注意源目地址互反问题。如果2台路由器,源目地址不能互反,则peer关系无法建立。可以使用peer x.x.x.x connect-interface LoopBack0命令设置源地址为回环地址。
(4)修改下一跳地址:R2传递路由给R4,默认不修改下一跳地址,但是R4上没有下一跳的路由(IGP无此路由),导致BGP路由无效。可通过peer x.x.x.x next-hop-local命令修改下一跳地址为R2的地址。
(5)多跳问题:eBGP路由器之间建立peer如果使用loopback地址注意多跳问题,默认只允许1跳(直连),可通过peer x.x.x.x ebgp-max-hop 配置多跳。

BGP基础学习-实验报告相关推荐

  1. 2017-2018-2 20165236 实验四《Android开发基础》实验报告

    2017-2018-2 20165236 实验四<Android开发基础>实验报告 一.实验报告封面 课程:Java程序设计       班级:1652班       姓名:郭金涛     ...

  2. 2018-2019-2-20175225 实验四《Android开发基础》实验报告

    一.实验报告封面 课程:Java程序设计 班级:1752班 姓名:张元瑞 学号:20175225 指导教师:娄嘉鹏 实验日期:2019年5月14日 实验时间:13:45 - 21:00 实验序号:实验 ...

  3. 20175308 2018-2019-2 实验四 《Android开发基础》实验报告

    20175308 2018-2019-2 实验四 <Android开发基础>实验报告 实验要求 参考 Android开发简易教程 完成云班课中的检查点,也可以先完成实验报告,直接提交.注意 ...

  4. 计算机实验11公式与函数,《大学计算机基础》实验报告十一——Excel2003公式与函数的应用.doc...

    <大学计算机基础>实验报告 实验名称实验十一 Excel 2003公式与函数的应用学号123姓名123实验日期123实验学时2学时实验性质基础性实验 □ 综合.设计性 实验 □实验目的: ...

  5. 大一计算机应用的实验报告,大一《计算机应用基础》实验报告1.doc

    大一<计算机应用基础>实验报告1 <计算机应用基础>实验报告 班级:工管**** 学号:201011****** 姓名:*** 实验1 WINDOWS XP 综合练习 一.实验 ...

  6. ewb交通灯报告和文件_数字电路基础红绿灯实验报告.docx

    数字电路基础红绿灯实验报告 题目:红绿灯控制器 指导教师:莫琳 设计人员:谭晨曦班级:电信类111班日期:XX年5月25日 目录 一.设计任务书 二.设计框图及整机概述 三.各单元电路的设计方案及原理 ...

  7. 大学计算机基础实践教程实验八,《大学计算机基础》实验报告八.doc

    <大学计算机基础>实验报告八 <大学计算机基础>实验报告 实验名称实验八 Word图文混合排版学号123姓名123实验日期123实验学时2实验性质基础性实验 □ 综合.设计性 ...

  8. 计算机基础数据表示实验,2018大学计算机基础上机实验报告

    <2018大学计算机基础上机实验报告>由会员分享,可在线阅读,更多相关<2018大学计算机基础上机实验报告(15页珍藏版)>请在人人文库网上搜索. 1.实验(一)1:计算机硬件 ...

  9. 基于Kaggle心脏病数据集的数据分析和分类预测-StatisticalLearning统计学习实验报告

    基于Kaggle心脏病数据集的数据分析和分类预测-StatisticalLearning统计学习实验报告 一.实验准备 本数据来源于kaggle,包含14个维度,303个样本,具体的变量说明如下表所示 ...

  10. 浙江大学 计算机网络基础 实验报告,计算机网络基础-浙江大学实验报告

    计算机网络基础-浙江大学实验报告 本科实验报告课程名称: 计算机网络基础姓 名: 赖剑学 院: 软件学院系: 软件工程专 业: 软件工程学 号: 3052211006指导教师: 陆魁军 陈辉年 月 日 ...

最新文章

  1. [原] 探索 EventEmitter 在 Node.js 中的实现
  2. Redis中的Sentinel 验证
  3. [激励机制]浅谈内部竞争——如何让你的员工玩命干活?
  4. WPF的几种布局方式
  5. python3 windows console 输出乱码问题
  6. 蓝桥杯 ADV-155 算法提高 上帝造题五分钟
  7. 转载:建设工程中常见的项目建设管理模式有哪些(DBB模式、EPC模式)
  8. C# using的使用
  9. python异常类父类_python【第五篇】异常处理
  10. MySQL简明教程-下
  11. word总页数不包含封面_Word2016页码显示总页数不包含封面目录指导文档
  12. POI导出excel文件之取消合并单元格、删除列、移动列
  13. 汉字转拼音接口 get请求 无需注册
  14. 今年最后一场组队学习!
  15. 性能测试入门,其实很简单,看看这篇,好好学习
  16. 计算机故障图片,电脑提示损坏的图像该如何处理?
  17. 托盘装载问题(PLP)
  18. 感谢同济子豪兄的分享-关于RCNN论文的学习(二)
  19. Python-turtle绘画旅程第二站:Hello Kitty
  20. 子查询 navicat可视化,pymysql用法

热门文章

  1. CS品牌SD NAND在空气质量检测行业中的应用案例
  2. scanBasePackages扫包范围配置
  3. FL Studio Producer Edition 21.2.0. Build 3842破解激活版下载,Fl Studio 2024中文破解版补丁
  4. opencv打开TX2板载摄像头的正确方式
  5. Block.one支付3000万美元购买域名
  6. Elasticsearch个人心得笔记(四)
  7. 在 Mac 上将 PDF 转换为 PowerPoint 的 5 种解决方案
  8. 这个看看~~~~~~!!!
  9. 欧债收益率大幅攀升,欧央行政策放宽力度令人失望
  10. 外地学生来沪高考的看法。。。。