Add net centric
This commit is contained in:
parent
82228b3704
commit
ee9a752d7f
105
netcentric.py
Normal file
105
netcentric.py
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
# Calculate internet checksum for any arbitrary length variable amount of binary numbers
|
||||||
|
def checksum(*args):
|
||||||
|
length = len(bin(args[0])) - 2
|
||||||
|
result = 0
|
||||||
|
for arg in args:
|
||||||
|
result += arg
|
||||||
|
if result > (2 ** length) - 1:
|
||||||
|
result = (result & ((2 ** length) - 1)) + 1
|
||||||
|
return result ^ ((2 ** length) - 1)
|
||||||
|
|
||||||
|
|
||||||
|
def e2e_delay(P, L, N, R):
|
||||||
|
# P = propagation speed
|
||||||
|
# L = packet length
|
||||||
|
# N = number of packets
|
||||||
|
# R = transmission rate
|
||||||
|
return (P - 1) * (L / R) + N * (L / R)
|
||||||
|
|
||||||
|
|
||||||
|
def estimate_e2e_delay(PS, T):
|
||||||
|
# PS = packet size
|
||||||
|
# T = Throughput
|
||||||
|
return PS / T
|
||||||
|
|
||||||
|
|
||||||
|
def trans_delay(L, R):
|
||||||
|
# L = packet length
|
||||||
|
# R = transmission rate
|
||||||
|
return L / R
|
||||||
|
|
||||||
|
|
||||||
|
def prop_delay(P, L):
|
||||||
|
# P = propagation speed
|
||||||
|
# L = packet length
|
||||||
|
return P * L
|
||||||
|
|
||||||
|
|
||||||
|
def traffic_intensity(L, pps, R):
|
||||||
|
# L = packet length
|
||||||
|
# pps = packets per second
|
||||||
|
# R = transmission rate
|
||||||
|
return (L * pps) / R
|
||||||
|
|
||||||
|
|
||||||
|
def cs_time(N, F, U):
|
||||||
|
# N = Number of copies
|
||||||
|
# F = File size
|
||||||
|
# U = Server upload rate
|
||||||
|
return (N * F) / U
|
||||||
|
|
||||||
|
|
||||||
|
def cs_time_n_clients(N, F, U, D):
|
||||||
|
# N = Number of copies
|
||||||
|
# F = File size
|
||||||
|
# U = Server upload rate
|
||||||
|
# D = Client download rate
|
||||||
|
return max(cs_time(N, F, U), F / D)
|
||||||
|
|
||||||
|
|
||||||
|
def p2p_time(N, F, U, CD, D):
|
||||||
|
# N = Number of copies
|
||||||
|
# F = File size
|
||||||
|
# U = Server upload rate
|
||||||
|
# CU = Client upload rate
|
||||||
|
# D = Client download rate
|
||||||
|
return max((F / U), (N * F) / (U + (N * CD)), F / D)
|
||||||
|
|
||||||
|
|
||||||
|
def utilisation(L, R, RTT):
|
||||||
|
# L = packet length
|
||||||
|
# R = transmission rate
|
||||||
|
# RTT = round trip time
|
||||||
|
return (L / R) / (L / R + RTT)
|
||||||
|
|
||||||
|
|
||||||
|
def utilisation_pipeline(L, R, RTT, N):
|
||||||
|
# L = packet length
|
||||||
|
# R = transmission rate
|
||||||
|
# RTT = round trip time
|
||||||
|
# N = window size
|
||||||
|
return N / (1 + (RTT / (L / R)))
|
||||||
|
|
||||||
|
|
||||||
|
def print_byte_tables():
|
||||||
|
print("Byte Conversion Table")
|
||||||
|
print("1 B = 8 bits")
|
||||||
|
print("kB = 1024 bytes")
|
||||||
|
print("MB = 1024 kB")
|
||||||
|
print("GB = 1024 MB")
|
||||||
|
print("TB = 1024 GB")
|
||||||
|
|
||||||
|
|
||||||
|
def man():
|
||||||
|
print("checksum(0b, 0b,)")
|
||||||
|
print("e2e_delay(P, L, N, R)")
|
||||||
|
print("estimate_e2e_delay(PS, T)")
|
||||||
|
print("trans_delay(L, R)")
|
||||||
|
print("prop_delay(P, L)")
|
||||||
|
print("traffic_intensity(L, pps, R)")
|
||||||
|
print("cs_time(N, F, U)")
|
||||||
|
print("cs_time_n_clients(N, F, U, D)")
|
||||||
|
print("p2p_time(N, F, U, CD, D)")
|
||||||
|
print("utilisation(L, R, RTT)")
|
||||||
|
print("utilisation_pipeline(L, R, RTT, N)")
|
||||||
|
print("print_byte_tables()")
|
Loading…
Reference in New Issue
Block a user