англійськафранцузькаіспанська

Ad


Значок OnWorks

flowgrind - онлайн у хмарі

Запустіть flowgrind у постачальника безкоштовного хостингу OnWorks через Ubuntu Online, Fedora Online, онлайн-емулятор Windows або онлайн-емулятор MAC OS

Це команда flowgrind, яку можна запустити в постачальнику безкоштовного хостингу OnWorks за допомогою однієї з наших численних безкоштовних робочих станцій, таких як Ubuntu Online, Fedora Online, онлайн-емулятор Windows або онлайн-емулятор MAC OS.

ПРОГРАМА:

ІМ'Я


flowgrind - вдосконалений генератор трафіку TCP для Linux, FreeBSD і Mac OS X

СИНТАКСИС


flowgrind [ВАРІАНТ]...

ОПИС


flowgrind є вдосконаленим генератором трафіку TCP для тестування та порівняльного аналізу Linux,
Стеки TCP/IP FreeBSD і Mac OS X. На відміну від інших інструментів вимірювання продуктивності це
має розподілену архітектуру, де вимірюється пропускна здатність та інші показники
між довільними процесами сервера flowgrind, демон flowgrind flowgrindd(1).

Flowgrind вимірює окрім goodput (пропускної здатності), час між надходженням прикладного рівня
(IAT) і час в обидва боки (RTT), кількість блоків і мережеві транзакції/с. На відміну від більшості перехресних
інструменти тестування платформи, flowgrind збирає та повідомляє метрики TCP, які повертає
Параметр сокета TCP_INFO, який зазвичай є внутрішнім у стеку TCP/IP. На Linux і
FreeBSD, серед іншого, включає оцінку ядром наскрізного RTT, розміру
вікна перевантаження TCP (CWND) і порогу повільного запуску (SSTHRESH).

Flowgrind має розподілену архітектуру. Він розділений на два компоненти: flowgrind
демон, flowgrindd(1), а також flowgrind контролер. Використовуючи контролер, потоки між
можна налаштувати будь-які дві системи, на яких працює демон flowgrind (тести третьої сторони). При регулярному
інтервали під час тесту контролер збирає та відображає результати вимірювань
демони. Він може запускати кілька потоків одночасно з однаковими або різними налаштуваннями та
індивідуальний графік кожного. Тестове та контрольне з’єднання за бажанням можна перенаправити на
різні інтерфейси.

Сама генерація трафіку є або масовою передачею, з обмеженою швидкістю або складною
тести запиту/відповіді. Flowgrind використовує libpcap для автоматичного скидання трафіку для
якісний аналіз.

ВАРІАНТИ


Це дві важливі групи опцій: параметри контролера та параметри потоку. Як і
як випливає з назви, параметри контролера застосовуються глобально і потенційно впливають на всі потоки, в той час як
Параметри, що стосуються потоку, застосовуються лише до підмножини потоків, вибраних за допомогою -F варіант.

Обов'язкові аргументи для довгих опцій є обов'язковим для коротких опцій.

Загальне опції
-h, --допомога[=ЩО]
відобразити довідку та вийти. Необов'язково WHAT може бути 'сокетом' для довідки про сокет
параметри або довідка щодо створення трафіку

-v, -- версія
роздрукувати інформацію про версію та вийти

контролер опції
-c, --show-двокрапка=TYPE[,TYPE]...
вивести стовпець TYPE звіту проміжного інтервалу у виводі. Дозволені значення для
TYPE: "інтервал", "через", "transac", "iat", "ядро" (усі відображаються за замовчуванням),
і "блоки", "rtt", "затримка" (необов'язково)

-d, --відлагоджувати
збільшити багатослівність налагодження. Додайте параметр кілька разів, щоб збільшити докладність

-e, --prefix-dump=PRE
додати префікс PRE до дампу імені файлу (за замовчуванням: "flowgrind-")

-i, --report-interval=#.#
інтервал звітування, у секундах (за замовчуванням: 0.05 с)

--файл журналу[=Фото]
записати вихід у файл журналу FILE (за замовчуванням: flowgrind-'timestamp'.log)

-m пропускна спроможність звіту в 2**20 байт/с (за замовчуванням: 10**6 біт/с)

-n, --flows=#
кількість тестових потоків (за замовчуванням: 1)

-o перезаписати наявні файли журналу (за замовчуванням: не робити)

-p не друкуйте символічні значення (наприклад, INT_MAX) замість чисел

-q, --спокійно
будь тихо, не входи на екран (за замовчуванням: вимкнено)

-s, --tcp-стек=TYPE
не визначайте одиницю вихідних стеків TCP автоматично. Примусово перевести одиницю на TYPE, де
TYPE — це «сегмент» або «байт»

-w записати вихід у файл журналу (те саме, що --файл журналу)

Потік опції
Усі потоки мають дві кінцеві точки, джерело та призначення. Різниця між джерелом
а кінцеві точки призначення впливають лише на встановлення з’єднання. При запуску потоку
кінцева точка призначення слухає сокет, а кінцева точка джерела підключається до нього. Для
фактичний тест це не має різниці, обидві кінцеві точки мають абсолютно однакові можливості.
Дані можна надсилати в будь-якому напрямку, і багато параметрів можна налаштувати окремо
кожна кінцева точка.

Деякі з цих параметрів беруть кінцеву точку потоку як аргумент, позначену 'x' в опції
синтаксису. "x" потрібно замінити або "s" для вихідної кінцевої точки, "d" для
кінцева точка призначення або 'b' для обох кінцевих точок. Щоб вказати різні значення для кожного
кінцеві точки, розділяйте їх комами. Наприклад -W s=8192,d=4096 встановлює рекламоване
вікно до 8192 у джерелі та 4096 у місці призначення.

-A x використовуйте мінімальний розмір відповіді, необхідний для обчислення RTT
(такий же, як -G s=p,C,40)

-B x=# встановити запитуваний буфер відправлення в байтах

-C x зупинити потік, якщо він відчуває місцеві затори

-D x=DSCP
Значення DSCP для байта заголовка IP типу послуги (TOS).

-E перераховувати байти в корисному навантаженні замість надсилання нулів

-F #[,#]...
Параметри потоку після цього параметра застосовуються лише до заданих ідентифікаторів потоків. Корисно в
поєднання з -n для встановлення конкретних параметрів для певних потоків. Починається нумерація
з 0, отже -F 1 відноситься до другого потоку. З -1 можна посилатися на весь потік

-G x=(q|p|g):(C|U|E|N|L|P|W):#1:[#2]
активувати стохастичну генерацію трафіку та встановлювати параметри відповідно до використовуваних
розповсюдження. Для отримання додаткової інформації див. розділ «Варіант генерації трафіку»

-H x=HOST[/КОНТРОЛЬ[:PORT]]
тест від/до HOST. Необов’язковий аргумент – це адреса та порт для CONTROL
підключення до того самого хоста. Припускається, що кінцева точка, яка не вказана
локальний

-J # використовувати випадковий початковий номер (за замовчуванням: читати /dev/urrandom)

-I увімкнути обчислення односторонньої затримки (без синхронізації годинника)

-L виклик connect() на тестовий сокет безпосередньо перед початком надсилання даних (пізно
підключити). Якщо не вказано, тестове з’єднання встановлюється в препараті
етап перед початком тесту

-M x скинути трафік за допомогою libpcap. flowgrindd(1) потрібно запускати як root

-N shutdown() у кожному напрямку сокета після тестового потоку

-O x=OPT
встановити опцію розетки OPT на тестовому розетці. Додаткову інформацію див. у розділі
"Параметри розетки"

-P x не виконуйте ітерації за допомогою select(), щоб продовжити надсилання, якщо розмір блоку не змінився
достатньо, щоб заповнити чергу надсилання (натискання)

-Q лише підсумовуючи, звіти про проміжний інтервал не обчислюються (тихий)

-R x=#.#(z|k|M|G)(b|B)
надсилати із заданою швидкістю в секунду, де: z = 2**0, k = 2**10, M = 2**20, G =
2**30 і b = біт/с (за замовчуванням), B = байти/с

-S x=# встановити розмір блоку (повідомлення) у байтах (так само, як -G s=q,C,#)

-T x=#.#
встановити тривалість потоку в секундах (за замовчуванням: s=10,d=0)

-U # встановити розмір буфера програми в байтах (за замовчуванням: 8192) обрізає значення, якщо вони використовуються з
стохастичне формування трафіку

-W x=# встановити запитуваний буфер приймача (рекламне вікно) у байтах

-Y x=#.#
встановити початкову затримку перед тим, як хост почне надсилати, у секундах

TRAFFIC ПОКОЛІННЯ ВАРІАНТ


Через опцію -G flowgrind підтримує стохастичну генерацію трафіку, що дозволяє проводити
окрім звичайної масової передачі даних також розширена передача даних із обмеженою швидкістю та запитом-відповіддю.

Варіант генерації стохастичного трафіку -G приймає кінцеву точку потоку як аргумент, позначений
через 'x' в синтаксисі параметра. "x" потрібно замінити на "s" для джерела
кінцева точка, "d" для кінцевої точки призначення або "b" для обох кінцевих точок. Проте зверніть увагу
що генерація двонаправленого трафіку може призвести до несподіваних результатів. Вказати різне
значення для кожної кінцевої точки, розділяйте їх комою.

-G x=(q|p|g):(C|U|E|N|L|P|W):#1:[#2]

Параметр потоку:

q розмір запиту (у байтах)

p розмір відповіді (у байтах)

g розрив між пакетами запиту (у секундах)

Розповсюдження:

C постійний (#1: значення, #2: не використовується)

U уніформа (#1: хв, #2: макс)

E експоненціальний (#1: ламба - життя, #2: не використовується)

N нормальний (#1: mu - середнє значення, #2: sigma_square - дисперсія)

L логнормальний (#1: zeta - середній, #2: sigma - стандартний розробник)

P Парето (#1: k - форма, #2: x_min - масштаб)

W Вейбулл (#1: лямбда - шкала, #2: k - форма)

Розширені дистрибутиви, такі як weibull, доступні лише за умови компіляції flowgrind
з підтримкою libgsl.

-U # вкажіть обмеження для обчислених значень для запитів і відповідей, необхідних
оскільки розширені розподілені значення необмежені, але нам потрібно знати
buffersize (він не потрібен для постійних значень або рівномірного розподілу). Цінності
за межами перераховуються до тих пір, поки не буде дійсний результат, але не більше 10
разів (тоді використовується зв'язане значення)

SOCKET ВАРІАНТ


Flowgrind дозволяє встановити наступні стандартні та нестандартні варіанти розеток за допомогою опції
-O.

Усі параметри сокета беруть кінцеву точку потоку як аргумент, позначену 'x' в опції
синтаксису. "x" потрібно замінити або "s" для вихідної кінцевої точки, "d" для
кінцева точка призначення або 'b' для обох кінцевих точок. Щоб вказати різні значення для кожного
кінцеві точки, розділяйте їх комами. Більше того, можна неодноразово проходити те саме
кінцеву точку, щоб задати кілька параметрів сокета.

стандарт розетка опції
-O x=TCP_CONGESTION=ALG
налаштувати алгоритм контролю перевантаження ALG на тестовому сокеті

-O x=TCP_CORK
встановити TCP_CORK на тестовий сокет

-O x=TCP_NODELAY
вимкнути алгоритм nagle на тестовому сокеті

-O x=SO_DEBUG
встановити SO_DEBUG на тестовий сокет

-O x=IP_MTU_DISCOVER
встановіть IP_MTU_DISCOVER на тестовий сокет, якщо ще не ввімкнено за замовчуванням

-O x=ROUTE_RECORD
встановити ROUTE_RECORD на тестовий сокет

Нестандартне розетка опції
-O x=TCP_MTCP
встановити TCP_MTCP (15) на тестовий сокет

-O x=TCP_ELCN
встановити TCP_ELCN (20) на тестовий сокет

-O x=TCP_LCD
встановити TCP_LCD (21) на тестовий сокет

ПРИКЛАДИ


flowgrind
тестування продуктивності локального хосту IPv4 TCP із налаштуваннями за замовчуванням, такими ж, як flowgrind -H
b=127.0.0.1 -T s=10,d=0. Демон flowgrind потрібно запустити на локальному хості

flowgrind -H b=::1/127.0.0.1
те саме, що й вище, але тестування продуктивності TCP локального хосту IPv6 із налаштуваннями за замовчуванням

flowgrind -H s=хост1,d=хост2
масова передача TCP між хостом 1 і хостом 2. Хост1 діє як джерело, хост2 як
кінцева точка призначення. На обох кінцевих точках потрібно запустити демон flowgrind. The
Використовуються параметри потоку за замовчуванням з тривалістю потоку 10 секунд і потоком даних
з хоста 1 на хост2

flowgrind -H s=хост1,d=хост2 -T s=0,d=10
так само, як і вище, але замість цього з потоком, який надсилає дані протягом 10 секунд з хоста 2 до
host1

flowgrind -n 2 -F 0 -H s=192.168.0.1,d=192.168.0.69 -F 1 -H s=10.0.0.1,d=10.0.0.2
налаштуйте два паралельні потоки, перший потік між 192.168.0.1 і 192.168.0.69, другий
flow від 10.0.0.1 до 10.0.0.2

flowgrind -p -H s=10.0.0.100/192.168.1.100,d=10.0.0.101/192.168.1.101 -A s
налаштувати один потік між 10.0.0.100 і 10.0.0.101 і використовувати IP-адреси 192.168.1.x
для контролю руху. Активувати мінімальну відповідь для обчислення RTT

flowgrind -i 0.001 -T s = 1 | егреп ^S | гнулот - зберігатися -e 'сюжет "-" використання 3:5 з ліній
назву "Пропускна здатність" '
налаштуйте один потік через петлевий пристрій і побудуйте дані відправника за допомогою
gnuplot

flowgrind -G s=q,C,400 -G s=p,N,2000,50 -G s=g,U,0.005,0.01 -U 32000
-G s=q,C,400: використовувати постійний розмір запиту 400 байт
-G s=p,N,2000,50: використовуйте нормальний розподілений розмір відповіді із середнім 2000 байт і
дисперсія 50
-G s=g,U,0.005,0.01: використовуйте рівномірно розподілений міжпакетний проміжок з мін. 0.005 с і
і максимум 10 мс
-U 32000: скоротити розміри блоків до 32 Кбайт (необхідно для нормального розподілу)

TRAFFIC СЦЕНАРІЇ


Наступні приклади демонструють, якою може бути здатність flowgrind генерувати трафік
використаний. Вони були включені в різні випробування для flowgrind і були доведені
значущим. Однак, оскільки інтернет-трафік різноманітний, немає гарантії, що це так
доречний у кожній ситуації.

Запит відповідь стиль (HTTP)
Цей сценарій заснований на роботі в
http://www.3gpp2.org/Public_html/specs/C.R1002-0_v1.0_041221.pdf.

flowgrind -M s -G s=q,C,350 -G s=p,L,9055,115.17 -U 100000
-M s: скинути трафік на стороні відправника
-G s=q,C,350: використовувати постійні запити розміром 350 байт
-G s=p,L,9055,115: використовуйте логнормальний розподіл із середнім значенням 9055 та дисперсією 115 для
розмір відповіді
-U 100000: скоротити відповідь на 100 Кбайт

Для цього сценарію ми рекомендуємо зосередитися на RTT (нижчі значення краще) і Мережі
Транзакції/и як показник (вищі значення тим краще).

інтерактивний Session (Telnet)
Цей сценарій емулює сеанс telnet.

flowgrind -G s=q,U,40,10000 -G s=q,U,40,10000 -O b=TCP_NODELAY
-G s=q,U,40,10000 -G s=q,U,40,10000: використовувати рівномірний розподілений запит і відповідь
розмір від 40 до 10 кБ
-O b=TCP_NODELAY: встановити параметри сокета TCP_NODELAY, які використовуються програмами telnet

Для цього сценарію корисними показниками є RTT (нижче, тим краще) і мережеві транзакції
(чим вище, тим краще).

ставка обмеженою (Потокове ЗМІ)
Цей сценарій емулює передачу відеопотоку зі швидкістю 800 кбіт/с.

flowgrind -G s=q,C,800 -G s=g,N,0.008,0.001
Використовуйте нормальний розподілений міжпакетний розрив із середнім значенням 0.008 і невеликою дисперсією
(0.001). У поєднанні з розміром запиту 800 байт середній бітрейт становить приблизно 800
кбіт/с досягається. Дисперсія додається для емуляції змінного бітрейту, як він є
використовується в сучасних відеокодеках.

Для цього сценарію IAT (менше, тим краще) і мінімальна пропускна здатність (що вище, тим краще).
цікаві показники.

ВИХІД КОЛОНИ


Потік/кінцева точка ідентифікатори
# кінцева точка потоку, 'S' для джерела або 'D' для призначення

ID числовий ідентифікатор потоку

починати та кінець
межі інтервалу вимірювання в секундах. Показаний час є минулим
час з моменту отримання повідомлення RPC для початку тестування з точки демона
вид

додаток шар показники
через
передача продуктивності кінцевої точки потоку протягом цього інтервалу вимірювання,
вимірюється в Мбіт/с (за замовчуванням) або МБ/с (-m)

угода
кількість успішно отриманих блоків відповіді в секунду (ми називаємо це мережею
транзакції/и)

вимога/відп
кількість блоків запитів і відповідей, надісланих протягом цього інтервалу вимірювання (стовп
вимкнено за замовчуванням)

IAT блокувати час між прибуттям (IAT). Разом з мінімальним і максимальним
відображається середнє арифметичне для цього конкретного інтервалу вимірювання. Якщо блоку немає
отримано протягом інтервалу звіту, відображається 'inf'.

DLY та RTT
Одностороння та двостороння блокування затримують відповідно затримку блоку та блокування в обидва боки
час (RTT). Для обох затримок мінімальне та максимальне зустрічаються значення
інтервал вимірювання відображаються разом із середнім арифметичним. Якщо немає блоку,
відповідно, підтвердження блоку надходить протягом цього інтервалу звіту, 'inf' є
відображається. За замовчуванням вимкнено односторонню та двосторонню затримку блокування (див
варіант -I та -A).

Ядро показники (TCP_INFO)
Усі наступні специфічні для TCP метрики отримуються з ядра через TCP_INFO
варіант розетки на кінець кожного звітного інтервалу. Частоту дискретизації можна змінити за допомогою
варіант -i.

cwnd (tcpi_cwnd)
розмір вікна перевантаження TCP (CWND) у кількості сегментів (Linux) або байтах
(FreeBSD)

ssth (tcpi_snd_sshtresh)
розмір порогового значення повільного запуску в кількості сегментів (Linux) або байтів (FreeBSD)

uack (tcpi_unacked)
кількість непідтверджених сегментів, тобто кількість сегментів у польоті
(FlightSize) (лише для Linux)

мішок (tcpi_sacked)
кількість вибірково підтверджених сегментів (лише для Linux)

втрачений (tcpi_lost)
кількість втрачених сегментів (лише для Linux)

ретр (tcpi_retrans)
кількість непідтверджених повторно переданих сегментів (лише для Linux)

трет (tcpi_retransmits)
кількість повторних передач, ініційованих тайм-аутом повторної передачі (RTO) (лише для Linux)

фак (tcpi_fackets)
кількість сегментів між SND.UNA та найвищим вибірково визнаним
порядковий номер (SND.FACK) (лише для Linux)

реор (tcpi_reordering)
показник переупорядкування сегментів. Ядро Linux може виявляти та впоратися з переупорядкуванням
без значної втрати продуктивності, якщо відстань, на яку зміщується сегмент, дорівнює
не перевищувати показник переупорядкування (тільки для Linux)

RTT (tcpi_rtt) і rttvar (tcpi_rttvar)
Час обертання TCP і його дисперсія в мс

rto (tcpi_rto)
час очікування повторної передачі в мс

bkof (tcpi_backoff)
кількість відмов RTO (лише для Linux)

ca були (tcpi_ca_state)
внутрішній стан кінцевого автомата керування перевантаженням TCP, як реалізовано в
Ядро Linux. Може бути одним із відкрити, розлад, cwr, відновлення or від (лише для Linux)

відкритий це нормальний стан. Це вказує, що немає дублікатів підтвердження (ACK).
отримано, і жоден сегмент не вважається втраченим

Розлад
вводиться після отримання першого послідовного дубліката ACK або
вибіркове підтвердження (SACK)

CWR вводиться, коли сповіщення від явного сповіщення про перевантаження (ECN)
отримано

відновлення
вводиться, коли є три повторювані ACK або еквівалентна кількість SACK
отримано. У цьому стані процедури контролю завантаженості та відшкодування збитків, як
Виконуються швидка повторна передача та швидке відновлення (RFC 5861).

Втрата вводиться, якщо закінчується термін дії RTO. Знову контроль заторів і відшкодування збитків
процедури виконуються

смс та pmtu
максимальний розмір сегмента відправника і максимальна одиниця передачі шляху в байтах

Внутрішній flowgrind були (тільки включений in відлагоджувати будує)
статус стан потоку всередині flowgrind для діагностичних цілей. Це кортеж із двох
значення, перший для відправлення, а другий для отримання. В ідеалі штати
як вихідна, так і кінцева точки потоку повинні бути симетричними, але оскільки
вони не синхронізовані, вони можуть не змінюватися одночасно. Можливі значення
є:

c Напрям завершено відправлення/отримання

d Очікування початкової затримки

f Стан несправності

l Активний стан, ще нічого не передано чи не отримано

n Нормальна активність, деякі дані були передані або отримані

o Потік має нульову тривалість у цьому напрямку, обмін даними не буде

AUTHORS


Спочатку Flowgrind був створений Деніелем Шаффратом. Розподілене вимірювання
архітектуру та розширену генерацію трафіку пізніше додав Тім Коссе і
Крістіан Самсель. В даний час flowgrind розробляється і підтримується Arnd Hannemann і
Олександр Циммерман.

Використовуйте flowgrind онлайн за допомогою служб onworks.net


Безкоштовні сервери та робочі станції

Завантажте програми для Windows і Linux

Команди Linux

Ad