`
biaoming
  • 浏览: 269765 次
  • 性别: 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 这一项的配置有问题吧? 自己不能把自己作为“邻居”吧?

相关推荐

    BGP zebra开源代码

    4. **模拟和测试**:利用Zebra,可以构建虚拟环境,模拟各种网络拓扑和路由场景,进行实验和测试。 在"zebra-0.95a"这个压缩包中,包含了Zebra的特定版本,这为我们提供了一个特定时间点的软件快照,可以用来研究...

    用Zebra在Linux上构建路由器实战手册

    Zebra 是一款功能强大的 TCP/IP 路由软件,它支持多种路由协议,包括 BGP-4、BGP-4+、OSPFv2、OSPFv3、RIPv1、RIPv2 和 RIPng。这一开源软件遵循 GNU 通用公共许可证发布,可以在 Linux 以及其他的 Unix 变体操作...

    zebra的相关说明

    Zebra是一款开源的路由软件,它提供了一套完整的路由协议栈,包括RIP、OSPF、BGP等,广泛应用于网络管理和研究领域。Zebra因其高度模块化的设计、强大的功能以及友好的用户界面而受到欢迎。本文档旨在帮助读者了解...

    Zebra使用手册

    Zebra是一款强大的TCP/IP路由软件,支持多种路由协议,如BGP-4、BGP-4+、OSPFv2、OSPFv3、RIPv1、RIPv2和RIPng,适用于Linux和其他Unix变体系统。它的出现打破了传统路由构建的局限性,尤其是对于那些受制于实验环境...

    zebra-0.95a及安装使用手册

    这些协议是互联网路由的基础,通过Zebra,用户可以在本地环境中进行实验,理解它们的工作原理,而无需实际的硬件设备。 在模拟路由器的过程中,Zebra提供了一个命令行接口(CLI),类似于真实的路由器配置界面。...

    zebra-quagga-linux-open-router-software

    Zebra是日本NTT实验室开发的一个网络路由服务软件,它提供了一个实时的操作系统接口,用于管理和控制路由协议。Zebra的核心功能包括路由表的维护、路由更新的处理以及与各种路由协议(如RIP, OSPF, BGP等)的交互。...

    router(Quagga-zebra)

    理解Quagga和Zebra的工作原理和使用方法对于网络管理员和系统集成者来说至关重要。它们允许用户在不依赖商业路由器的情况下搭建和管理复杂的网络环境,同时提供了高度的灵活性和可定制性。通过学习和实践这些开源...

    Linux下建立网络路由器(上).pdf

    Zebra是一个TCP/IP路由软件,支持多种路由协议,包括BGP 4、BGP 4+、OSPF v2、OSPF v3、RIP v1、RIP v2和RIPng。它遵循GNU的GPL标准,可以在Linux和其他Unix变体系统上运行。Zebra是最先进的路由软件之一,最新版本...

    Ubuntu16下quagga进行网络路由仿真.pdf

    - 查看配置文件:进入`/etc/services`,编辑`/etc/quagga/daemons`文件,开启必要的服务,如zebra、bgpd、ospfd和ripd。 - 复制示例配置文件:从`/usr/share/doc/quagga/examples`目录中将`.conf.sample`文件复制...

    Ubuntu16下quagga进行网络路由仿真.doc

    本实验的目的是使用 Quagga 在 Ubuntu 16 下进行网络路由仿真,熟悉 Quagga 的安装、配置和使用。同时,通过实验,我们可以了解路由协议的工作原理和 Quagga 的配置方法。 实验环境 实验环境包括: * 软件:Linux...

    Linux Network 实现路由器功能,包括RIP,OSPF,BGP,其中也加载了mpls.zip

    RIP使用周期性更新来传播路由信息,存在慢收敛和环路问题,但在教育和实验环境中仍然常见。 2. **OSPF(Open Shortest Path First)**:OSPF是IETF制定的链路状态路由协议,适用于大型网络。它使用Dijkstra算法计算...

    基于软路由系统的计算机网络实验教学改革研究.docx

    6. 在实验中,学生可以进行各种网络实验,如路由协议的学习(如OSPF、BGP)、网络故障排查、网络安全测试等,体验接近真实的网络环境。 这种基于软路由系统的实验教学方法不仅提供了高度仿真的网络环境,还鼓励学生...

    开源项目-osrg-gobgp.zip

    Gobgp是OSRG(Open Source Routing Group)组织开发的一个强大的、灵活的BGP实现,它旨在为研究、实验和生产环境提供服务。这个开源项目允许开发者和网络工程师深入了解BGP的工作原理,并对其进行定制,以满足特定...

    Quagga 开源路由协议栈

    同时,由于Quagga是用C语言编写的,因此它在资源效率方面表现出色,适用于内存和计算能力有限的环境。 对于希望深入学习和理解网络路由协议的IT从业者来说,Quagga是一个理想的工具。通过阅读和分析源代码,可以...

    quagga-0.99.21.tar.gz

    4. **BGP**:Border Gateway Protocol(边界网关协议)是互联网上广泛使用的自治系统之间的路由协议,用于在不同的AS之间交换路由信息,是互联网的重要组成部分。 Quagga的源码特性使其适合于开发者和网络管理员...

Global site tag (gtag.js) - Google Analytics