Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Groovy 从代理访问路由表以获取下一跳_Groovy_Unetstack - Fatal编程技术网

Groovy 从代理访问路由表以获取下一跳

Groovy 从代理访问路由表以获取下一跳,groovy,unetstack,Groovy,Unetstack,我已经从节点本身设置了路由算法。在这之后,我想从该路由本身的物理层发送数据报 例如,如果我的路由是1到2和2到3,并且我希望发送一个从1到3的数据报,那么我希望我的数据报通过2 1的路由表如下所示: void processMessage(Message msg) { if (msg instanceof DatagramNtf && msg.protocol == PING_PROTOCOL && msg.to != nodeInfo.addr)

我已经从节点本身设置了路由算法。在这之后,我想从该路由本身的物理层发送数据报

例如,如果我的路由是1到2和2到3,并且我希望发送一个从1到3的数据报,那么我希望我的数据报通过2

1的路由表如下所示:

  void processMessage(Message msg) {
    if (msg instanceof DatagramNtf && msg.protocol == PING_PROTOCOL && msg.to != nodeInfo.addr)
      def dG = new DatagramReq(to: routes.nextHop(msg.to), destination: msg.to)
      send new DatagramReq(recipient: msg.sender, to: msg.from, protocol: Protocol.DATA)
  }
1的路由表

  • 收件人:3下一个收件人:2
  • 收件人:2下一个收件人:2
  • 收件人:下一个收件人:1
因此,我希望我的process msg函数如下所示:

  void processMessage(Message msg) {
    if (msg instanceof DatagramNtf && msg.protocol == PING_PROTOCOL && msg.to != nodeInfo.addr)
      def dG = new DatagramReq(to: routes.nextHop(msg.to), destination: msg.to)
      send new DatagramReq(recipient: msg.sender, to: msg.from, protocol: Protocol.DATA)
  }
routes.nextHop所做的也是接收目标节点的addr,并从路由表中获取下一个跃点


我想知道如何从路由表中获取下一个路径。

要使用路由表条目发送数据报,您需要使用
路由器
代理,哪个inturn使用
link
phy
代理将数据报发送到目的地。到目的地的数据包的进一步路由将由
路由器
代理本身负责。因此我认为您不需要在这里为
数据报eq
中的
to
字段确定
nextHop

您的
DatagramReq
可以如下所示-

router.send new DatagramReq(recipient: msg.sender, to: msg.from, protocol: Protocol.DATA)
假设
router
是定义的
AgentID
,并且
msg.from
的值是您的目的地,并且路由表中存在有效路由

此外,
nextHop
getNextHop()
返回邻居节点的地址