HCNP Routing&Switching之BGP基础
前文我们了解了路由注入带来的问题以及解决方案相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15362604.html;今天我们来学习下新的路由协议BGP;
BGP简介
BGP的前身EGP设计非常简单,只能在AS之间简单的传递路由信息,不会对路由进行任何优选,也没有考虑如何在AS之间避免路由环路等问题,因而EGP最终被BGP取代;相比于EGP,BGP更具有路由协议的特征,比如邻居的发现和邻居关系的建立;路由的获取,优选和通告;提供路由环路避免机制,并能够高效传递路由,维护大量的路由信息;在不完全信任的AS之间提供丰富的路由控制能力;
AS简介
在EGP(exterior gateway protocol,外部网关协议)协议中,引入了AS(autonomous system,自治系统)的概念;所谓AS就是指有同一个技术管理机构管理,使用统一选路策略的一些路由器的集合;ASN(as number,AS编号),主要用来区分不同AS,除了能标识不同自治系统外,它在BGP中还有关键性作用,比如最佳路由的选举、环路避免、路由过滤;;AS的内部使用IGP(interior gateway protocol,内部网关协议)来计算和发现路由,比如ospf,RIP,IS-IS等;同一个AS内部的路由器之间是相互信任的,因此IGP的路由计算和信息泛洪完全处于开放状态,人工干预很少;即IGP建立邻居,发送hello包,计算路由,发现路由都是自动的,只要配置好对应的动态路由协议以后,建立邻居,发送hello包,计算路由等一系列操作都是自动的;对于不同AS之间的连接需求推动了外部网关协议的发展,BGP作为一种外部网关协议,用于在AS之间进行路由控制和优选;使用BGP作为传递路由的协议,则用户的路由域被作为一个整体和其他路由与进行路由交换,这个路由域就是AS;AS的概念是若干台路由器以及这些路由器组成的网络集合,这些路由器均属于同一管理机构,并执行统一的路由策略;运行BGP协议需要一个统一的自治系统号来标识路由域,即AS编号;每个自治系统都有一个唯一的编号,这个编号由IANA(The Internet Assigned Numbers Authority,互联网数字分配机构)分配;2009年1月之前,只能使用最多2字节长度的AS编号,即AS编号范围为0-65535,0和65535是保留;其中1-64511为公有AS,64512-65534为私有AS;在2009年1月以后,IANA决定使用4直接长度AS,范围是65536-4294967295;
常见AS号及查询网站
中国电信163(4134)、中国电信CN2(4809)、中国网通(9929);AS信息查询网站:https://whois.cnnic.cn/WhoisServlet;https://ip.sb/iana-asn/;查看自己属于哪个AS:https://ip.sb/;
BGP的基础作用



提示:如上图所示,BGP主要用于多个AS之间传递和控制路由信息;AS内部使用IGP来计算和发现路由,如ospf,IS-IS,RIP等;
BGP协议特点

提示:如上图所示,BGP可以可以跨越多跳路由器建立邻居关系;因为BGP是在AS之间传递路由,为保证数据的可靠性,BGP使用TCP作为其承载协议建立连接(主要是TCP可靠),因此与IGP逐跳路由器建立邻居不同,BGP可以跨越多跳路由器建立邻居关系;AS之间的路由器是不完全相互信任的,为实现路由按需求进行控制和优选,BGP设计了诸多属性;BGP是路径矢量协议,工作在TCP的179端口;仅支持增量式、触发式更新,它没有周期更新,提供定期存活消息验证TCP连接,即心跳包(keepalived)来检测邻居的存活,默认心跳包是每60秒发送一次,如果在3个周期都没有收到对方的心跳,此时对应BGP路由器就会认为对方挂了,即邻居断开;丰富的度量标准,即路径矢量或属性;专为大型互联网而设计,优于距离矢量协议;
为什么要使用BGP呢?
1、大量路由需要承载,IGP只能容纳千跳,而BGP可以容纳上万条路由;
2、支撑MPLS/VPN的应用,传递客户VPN路由;
3、策略能力强,可以很好的实现路由决策与数据控制;
BGP邻居概述
BGP Speakers:指运行BGP协议的路由器;
BGP Peers:指BGP邻居或者BGP对等体;
邻居关系建立在TCP连接的基础上,因此邻居不一定需要直连,可以通过IGP或静态路由来提供TCP连接的可达性;BGP建立邻居和IGP不同,IGP需要邻居直连(P2P除外,它可以不直连,但一般不推荐),使用组播,单播建立邻居,而BGP只能单播建立邻居;邻居必须手动指定,而非自动建立;建立邻居和IGP也不同,IGP协议只要配置好,对应邻居会自动发现,自动建立,而BGP必须手动指定,怎么建立邻居,和谁建立邻居;一台BGP路由器只能运行在一个AS内;这个AS我们可以类比ospf里的区域,对于BGP路由器来说,它只能属于一个AS,不像ospf一台路由器可以同时属于多个区域;
BGP邻居类型

提示:如上图所示,运行在相同AS内的BGP路由器建立的邻居关系为IBGP(Internal BGP)邻居;运行在不同AS之间的BGP路由器建立的邻居关系为EBGP(External BGP)邻居;
BGP基础配置
实验:如下拓扑,配置BGP邻居

分析:R1和R2在同一个AS内部,所以R1和R2他们建立IBGP邻居,而R2和R3他们处于不同AS,所以R2和R3只能建立EBGP邻居;
配置好各路由器的接口ip地址
R1的配置

R2的配置

R3的配置

在R1上配置BGP,指定R2为R1的邻居

提示:bgp 12后面的数字是指对应bgp所在as的编号,这个和IGP里面配置不同,IGP后面的数字是指对应进程号;其次手动指定邻居需要指定对应邻居的ip地址,以及邻居所属as编号;这样配置以后,R1就会向R2的12.0.0.2的179端口发起TCP三次握手,握手成功以后,开始建立邻居;
在R1上抓包

提示:可以看到R1向R2的179端口发送请求连接,但对方一直不搭理R1,所以导致R1的请求连接包一直被重置;其原因是R2上没有运行bgp,当然179端口也没有处于监听,所以R1一直不能建立连接;
在R2上配置BGP,并指定邻居为R1

查看R1上的抓包

提示:可以看到当R2配置好bgp,并指定邻居以后,对应R1TCP三次握手就成功了,对应成功以后,R1向R2发送open包,R2回复R1确认包;对应R2也会向R1发送tcp三次握手,握手成功以后,R2向R1发送open包,R1向R2发送open包,然后R1向R2发送心跳包,R2向R1发送心跳包,R1回复R2确认包;通过上述抓包过程可以看到,双方都需要建立TCP三次握手,并且建立成功以后,对应发送open包和心跳包;对应邻居建立成功;
验证:在R1查看bgp邻居

提示:可以看到在R1上能够查看到和R2建立起邻居关系,对应状态为established;这个状态就表示连接准备就绪,建立起TCP连接;
验证:在R2上查看bgp邻居

配置router id

提示:router id和ospf里的router id一样,用于标识bgp路由器;在配置过程中,如果我们没有配置,它也会自动选举,选举规则同ospf一样;这里还需要注意一点,bgp里更改router id会导致邻居宕掉,所以建议在规划好网络前配置好router id ;
配置R2和R3建立邻居

配置R3的邻居为R2

提示:上述命令表示指定邻居为23.0.0.3,对应邻居所在as编号为3;
在R3上配置邻居为R2

验证:R2和R3的邻居


提示:可以看到R2和R3也正常建立好邻居;后续我们就可以在对应bgp路由器里宣告网络;
HCNP Routing&Switching之BGP基础的更多相关文章
- HCNP Routing&Switching之BGP邻居建立条件、优化和认证
前文我们了解了BGP相关概念.AS相关概念以及BGP邻居类型.基础配置等,相关回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15370838.html:今天我们 ...
- HCNP Routing&Switching之BGP报文结构、类型和状态
前文我们了解了BGP的邻居建立条件.优化以及BGP认证相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15395723.html:今天我们来聊一聊BGP ...
- HCNP Routing&Switching之BGP路由宣告
前文我们了解了BGP报文结构.类型以及邻居状态相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15422924.html:今天我们来聊一聊BGP路由宣告 ...
- HCNP Routing&Switching之BGP防环机制和路由聚合
前文我们了解了BGP路由宣告相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15440860.html:今天我们来聊一聊BGP防环机制和路由聚合相关话题 ...
- HCNP Routing&Switching之BGP路由属性和优选规则
前文我们了解了BGP防环机制和路由聚合相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15458110.html:今天我们来聊一聊BGP路由属性和选路规 ...
- HCNP Routing&Switching之BGP路由控制
前文我们了解了BGP的路由属性和优选规则相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15489497.html:今天我们来聊一聊BGP路由控制相关话 ...
- HCNP Routing&Switching之BGP路由过滤和AS-Path-Filter
前文我们聊了下通过修改BGP路由属性来影响路由,从而达到控制BGP路由的目的:回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15495585.html:今天我们 ...
- HCNP Routing&Switching之BGP团体属性和团体属性过滤器
前文我们了解了BGP的路由过滤已经as-path过滤器的使用相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15542559.html:今天我们来聊一聊 ...
- HCNP Routing&Switching之VRRP基础
前文我们了解了链路高可用技术链路聚合相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16279078.html:今天我们来聊一聊另一种高可用技术,网关高 ...
随机推荐
- spring生命周期的应用
1.ApplicationContextAware 实现手工加载bean: 例:https://www.cnblogs.com/wala-wo/p/5119192.html https://www.c ...
- Navicate 连接阿里云MySQL(两种方式及原理讲解)
Navicate 连接阿里云(两种方式及原理讲解) 一.直连方式(通过3306端口) 1.概述 2. 环境准备 3.操作及讲解 二.使用SSH通道 1.概述 2.环境准备 3.操作及讲解 如果对你有帮 ...
- Difference between trustStore and keyStore in Java - SSL
Difference between trustStore and keyStore in Java - SSL trustStore vs keyStore in Java trustStore ...
- 设置 Qt GUI程序 printf输出到独立控制台
- 浅谈可持久化Trie与线段树的原理以及实现(带图)
浅谈可持久化Trie与线段树的原理以及实现 引言 当我们需要保存一个数据结构不同时间的每个版本,最朴素的方法就是每个时间都创建一个独立的数据结构,单独储存. 但是这种方法不仅每次复制新的数据结构需要时 ...
- vue element-ui 组件上传图片 以及对 图片的 宽高 和 大小 格式等 做出限制
vue 文件: 自行引用 elemen-ui <el-upload action=" 让后端给你上传地址 " ...
- Django——Paginator分页功能练习
1.路由urls.py from django.contrib import admin from django.urls import path from app01.views import in ...
- 第九章 Net 5.0 快速开发框架 YC.Boilerplate --定时服务 Quartz.net
在线文档:http://doc.yc-l.com/#/README 在线演示地址:http://yc.yc-l.com/#/login 源码github:https://github.com/linb ...
- 手把手教你 Docker Compose的安装和使用
一.Docker Compose是什么? Docker Compose是一个工具,用于定义和运行多容器应用程序的工具: Docker Compose通过yml文件定义多容器的docker应用: Doc ...
- 浅谈KMP模式匹配算法
普通的模式匹配算法(BF算法) 子串的定位操作通常称为模式匹配算法 假设有一个需求,需要我们从串"a b a b c a b c a c b a b"中,寻找内容为"a ...