Answers:
BGP始终仅向其对等方通告最佳路径。对于eBGP,iBGP,路由反射(这只是iBGP的特例),以及您可能使用BGP的任何其他方式,都是如此。
但是,是的,您是对的,如果您要向提供者A和B发送广告,并且我也与提供者A和B具有连接和BGP会话,那么我应该在BGP表中看到这两个路径。我可能看不到路由表中创建的多个路由...这是我的设备配置以及是否允许将相同AS路径长度的多个路由插入路由表的问题...通常BGP仅会安装一个单一路线。但是,BGP表应该显示两个提供商的通告。
实际上...即使我正在与提供程序B和C甚至是C和D对等,只要您可以通过B,C和D访问,我仍应在BGP表中看到多个路径。相等,我的设备应该选择B,因为那应该是最短的AS路径,但是我仍然会看到来自C和D的AS路径较长的路径。现在,也许C和D都认为通过A的路径比穿过B的路径,那么我看到的路径将具有AS路径“ AC”和“ AD”,因此看起来好像您根本没有连接到B,但是如果穿过A的路径消失了,那么通过B的路径将继续通过C和D传播。
如果您可以提供一些具体信息...如果您愿意分享这些甚至是您正在宣传的广告块....其他人可以看看我们所看到的内容,并可能给出一些更具体的指导。
这些答案尚未涵盖的一个方面是BGP“添加路径”,它使BGP对等体不仅可以发送其最佳路由,还可以发送其部分或全部替代路由。
这在iBGP上最有用(也可能可行),并提供了更好的ECMP。
对于EBGP,如果在单个路由器上有到同一对等方的多个会话,则应使用BGP“ multipath”来允许ECMP。根据SP网络中路由反射的方式和位置,这可能导致所有会话的使用相当均匀。
这是Dave Ward(当时是Juniper,现在是Cisco)的有关添加路径的演示:
http://www.nanog.org/meetings/nanog48/presentations/Tuesday/Ward_AddPath_N48.pdf
通常,BGP对等体只能相互发送一条路径,该路径的任何更新都将替换现有路径。
但是,BGP有一个扩展,通常称为BGP扩展,additional-paths
它在发送到对等方的每条路由上放置一个标识符,从而使BGP对等方可以交换到一条路径的多条路由,从而不仅为流量工程提供了更大的范围,而且还为您提供了更大的范围由于可以将非最佳路径前缀作为备用路由安装在FIB中,因此在撤消最佳路径时可以缩短收敛时间,这是在撤消最佳路径时使用的备用路径-如果您需要重新运行完整的Internet表,因为Cisco路由器上的BGP扫描器最多每30秒运行一次,而走过300,000条路由会造成损失。
请注意,BGP附加路径与ECMP无关,因为显然,我们正在谈论使用相同的下一跳接收多个前缀-唯一的例外是您正在运行iBGP 而不使用next-hop-self
(或做肮脏的事情)的情况。与保留了下一跳的eBGP)
由于它是扩展,因此两个路由器都必须支持它并在连接时协商功能(或者具有协商的动态功能)。它可与eBGP和iBGP一起使用。
您的问题不是BGP本身,而是ISP策略。并非总是(无论是出于政策还是出于错误)您的提供商都会向上游宣布您的空间。您是使用PI还是PA?
答案不是简单的“是”或“否”,但我认为从本质上讲您的观察确实是正确的,“事实并非如此”。
有关更多详细信息,请参见此处。
出于策展的考虑,SE倾向于纯链接到其他页面的答案,但是,如果某天源消失或更改,我将在此重现一些答案。
最佳路径算法如何工作
BGP将第一个有效路径分配为当前的最佳路径。然后,BGP将最佳路径与列表中的下一个路径进行比较,直到BGP到达有效路径列表的末尾。此列表提供了用于确定最佳路径的规则:
1)选择权重最高的路径。
注意:WEIGHT是思科特定的参数。它在配置它的路由器本地。
2)优先选择具有最高LOCAL_PREF的路径。
注意:没有LOCAL_PREF的路径被认为具有通过bgp default local-preference命令设置的值,或者默认具有100的值。
3)首选通过网络或聚合BGP子命令或通过IGP重新分配在本地发起的路径。
由network或redistribute命令来源的本地路径优先于由aggregate-address命令来源的本地聚合。
4)建议使用AS_PATH最短的路径。
注意:请注意以下事项:
如果已配置bgp bestpath as-path ignore命令,则跳过此步骤。
无论集合中有多少个AS,AS_SET都将计为1。
AS_PATH长度中不包括AS_CONFED_SEQUENCE和AS_CONFED_SET。
5)优先选择原点类型最低的路径。
注意:IGP低于外部网关协议(EGP),而EGP低于INCOMPLETE。
6)优先选择具有最低多重退出识别符(MED)的路径。
注意:请注意以下事项:
仅当第一个(相邻)AS在两条路径中相同时,才会进行此比较。任何联盟子自治系统都将被忽略。
换句话说,仅当AS_SEQUENCE中的第一个AS对于多个路径相同时才比较MED。任何前面的AS_CONFED_SEQUENCE都将被忽略。
如果启用了bgp always-compare-med,则将比较所有路径的MED。
您必须在整个AS上禁用此选项。否则,可能会发生路由循环。
如果启用了bgp bestpath med-confed,则将比较仅由AS_CONFED_SEQUENCE组成的所有路径的MED。
这些路径起源于本地联盟。
在插入BGP表之前,将从MED值为4,294,967,295的邻居接收的路径的MED进行更改。MED更改为4,294,967,294。
除非您启用了bgp bestpath med missing-as-worst,否则没有MED接收的路径的MED分配为0。
如果启用了bgp bestpath med Worth-as-worst,则路径的MED分配为4,294,967,294。
bgp确定性命令也可以影响此步骤。
有关演示,请参考BGP路由器如何使用多出口标识符来选择最佳路径。
7)优先于iBGP路径使用eBGP。
如果选择了bestpath,请转到步骤9(多路径)。
注意:包含AS_CONFED_SEQUENCE和AS_CONFED_SET的路径在联盟本地。因此,这些路径被视为内部路径。外部联邦与内部联邦之间没有区别。
8)将IGP度量最低的路径优先于BGP下一跳。
继续,即使已经选择了bestpath。
9)确定是否需要在BGP多路径的路由表中安装多个路径。
如果尚未选择bestpath,请继续。
10)当两条路径都在外部时,请优先选择先接收的路径(最旧的一条)。
由于新路径不会取代旧路径,因此此步骤将路由振荡最小化,即使根据下一个决策标准(步骤11、12和13),新路径也将是首选路径。
如果以下任何一项为真,请跳过此步骤:
您已启用bgp最佳路径比较路由命令。
注意:Cisco IOS软件版本12.0.11S,12.0.11SC,12.0.11S3、12.1.3、12.1.3AA,12.1.3.T和12.1.3.E引入了此命令。
路由器ID对于多条路径是相同的,因为路由是从同一路由器接收的。
当前没有最佳路径。
例如,当提供路径的邻居掉线时,当前的最佳路径可能会丢失。
11)优先使用来自路由器ID最低的BGP路由器的路由。
路由器ID是路由器上的最高IP地址,优先选择环回地址。另外,您可以使用bgp router-id命令手动设置路由器ID。
注意:如果路径包含路由反射器(RR)属性,则在路径选择过程中将始发者ID替换为路由器ID。
12)如果多个路径的始发者或路由器ID相同,则首选具有最小群集列表长度的路径。
仅在BGP RR环境中存在。它允许客户端与RR或其他群集中的客户端对等。在这种情况下,客户端必须知道RR特定的BGP属性。
13)优先选择来自最低邻居地址的路径。
该地址是BGP邻居配置中使用的IP地址。该地址对应于与本地路由器的TCP连接中使用的远程对等方。
话虽如此,我可能是错的。我是这个领域的新手。