BGP协议测试套开发及使用指导书

本文详细介绍了BGP协议的基本概念、消息类型及交互流程,并提供了测试套的开发方法,包括数据建模、状态建模和测试配置。通过Peach fuzzing工具,开发者可以进行BGP协议的测试与验证,确保路由器在不同场景下的正确运行。
摘要由CSDN通过智能技术生成


1     协议介绍

1.1   协议概述

BGP(BorderGateway Protocol,边界网关协议)是一种实现AS(自治系统)之间路由的距离矢量性动态路由协议。使用TCP作为其传输层协议(端口号为179),保证了协议传输的可靠性。BGP选择一条单一路径,默认为到达目的网络的最佳路径。这个最佳路径选择算法是通过分析路径属性来确定哪个路径将被作为最佳路径安装在BGP路由表中。

1.2   消息分类

(1)    OPEN  

OPEN数据包是TCP建立后发送的第一个消息,用于建立BGP对等体的关系。其内容为协议版本号、自治域号、路由器标示符、连接保持时间以及可选的能力参数。

(2)    UPDATE

UPDATE消息是路由信息实际载体,用于在对等体之间传递路由信息。其主要内容除必要的协议头外,最重要的是路由属性,针对某个可达网络前缀,路由属性对该前缀进行描述,对等体通过这些属性描述决定路由该被如何处理。

(3)    KEEPALIVE

KEEPALIVE消息在BGP会话中具有确认和保持连接的作用。在会话初始阶段,对等体进行OPEN消息协商时,该消息用来确认对方的OPEN消息;在连接建立后,对等体周期性发送,以保持连接有效。

(4)    NOTIFICATION  

NOTIFICATION消息被用来进行错误通知,在BGP会话的各个阶段中,如果一方对等体发现异常,可通过该消息通知对方,通过错误码和错误描述,该消息可以将错误信息进行分类及描述。

(5)    ROUTEFRESH   

ROUTEFRESH消息用于通知对方重发路由。在其拓展能力ORF中,将本端基于前缀的入口策略通过刷新报文发送给对端,对端通过该策略构造出口策略,避免了大量无用路由。 

1.3   交互过程

(1)    首先要给A、B路由器配置邻居,只有事先配置成邻居的路由器间才能建立会话连接。

(2)    A端路由器首先发送Open消息给邻居B,其携带了自己BGP参数和支持的能力,如果没什么错误,B端路由器回复一个Open消息和一个Keepalive消息对邻居A的OPEN消息进行确认。

(3)    A端路由器收到邻居B发来的OPEN消息,检查无误后,发送一个KEEPALIVE消息进行确认,至此BGP会话建立。

(4)    会话建立后,A路由器与B端路由器处于对等水平,可以发送剩下三种数据包的任意一种,据情况发送。

(5)    刚建立连接时,一般A、B会互相发送UPDATE消息,将自己已有的路由信息通告对方;如果某端需要,会发送ROUTEREFRESH消息,要求对

方重发路由信息;如果某端接收的数据包有错,会发送NOTIFICATION通告对方,并断开连接。


 


图1.3.1 协议交互状态

2     测试套开发

2.1   数据建模

Peach使用XML元素来描述和构造数据包,使用官方文档所列出的元素和属性去建立数据模型。比如,基本元素Number,String,Blob,Flag等元素去描述协议字段本身的数据类型;Relation,Fixup,Transform等元素去描述数据之间的关系;Name,Size,Value等属性去限定和描述数据内容。在建模之前,开发人员应熟悉这些元素和属性的使用,详情请见Peach官方文档。

数据建模的依据是协议官方文档,BGP协议的官方基础文档为rfc-4271,另外可以参考实际环境中的抓包。见图 2.1.1 文档规OPEN消息格式图 2.1.2 wiresahrk解析的OPEN消息格式,这是本例数据建模

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值