feat(dscp): implemented multiple dscps per user

This commit is contained in:
Sebastian Rust
2025-01-29 14:48:37 +01:00
parent 6740a37ac8
commit f7c97470fa
2 changed files with 18 additions and 5 deletions

View File

@@ -35,7 +35,7 @@ def main():
parser.add_argument("--log-level", type=str, default="INFO")
parser.add_argument("--bandwidth", type=str, default="1Mbps")
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()
logger.remove()
logger.add(sys.stderr, level=args.log_level)
@@ -44,16 +44,25 @@ def main():
time_between_packets = PACKET_SIZE / bandwidth
packet_cnt = 0
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:
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"
payload = (CODE_WORD + "A" * (PACKET_SIZE - len(CODE_WORD))).encode()
t0 = time.time()
while True:
logger.debug("Sending message:")
sock.sendto(payload, (args.host, args.port))
for sock in sockets:
sock.sendto(payload, (args.host, args.port))
packet_cnt += 1
t1 = time.time() - t0
if t1 > args.duration:

View File

@@ -2,6 +2,7 @@ import socket
import argparse
import time
import sys
from loguru import logger
def main():
# Parse command-line arguments
@@ -20,10 +21,13 @@ def main():
sock.settimeout(args.timeout)
try:
count = 0
while True:
try:
# Wait for a UDP packet
data, addr = sock.recvfrom(1024) # Buffer size is 1024 bytes
count += 1
logger.debug(f"Received packet {count} from {addr}")
except socket.timeout:
print(f"No packets received for {args.timeout} seconds. Shutting down.")
break