网工笔记(四):BGP边界网关协议

BGP边界网关协议是路由协议中最重要的一个,今天我们拥有信息丰富的因特网正是因为有BGP,它让所有网络供应商得以把各自的网络连接到因特网与全球网民分享。对于要接入因特网的机构,BGP是唯一可用的路由协议。BGP协议从其提出的开始就是为因特网服务,要让全球成千上万的路由器连接起来,对于BGP来说其最重要的特性是稳定和可扩展性(Salability)。稳定压倒一切,对于常用BGP的网工来说理解这点很重要。

在今天的数据中心中BGP也成为了主流的路由协议,随着数据中心的规模在扩大,对扩容能力和多路径的需求,Leaf-Spine成为了数据中心的主流网络架构,而BGP的属性天然符合这个架构的需求。下文会简要地讲解一下BGP的基础和主要属性,和一些对排错的方法。

  • BGP基础
  • BGP报文类型和状态机
  • BGP配置
  • BGP表
  • BGP的几个常用配置
  • BGP选路 (题目太大需分文章论述)
  • 排错清单

BGP基础

说到BGP首先要引出的概念就是AS -- Autonomous System, 中文翻译为自治系统。一般来说一个AS为一个独立的网络系统,这些系统之间用AS号来识别对方。中国联通,电信,移动都有各自的AS号,这些号统一由IANA这个国际协会分配,保证这些AS号的唯一性和可靠性,一些大型网路公司如阿里谷歌微软也会有自己的AS号。

BGP是基于path vector的路由协议,AS号的使用是为了防止路由环路。一个BGP路由器向另一个AS的路由器传路由时会把自己的AS号加到路由信息上。当一个路由器接收到一条含有自己AS号的路由时会丢弃这条路由从而避免环路的出现。在一个有多个AS参与的网路环境中,路由环路在拓扑上出现是正常的,AS1传给AS2,AS2传给AS3,AS3传会给AS1,通过检测AS号的防环机制避免了AS1无休止地把自己的路由传下去。

前面讲的都是不同AS之间运行BGP,在同一个AS内也能运行BGP,自治域内路由器都用相同的AS号,这种BGP被称之为iBGP;对应的,在不同AS之间运行的BGP被称之为eBGP。iBGP与eBGP在运行机制上是有区别的,主要一点是防环机制的不同,后面会详细讨论。i在这里先要带出的一点是,AS号的范围有分共有段和私有段。IANA规定了AS号64512 -- 65535为私有AS号,这些号不在公共网络上出现,留给iBGP使用。在RFC4893中提出了使用4字节(原为2字节)的AS号,这扩大了AS号的可用范围。

179是BGP的TCP端口号,BGP使用TCP连接来建立邻居关系。这点很特别BGP自己是3层协议而TCP是4层协议,一般来说3层协议会用2层协议来建立邻居关系,例如OSPF,使用预留的组播地址来让路由器互相通信。BGP使用TCP来建立邻居关系, 因此在配置中必须指定邻居的IP,这点也与OSPF不一样,后者只需宣告接口,邻居通过在网络中泛洪来寻找到对方。

BGP报文类型和状态机

BGP有如下4种报文: 

Open  用于交互邻居信息并建立邻居关系
Update  向邻居更新路由
Notification  告知邻居有错误发生
Keepalive  类似hello报文的作用,让邻居关系保持建立的状态

以下是BGP使用TCP建立邻居的过程和每阶段对应的状态,在检测BGP邻居状态时常用这个命令show ip bgp summary

  1. BGP开启以后首先进入idle状态,这是BGP最初始的状态,这时候开始侦听端口179。
  2. 第二阶段进入connect / ative状态, 邻居之间要通过TCP的三次握手来建立一个TCP连接。邻居双方都会尝试发起TCP连接,首先发出SYN报文的路由器进入connect状态,接收到SYN报文的一方进入active状态。
  3. TCP连接建立后,邻居之间互相发open报文,open报文中包括BGP版本,AS号,Router ID,hold time和keepalive time,TTL等等这些基本信息。BGP会检查这些信息的正确性 -- 包括两边互相认知的AS号必须一致,例如在路由器1上配置了邻居路由器2的AS号为100,那么路由器2上的AS也应为100才能建立邻居关系;Router ID必须唯一,不同的路由器不能使用相同的Router ID。然后就是选择hold time和keepalive time, 两边会一致使用数值较少的配置。这阶段的状态为openSent。
  4. 当第三阶段的检查都通过了,路由器就进入openConfirm状态,等待邻居发送keepalive报文或notification报文。接收到keepalive报文就能进入establish状态;如果超过holdtime还没有接收到任何报文或接收到notification报文,该路由器会回到第一阶段idle状态。
  5. 如果一切顺利,最后就进入establish状态,邻居关系正式建立。

BGP配置

现在我们来看一下如何配置BGP。尽管BGP可以变出很多不同的配置套路很多,但其基本配置可以很简单。下面给出了BGP的最基本配置。在这配置中并没有使用私有段的AS号,这在实验环境中是可以的,只要不连到到因特网。 

路由器1

router bgp 200                                             <=== 用200作为AS号
   router-id 4.4.4.4
   neighbor 20.1.2.1 remote-as 100             <=== 邻居的IP和AS号
   netwwork 192.168.40.0/24                       <===  把这192.168.10.0/24网段放入BGP表中,以待发报到邻居

路由器2

router bgp 100                                            
   router-id 5.5.5.5
   neighbor 20.1.2.2 remote-

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值