Groovy 从代理访问路由表以获取下一跳
我已经从节点本身设置了路由算法。在这之后,我想从该路由本身的物理层发送数据报 例如,如果我的路由是1到2和2到3,并且我希望发送一个从1到3的数据报,那么我希望我的数据报通过2 1的路由表如下所示: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)
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
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()
返回邻居节点的地址