feat(dscp): implemented multiple dscps per user
This commit is contained in:
17
sender.py
17
sender.py
@@ -35,7 +35,7 @@ def main():
|
|||||||
parser.add_argument("--log-level", type=str, default="INFO")
|
parser.add_argument("--log-level", type=str, default="INFO")
|
||||||
parser.add_argument("--bandwidth", type=str, default="1Mbps")
|
parser.add_argument("--bandwidth", type=str, default="1Mbps")
|
||||||
parser.add_argument("--duration", type=int, default=10)
|
parser.add_argument("--duration", type=int, default=10)
|
||||||
parser.add_argument("--dscp", type=str, default="")
|
parser.add_argument("--dscp", action='append', default=[])
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
logger.remove()
|
logger.remove()
|
||||||
logger.add(sys.stderr, level=args.log_level)
|
logger.add(sys.stderr, level=args.log_level)
|
||||||
@@ -44,15 +44,24 @@ def main():
|
|||||||
time_between_packets = PACKET_SIZE / bandwidth
|
time_between_packets = PACKET_SIZE / bandwidth
|
||||||
packet_cnt = 0
|
packet_cnt = 0
|
||||||
logger.info(f"Connecting to {args.host}:{args.port}")
|
logger.info(f"Connecting to {args.host}:{args.port}")
|
||||||
sock = socket(AF_INET, SOCK_DGRAM)
|
|
||||||
dscp = int(args.dscp) if args.dscp else 0
|
|
||||||
|
sockets = []
|
||||||
|
dscp = [int(x) for x in args.dscp]
|
||||||
if dscp:
|
if dscp:
|
||||||
sock.setsockopt(IPPROTO_IP, IP_TOS, dscp << 2)
|
for value in dscp:
|
||||||
|
sock = socket(AF_INET, SOCK_DGRAM)
|
||||||
|
sock.setsockopt(IPPROTO_IP, IP_TOS, value << 2)
|
||||||
|
sockets.append(sock)
|
||||||
|
else:
|
||||||
|
sock = socket(AF_INET, SOCK_DGRAM)
|
||||||
|
sockets.append(sock)
|
||||||
CODE_WORD = "CAFEABBA"
|
CODE_WORD = "CAFEABBA"
|
||||||
payload = (CODE_WORD + "A" * (PACKET_SIZE - len(CODE_WORD))).encode()
|
payload = (CODE_WORD + "A" * (PACKET_SIZE - len(CODE_WORD))).encode()
|
||||||
t0 = time.time()
|
t0 = time.time()
|
||||||
while True:
|
while True:
|
||||||
logger.debug("Sending message:")
|
logger.debug("Sending message:")
|
||||||
|
for sock in sockets:
|
||||||
sock.sendto(payload, (args.host, args.port))
|
sock.sendto(payload, (args.host, args.port))
|
||||||
packet_cnt += 1
|
packet_cnt += 1
|
||||||
t1 = time.time() - t0
|
t1 = time.time() - t0
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import socket
|
|||||||
import argparse
|
import argparse
|
||||||
import time
|
import time
|
||||||
import sys
|
import sys
|
||||||
|
from loguru import logger
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
# Parse command-line arguments
|
# Parse command-line arguments
|
||||||
@@ -20,10 +21,13 @@ def main():
|
|||||||
sock.settimeout(args.timeout)
|
sock.settimeout(args.timeout)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
count = 0
|
||||||
while True:
|
while True:
|
||||||
try:
|
try:
|
||||||
# Wait for a UDP packet
|
# Wait for a UDP packet
|
||||||
data, addr = sock.recvfrom(1024) # Buffer size is 1024 bytes
|
data, addr = sock.recvfrom(1024) # Buffer size is 1024 bytes
|
||||||
|
count += 1
|
||||||
|
logger.debug(f"Received packet {count} from {addr}")
|
||||||
except socket.timeout:
|
except socket.timeout:
|
||||||
print(f"No packets received for {args.timeout} seconds. Shutting down.")
|
print(f"No packets received for {args.timeout} seconds. Shutting down.")
|
||||||
break
|
break
|
||||||
|
|||||||
Reference in New Issue
Block a user