В общем, после пары недель борьбы с настройкой шейпинга на DFL-210 решил отписаться, что у меня вышло, и на какие грабли можно напороться.
Начну с того, что вышеприведённая рекомендация
Dima G., основанная всего на паре каналов и на паре правил с использованием данных каналов, не сработала.
Основная причина заключается в том, что, как выяснилось в ходе экспериментов и изучения мануала, у канала
обязательно должно быть указано его общее ограничение (Total limit), если быть точнее, то общее ограничение обязательно должно быть прописано у канала, замыкающего прямую/обратную цепочку каналов в правиле канала (в случае задействования правилом в прямой/обратной цепочках по одному каналу, эти одиночные каналы должны быть лимитированы). В принципе, всё это описано в мануале с примерами на основе шейпинга SSH и Telnet трафика, но тут на форуме я где-то встретил утверждение одного из участников, что, мол, и без указания общего ограничения канала всё работает прекрасно и, так сказать, повёлся. Может я конечно автора того сообщения неправильно понял, но сейчас искать тот пост и вникать в написанное лень, шейпинг на базе безлимитных каналов у меня не заработал.
Ещё один нюанс, с которым я столкнулся: шейпинг трафика в DFL очень чувствителен к точному указанию общего ограничения канала. В ситуации подобной моей, когда под основной канал необходимо задействовать всю ширину полосы пропускания, предоставляемую провайдером, желательно как можно более точно указать
реальную ширину полосы пропускания: думаю, ни для кого не станет откровением, что зачастую заявляемые провайдерами в рекламе скорости несколько разнятся с реальными. Чем точнее будет указана реальная скорость, тем точнее будет отрабатываться шейпинг в DFL.
А вот и следующие "грабли", напрямую вытекающие из предыдущего абзаца: если провайдер предоставляет к каким-либо ресурсам скорость в 100 mbps или более, то указывать для канала ограничение с данными параметрами нет ни какого смысла. Во-первых, DFL физически не может обеспечить данные скорости в направлениях WAN-LAN/LAN-WAN, для DFL-210, насколько понял, скорость по этим направлениям не более 80 mbps. Во-вторых, при указании в качестве общего ограничения канала полновесных 100 mbps шейпинг работает крайне некорректно, можно сказать, что и не работает вовсе.
На основании всего вышеизложенного мне лично для своих нужд пришлось создавать пачку каналов и ещё бОльшую пачку правил.
Повторю исходные данные:
Способ выхода в Internet: NAT провайдера
Скорость доступа к Internet днём (upload/download): 3 mbps/3 mbps
Скорость доступа к Internet ночью (upload/download): 5 mbps/5 mbps
Скорость доступа к локальным ресурсам ISP (в том числе upload/download через ретрекер, организованный провайдером): 100 mbps/100 mbps
Внутри моей домашней локалки 2 машины:
1. "General" (192.168.200.2) - основной рабочий комп
2. "Torrent" (192.168.200.3) - торрентокачалка (основная задача её, надеюсь, понятна из названия

, ничего кроме торрент-клиента и FTP-сервера на ней не установлено)
Задача:
1. Обеспечить для Torrent гарантированную полосу пропускания в 300 kbps в обоих направлениях независимо, с какими ресурсами происходит соединение: с Internet или с хостами внутри провайдерской сети.
2. Всю оставшуюся полосу пропускания в обоих направлениях динамически шейпить между машинами Torrent и General, отдавая приоритет General. Т.е. если General под текущие нужды необходима вся доступная полоса пропускания (за вычетом, естественно, 300 kbps, гарантированных для Torrent), то DFL ей (машине) её и предоставляет, ужимая Torrent до гарантированных ей 300 kbps. Как только у General отпадает потребность в использовании всей доступной полосы пропускания, освободившаяся ширина полосы пропускания передаётся под нужды Torrent.
Решение:
Т.к. провайдер в разное время суток предоставляет разные скорости, то для начала пришлось в
Objects>Schedules задать пару расписаний, которые обозвал
"Day" и
"Night".
Далее пошёл ваять сами каналы. Получилось их у меня аж 8:
1., 2. Total_Internet_Day-Out/Total_Internet_Day-In
Precedences: 0-3-7
Во вкладке Pipe Limits:
Precedence: везде пусто
Total: 3072
Это у меня основные прямой и обратный каналы для доступа к Internet днём со скоростью 3 mbps.
3., 4. Total_Internet_Night-Out/Total_Internet_Night-InPrecedences: 0-3-7
Во вкладке Pipe Limits:
Precedence: везде пусто
Total: 5120
Это у меня основные прямой и обратный каналы для доступа к Internet ночью со скоростью 5 mbps.
5., 6. Total_ISP_Local-Out/Total_ISP_Local-InPrecedences: 0-3-7
Во вкладке Pipe Limits:
Precedence: везде пусто
Total: 81920
Это основные прямой и обратный каналы для доступа к ресурсам внутри провайдерской сети со скоростью 80 mbps (почему не указал обещанные провайдером 100 mbps, я выше в общих чертах уже описал).
7., 8. Torrent-Out/Torrent-InPrecedences: 0-5-7
Во вкладке Pipe Limits:
Precedence 5: 300
Total: пусто
А это, собственно, отдельные каналы, которые гарантируют 300 kpps для Torrent в обоих направлениях. Общее ограничение каналов не указано, т.к. далее в правилах они будут использованы только в связке с одним из основных каналов, которые будут замыкать цепочки и устанавливать общее ограничение на доступную ширину полосы пропускания.
Ну а теперь правила... Их у меня пока получилось 12 (приведены точно в той последовательности, в какой они у меня идут):
1. General_ISP_LocalService: all_services
Source Interface: lan
Source Network: General (192.168.200.2)
Destination Interface: wan
Destination Network: ISP-net (10.0.0.0/8 )
Во вкладке Traffic Shaping:
Selected Forward Chain: Total_ISP_Local-Out
Selected Return Chain: Total_ISP_Local-In
Precedence: Use defaults from first pipe
2. General_ISP_Local_SATService: all_services
Source Interface: wan
Source Network: ISP-net (10.0.0.0/8 )
Destination Interface: core
Destination Network: General (192.168.200.2)
Во вкладке Traffic Shaping:
Selected Forward Chain: Total_ISP_Local-In
Selected Return Chain: Total_ISP_Local-Out
Precedence: Use defaults from first pipe
3. Torrent_ISP_LocalService: all_services
Source Interface: lan
Source Network: Torrent (192.168.200.3)
Destination Interface: wan
Destination Network: ISP-net (10.0.0.0/8 )
Во вкладке Traffic Shaping:
Selected Forward Chain: Torrent-Out,Total_ISP_Local-Out
Selected Return Chain: Torrent-In, Total_ISP_Local-In
Precedence: Use defaults from first pipe
4. Torrent_ISP_Local_SATService: all_services
Source Interface: wan
Source Network: ISP-net (10.0.0.0/8 )
Destination Interface: core
Destination Network: Torrent (192.168.200.3)
Во вкладке Traffic Shaping:
Selected Forward Chain: Torrent-In, Total_ISP_Local-In
Selected Return Chain: Torrent-Out,Total_ISP_Local-Out
Precedence: Use defaults from first pipe
Этими первыми четырьмя правилами отсекаю трафик в пределах провайдерской сети от Internet-трафика, ну и шейплю, естественно, согласно заданным условиям.
Далее у меня идут правила на основе расписаний:
5. General_DayService: all_services
Schedule: Day
Source Interface: lan
Source Network: General (192.168.200.2)
Destination Interface: wan
Destination Network: all-nets
Во вкладке Traffic Shaping:
Selected Forward Chain: Total_Internet_Day-Out
Selected Return Chain: Total_Internet_Day-In
Precedence: Use defaults from first pipe
6. General_NightService: all_services
Schedule: Night
Source Interface: lan
Source Network: General (192.168.200.2)
Destination Interface: wan
Destination Network: all-nets
Во вкладке Traffic Shaping:
Selected Forward Chain: Total_Internet_Night-Out
Selected Return Chain: Total_Internet_Night-In
Precedence: Use defaults from first pipe
7. General_Day_SATService: all_services
Schedule: Day
Source Interface: wan
Source Network: all-nets
Destination Interface: core
Destination Network: General (192.168.200.2)
Во вкладке Traffic Shaping:
Selected Forward Chain: Total_Internet_Day-In
Selected Return Chain: Total_Internet_Day-Out
Precedence: Use defaults from first pipe
8. General_Night_SATService: all_services
Schedule: Night
Source Interface: wan
Source Network: all-nets
Destination Interface: core
Destination Network: General (192.168.200.2)
Во вкладке Traffic Shaping:
Selected Forward Chain: Total_Internet_Night-In
Selected Return Chain: Total_Internet_Night-Out
Precedence: Use defaults from first pipe
9. Torrent_DayService: all_services
Schedule: Day
Source Interface: lan
Source Network: Torrent (192.168.200.3)
Destination Interface: wan
Destination Network: all-nets
Во вкладке Traffic Shaping:
Selected Forward Chain: Torrent-Out, Total_Internet_Day-Out
Selected Return Chain: Torrent-In, Total_Internet_Day-In
Precedence: Use defaults from first pipe
10. Torrent_NightService: all_services
Schedule: Night
Source Interface: lan
Source Network: Torrent (192.168.200.3)
Destination Interface: wan
Destination Network: all-nets
Во вкладке Traffic Shaping:
Selected Forward Chain: Torrent-Out, Total_Internet_Day-Out
Selected Return Chain: Torrent-In, Total_Internet_Day-In
Precedence: Use defaults from first pipe
11. Torrent_Day_SATService: all_services
Schedule: Day
Source Interface: wan
Source Network: all-nets
Destination Interface: core
Destination Network: Torrent (192.168.200.3)
Во вкладке Traffic Shaping:
Selected Forward Chain: Torrent-In, Total_Internet_Day-In
Selected Return Chain: Torrent-Out, Total_Internet_Day-Out
Precedence: Use defaults from first pipe
12. Torrent_Night_SATService: all_services
Schedule: Night
Source Interface: wan
Source Network: all-nets
Destination Interface: core
Destination Network: Torrent (192.168.200.3)
Во вкладке Traffic Shaping:
Selected Forward Chain: Torrent-In, Total_Internet_Night-In
Selected Return Chain: Torrent-Out, Total_Internet_Night-Out
Precedence: Use defaults from first pipe
Вот такая у меня развесистая конструкция получилась, в целом, вроде, работает. Можно её конечно почикать путём удаления четырёх SAT-правил для Internet-трафика, т.к. находясь под NAT'ом провайдера толку от них ни какого не будет, но фен-шуй...
Как уже сказал, в целом работает, но есть одна проблема, объясню лучше на примере. Torrent качает, раздаёт в полный рост, с машины General в/с Internet минимум запросов. Решаю качнуть чего-нибудь с помощью General: скорость загрузки на General постепенно возрастает (кстати, не так быстро, как хотелось бы) и... на машине Torrent наблюдаю вместе с понижением скорости загрузки (чего, собственно, и добивался) пропорциональное проседание скорости отдачи. И в таком состоянии она и колеблется, пока General загрузку не завершит. С чего ей так проседать-то, ведь исходящий-то трафик от General, по идее, не должен быть настолько большим во время загрузки? Так пока и не смог данное явление побороть, фантазии уже не хватает. Может кто чего подскажет?
Ещё один вопрос, касательно того, как правильно прописывать сети и интерфейсы при создании правил каналов для SAT? Какой из этих вариантов более корректный:
1. wan all-nets -
core IP_на_который_пробрасывается_сервис
2. wan all-nets -
lan IP_на_который_пробрасывается_сервис