Соответствует определенному флагу TCP независимо от других флагов, установленных в Openflow - PullRequest
0 голосов
/ 10 января 2019

Я хочу сопоставить определенный флаг (например, FIN) независимо от любых других установленных флагов. Например, для 17 = ACK + FIN у меня будет совпадение, 3 = SYN + FIN также совпадет (я знаю, что комбинация флагов не должна появляться в обычном сценарии)

Я прочитал спецификацию для OpenFlow 1.3 (с которой я сейчас работаю), а также список изменений для 1.4 и 1.5, но не смог найти ничего подобного. Я искал ключевые слова, такие как «флаг» или «подстановочный знак». Мое решение пока состоит в том, чтобы указать каждую комбинацию флагов явно. Как

match = ofparser.OFPMatch(eth_type=ether.ETH_TYPE_IP, ip_proto=inet.IPPROTO_TCP, tcp_flags=FIN)
match2 = ofparser.OFPMatch(eth_type=ether.ETH_TYPE_IP, ip_proto=inet.IPPROTO_TCP, tcp_flags=FIN_ACK)
...

Хотя это работает, я хотел бы знать, смогу ли я избежать раздувания моих таблиц с правилами и сопоставления всех этих комбинаций с одним правилом. Может быть, даже если это в будущих версиях OF?

Спасибо за вашу помощь. Приветствия.


Редактировать: Согласно справочной странице ovs-ofctl :

Флаги, не упомянутые, являются символами подстановки.

Так что это должно быть не ограничением самого OpenFlow, а Ryu. При построении объекта совпадения tcp_flags представляются как int, поэтому я предполагаю, что он строит конкретное совпадение.

...