java sdn_Java实现SDN拓扑获取

Java实现SDN拓扑获取

思路

由于Java调用北向接口过程复杂,故此处编写Python脚本获取拓扑

使用Jython包完成Pyhon脚本的调用

考虑到Python和Java的数据结构难以直接转换,这里选择将脚本获取的拓扑用无向图的形式保存本地文件topo.txt

通过Java读取本地文件,并进行处理分析,发送到前端

实现

Python脚本编写

引入相关包

import sdn_net as sn

import networkx as nx

import json

此处利用了networkx的Graph图结构;json用于将数据转化为字典集;sdn_net是之前写的流表下发和拓扑抽象的脚本,此处引用其中的函数其实就是懒

调用北向接口获取链路信息

G = nx.Graph()

status,resp = sn.get_links(ip)

resp = json.loads(resp)

for i in resp["links"]:

G.add_edge(i["src"]["device"],i["dst"]["device"])

这里使用了Graph做无向图,解决了链路双向的处理问题

写入本地文件

# 清空文件

f = open('topo.txt', 'w')

f.write('')

f.close()

# 写入文件

f = open('topo.txt

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值