Курсовая работа: Домашнее задание
Описание
Характеристики курсовой работы
Список файлов
- Домашнее задание
- 2017 ns3 (tcp-mode) (решение avasite)
- Bic.png 316,21 Kb
- NewReno.png 107,97 Kb
- Vegas.png 91,83 Kb
- ns3 compile_ build_ run.txt 653 b
- scratch (avasite).tar.gz 3,49 Kb
- Задание (форулировка v0.2).txt 1,99 Kb
- Ответ.txt 2,07 Kb
- 2017 задание ns3 (tcp-mode).pdf 468,53 Kb
Download latest ns3:
https://www.nsnam.org/releases/
Build up
cd ns-allinoise-3.26
./build.py --enable-examples --enable-tests
Run your favourite example
cd ns-3.26
./waf --run "tcp-variants-comparison --tracing=true"
# This will run example from ns-allinoise-3.26/ns-3.26/examples/tcp/t cp-variants-comparison.cc
Create your own example in directory "examples/my-awesome-model/my-model.cc"
add files "wscript" (contains info for linker) and "examples-to-run.py"
Have fun and store your network simulation info pcap files
Open pcap files in wireshark and "Statistics -> I/O Graph" - watch cool pictures
Задание для получения автомата по курсу
1) Используя систему моделирования ns3 построить модель сети из 2-х узлов, соединёных друг с другом через один маршрутизатор линиями связи с полосой пропускания 100 Mbps и задержкой 200 миллисекунд
1.1) конкретная полоса пропускания и задержка может быть изменена на ваше усмотрение, главное чтобы на графиках была хорошо видна структура cwnd для различных tcp режимов
1.2) пропускная способность линий должна различаться, чтобы на маршрутизаторе буффер переполнялся и пакеты терялись
1.3) Чтобы буфер переполнялся не в отдалённом будущем а достаточно быстро - уменьшите размер буффера (например до 10 пакетов)
2) Запустить Tcp BulkSenderApplication и построить график изменения CWND на протяжении 10с
время может быть изменено на ваше усмотрение, главное чтобы на графиках была хорошо видна структура cwnd для различных tcp режимов
3) Исследовать несколько различных алгоритмов управления перегрузкой tcp: Bic, NewReno, Vegas
4) Построить графики отображающие характер изменения (cwnd/фактической пропускной способности) и рассчитать процент утилизации канала для каджого из указанных алгоритмов
Параметры запуска видны из команды запуска:
MODE='NewReno' ; mkdir -p scratch-log; rm -R ./scratch-log/scratch.$MODE.* ; ./waf --run "scratch-tcp --senderBandwidth=10Mbps --senderDelay=50ms --sinkBandwidth=1Mbps --sinkDelay=50ms --transportMode=Tcp$MODE --prefixFileName=scratch-log/scratch.$MO DE --bufSize=20 --stopTime=200"
--senderBandwidth=10Mbps
--senderDelay=50ms
--sinkBandwidth=1Mbps
--sinkDelay=50ms
--bufSize=20
--stopTime=200
PacketSinkHelper - логгирует, сколько байт принято в конкретный момент времени, это и будет использоваться для вычисления утилизации канала:
TcpNewReno:
At time 200s packet sink received 536 bytes from 10.0.2.1 port 49153 total Rx 21014416 bytes
Bic:
At time 200.016s packet sink received 536 bytes from 10.0.2.1 port 49153 total Rx 11152408 bytes
Vegas:
At time 200.041s packet sink received 536 bytes from 10.0.2.1 port 49153 total Rx 6215456 bytes
за 200 секунд с пропускной способностью канала 1Mbps и 50 мс задержки при посылке UDP (т.е. подряд пакет за пакетом и никаких ожиданий) можно переслать: (200s - 50ms) * 1Mbps / 8 = 24993750 байт
Таким образом, утилизация канала равна
TcpNewReno: 21014416 / 24993750 = 84 %
Bic: 11152408 / 24993750 = 44.6 %
Vegas: 6215456 / 24993750 = 24.8 %
При симуляции логи сетевой передачи данных складывались в pcap, после чего пропускная способность была нарисована при помощи wireshark (также рисуется и количество потерь). Картинки приложены.
Отмечу, что пропускная способность имеет прямую корреляцию с размером cwnd.