Example #1
0
 def __init__(self, flowid, message_type, **kargs):
     Flowlet.__init__(self, flowid)
     # Creating class object of the message_type
     self.message = ofp_pox_messages(message_type, **kargs) # e.g., ofp_packet_out, ofp_flow_mod, 
     self.message_type = message_type
     self.data = None
     self.context = (None,None,None)
Example #2
0
    def __makeflow(self):
        while True:
            if haveIPAddrGen:
                srcip = str(ipaddr.IPv4Address(ipaddrgen.generate_addressv4(self.ipsrcgen)))
                dstip = str(ipaddr.IPv4Address(ipaddrgen.generate_addressv4(self.ipdstgen)))
            else:
                # srcip = str(ipaddr.IPAddress(int(self.srcnet) + random.randint(0,self.srcnet.numhosts-1)))
                # dstip = str(ipaddr.IPAddress(int(self.dstnet) + random.randint(0,self.dstnet.numhosts-1)))
                srcip = str(ipaddr.IPAddress(int(self.srcnet) + random.randint(0, 2)))
                dstip = str(ipaddr.IPAddress(int(self.dstnet) + random.randint(0, 2)))

            ipproto = next(self.ipproto)
            #print ipproto
            sport = next(self.srcports)
            #print sport
            dport = next(self.dstports)
            #print dport
            fsize = int(next(self.flowsizerv))
            #print fsize
            flet = Flowlet(FlowIdent(srcip, dstip, ipproto, sport, dport), bytes=fsize)
            #print flet
            flet.iptos = next(self.iptosrv)
            if flet.key not in self.activeflows:
                break

        return flet
Example #3
0
 def __init__(self, flowid, message_type, **kargs):
     Flowlet.__init__(self, flowid)
     # Creating class object of the message_type
     self.message = ofp_pox_messages(
         message_type, **kargs)  # e.g., ofp_packet_out, ofp_flow_mod,
     self.message_type = message_type
     self.data = None
     self.context = (None, None, None)
Example #4
0
    def __makeflow(self):
        if haveIPAddrGen:
            srcip = str(IPv4Address(ipaddrgen.generate_addressv4(self.ipsrcgen)))
            dstip = str(IPv4Address(ipaddrgen.generate_addressv4(self.ipdstgen)))
        else:
            srcip = str(IPAddress(int(self.ipsrc) + random.randint(0,self.ipsrc.numhosts-1)))
            dstip = str(IPAddress(int(self.ipdst) + random.randint(0,self.ipdst.numhosts-1)))

        ipproto = self.ipproto
        sport = dport = 0
        if ipproto == IPPROTO_ICMP:
            # std way that netflow encodes icmp type/code:
            # type in high-order byte of dport, 
            # code in low-order byte
            t = next(self.icmptype)
            c = next(self.icmpcode)
            dport = t << 8 | c
            # print 'icmp t,c,dport',hex(t),hex(c),hex(dport)
        else:
            if self.sport:
                sport = next(self.sport)
            if self.dport:
                dport = next(self.dport)
                
        flet = Flowlet(FlowIdent(srcip, dstip, ipproto, sport, dport))
        flet.iptos = next(self.iptos)
        flet.flowstart = flet.flowend = fscore().now

        if flet.ipproto == IPPROTO_TCP:
            flet.ackflow = not self.autoack

            tcpflags = next(self.tcpflags)
            flaglist = tcpflags.split('|')
            xtcpflags = 0x0
            for f in flaglist:
                if f == 'FIN':
                    xtcpflags |= 0x01
                elif f == 'SYN':
                    xtcpflags |= 0x02
                elif f == 'RST':
                    xtcpflags |= 0x04
                elif f == 'PUSH' or f == 'PSH':
                    xtcpflags |= 0x08
                elif f == 'ACK':
                    xtcpflags |= 0x10
                elif f == 'URG':
                    xtcpflags |= 0x20
                elif f == 'ECE':
                    xtcpflags |= 0x40
                elif f == 'CWR':
                    xtcpflags |= 0x80
                else:
                    raise InvalidFlowConfiguration('Invalid TCP flags mnemonic ' + f)

            flet.tcpflags = xtcpflags
        return flet
Example #5
0
 def testAdd(self):
     f1 = Flowlet(self.ident1)
     f1.pkts = 1 
     f1.bytes = 1 
     f2 = copy.copy(f1)
     f2.pkts = 1
     f2.bytes = 1
     f1 += f2
     self.assertEqual(f1.pkts, 2)
     self.assertEqual(f1.bytes, 2)
     self.assertEqual(f2.pkts, 1)
     self.assertEqual(f2.bytes, 1)
Example #6
0
 def send_ack_flow(self, flowlet, input_intf):
     # print "constructing ack flow:", self.name, flowlet, prevnode, destnode, input_intf
     revident = flowlet.ident.mkreverse()
     revflet = Flowlet(revident)
     revflet.srcmac,revflet.dstmac = flowlet.dstmac,flowlet.srcmac
     revflet.ackflow = True
     revflet.pkts = flowlet.pkts/2
     revflet.bytes = revflet.pkts * 40
     revflet.iptos = flowlet.iptos
     revflet.tcpflags = flowlet.tcpflags
     revflet.ingress_intf = input_intf
     revflet.flowstart = fscore().now
     revflet.flowend = revflet.flowstart
     destnode = fscore().topology.destnode(self.name, revflet.dstaddr)
     # self.logger.debug("Injecting reverse flow: {}->{}".format(revflet.srcmac, revflet.dstmac))
     self.flowlet_arrival(revflet, self.name, destnode)
Example #7
0
 def testCopy(self):
     # NB: shallow copy of f1; flow key will be identical
     f1 = Flowlet(self.ident2)
     f2 = copy.copy(f1)
     # test whether FlowIdent keys referred to by each flowlet
     # are the same object
     self.assertIs(f1.key, f2.key)
Example #8
0
    def __makeflow(self):
        while True:
            if haveIPAddrGen:
                srcip = str(ipaddr.IPv4Address(ipaddrgen.generate_addressv4(self.ipsrcgen)))
                dstip = str(ipaddr.IPv4Address(ipaddrgen.generate_addressv4(self.ipdstgen)))
            else:
                # srcip = str(ipaddr.IPAddress(int(self.srcnet) + random.randint(0,self.srcnet.numhosts-1)))
                # dstip = str(ipaddr.IPAddress(int(self.dstnet) + random.randint(0,self.dstnet.numhosts-1)))
                srcip = str(ipaddr.IPAddress(int(self.srcnet) + random.randint(0, 2)))
                dstip = str(ipaddr.IPAddress(int(self.dstnet) + random.randint(0, 2)))

            ipproto = next(self.ipproto)
            sport = next(self.srcports)
            dport = next(self.dstports)
            fsize = int(next(self.flowsizerv))
            flet = Flowlet(FlowIdent(srcip, dstip, ipproto, sport, dport), bytes=fsize)
            
            flet.iptos = next(self.iptosrv)
            if flet.key not in self.activeflows:
                break

        return flet
Example #9
0
    def __makeflow(self):
        while True:
            # if haveIPAddrGen:
            #     srcip = str(ipaddr.IPv4Address(ipaddrgen.generate_addressv4(self.ipsrcgen)))
            #     dstip = str(ipaddr.IPv4Address(ipaddrgen.generate_addressv4(self.ipdstgen)))
            # else:
            #     # srcip = str(ipaddr.IPAddress(int(self.srcnet) + random.randint(0,self.srcnet.numhosts-1)))
            #     # dstip = str(ipaddr.IPAddress(int(self.dstnet) + random.randint(0,self.dstnet.numhosts-1)))
            #     # srcip = str(ipaddr.IPAddress(int(self.srcnet) + random.randint(0, 2)))
            #     # dstip = str(ipaddr.IPAddress(int(self.dstnet) + random.randint(0, 2)))
            srcip = next(self.srcnet)
            dstip = next(self.dstnet)

            ipproto = next(self.ipproto)
            sport = next(self.srcports)
            dport = next(self.dstports)
            fsize = int(next(self.flowsizerv))
            fstarttime = float(next(self.flowstarttimerv))

            #networkControlLogic2object.trafficNum[int(srcip.split('.')[3])-1][int(dstip.split('.')[3])-1]+=1

            flet = Flowlet(FlowIdent(srcip, dstip, ipproto, sport, dport), bytes=fsize, time=fstarttime)
            try:
                if fsize>ELEPHANTFLOWSIZE:
                    flet.iselephant=True
                    networkControlLogic2object.elephentsNum[int(srcip.split('.')[3])-1][int(dstip.split('.')[3])-1]+=1
                    print "networkControlLogic2object.elephentsNum[",int(srcip.split('.')[3])-1,"][",int(dstip.split('.')[3])-1,"]+=",1,";"
            except:
                print "Error Updating elephentsNum"
                pass

            #print "flettt",
            #print flet
            flet.iptos = next(self.iptosrv)
            if flet.key not in self.activeflows:
                break

        return flet
Example #10
0
 def __str__(self):
     return "--".join([Flowlet.__str__(self), self.message_type])
Example #11
0
 def __str__(self):
     return "--".join([Flowlet.__str__(self), self.message_type])
Example #12
0
 def send_ack_flow(self, flowlet, input_intf):
     # print "constructing ack flow:", self.name, flowlet, prevnode, destnode, input_intf
     revident = flowlet.ident.mkreverse()
     revflet = Flowlet(revident)
     revflet.srcmac,revflet.dstmac = flowlet.dstmac,flowlet.srcmac
     revflet.ackflow = True
     revflet.pkts = flowlet.pkts/2
     revflet.bytes = revflet.pkts * 40
     revflet.iptos = flowlet.iptos
     revflet.tcpflags = flowlet.tcpflags
     revflet.ingress_intf = input_intf
     revflet.flowstart = fscore().now
     revflet.flowend = revflet.flowstart
     destnode = fscore().topology.destnode(self.name, revflet.dstaddr)
     # self.logger.debug("Injecting reverse flow: {}->{}".format(revflet.srcmac, revflet.dstmac))
     self.flowlet_arrival(revflet, self.name, destnode)
Example #13
0
 def testBuildFlowlet(self):
     f1 = Flowlet(self.ident1)
     f1.flowstart = time.time()
     f1.flowend = time.time() + 10
     self.assertEqual(repr(f1.key), repr(self.ident1))
Example #14
0
 def __init__(self, ident):
     Flowlet.__init__(self, ident)
     self.origpkt = None
Example #15
0
 def __init__(self, ident, ofmsg):
     Flowlet.__init__(self, ident)
     self.ofmsg = ofmsg
     self.bytes = len(ofmsg)
Example #16
0
 def __init__(self, ident):
     Flowlet.__init__(self, ident)
     self.origpkt = None
Example #17
0
 def __init__(self, ident, ofmsg):
     Flowlet.__init__(self, ident)
     self.ofmsg = ofmsg
     self.bytes = len(ofmsg)