带默认路由的Juniper EX BGP

我是BGP新手 – 所以这当然是一个学习练习。 我正在从两个路由上行链路上提供的PA空间转移到拥有自己的IP空间和多path传输。

首先,只有一个转接服务提供商 – 他们提供了两个RJ45电缆,每个都有一个不同的/ 30个VLAN,以连接到每台Juniper EX3200交换机。

我只打算现在采取默认路由 – 同时,我需要继续使用路由的上行链路和PA空间 – 同时为新的BGP网关/networking维护另一个路由表。

有2个上行链路(ge-0/0/0和ge-0/0/1),我的WAN粘连块VLAN所在的VLAN( vlan4000 )。 VRRP在此VLAN上运行,所有IP都从我的提供商路由到此虚拟IP。 然后内部路由直接通过VLAN L3接口。 vlan4000的网关IP(即我的提供商的路由器虚拟IP)作为我的默认路由。

所以我知道,我可能需要运行两个路由表(VRF)来将BGP IP从“其他”IP分离 – 并且可能为select正确的网关做一些基于filter的转发。

我一直在做一些相当广泛的阅读,

  1. http://www.juniper.net/us/en/training/certification/JNCIA_studyguide.pdf
  2. http://www.juniper.net/us/en/training/certification/JNCIS_studyguide.pdf

要很好地理解所需的configuration。


从我迄今为止(有限)的理解,我认为我需要……

  1. 与我的运输提供商build立一个BGP会话
  2. 宣布我的IP块通过我的ASN
  3. 将BGP IP块路由到该特定接口
  4. 在两台EX3200之间形成某种故障/ HA,这样一次故障不会丢失BGP会话。

我基本上不确定的是两台EX3200如何启动它们的BGP会话。 由于每个VLAN在两个独立的VLAN中都有自己的IP(路由器ID) – 这看起来像是两个独立的BGP会话 – 如果任何一个出现故障,我需要在每个BGP默认网关之间有条件地路由?

有没有人有从哪里开始的任何示例configuration?

EX交换机可以做VRF-Lite来支持多个路由表。 要开始,您可以查看瞻博networking的这篇知识库文章:

http://kb.juniper.net/InfoCenter/index?page=content&id=KB14926

你需要的是对VRF /虚拟路由器的BGP支持。 为此,您需要EX交换机上的AFL许可证。 这是一个EX系列的软件function表,它总是有用的:

http://www.juniper.net/techpubs/en_US/junos10.2/topics/concept/ex-series-software-features-overview.html#layer-3-protocols-features-by-platform-table

如果您安装了许可证,则可以在其下configuration路由实例和BGP协议:

 routing-instances { test { instance-type virtual-router; protocols { bgp { local-as 65565; } } } 

eBGP(外部BGP,到您的提供商)会话通常在接口IP之间进行。 因此,您在一个接口上的/ 30上configuration您的IP(在另一台交换机上重复第二个上行链路),并将BGP会话build立到提供商路由器的IP。 要求您的提供商向您宣布默认路由。

你应该连接你的两台交换机,并且在它们之间说出iBGP(内部BGP),这样它们都可以获得彼此的路由信息​​。

如果一个上行链路失败或BGP会话丢失,您的交换机将自动切换到另一个上行链路。

有关EX交换机上BGP的一般信息在这里:

http://www.juniper.net/techpubs/en_US/junos10.4/information-products/pathway-pages/ex-series/bgp.html

这只是一个简短的答案。 请注意,BGP路由是一个非常广泛的话题,不仅在您的networking中,而且在您的提供商networking或极端情况下,甚至在全球范围内,都很容易造成严重破坏。 我build议为初始设置获得专业帮助。

谢谢@塞巴斯蒂安让我走上正轨。 我希望通过在实验室中使用单个EX3200所了解/实施的内容来跟进此事。 这是一个工作configuration。

我从原来的请求中唯一缺less的是高可用性如何在BGP连接上的默认网关上工作 – 但我认为iBGP将适合该账单。

我可能会添加另一个路由实例来模仿第二台交换机 – 然后在分配给每个实例的接口之间运行物理中继。 然后调出eBGP和iBGP。


我build立了两个路由实例,隔离两个networking(PA IP和BGP IP)和网关。

vlan.10vlan.20作为BGP上行链路, vlan.3999用于我们在ASN上宣布的/ 22个IP。

vlan.30是一个现有的/ 24的PA空间 – 在vlan.40上有一个到主网关的静态路由

您可以看到BGP实例是在该路由实例上专门configuration的,因此它不在其他路由表中共享。

 routing-instances { transit-bgp { instance-type virtual-router; interface vlan.10; interface vlan.20; interface vlan.3999; routing-options { router-id xxx50; autonomous-system xxxxx; } protocols { bgp { group bgp1 { type external; peer-as xxxxx; neighbor xxx109 { import import-route-transit1; export export-route; } } group bgp2 { type external; peer-as xxxxx; neighbor xxx113 { import import-route-transit2; export export-route; } } } } } transit-pa { instance-type virtual-router; interface vlan.30; interface vlan.40; routing-options { static { route 0.0.0.0/0 next-hop xxx1; } } } } 

所以这个vlan被分配如下

 vlans { bgp1 { vlan-id 10; l3-interface vlan.10; } bgp2 { vlan-id 20; l3-interface vlan.20; } liveips { vlan-id 3999; l3-interface vlan.3999; } routedips { vlan-id 30; l3-interface vlan.30; } routedgw { vlan-id 40; l3-interface vlan.40; } } 

然后为了确保两个BGP链路是优先的(如果有一个失败),设置策略来改变local-preference 。 还创build了一个策略来导出要通过BGP发布的特定路由。

 policy-options { policy-statement export-route { term local-routes { from { route-filter xxx0/22 exact; } then accept; } } policy-statement import-route-transit1 { term default { then { local-preference 220; next policy; } } } policy-statement import-route-transit2 { term default { then { local-preference 200; next policy; } } } } 

在这一点上 – 一切都很完美,两个路由表协调一致 – 但完全隔离。 IE浏览器。 彼此之间没有共享/泄露的路线。 所以我设置了一些基于filter的转发,以允许分发路由。

首先,我在vlan接口上使用了一个inputfilter

 interfaces { vlan { unit 10 { family inet { address xxx110/30; } } unit 20 { family inet { address xxx114/30; } } unit 30 { family inet { filter { input transit-pa-int; } address xxx50/24; } } unit 30 { family inet { address xxx1/24; } } unit 3999 { family inet { filter { input transit-bgp-int; } address xxx1/22; } } } } 

其中使用了以下防火墙规则

 firewall { family inet { filter transit-pa-int { term one { from { destination-address { xxx0/22; } } then { routing-instance transit-bgp; } } term default { then { routing-instance transit-pa; } } } filter transit-bgp-int { term one { condition { destination-address { xxx0/24; } } then { routing-instance transit-pa; } } term default { then { routing-instance transit-bgp; } } } } }