In [ ]:
ipfix_file = "../test/mawi-0330-3hours-100ms.ipfix"
In [ ]:
import ipfix
import qof
import pandas as pd
import numpy as np
ipfix.ie.use_iana_default() # loads IANA default IEs from module core definitions
ipfix.ie.use_5103_default() # loads reverse IEs for RFC5103 biflows
ipfix.ie.use_specfile("qof.iespec") # loads enterprise-specific IEs for QoF
ipfix.types.use_integer_ipv4() # accelerate dataframe processing of per-IP stuff
In [ ]:
df = qof.dataframe_from_ipfix(ipfix_file, ("flowStartMilliseconds", "flowEndMilliseconds",
"packetDeltaCount", "reversePacketDeltaCount",
"transportPacketDeltaCount", "reverseTransportPacketDeltaCount",
"octetDeltaCount", "reverseOctetDeltaCount",
"transportOctetDeltaCount", "reverseTransportOctetDeltaCount",
"tcpSequenceCount", "reverseTcpSequenceCount",
"tcpSequenceLossCount", "reverseTcpSequenceLossCount"))
In [ ]:
print ("Total flows: "+str(len(df)))
In [ ]:
df["lossy"] = (df["tcpSequenceLossCount"] > 0) | (df["reverseTcpSequenceLossCount"] > 0)
In [ ]:
print ("Lossy flows: "+str(len(df[df["lossy"]])))
In [ ]:
(df["tcpSequenceLossCount"] / (ldf["transportOctetDeltaCount"] + \
ldf["tcpSequenceLossCount"])).resample("5min").dropna().plot()
In [ ]:
lossy_count = np.where(df["lossy"], 1, 0)
lossy_count.index = df["flowEndMilliseconds"]
total_count = pd.Series(1, index=lossy_count.index)
lossy_count.resample("5min", how="sum")
total_count.resample("5min", how="sum")
(lossy_count / total_count).plot()
In [ ]: