WSF_COMM_ROUTER 详解(AFSIM SDL)
WSF_COMM_ROUTER:通信路由器组件 ,和
WSF_COMM_TRANSCEIVER(收发机)不是一类东西。
WSF_COMM_TRANSCEIVER= 无线/有线收发电台(物理层,接入单一子网)- WSF_COMM_ROUTER = 跨网网关/路由转发器 ,部署在平台内部,连接多个不同的通信子网,实现报文跨网段转发、多跳中继 。
典型场景:地面指挥车、中继无人机、网关节点(正好适配你前面BLACK_VAN黑色厢车平台,厢车作为通信中继网关)
一句话概括:WSF_COMM_ROUTER 负责路由寻址、跨网络转发报文;本身不具备无线发射接收能力,必须绑定多个 comm(收发机)作为网口
一、核心能力
- 多子网互联:一台平台上挂载多个comm,分别接入不同network(van_net、air_net、sat_net),路由器负责在子网之间转发航迹报文、C2指令。
- 多跳中继:A平台不在B平台直接通信范围内,报文通过中间带WSF_COMM_ROUTER的中继平台转发。
- 路由协议 :内置默认协议
WSF_COMM_ROUTER_PROTOCOL_LEGACY(简易静态路由);可自定义路由策略、报文过滤、带宽限制、TTL跳数限制。 - 报文排队、优先级:转发时支持报文优先级,高优先级交战指令优先转发,低优先级航迹报文拥塞时丢弃。
- 网关隔离:可配置报文过滤规则,控制哪些类型报文允许跨网转发(例如:只转发WSF_TRACK_MESSAGE航迹报文,禁止转发部分C2指令)
关键区别:不带router时,comm只能同network内直接广播;跨不同network,必须靠WSF_COMM_ROUTER做网关转发。
二、脚本语法示例(基于你的BLACK_VAN黑色厢车改造,带逐行注释)
afsim
# File generated by Wizard 2.9.0 on May 27, 2025.
platform_type BLACK_VAN WSF_PLATFORM
icon semi
# comm1:接入van_net地面子网(WSF_COMM_TRANSCEIVER 理想收发机)
comm van_comm WSF_COMM_TRANSCEIVER
network_name van_net
internal_link van_router # 把这个电台连接到本机路由器
end_comm
# comm2:接入air_net空中编队子网
comm air_comm WSF_COMM_TRANSCEIVER
network_name air_net
internal_link van_router # 第二个网口也接入路由器
end_comm
# ========== WSF_COMM_ROUTER 通信路由器 ==========
router van_router WSF_COMM_ROUTER
# 启用默认传统路由协议,做简单路由查表转发
protocol WSF_COMM_ROUTER_PROTOCOL_LEGACY
max_hop_count 3 # 最大转发跳数,防止报文无限循环转发
queue_size 200 # 报文队列最大容量,队列满则丢弃新包
on_forward
type WSF_TRACK_MESSAGE
script
# 报文跨网转发时触发回调,打印日志用于调试
writeln("Router FORWARD TRACK at TIME:", TIME_NOW);
end_script
end_on_forward
end_router
# ==============================================
processor bogey_book WSF_TRACK_PROCESSOR
# 处理器接收本机comm收到的航迹报文
on_message
type WSF_TRACK_MESSAGE
script
writeln(PLATFORM.Name(), " RECEIVES TRACK AT TIME:" , TIME_NOW);
end_script
end_on_message
end_processor
end_platform_type
参数解释
| 参数 | 含义 |
|---|---|
router van_router WSF_COMM_ROUTER |
定义路由器实例,名字van_router,类型WSF_COMM_ROUTER |
protocol WSF_COMM_ROUTER_PROTOCOL_LEGACY |
传统简易路由协议:自动维护可达节点路由表,默认启用;复杂场景可以移除,自定义路由脚本 |
max_hop_count |
TTL最大跳数;报文每经过一次router转发跳数-1,减到0丢弃,防止路由环路 |
queue_size |
转发缓冲区队列长度,超出后新报文直接丢弃,模拟拥塞丢包 |
on_forward |
报文即将被路由器转发时触发回调脚本;可以做报文过滤、日志、修改报文内容 |
type WSF_TRACK_MESSAGE |
只对航迹报文触发on_forward脚本,其他报文不触发 |
三、数据流(跨网转发链路)
飞机平台(air_net子网) → air_comm收发机 → BLACK_VAN的air_comm → van_router(WSF_COMM_ROUTER)
→ 路由判断:转发到van_net子网 → van_comm → van_net内的地面节点
飞机在air_net,地面节点在van_net;两个是完全独立network,没有router,两个子网永远无法互通 。
报文先进入router,router查询路由表,选择输出网口,从另一个comm发送到另一个子网。
四、WSF_COMM_ROUTER 和 WSF_COMM_TRANSCEIVER对比表
| 组件 | 类型 | 作用 | 能否跨子网 |
|---|---|---|---|
| WSF_COMM_TRANSCEIVER | 收发机(电台) | 收发报文,接入单一通信子网 | ❌ 只能同network内通信 |
| WSF_COMM_ROUTER | 路由网关处理器 | 报文寻址、跨网段转发、中继 | ✅ 连接多个子网,多跳转发 |
重要:WSF_COMM_ROUTER不能独立工作,必须绑定至少2个comm收发机作为网络接口。单个comm绑定router没有工程意义,无法转发。
五、适用场景 ✅ / 局限性 ❌
✅ 适合
- 网关节点:地面指挥车、中继无人机、卫星通信网关,连接空中数据链、地面子网、卫星网
- 远距离多跳中继通信:节点间超出直接通信距离,依靠中间平台接力转发报文
- 多网隔离仿真:多个独立子网,按需控制跨网互通、报文过滤
- 评估通信抗毁性:中继节点损毁,路由失效,子网之间断连
❌ 不适合
- 简单同子网编队(TEAM_DATALINK单网),完全不需要router,增加算力开销
- 射频层信号仿真:router只管报文转发逻辑,不处理射频功率、干扰(射频由WSF_RADIO_TRANSCEIVER处理)
六、高频踩坑点
- 忘记internal_link把comm连到router:comm收到报文,但无法送入路由器,跨网转发失效。
- 路由环路:多中继组网,不设置
max_hop_count,报文无限转发,内存暴涨仿真卡死。 - 子网混淆:network_name名字必须区分;van_net、air_net必须在全局分别定义两个独立network。
- 报文方向:router只转发经过comm进出路由器的报文;平台本机processor(bogey_book)接收报文是comm直接送processor,不走router转发逻辑。
- 带宽瓶颈:router转发队列满,报文丢弃;队列大小
queue_size需要匹配链路带宽。
七、和你整套组件串联总链路
WSF_TRACK_PROCESSOR(航迹生成)→ data_mgr → comm收发机 → 【可选:WSF_COMM_ROUTER网关】 → 跨子网中继 → 远端comm → data_mgr → WSF_TRACK_PROCESSOR → task_mgr状态机(SEARCH/TRACK/ENGAGE开火)