Mam następujące class i policy mapy:
Całość dopisana do tunelu poleceniem: service-policy output POLICYclass-map match-any CS7
match protocol gre
match protocol pim
match protocol eigrp
class-map match-any CS6
match protocol ntp
class-map match-any CS5
match protocol icmp
match protocol pim-rp-disc
class-map match-any CS4
match protocol ssh
match protocol telnet
policy-map POLICY
class CS7
set ip dscp cs7
class CS6
set ip dscp cs6
class CS5
set ip dscp cs5
class CS4
set ip dscp cs4
Badam Wiresharkiem na wyjściu prawidłowość znakowania pakietów i widzę, że znakowanie nie działa dla następujących protokołów: GRE, SSH i TELNET. Dla wszystkich pozostałych (tj. PIM, EIGRP, NTP, ICMP, PIM-RP-DISC) jest OK - znakowanie przebiega poprawnie wg. class i policy mapy.
Dodam, że jeżeli zamienię np. "match protocol gre" na "match access-group name GRE", gdzie ACLka jest następująca:
to wtedy zaczyna również poprawnie znakować pakiety GRE.ip access-list extended GRE
permit gre any any
Identyczna sytuacja jest z pakietami telnetu i ssh - gdy zamienię NBAR na ACL-kę, to wtedy jest OK.
Czy to jakieś ograniczenie NBARu w stosunku do tych protokołów?
Żeby było ciekawiej, to wpisanie lub usunięcie z tunelu polecenia "ip nbar protocol-discovery" w ogóle nie zmienia zachowania NBARu - router nadal poprawnie znakuje wszystko oprócz GRE, SSH i TELNET.
A może fraza "match protocol" nie korzysta z NBARu?
Sprzęt, na którym robię testy to 2811, IOS: 15.1(4)M12a (adv. security)