从SFLOW RT获取数据

时间:2015-10-20 12:12:19

标签: python mininet

我想制作一个充满混乱的dikstra算法

我正在监控从http://localhost:8008/metric/ALL/flows/json

获取值

这是我的代码:

def checkCost(self):
    # flag=1
    while (1):
    #print "ok haha"
        url = 'http://localhost:8008/metric/ALL/flows/json'
        r = requests.get(url)
        vals = r.json()
        valueNumber=0
        for v in vals:
            mname  = v["metricValue"]
            message = '%s  \n' % (mname)
            valueNumber=float(message)
            # print message

我的拓扑结构:

我有每条路径的重量值:

s1 -> s2 = 2
s1 -> s3 = 2
s1 -> s4 = 1
s2 -> s3 = 2
s3 -> s4 = 2
s4 -> s5 = 1
def dijalg(self,G,source,wG=None,huge=1e30000):
    dist={}
    pred={}
    Q = priorityDictionary()
    Q[source] = 0
    #print (G.edge)
    if wG == None:
        for u in G.edge:
            dist[u]={}
            for v in G.edge:
                #print type(v)
                #print G.has_edge
                if G.has_edge(u,v):
                    if (u==1):
                        if (v==2):
                            dist[u][v] = 2
                        elif (v==3):
                            dist[u][v] = 2
                        elif (v==4):
                            dist[u][v] = 1
                    if (u==2):
                        if (v==1):
                            dist[u][v] = 2
                        elif (v==3):
                            dist[u][v] = 2
                    if (u==3):
                        if (v==1):
                            dist[u][v] = 2
                        elif (v==4):
                            dist[u][v] = 1
                    if (u==4):
                        if (v==1):
                            dist[u][v] = 1
                        elif (v==3):
                            dist[u][v] = 1
                        elif (v==5):
                            dist[u][v] = 1
                    if (u==5):
                        if (v==4):
                            dist[u][v] = 1
                else:
                    dist[u][v]=huge
            dist[u][u]=0

如果valuenumber的值大于1000000kbit,则成本为+10,他们将搜索另一条路径。

例如

s4 -> s1超过1000000kbit
因此,如果s5需要路径到s1,那么它想要做s5-> s4-> s1。但是如果我的条件是valuenumber > 1000000kbit加权成本的价值将增加10,那么s4中的成本 - > s1实际上是11,s5将搜索另一条路径。

我对如何对价值数量进行测试感到困惑,有人可以帮忙吗?

0 个答案:

没有答案