一、概述
- 路由器为了访问AS(自治系统)之外的网络,需要在路由表中加入这些网络的路由。
- 内部网关协议(IGP)只负责建立AS内的网络的路由,而外部网关协议可以在AS之间传递路由。
- 最早的一种外部网关协议(EGP)是EGP协议,只允许树形结构的连接。现在主要使用的是边界网关协议(BGP),允许各AS以图的方式连接。
- BGP协议采用可靠扩散(reliable flooding)的方法把AS内的网络的信息传遍整个因特网。
- 每个AS需要分配一个号码,与IP地址分配相同,全局AS号(1-64511)由ICANN的下属机构进行同一分配。64512-65535为私有的AS号。
二、工作原理
- 在AS中,每个运行了BGP协议的路由器被称为BGP路由器,所运行的BGP协议被称为BGP发言人(BGP Speeker),而其他路由器称为内部路由器(internal router)。BGP路由器也运行内部网关协议。
- BGP路由器之间可以通过TCP连接(端口号为179)建立相邻关系。
- AS内的两个BGP路由器之间建立的相邻关系称为iBGP(interior BGP)相邻关系,而位于不同AS的两个BGP路由器之间建立的相邻关系则称为eBGP(exterior BGP)相邻关系。
- BGP协议所扩散的网络前缀(网络号)称为网络层可达信息(Network Layer Reachability Information , NLRI)
- BGP路由器可以把网络层可达信息连同它们的属性一起通过相邻关系扩散给邻居,进而扩散到因特网中所有的BGP路由器。
- BGP路由器在NLRI引入BGP协议时扩散一次,并不定期扩散。
三、NLRI的形成和扩散
1、BGP Update分组的内容
- NLRI:表示一个网络(源分组所在网络)或者多个网络的汇总结果
- AS_PATH:记录已经经过的AS的AS号
- ORIGIN:指出形成NLRI的方法。IGP表示是由管理员加入的,IMCOMPLETE表示是聚合形成的
- NEXT HOP:表示上一个AS的出口IP地址,即上一个AS是从其中的哪个路由器的一个端口转发这些分组的(初始时为0.0.0.0)
在AS内扩散时,AS_PATH和NEXT_HOP一般不变;且除非进行路由聚合(aggregate),ORIGIN在扩散时一般不变。
2、原则
- 与谁建立相邻关系是由AS管理员指定的。把AS中哪些网络前缀形成NLRI发布出去一般是由AS管理员指定的,也可以采用自动产生(重发布)和聚合产生。这些指定网络只有发布路由表中存在才会被路由器扩散出去。如果它们失效则会把撤销路由的消息扩散出去。
- 为了防止NLRI在【AS之间】扩散时形成回路,BGP路由器会丢弃所收到的AS_PATH中【包含当前AS号】的NLRI。
- 为了防止NLRI在【AS内部】扩散时形成回路,BGP路由器不会把从iBGP邻居收到的NLRI转发给iBGP邻居。
- BGP路由器可以聚合若干个NLRI网络形成一个新的NLRI,即把多个路由聚合为一个路由,将NLRI的ORIGIN属性改为IMCOMPLETE
- 如果从多条路径收到同一个NLRI,在默认情况下选择AS_OATH中AS数最少的路径。
- BGP路由器(在转发时)根据NLRI的属性NEXT HOP查询IGP路由表得到NEXT HOP,就可以使用该路由。如果没有查询到匹配项,则丢弃该NLRI。
- 如果设置了IGP同步并且NLRI在IGP路由表中没有匹配项,该NLRI不能转发给eBGP邻居。
- 如果iBGP邻居之间的路由要经过内部路由,就要给IGP路由表注入AS外的路由,或者通过隧道技术连接iBGP邻居。
3、BGP分组类型
- OPEN报文:用于建立相邻关系;
- KEEPALIVE报文:用于判断邻居是否有效;
- UPDATE报文:用于扩散NLRI;
- NOTIFICATION报文:用于报告错误;