首页 > 编程知识 正文

总结,以太网回传模式

时间:2023-05-05 11:03:20 阅读:136641 作者:3989

我看了很多Veins的源代码,但一直没有系统地看; 今天有一天,通过跟踪Tkenv的输出结果,我简单粗略地整理了Veins发送和接收数据的流程。 假设a节点向b节点发送数据。 欢迎交流作为参考。

=======A‘s Part======

1. A节点APP应用层生成数据e,调用sendDelayedDown函数将e发送给MAC层;

2 .在接收到e后,MAC层将e封装到MAC帧中; 在CSMA/CA机制中进行信道竞争,获取nextMacEvent并初始化自身消息,准备在一定时间推迟向PHY层发送的MAC层在调用sendDelayed之前与PHY-setRadioState ()相关当PHY层模式转换完成时,控制消息(SendControlToMac函数)传递到MAC; MAC层在前面的过程完成后,调用SendDelayed函数将数据帧发送到PHY层;

3 .用于PHY层的handleUpperMessage函数在接收到来自所述MAC的帧后,对所述PHY层的帧进行封装以及调用发送至信道;

4. sendToChannel函数通过遍历连接到a节点的PHY层的所有gate,将帧发送到每个gate对应的PHY层。

======b’spart======b’spart

1. B的PHY层的handleMessage函数在接收到A发送的Airframe后,还调用handleAirFrame函数进行处理;

2.handleAirFrame函数分为三种状态,用于处理收到的Airframe。 (状态之间的转换是通过触发自身消息实现的。)。

start _ receive=handleairframestartreceive

receiving=handleairframereceiving

receiving=handleairframeendreceive

第一种状态调用filterSignal函数。 此函数根据相应的信道模型计算信号衰减。第二个状态调用processSignal函数。 此函数也在三种状态下处理airframe。 new=processnewsignal; expect _ header=returnprocessignalheader; expect _ end=returnprocessignalend.(在第一种状态下,利用之前计算的衰减来计算接收功率,并判断是否接收该分组; 第三种状态是调用phy-sendUp函数将处理后的数据发送到MAC层。)。

3. B的MAC层handleLowerMsg函数在接收到来自PHY的数据后,首先解封装并发送给APP应用层; 至此,A---B数据包收发过程基本完成。

NOTE :

a .在以上过程中,只写了最基本的过程,函数的调用关系很复杂,有时调用BasePhyLayer等父类的方法,有时PhyLayer80211p等子类重写父类的函数

b .如果MAC层想与PHY层交互,例如,MAC层需要通知PHY层以转换接收/发送状态。 (必须定义相关接口类,如class MAC 80211 p tophy 11 p接口,使MAC类和phy类都继承该接口类,然后将成员MAC8022添加到MAC类中。) phy 11 p=findmodulemac 80211 p tophy 11 p interface * :3360 find submodule (get parent module ) ) ) )。 这样,PHY11p就可以直接调用MAC 80211 p主题11 p接口的成员函数来操作phy。 这一点是怎么实现的,还不完全清楚,属于基础部分!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。