1

我正在构建一个模拟 IP 网络的模拟。简单来说,我使用两个与路由器连接的主机节点。我使用 FlatNetworkConfigurator 分配 IP。而我的另外两个主机是“EtherHost”,如下面的 ned 文件所示

package swtichtest.simulations;
import swtichtest.Txc;
import inet.nodes.inet.Router;
import inet.nodes.inet.StandardHost;
import inet.nodes.ethernet.EtherHost;
import inet.nodes.ethernet.EtherSwitch;
import ned.DatarateChannel;
import inet.networklayer.autorouting.ipv4.FlatNetworkConfigurator;


channel cable extends DatarateChannel
{
parameters:
    delay = 0.1us;
    datarate = 100Mbps;
}

network Tictoc
{
@display("bgb=539,141");
submodules:
    tic: EtherHost {
        @display("p=291,114");
    }
    toc: EtherHost {
        @display("p=401,33");
    }
    Rout: Router {
        @display("is=s;p=173,25");
    }
    configurator: FlatNetworkConfigurator {
        @display("p=22,25");
    }
connections:
    Rout.ethg++ <--> cable <--> tic.ethg;
    Rout.ethg++ <--> cable <--> toc.ethg;


}

但我的问题是我应该在哪里添加我的逻辑来生成数据包。如果我更改从我的简单模块继承的 tic 和 toc ,那么我如何生成 IP 数据包?

4

1 回答 1

2

你在这里有点困惑。EtherHost 可用于生成 RAW 以太网帧,因此其中不存在网络和传输层协议。另一方面,路由器需要帧内的 IP 数据。

如果您需要 TCP/IP 流量,您必须使用 StandardHost。当然,StandardHosts 也有以太网接口,所以你可以用电缆连接这些接口。如果您需要 IP,请忘记 EtherHost。

于 2013-01-31T19:41:27.190 回答