我是 BGP 新手 - 所以这当然是一个学习练习。我正在从 2 个路由上行链路上提供的 PA 空间转向拥有自己的 IP 空间和多宿主传输。
首先,单一交通运输提供商- 他们提供了 2 个 RJ45 电缆接口,每个接口都有不同的 /30 VLAN - 以连接到我的每个 Juniper EX3200 交换机。
我现在只打算采用默认路由 - 同时,我需要继续使用路由上行链路和 PA 空间 - 同时为新的 BGP 网关/网络维护另一个路由表。
有 2 个上行链路(ge-0/0/0 和 ge-0/0/1),我的 WAN 胶合块 VLAN 位于此上行链路上(vlan4000
)。VRRP 在此 VLAN 上运行,我的所有 IP 都从我的提供商路由到此虚拟 IP。然后内部路由通过 VLAN L3 接口直接进行。网关 IP(即我的提供商的路由器虚拟 IP)充当vlan4000
我的默认路由。
所以我知道我可能需要运行两个路由表(VRF)来将 BGP IP 与“其他”IP 分开 - 并且可能执行一些基于过滤器的转发来选择正确的网关。
我对这两本书都读得比较多,
- http://www.juniper.net/us/en/training/certification/JNCIA_studyguide.pdf
- http://www.juniper.net/us/en/training/certification/JNCIS_studyguide.pdf
为了更好地理解所需的配置。
从我迄今为止的(有限的)理解来看,我认为我需要......
- 与我的中转提供商建立 BGP 会话
- 通过我的 ASN 宣布我的 IP 块
- 通过该特定接口路由 BGP IP 块
- 在两个 EX3200 之间形成某种故障/HA,以便单一故障不会导致 BGP 会话中断。
我不太确定的是两台 EX3200 如何启动 BGP 会话。因为每台 EX3200 在两个独立的 VLAN 中都有自己的 IP(路由器 ID)——这似乎是两个独立的 BGP 会话——如果其中一个发生故障,我需要在每个 BGP 默认网关之间进行有条件的路由?
有没有人有从哪里开始的示例配置?
答案1
EX 交换机可以执行 VRF-Lite 来支持多个路由表。首先,您可以查看 Juniper 的这篇知识库文章:
http://kb.juniper.net/InfoCenter/index?page=content&id=KB14926
您需要的是 VRF/虚拟路由器的 BGP 支持。为此,您需要 EX 交换机上的 AFL 许可证。以下是 EX 系列的软件功能表,它总是有用的:
如果您已经安装了许可证,您可以配置路由实例及其下的 BGP 协议:
routing-instances {
test {
instance-type virtual-router;
protocols {
bgp {
local-as 65565;
}
}
}
eBGP(外部 BGP,对于您的提供商)会话通常在接口 IP 之间进行。因此,您可以在接口上的 /30 中配置您的 IP(在另一个交换机上重复第二个上行链路)并建立到提供商路由器 IP 的 BGP 会话。请您的提供商向您宣布默认路由。
您应该连接两台交换机并在它们之间使用 iBGP(内部 BGP),以便它们彼此之间获取路由信息。
如果一个上行链路出现故障或 BGP 会话断开,您的交换机将自动切换到另一个上行链路。
有关 EX 交换机上的 BGP 的一般信息如下:
这只是简短的回答。请注意,BGP 路由是一个非常广泛的主题,不仅会对您的网络造成破坏,还会对您的提供商网络造成破坏,在极端情况下甚至会破坏全球网络。我建议在初始设置时寻求专业帮助。
答案2
感谢@Sebastian 让我走上正轨。我想跟进我迄今为止在实验室中使用单个 EX3200 所学到/实施的内容。这是一个有效的配置。
我最初的请求中唯一遗漏的一点是高可用性如何为 BGP 连接上的默认网关工作 - 但我认为 iBGP 符合这一要求。
我可能会添加另一个路由实例来模拟第二个交换机 - 然后在分配给每个实例的接口之间运行物理中继。然后在两者上启动 eBGP 和 iBGP。
我设置了两个路由实例,以隔离两个网络(PA IP 和 BGP IP)和网关。
vlan.10
并vlan.20
作为 BGP 上行链路,vlan.3999
用于我们通过 ASN 宣布的 /22 IP。
vlan.30
是现有的 /24 PA 空间 - 具有到主网关的静态路由vlan.40
您可以看到 BGP 实例是在该路由实例上专门配置的 - 因此它不会在其他路由表之间共享。
routing-instances {
transit-bgp {
instance-type virtual-router;
interface vlan.10;
interface vlan.20;
interface vlan.3999;
routing-options {
router-id x.x.x.50;
autonomous-system xxxxx;
}
protocols {
bgp {
group bgp1 {
type external;
peer-as xxxxx;
neighbor x.x.x.109 {
import import-route-transit1;
export export-route;
}
}
group bgp2 {
type external;
peer-as xxxxx;
neighbor x.x.x.113 {
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 x.x.x.1;
}
}
}
}
因此,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
。还创建了导出要通过 BGP 公布的特定路由的策略。
policy-options {
policy-statement export-route {
term local-routes {
from {
route-filter x.x.x.0/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;
}
}
}
}
此时,一切都很完美,两个路由表都协调工作,但完全隔离。也就是说,彼此之间没有共享/泄露的路由。因此,我设置了一些基于过滤器的转发,以允许分发路由。
vlan
首先,我在界面上使用了输入过滤器
interfaces {
vlan {
unit 10 {
family inet {
address x.x.x.110/30;
}
}
unit 20 {
family inet {
address x.x.x.114/30;
}
}
unit 30 {
family inet {
filter {
input transit-pa-int;
}
address x.x.x.50/24;
}
}
unit 30 {
family inet {
address x.x.x.1/24;
}
}
unit 3999 {
family inet {
filter {
input transit-bgp-int;
}
address x.x.x.1/22;
}
}
}
}
使用以下防火墙规则
firewall {
family inet {
filter transit-pa-int {
term one {
from {
destination-address {
x.x.x.0/22;
}
}
then {
routing-instance transit-bgp;
}
}
term default {
then {
routing-instance transit-pa;
}
}
}
filter transit-bgp-int {
term one {
condition {
destination-address {
x.x.x.0/24;
}
}
then {
routing-instance transit-pa;
}
}
term default {
then {
routing-instance transit-bgp;
}
}
}
}
}