BGP–边界网关路由协议
世界那么大还是遇见你?,不是所有东西都可以这么幸运能够遇见。
网络中如果想要访问世界的某个人,我们知道,需要有路由,就像有地图你才能知道如何去往洱海,但是今天我想去巴黎,明天我想去纽约,真要写这么多路由,我小小一个路由器也承受不起呀,
那么该肿么办?
只好在一个区域范围内,找上这么几个人,专门将路由告诉给其他区域的人,区域之间传汇总的路由,全球都分成许多许多的区域,每个区域都有许多的负责人。
就像下图中一样,你想给她写封信,告诉她你还爱着她,知道她住哪儿,信写好了,你把信交给区域负责人,区域负责人将你的信交给她所在区域的负责人,那个区域负责人再将信交给了那个她,那个她看了信十分感动,回了你信,再又信去的方向返回,你拆开信一看:我都结婚了,你才想着找我?
本文包含以下内容:各位小伙伴按需阅读哦!
1.BGP设计特性
2.BGP特点
3.BGP数据包
4.BGP的工作过程
5.BGP的防环
6.简单的BGP配置
1.BGP设计特性
学习BGP协议,我们需要牢记以下几个特性!:在BGP的设计当中有不明白的地方,都还可以仔细揣摩一下它的设计特性
可靠性
大量的路由共享,取消周期更新
TCP 179端口工作TCP 仅基于单播通信
BGP协议需要单播建立邻居关系(手工指定邻居的ip地址)BGP可以非直连建邻(peer),BGP承载于IGP之上;大量的路由共享,取消周期更新
可控性 --- 建邻、路由宣告、选路控制(干涉选路)--非常容易进行选路控制
AS-BY-AS 以一个AS为一跳
2.BGP特点
无类别路径矢量 -----距离矢量的升级版---AS--BY--AS
使用单播更新来发送所有信息;
基于TCP 179端口工作增量更新--仅触发无周期
具有丰富的属性来取代IGP中度量进行选路----多个参数控制协议
可以在进项和出项对流量实施强大的策略--可控性
默认不被用于负载均衡-----通过各种选路规则仅仅产生一条最佳路径BGP
支持认证和聚合(汇总)
3.BGP数据包
BGP基于TCP的179端口工作;故BGP协议中所有的数据包均需要在tcp179端口会话建立后,基于TCP的会话来进行传输及可靠性的保障;首先通过TCP的三次握手来寻找到邻居。
Open 仅负责邻居关系的建立,正常进收发一次即可;携带route-id,hold time 默认3min
Keeplive 保活 周期1min查询邻居关系是否存在;实际保活TCP会话;
Update 携带路由条目 目标网络号+各种属性
Notification 出现错误数据时收发;
4.BGP的工作过程
工作过程便是配置过程,也是检查配置是否出错的过程,下面分为三张表:邻居表,bgp表,路由表来看bgp的工作过程,和后期检查bgp的配置情况!
1.管理员定义邻居的ip地址,前提要求对邻居ip可达; --- IGP可达,启动BGP协议后,先目标端口为179进行TCP的三次握手来建立TCP的会话;会话建立后,收发open报文来建立邻居关系,生成邻居表;
2.邻居关系建立后,邻居间使用update 共享路由条目,在收发了路由信息后,本地生成BGP表;Bgp表中装载本地发出及接收到的所有路由条目;
3.随后路由器将BGP表中的最优路径(不一定是最佳选路,仅为BGP参数最佳)加载于路由表中;收敛完成!仅keeplive周期保活即可;
对于结构突变:
新增网段 – BGP更新源设备将使用update来告知本地所有的邻居
断开网段 – BGP更新源设备将使用update来告知本地所有的邻居
无法沟通 – 3min hold time到时时断开邻居关系和TCP会话,之后删除从该邻居处学习到的所有信息;
BGP更新源设备并不一定直连断开或新增网段的设备,而是第一台将该路由发布到BGP协议中的路由器;
5.BGP的防环–水平分割防环
作为一个需要传递大量路由的协议来说,防环是必须的!!
1、EBGP水平分割—防止EBGP环路利用BGP条目中的as-path 属性,该属性将记录所有经过的AS编号;接收到的路由条目中若as-path中存在本地的AS号,将拒绝接收;
2、IBGP水平分割—防止、IBGP环路
基于AS-BY-AS特性,BGP的路由条目默认在一个AS内部传递时,其属性不变化;
IBGP水平分割--- 从一个IBGP邻居处学习到的路由条目不得传递给本地其他IBGP邻居;
因为BGP协议具有非直连建立邻居的能力,故在一个AS内部只要设备运行BGP协议,那么其必然存在EBGP邻居关系(一定连接了其他的AS);IBGP水平分割规则将导致在一个AS内部所有运行了BGP协议的路由器间,均需要建立IBGP邻居关系,才能正常传递路由条目---建立邻居关系的配置成指数增长;可以使用联邦和路由反射器来解决该问题;
本文中没有介绍路由黑洞和如何利用联邦和反射器来解决路由黑洞,将再下一篇文章中进行阐述。有兴趣的小伙伴可以关注我哦。
6.简单的BGP配置
实验需求如下图:
配置思路:
1.全网拥有有效ip地址,配置igp,先在as2里起ospf
2.起bgp建立bgp邻居关系
3.bgp网段宣告。
1.全网拥有合法IP地址,并在AS2内起ospf。
学到了相互的路由。
2.起bgp
在as2网段,只有r1的环回和r5的环回不知道。所以起bgp协议来传递r1和环回网段和r5的环回网段。
这里没有使用防止路由黑洞的方法,所以AS内所有路由器都起bgp协议。
需要建邻如下:
R1和R2之间直连建邻,两者都需要建邻。
R2和R3之间采用环回建邻居,
其实环回存在的目的就是为了建邻
R4需要和R3建邻,同时需要和R5建立,
如果采用直连建邻,必须选择一条路径来建立邻居关系,无法实现负载均衡,应该采用环回建立邻居,需要建立邻居,得先有对方的路由!。
可以看到,其没有R5环回的路由,故需要先写一条静态;路由,拥有了路由,可以访问才能建立bgp邻居
故需要写静态路由。
去往5的环回有是负载均衡的
同理在R5上配置静态到R4的环回。二者之间可以通信后,便可以建立邻居关系。
R4:
R5建邻如下:
2.2起bgp后查看邻居表!
通过查看邻居的状态观察建邻情况
发现45之间无法建邻居
因为需要修改ebgp之间的ttl值,这里默认为1.
修改后,邻居关系建立完成。
3bgp路由宣告
Bgp不负责计算路由,只负责转发路由。只需要将需要转发的网络进行宣告就ok了 在R1上宣告1的环回,随后可以在R2上看到他的路由。
R2会将学到的bgp路由传递给自己的bgp邻居。
但是,此时在R4上看不到这条路由,是由于bgp 的水平分割。从一台igp邻居处学到的路由不会传给下一个igp邻居。这里可以使R2和R4之间也建立邻居,便可实现路由的传递。
这时R4上便学到了R1的环回路由。更改路由下一跳为自己,便可以将路由传递到AS3去。
宣告了R5环回的路由。但是由于R4上有到达R5的静态路由,故,无法进行将R5的环回进行传递。
静态路由优于R5bgp传来的路由,这里可以通过修改静态路由的办法
按道理是只需要修改是静态路由和bgp宣告路由不同便可以,这里使用了没有改变,便采用修改环问为/24掩码,静态为/32位掩码的办法。
R4:
Undo ip route-static 5.5.5.5 255.255.255.0 45.1.1.2
Undo ip route-static 5.5.5.5 255.255.255.0 54.1.1.2
ip route-static 5.5.5.5 255.255.255.255 45.1.1.2
ip route-static 5.5.5.5 255.255.255.255 54.1.1.2
R5:
Undo ip route-static 4.4.4.4 255.255.255.0 45.1.1.1
Undo ip route-static 4.4.4.4 255.255.255.0 54.1.1.1
ip route-static 4.4.4.4 255.255.255.255 45.1.1.1
ip route-static 4.4.4.4 255.255.255.255 54.1.1.1
此时再查看bgp路由表
修改到达邻居的下一跳,可以使得其他邻居加表为优秀。
查看R1路由表:
拥有了网段的全部环回路由,进行ping测试。
而为什么直接ping5.5.5.5不能通的原因是,流量会从12网段发出,而R5上并没有12网段的路由,控制层面不可达。所以无法ping通。
实验到这里就结束了。
给博主点个赞吧,给生活加个油。!奥里给!干了兄弟们。