Omnet++添加EIGRP路由器报错:Gate未连接至同级或父模块
添加EIGRP路由器后出现Gate未连接错误
错误信息
Gate 'EigrpTestNetwork.R5.ethg$i[1]' is not connected to sibling or parent module -- in module (omnetpp::cModule) EigrpTestNetwork (id=1), during network setup
错误原因
这个错误的核心是:你给R5声明了3个以太网门(ethg[3]),但其中ethg[1]没有和任何其他模块的门建立连接。OMNeT++要求所有在模块中声明的门必须完成连接,否则网络初始化时会触发该报错。
同样的问题也存在于R6:你声明了ethg[3],但只有ethg[0]完成了连接,剩下的两个门处于未连接状态。
修复方案
方案1:减少门的数量(推荐,若暂时不需要多余门)
如果R5、R6目前只需要1个连接(分别连R4、R2),直接修改它们的门数量为实际需要的数量:
R5: EigrpRouter { @display("p=411,302"); gates: ethg[1]; // 仅保留1个门,匹配当前的连接需求 } R6: EigrpRouter { @display("p=178,302"); gates: ethg[1]; // 仅保留1个门,匹配当前的连接需求 }
方案2:补全未连接的门(若需要保留3个门)
如果确实需要给R5、R6预留3个门,需要为未连接的门添加对应连接,比如新增LAN主机:
- 在
submodules块中添加新的LAN主机:
LAN5: StandardHost { @display("p=489,302;i=misc/cloud"); } LAN6: StandardHost { @display("p=76,302;i=misc/cloud"); }
- 在
connections块中添加门连接:
// 连接R5的剩余门到LAN5 R5.ethg[1] <--> Eth100M <--> LAN5.ethg++; // 连接R6的剩余门到LAN6 R6.ethg[1] <--> Eth100M <--> LAN6.ethg++;
- 同时更新
configurator的IP配置,新增LAN对应的网段:
config = xml("<config>"+ // 原有配置... "<interface among='R5 LAN5' address='10.0.5.x' netmask='255.255.255.0' />"+ "<interface among='R6 LAN6' address='10.0.6.x' netmask='255.255.255.0' />"+ "</config>");
内容的提问来源于stack exchange,提问作者Connor Dwyer
相关产品推荐
相关产品推荐

