Нормального (с очередями, borrow и прочим) шейпера на Solaris – не существует. Зато есть отдельные сервисы flowadm и crossbow. Оба они не слишком идеально подходят для в качестве шейпера, но ограничивать полосу они могут. Рассмотрим только flowadm, так как crossbow больше подходит для виртуализации (кстати, именно им можно ограничивать скорость на виртуальных интерфейсах vnic).
Тестовый стенд: Solaris 11
$ scp 10.5.5.116:/export/home/skeletor/firefox.tar ../tmp/ Password: firefox.tar 82% 81MB 15.7MB/s 00:01 ETA
Скорость приличная, 15.7 Мбайт/с
Установим скорость в 10 Мбит/с:
#flowadm add-flow -l net0 -a remote_ip=10.5.5.55 -p maxbw=10M skel-flow
где net0 – сетевой интерфейс, на который вешаем ограничение, remote_ip – удалённый IP на который действует ограничение, maxbw – собственно ограничение по скорости, skel-flow – имя для ограничения.
Смотрим текущие ограничения:
# flowadm show-flow FLOW LINK IPADDR PROTO LPORT RPORT DSFLD skel-flow net0 RMT:10.5.5.55/32 -- -- -- --
И более подробно:
# flowadm show-flowprop skel-flow FLOW PROPERTY VALUE DEFAULT POSSIBLE skel-flow maxbw 10 -- --
Проверяем скорость:
skeletor@skeletor:~/git$ scp 10.5.5.116:/export/home/skeletor/firefox.tar ../tmp/ Password: firefox.tar 12% 12MB 1.2MB/s 00:58 ETA
Как видим скорость упала больше, чем в 10 раз.
Для удаления используейте flowadm remove-flow:
# flowadm remove-flow skel-flow
# flowadm show-flow
#
Примечание.
Для не глобальных зон, есть некоторые ограничения: если у вас ip-type=shared, то все правила нужно писать только в global зоне. Иначе получите сообщение:
# flowadm show-flow
flowadm: could not open /dev/dld: object not found