Для моего проекта в колледже я пытаюсь разработать генератор трафика на основе Python. Я создал 2 машины CentOS на vmware, и я использую 1 в качестве моего клиента и 1 в качестве моей серверной машины. Я использовал метод псевдонимов IP, чтобы увеличить количество клиентов и серверов, используя только одну машину клиент/сервер. До сих пор я создал 50 псевдонимов IP на моей клиентской машине и 10 псевдонимов IP на моей серверной машине. Я также использую многопроцессорный модуль для одновременной генерации трафика со всех 50 клиентов на все 10 серверов. Я также разработал несколько профилей (1 КБ, 10 КБ, 50 КБ, 100 КБ, 500 КБ, 1 МБ) на своем сервере (в каталоге /var/www/html, так как я использую Apache Server), и я использую urllib2 для отправки запроса на эти профили из моя клиентская машина. Здесь при запуске моих сценариев, когда я отслеживаю количество TCP-соединений, оно всегда составляет ‹50. Я хочу увеличить его до 10000. Как мне этого добиться? Я подумал, что если для каждого нового http-запроса устанавливается новое TCP-соединение, то эта цель может быть достигнута. Я на правильном пути? Если не любезно указать мне правильный путь.
'''
Traffic Generator Script:
Here I have used IP Aliasing to create multiple clients on single vm machine.
Same I have done on server side to create multiple servers. I have around 50 clients and 10 servers
'''
import multiprocessing
import urllib2
import random
import myurllist #list of all destination urls for all 10 servers
import time
import socbindtry #script that binds various virtual/aliased client ips to the script
response_time=[] #some shared variables
error_count=multiprocessing.Value('i',0)
def send_request3(): #function to send requests from alias client ip 1
opener=urllib2.build_opener(socbindtry.BindableHTTPHandler3) #bind to alias client ip1
try:
tstart=time.time()
for i in range(myurllist.url):
x=random.choice(myurllist.url[i])
opener.open(x).read()
print "file downloaded:",x
response_time.append(time.time()-tstart)
except urllib2.URLError, e:
error_count.value=error_count.value+1
def send_request4(): #function to send requests from alias client ip 2
opener=urllib2.build_opener(socbindtry.BindableHTTPHandler4) #bind to alias client ip2
try:
tstart=time.time()
for i in range(myurllist.url):
x=random.choice(myurllist.url[i])
opener.open(x).read()
print "file downloaded:",x
response_time.append(time.time()-tstart)
except urllib2.URLError, e:
error_count.value=error_count.value+1
#50 such functions are defined here for 50 clients
process=[]
def func():
global process
process.append(multiprocessing.Process(target=send_request3))
process.append(multiprocessing.Process(target=send_request4))
process.append(multiprocessing.Process(target=send_request5))
process.append(multiprocessing.Process(target=send_request6))
#append 50 functions here
for i in range(len(process)):
process[i].start()
for i in range(len(process)):
process[i].join()
print"All work Done..!!"
return
start=float(time.time())
func()
end=float(time.time())-start
print end