В ns2 на уровне ядра реализованы почти все известные протоколы сетей связи.
Среди наиболее актуальных на данный момент можно отметить следующие: MPLS, IPv6,
OSPF, RSVP, протоколы беспроводной связи, web caching и многие другие. Так же
реализовано целое семйство дисциплин обслуживания очередей: RED, WFQ, CBQ, SFQ
и т.д.
Реализация собственного протокола в рамках ns2 не сложна, если пользователь
знаком с принципами построения архитектуры ns2 и с основами программирования
протоколов.
В первую очередь необходимо написать код С++, в который входит определение форматов
пакетов нового протокола (если это необходимо), логики функционирования протокола,
необходимых для этого классов С++ и функций bind (см. выше) для связи
кода с OTcl. Далее модифицируется исходный для ns2 файл makefile и производится
перекомпиляция ядра. В результате описанных действий пользователь имеет возможность
использовать новый протокол в скрипте сценария моделирования сети связи. К сожлению,
весьма слабым местом ns2 является документация, хотя руководство пользователя
существует и всегда доступно в форматах html и ps. Это руководство не является
исчерпывающим и некоторые свойства ns2 в нем не отражены.
Обеспечение сильной математической поддержки позволяет создавать различные
виды трафика, начиная от простейшего, подчиняющегося пуассоновскому закону,
заканчивая самоподобным. Гибкость архитектуры ns2 позволяет пользователю реализовывать
собственные математические функции на С++.
Реализация модели ошибок позволяет моделировать возникновение ошибок
на канальном уровне, т.е. искажение или потерю информации. Моделирование возникновения
ошибки возможно на уровне битов, пакетов или вероятности в секунду. Возможна
так же реализация пользовательской модели ошибок.