Нет прямой поддержки приоритетной очереди, основанной на этом поле, но это можно сделать относительно легко:
Проверьте пакет inet.queueing
. Существует множество очередей, расписаний и т. Д. c. связанные вещи там. (вы также можете проверить учебник: https://inet.omnetpp.org/docs/tutorials/queueing/doc/index.html)
Вам необходимо развернуть inet.queueing.PacketQueue
(см. документы в файле NED) (или DropTailQueue
(если у вас есть ограничить размер очереди) (это просто PacketQueue с настроенной стратегией отбрасывания)
Реализация класса IPacketComparatorFunction
в C ++ для упорядочивания ваших пакетов по мере необходимости, а затем настройте этот класс в качестве параметра comparatorClass
PacketQueue
.
В настоящее время EtherMac
настроен на использование EtherQueue
в качестве модуля очереди, который DropTailQueue
параметризован с помощью компаратора, который отдает приоритет rnet кадрам PAUSE с использованием inet::EthernetFrameComparator
(см., Например, как создать класс компаратора).
Как только вы реализуете правильный компаратор на основе тегов VLAN, вы можете просто настроить свой собственный компаратор в качестве параметра comparatorClass
в очереди.