BGP状态机实验报告
一、 实验目的
通过BGP状态机实验,加深对协议状态机描述的理解,并掌握状态机的设计实验方法,同时也可加深对BGP路由协议的理解 二、 实验要求
根据系统的各种输入事件,进行BGP状态的变迁,并根据BGP协议在适当情况下进行相应的处理。 三、 状态转移情况
BGP状态机一共有6个状态,分别是
Idle,Connect,Active,OpenSent,OpenConfirm,Established 本实验要求处理的状态转移事件有 收到open消息:stud_bgp_FsmEventOpen 收到Keepalive消息:stud_bgp_FsmEventKeepAlive 收到Notification消息:stud_bgp_FsmEventNotification 收到Update消息:stud_bgp_FsmEventUpdate
TCP连接异常:stud_bgp_FsmEventTcpException,又细分为BGP_TCP_CLOSE,BGP_TCP_FATAL_ERROR,BGP_TCP_RETRANSMISSION_TIMEOUT三种子情况 计时器超时:stud_bgp_FsmEventTimerProcess,又细分为 BGP_CONNECTRETRY_TIMEOUT,BGP_HOLD_TIMEOUT, BGP_KEEPALIVE_TIMEOUT三种子情况
BGP开始:stud_bgp_FsmEventStart BGP结束:stud_bgp_FsmEventStop 收到连接结果:stud_bgp_FsmEventConnect 整理后的状态转移表如下 EventOpen (10) EventKeepAlive(11) EventNotification(13) EventUpdate(12) TCP_CLOSE(4) TCP_FATAL_ERROR(6) TCP_R_TIMEOUT(5) C_TIMEOUT(7) HOLD_TIMEOUT(8) IDLE CON ACT OS OC ES IDLE IDLE IDLE OC IDLE IDLE ES IDLE IDLE IDLE IDLE ES IDLE IDLE IDLE IDLE IDLE IDLE IDLE IDLE IDLE IDLE IDLE ES IDLE IDLE IDLE ACT IDLE IDLE IDLE IDLE IDLE IDLE IDLE IDLE IDLE ACT IDLE IDLE IDLE IDLE IDLE CON CON IDLE IDLE IDLE IDLE IDLE IDLE IDLE IDLE IDLE ES ES KEEPALIVE_TIMEOUT(9) IDLE IDLE IDLE IDLE OC EventStart(1) EventStop(2) EventConnect(3) CON CON ACT OS OC IDLE IDLE IDLE IDLE IDLE IDLE IDLE OS OS IDLE IDLE IDLE 编程时,只要在事件处理函数中完成对应状态的变换即可 四、 包的发送
1. open
? 将BGP消息头的标记全部置为1,表示不包含认证信息
? 设置长度 ? 设置消息类型 ? 设置版本 ? 设置自治系统号 ? 设置保持时间 ? 设置BGP标志符
? 调用bgp_FsmSendTcpData函数发送包 2. notification
? BGP消息头的标记全部置为1 ? 设置BGP消息头的长度 ? 设置BGP消息头的类型
? 设置NOTIFICATION消息的错误编码 ? 设置NOTIFICATION消息的错误字码 ? 调用bgp_FsmSendTcpData函数发送包 3. keepalive
? BGP消息头的标记全部置为1 ? 设置BGP消息头的长度 ? 设置BGP消息头的类型
? 调用TCP段发送函数bgp_FsmSendTcpData发送
五、 遇到的问题
? 包头的格式
marker要设置为全一,表示不包含认证信息。但是在本实
验中似乎没影响。
? 实验指导书中的事件与试验接口函数的对应
有些函数函数名没有直接跟指导书上的函数名对应上,经过尝试才完成了函数名的对应。
相关推荐: