BGP 是不同自治系统的路由器之间交换路由信息的协议。BGP较新版本是2006年1月发表的BGP-4(BGP第4个版本),即RFC 4271 ~ 4278。可以将BGP-4简写为BGP。
互联网的规模太大,使得自治系统之间路由选择非常困难。对于自治系统之间的路由选择,要寻找最佳路由是很不现实的。
当一条路径通过几个不同AS 时,要想对这样的路径计算出有意义的代价是不太可能的。比较合理的做法是在AS之间交换“可达性”信息。自治系统之间的路由选择必须考虑有关策略。包括政治、安全或经济方面的考虑。因此,边界网关协议BGP只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子), 而并非要寻找一条最佳路由。采用路径向量路由选择协议(path vector)。
每一个自治系统的管理员要选择至少一个路由器作为该自治系统的“BGP 发言人”(BGP speaker)。一般说来,两个BGP发言人都是通过一个共享网络连接在一起的,而BGP发言人往往就是BGP边界路由器,但也可以不是BGP边界路由器。
一个BGP 发言人与其他自治系统中的BGP发言人要交换路由信息,就要先建立TCP连接(端口号为179),然后在此连接上交换BGP报文以建立BGP会话(session),利用BGP会话交换路由信息。路由的增加、撤销、报告出错等情况。
使用TCP连接能提供可靠的服务,也简化了路由选择协议。使用TCP连接交换路由信息的两个BGP发言人, 彼此成为对方的邻站(neighbor)或对等站(peer) 。
BGP 发言人和自治系统 AS 的关系
BGP所交换的网络可达性的信息就是要到达某个网络所要经过的一系列AS。当BGP发言人互相交换了网络可达性的信息后, 各BGP发言人就根据所采用的策略从收到的路由信息中找出到达各AS的较好路由。这是个树形结构,不存在回路。
自治系统AS2的BGP发言人通知主干网AS1的BGP发言人:“要到达网络N1、N2、N3和N4可经过AS2。”
主干网还可发出通知:“要到达网络N5、N6和N7可沿路径( AS1,AS3)。”
BGP 协议交换路由信息的结点数量级是自治系统数的量级,这要比这些自治系统中的网络数少很多。
每一个自治系统中BGP发言人(或边界路由器) 的数目是很少的。这样就使得自治系统之间的路由选择不致过分复杂。
BGP支持CIDR,因此BGP的路由表也就应当包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列。
如何避免路由环路?BGP发言人需检查收到的其他BGP发言人发来的路径通知中本自治系统是否已在其中,如在其中,则此条路由将被丢弃或忽略。
在BGP刚刚运行时,BGP的邻站是交换整个的BGP路由表。但以后只需要在发生变化时更新有变化的部分。这样做对节省网络带宽和减少路由器的处理开销都有好处。
BGP-4 共使用四种报文
- (1) 打开(OPEN) 报文,用来与相邻的另一个BGP发言人建立关系。
- (2) 更新(UPDATE) 报文,用来发送某一路由的信息, 以及列出要撤消的多条路由。BGP协议的核心内容。
- (3) 保活(KEEPALIVE) 报文,用来确认打开报文和周期性地(30秒)证实邻站关系。
- (4) 通知(NOTIFICATION) 报文,用来发送检测到的差错。
BGP 报文具有通用首部
RIP、OSPF、BGP比较
- RIP使用UDP,OSPF使用IP,BGP使用TCP。这样做有何优点?为什么?RIP周期性与邻站交换信息而BGP为什么不这样做?
- RIP只和邻站交换信息,UDP虽不保证可靠交付,但UDP开销小,可以满足RIP的要求,并且由于使用UDP,RIP周期性地与邻站交换信息。来克服UDP不可靠的缺点。
- OSPF使用可靠的洪泛法,所以直接使用IP,好处就是灵 活性好开销小。
- BGP需要交换整个路由表和更新信息,所以要保证正确, 运用TCP,由于BGP使用TCP所以已经能够保证可靠交付, 用不着继续周期性交互信息。