BGP如何通过TCP工作?


13

据我所知,我们正在使用路由协议来实现第3层连接,我对BGP在基于L4的TCP上工作感到困惑。没有先前的L3连接如何建立L4 / TCP?

Answers:


17

TCP / IP套接字在两个特定寻址的端点之间通过网络建立端到端连接。BGP使用TCP / IP在路由器(任何交换路由信息的设备)之间进行通信。交换的信息由BGP对等方使用,以更好地选择他们选择将数据包发送到(即下一跳)数据包的方式。发送。

在互联网的最边缘,事情很容易。对您的Internet提供商来说,“一切都是这样”。在中间的更多地方,路由器可能有多种选择。因此,它使用TCP / IP在其路由邻居之间移动BGP通信。然后,当有多种方式使数据包到达目的地时,BGP信息会告诉路由器首选的路径。

端点(如Web浏览器)和路由器都 TCP / IP。但是路由器正在使用 TCP / IP(由TCP / IP数据包组成的BGP通信)来讨论如何处理它们需要路由的其他TCP / IP数据包。


我相信“但是路由器正在使用TCP / IP来讨论如何处理它们需要路由的其他TCP / IP数据包。” 本来是“但是路由器正在使用BGP来讨论如何处理它们需要路由的其他TCP / IP数据包。”
Olivier Dulac 2014年

1
...我也考虑过要这样写。在最后一句话中,我试图强调不同的设备如何通过TCP / IP来完成不同的任务。我将调整措辞。
克雷格·君士坦丁

13

路由协议不能“实现” L3连接。它们使用从其他路由器学到的信息填充路由器的路由(转发)表。

BGP是在TCP / IP上运行的“应用程序”。换句话说,BGP路由器使用TCP / IP与其他BGP路由器进行通信以交换路由信息。

为了使BGP工作,您必须已经在路由器之间建立了L3连接。


鸡肉和鸡蛋的问题。“为了使BGP工作,您必须已经在路由器之间建立了L3连接。” 由于BGP是事实上的互联网路由协议,因此如何在Interet中实现L3连接
混合

6
根本没有鸡肉和鸡蛋的问题。如我所说,路由协议不会创建L3连接。eBGP扬声器(几乎)始终直接彼此连接。iBGP发言人依靠基础网络来提供连接。换句话说,在运行BGP之前,首先需要连接。
罗恩·托恩

我试图了解它是如何开始的以及当今体系结构背后的原因是什么。因此,一开始有几个人使用运行IGP的专用网络,并说让我们连接网络?为什么要通过IP / TCP进行操作,如Novell或Appletalk等旧协议呢
混合

这些是不同的(但很好)的问题。答案将需要比评论部分更多的空间。如果您愿意的话,我们可以将其移到聊天室
Ron Trunk 2014年

6

OSI网络模型及其分层结构对于理解主机之间的端到端通信很有用,但并不是要真正解释网络控制平面的功能。建立完整的BGP连接时存在一个自举问题,但是这种自举发生的方式已广为人知,并且没有任何循环依赖性。

就BGP而言,形成邻接关系和交换信息的方式取决于会话的类型。

最简单的是eBGP。通常,eBGP在两个直接连接的路由器之间的TCP会话上运行。在这种情况下,每个对等方都知道如何与对方通信,因为它们两个都在同一子网上具有接口,因此无需使用外部路由协议来形成邻接关系。

使用iBGP,事情有些复杂。在最简单的配置中,自治系统中的所有路由器都将配置为全网状网络的一部分,并与网络中的所有其他路由器进行iBGP会话。在自治系统内,内部网关协议(例如OSPF或ISIS)可以建立内部路由拓扑。当IGP完成其工作时,所有路由器都将具有一个路由表,该表中填充了到所有iBGP邻居的路由,从而允许TCP会话形成而没有循环依赖性。

在并非所有自治系统中的路由器都使用完整的BGP表运行的情况下,事情会变得更加有趣。如果iBGP网格不完整,您可能会遇到以下情况:位于网络中间的路由器的表视图与其直接邻居不同。这将导致路由选择欠佳,并且在某些情况下,路由循环将导致设备之间的流量反弹,直到TTL过期。


5

该链接具有配置的静态地址和关联的路由条目,用于建立BGP会话。然后,使用BGP扩展路由表,并添加指向其他网络的条目。

由于BGP仅在直接对等方之间使用,因此,除了指向另一端的路由外,无需其他路由。

例如,如果要对等,我们会在/ 30或/ 31子网中达成一致,将一个地址分配给网络的每一端,并为此子网创建到该链接的网络路由,然后将另一个配置为BGP对等体,这时,我会得到您宣布要通过路由器发送的所有网络的附加路由条目(这又是本地静态配置的网络路由的一部分)。


西蒙,很高兴再次收到您的来信。您的答案仅针对eBGP,但iBGP对等方仅需要IGP(即OSPF)可达性。您能为iBGP案例添加更多吗?
Mike Pennington 2014年

0
                    ---        ---          ---          ---
                   | D |------| A |--------| B |--------| C |
                    ---        ---          ---          ---

假设A和B是路由器(在不同或相同的AS中),D和C是主机。现在,A和B彼此连接并且可以通信。但是D将如何知道C的位置以便它可以与C进行通信。当C要与D进行通信时,C也是如此。现在,如果我们在A和B之间运行BGP协议,它们将彼此交换第3层连接信息。 。简单来说,A会告诉B D已连接到B。然后,要么B可以将其传达给C,要么B是C的默认网关,则C可以通过任何一种方式获知D的位置。

因此,在这种情况下,如果A和B运行BGP协议,则在A和B之间传递第3层连接性信息。

因此,为了交换第3层路由信息,需要在两个系统之间预先建立BGP连接。我刚刚展示了一个简单的示例来回答您的查询。在实际情况下,BGP对等体之间交换更多的路由数据。

BGP通过TCP协议运行。因此,必须在它们之间打开TCP套接字,然后它们才能交换路由数据。


0

没有先前的L3连接?

“ L3连接性”不是一无所有。

设置路由器的管理员将使用IP地址和子网掩码配置接口。根据这些配置,将创建隐式路由表条目,以允许路由器与其邻居进行通讯。

然后,路由协议可以在此本地L3连接的顶部运行,以建立更长距离的L3连接。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.