`
biaoming
  • 浏览: 266430 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

用Zebra做BGP实验

阅读更多
RIP和OSPF都是内部网关协议(IGP),BGP属于外部网关协议(EGP)。BGP广泛用于Internet以连接 ISP,并将企业与ISP互连。

当BGP的影响被完全了解,并且至少下列情况之一存在时,在AS中使用BGP才是最恰当的:
1 AS允许数据包穿过它到达其它自治系统(例如,某个服务提供商)。
2 AS有到其它自治系统的多条连接。
3 必须对进入和离开AS的数据流进行控制。

对于互连的自治系统来说,BGP并不总是恰当的解决方案,如果有如下情况中的一个或多个时,不要使 用BGP:
1 只有到Internet或另一AS的单一连接。
2 无需考虑路由策略或路由选择。
3 路由器缺乏经常性的BGP更新的内存或处理器。
4 对路由过滤和BGP路径选择过程的了解十分有限。
5 在自治系统间的带宽较低。
在这些情况下,应该使用静态路由。

Zebra支持BGP-4和BGP-4+,下面实验只是演示BGP的基本命令,以及debug的一些信息。一个比较复杂 的用Zebra做BGP实验见http://www.unixreview.com/print/documentID=15977,有条件可以做一下。

Zebra使用bgpd程序实现BGP路由功能,但bgpd需要从zebra程序获得接口信息,所以zebra程序必须在 bgpd程序之前运行。

初始化第一台机器:

shell_1> cd /usr/local/etc
shell_1> cp zebra.conf.sample zebra.conf
shell_1> cp bgpd.conf.sample bgpd.conf
shell_1> zebra -d

还有一个bgpd.conf.sample2配置样例是用于IPv6的。

进入zebra设置IP

shell_1> telnet localhost 2601
Password:
Router> en
Password:
Router# conf t
Router(config)# hostname r1
r1(config)# int eth0
r1(config-if)# ip address 192.168.5.121/24
r1(config-if)# ctrl+z
r1# copy run start

进入第一台机器的bgp设置

shell_1> bgpd -d

启动bgpd,我们看到TCP端口179已经打开。两台BGP路由器相互间建立一条TCP连接,交换消息以打开 和确认连接参数。这两台路由器被称为对等路由器,或者邻居。

shell_1> telnet localhost 2605
Password:
bgpd> en
bgpd# conf t
bgpd(config)# hostname r1_bgpd
r1_bgpd(config)# router bgp 7675

配置样例里已经指定了AS为7675,我们懒的改就拿来用。AS是一个16bit的数字,其范围从1到 65535。RFC 1930给出了AS编号使用指南。从64512到65535的AS编号范围是留作私用的,类似私有IP。

r1_bgpd(config-router)# network 192.168.5.0/24
r1_bgpd(config-router)# neighbor 192.168.5.121 remote-as 7676

查看bgp信息:

r1_bgpd# sh ip bgp
BGP table version is 0, local router ID is 192.168.5.123
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal
Origin codes: i - IGP, e - EGP, ? - incomplete

Network Next Hop Metric LocPrf Weight Path
*> 192.168.5.0 0.0.0.0 32768 i

Total number of prefixes 1

把log记录到文件:

r1_bgpd# conf t
r1_bgpd(config)# log file /usr/local/etc/bgpd.log

打开debug选项:

r1_bgpd(config)# exit
r1_bgpd debug bgp events
r1_bgpd debug bgp keepalives
r1_bgpd debug bgp updates

然后在shell下用tail查看log记录:

shell_1> tail -f /usr/local/etc/bgpd.log
--------------------------------8<---------------------------------------
2002/04/29 19:13:08 BGP: 192.168.5.121 [Event] Connect start to 192.168.5.121 fd 10
2002/04/29 19:13:11 BGP: 192.168.5.121 [Event] Connect failed (Operation now in progress)
--------------------------------8<---------------------------------------

r1不能连接邻居192.168.5.121。

第二台机器的设置

前面的初始化和第一台一样,不过这里名字设成r2便于辨认,IP设成了192.168.5.123/24。

进入第二台机器的bgp设置

shell_2> bgpd -d
shell_2> telnet localhost 2605
Password:
bgpd> en
bgpd# conf t
bgpd(config)# hostname r2_bgpd

AS要设成不一样,所以修改一下:

r2_bgpd(config)# no router bgp 7675
r2_bgpd(config)# router bgp 7676
r2_bgpd(config-router)# network 192.168.5.0/24
r2_bgpd(config-router)# neighbor 192.168.5.123 remote-as 7675

这时第一台机器的log出现如下信息:

--------------------------------8<---------------------------------------
2002/04/29 19:16:35 BGP: [Event] BGP connection from host 192.168.5.121
2002/04/29 19:16:35 BGP: [Event] Make dummy peer structure until read Open packet
2002/04/29 19:16:35 BGP: 192.168.5.121 [Event] Transfer temporary BGP peer to existing one
2002/04/29 19:16:35 BGP: 192.168.5.121 [Event] Accepting BGP peer delete
2002/04/29 19:16:35 BGP: 192.168.5.121 send UPDATE 192.168.5.0/24 nexthop 192.168.5.123, origin i, path
2002/04/29 19:16:35 BGP: 192.168.5.121 rcvd UPDATE w/ attr: nexthop 192.168.5.121, origin i, path 7676
2002/04/29 19:16:35 BGP: 192.168.5.121 rcvd 192.168.5.0/24
--------------------------------8<---------------------------------------

两台bgp已经互连了。再看一下第一台机器的bgp信息:

r1_bgpd# sh ip bgp
BGP table version is 0, local router ID is 192.168.5.123
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal
Origin codes: i - IGP, e - EGP, ? - incomplete

Network Next Hop Metric LocPrf Weight Path
* 192.168.5.0 192.168.5.121 0 7676 i
*> 0.0.0.0 32768 i

Total number of prefixes 1

r1_bgpd# sh ip bgp neighbors
BGP neighbor is 192.168.5.121, remote AS 7676, local AS 7675, external link
BGP version 4, remote router ID 192.168.5.121
BGP state = Established, up for 00:01:13
Last read 00:00:13, hold time is 180, keepalive interval is 60 seconds
Neighbor capabilities:
Route refresh: advertised and received (old and new)
Address family IPv4 Unicast: advertised and received
Received 98 messages, 0 notifications, 0 in queue
Sent 103 messages, 0 notifications, 0 in queue
Route refresh request: received 0, sent 0
Minimum time between advertisement runs is 0 seconds

For address family: IPv4 Unicast
Community attribute sent to this neighbor (both)
1 accepted prefixes

Connections established 2; dropped 1
Local host: 192.168.5.123, Local port: 179
Foreign host: 192.168.5.121, Foreign port: 1029
Nexthop: 192.168.5.123
Read thread: on Write thread: off

Zebra还支持很多BGP的特性,请参考GNU Zebra Manual,有条件的可以做一下那些实验。
分享到:
评论
1 楼 dlhzt 2010-07-16  
1、能弄个图就好了
2、neighbor 这一项的配置有问题吧? 自己不能把自己作为“邻居”吧?

相关推荐

    通信与网络中的Zebra与BGP路由监测的实现

    通过路由软件Zebra实现一个具有部分路由器功能的监测代理,并将其连接到网络中一台BGP边界路由器,通过它们之间的BGP协议交互,监测代理可捕获到整个网络的路由信息,并籍此进行BGP路由监测。  1 引言  随着...

    BGP zebra开源代码

    基于TCP的路由协议BGP的源代码,由Zebra开源,包括OSPF,RIP,BGP等协议的具体实现。可用于基于TCP的应用层协议开发参考。尤其是VREP和RFC等标准的协议开发。

    Zebra与BGP路由监测的实现

    主要研究边界网关协议...通过路由软件Zebra实现一个具有部分路由器功能的监测代理,并将其连接到网络中一台BGP边界路由器,通过它们之间的BGP协议交互,监测代理可捕获到整个网络的路由信息,并籍此进行BGP路由监测。

    用 Linux (GNU Zebra) 打造路由器OSPF-BGP

    用 Linux (GNU Zebra) 打造路由器OSPF-BGP Linux 作为一种新近崛起的操作系统,由于其性能稳定,源码开放及价格方面的优势而逐渐被广大用户所接受。现在Linux的主要用武之地在于服务器领域,但是,经过适当的配置...

    zebra-0.94.rar

    Zebra是一种TCP/IP路由软件,它支持BGP-4、BGP-4+、OSPFv2、OSPFv3、RIPv1、RIPv2和RIPng。它符合GNU的GPL标准,可以运行在Linux和其它Unix变体系统上。Zebra是最先进的路由软件之一,最新版本可以从GNU Zebra Web...

    zebra-manual.pdf

    Zebra also supports special BGP Route Reflector and Route Server behavior. In addition to traditional IPv4 routing protocols, Zebra also supports IPv6 routing protocols. With SNMP daemon which ...

    GNU Zebra Routing

     Zebra是一种TCP/IP路由软件,它支持BGP-4、BGP-4+、OSPFv2、OSPFv3、RIPv1、RIPv2和RIPng。它符合GNU的GPL标准,可以运行在Linux和其它Unix变体系统上。Zebra是最先进的路由软件之一,最新版本可以从GUN Zebra Web...

    ZEBRA斑马打印机驱动 原装驱动

    ZEBRA斑马打印机驱动 原装驱动ZEBRA斑马打印机驱动 原装驱动ZEBRA斑马打印机驱动 原装驱动ZEBRA斑马打印机驱动 原装驱动ZEBRA斑马打印机驱动 原装驱动ZEBRA斑马打印机驱动 原装驱动ZEBRA斑马打印机驱动 原装驱动...

    Zebra框架介绍及帮助

    Zebra是一个遵循GUN标准的免费路由软件包,提供基于TCP/IP路由服务,支持RIPv1、RIPv2、RIPng、OSPFv2、OSPFv3、BGP-4、BGP-4+、ISIS等众多路由协议。除了传统的 IPv4路由协议,Zebra也支持IPv6路由协议

    java调用Zebra Demo

    java调用Zebra标签打印机 中英文数字条码混合标签,可自由控制格式和排版

    Zebra-ZPLIIZBI编程指南

    明,并提供了有关如何使用这些命令的示例。 ZPL 无线命令 提供适用于无线打印服务器的新增和修改后的 ZPL 命令。 ZBI 命令 提供有关 Zebra Basic Interpreter 及其命令、说 明、格式和参数的详细信息。 SGD 打印机...

    zebra的相关说明

    zebra.pdf 主要对zebra的内容进行讲解说明,可以基本让你认识使用zebra。

    zebra-vtysh简析

    简要介绍了zebra-vtysh的架构以及相关的命令实现

    C# 直接使用Zebra 指令控制zebra 打印机打印

    C# 直接通过zebra 指令控制斑马打印机,打印条码

    用Zebra在Linux上构建路由器实战记录

    用Zebra在Linux上构建路由器实战记录

    大众点评开源的数据库访问层中间件 Zebra.zip

    Zebra是点评内部使用的数据库访问层中间件,它具有以下的功能点:配置集中管理,动态刷新支持读写分离、分库分表丰富的监控信息在CAT上展现其中的三个组件的功能分别是:zebra-api : 最主要的访问层中间件zebra-ds-...

    zebra条码打印机SDK开发包

    zebra条码打印机SDK开发包

    linux下zebra命令行编程

    讲述的是动态路由quagga(或者说是之前的zebra)的命令行基本使用

    SAP中如何通过SMARTFORM 在ZEBRA 打印机打印条码

    SAP中如何通过SMARTFORM 在ZEBRA 打印机打印条码

    斑马Zebra WIN XP 条码打印机驱动最新下载Seagull(7.1.9)

    斑马Zebra条码打印机驱动最新下载Seagull(7.1.9) Zebra 105 Zebra 105S (152 dpi) Zebra 105S (203 dpi) Zebra 105S (300 dpi) Zebra 105Se (152 dpi) Zebra 105Se (203 dpi) Zebra 105Se (300 dpi) Zebra ...

Global site tag (gtag.js) - Google Analytics