具有默认路由的 Juniper EX BGP

具有默认路由的 Juniper EX BGP

我是 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 分开 - 并且可能执行一些基于过滤器的转发来选择正确的网关。

我对这两本书都读得比较多,

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

为了更好地理解所需的配置。


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

  1. 与我的中转提供商建立 BGP 会话
  2. 通过我的 ASN 宣布我的 IP 块
  3. 通过该特定接口路由 BGP IP 块
  4. 在两个 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 系列的软件功能表,它总是有用的:

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

如果您已经安装了许可证,您可以配置路由实例及其下的 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 的一般信息如下:

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

这只是简短的回答。请注意,BGP 路由是一个非常广泛的主题,不仅会对您的网络造成破坏,还会对您的提供商网络造成破坏,在极端情况下甚至会破坏全球网络。我建议在初始设置时寻求专业帮助。

答案2

感谢@Sebastian 让我走上正轨。我想跟进我迄今为止在实验室中使用单个 EX3200 所学到/实施的内容。这是一个有效的配置。

我最初的请求中唯一遗漏的一点是高可用性如何为 BGP 连接上的默认网关工作 - 但我认为 iBGP 符合这一要求。

我可能会添加另一个路由实例来模拟第二个交换机 - 然后在分配给每个实例的接口之间运行物理中继。然后在两者上启动 eBGP 和 iBGP。


我设置了两个路由实例,以隔离两个网络(PA IP 和 BGP IP)和网关。

vlan.10vlan.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;
        }
      }
    }
  }
}

相关内容