Thank you for your reply. I am reading the source code of this logic but it is really hard to understand every handling details.
static void xlate_actions__(struct xlate_in *xin, struct xlate_out *xout) (...skip...) flow_wildcards_init_catchall(wc); memset(&wc->masks.in_port, 0xff, sizeof wc->masks.in_port); memset(&wc->masks.skb_priority, 0xff, sizeof wc->masks.skb_priority); memset(&wc->masks.dl_type, 0xff, sizeof wc->masks.dl_type); (...skip...) >>I don't remember while the frag field is not wildcarded, but I think it had >>to do with the kernel interface. We should really document the logic. I'll >>try to >>remember to add some documentation around that. That makes looking forward to it! Thanks. At 2015-09-09 15:18:54, "Justin Pettit" <jpet...@nicira.com> wrote: > >> On Sep 8, 2015, at 11:54 PM, openvswitcher <openvswitc...@163.com> wrote: >> >> Thank you very much. >> I found If I enable it, the flows with flow-mask will be installed in kernel. >> Otherwise, the flow with no flow-mask wil be installed. >> But I could not understand how to calculate the mask should be used. >> If only one NORMAL rule exists, and I enabled megaflow, when one virtual >> machine ping another one, >> the flows bellow are installed. >> >> root@comm:~# ovs-dpctl dump-flows >> skb_priority(0),in_port(9),eth(src=fa:16:3e:49:a8:9b,dst=fa:16:3e:99:79:7f),eth_type(0x0800),ipv4(src=192.168.10.2/0.0.0.0,dst=192.168.10.4/0.0.0.0,proto=1/0,tos=0/0,ttl=64/0,frag=no/0xff), >> packets:426, bytes:41748, used:0.692s, actions:11 >> skb_priority(0),in_port(11),eth(src=fa:16:3e:99:79:7f,dst=fa:16:3e:49:a8:9b),eth_type(0x0800),ipv4(src=192.168.10.4/0.0.0.0,dst=192.168.10.2/0.0.0.0,proto=1/0,tos=0/0,ttl=64/0,frag=no/0xff), >> packets:426, bytes:41748, used:0.692s, actions:9 >> >> So why the frag flag and the in_port/src mac/dst mac are not masked? > >The ingress port and MAC addresses need to be not wildcarded, because the >"normal" action does L2 learning and forwarding. The ingress port and source >MAC make up the learning portion, and the destination MAC is used for the >forwarding decision--they're all relevant fields. I think the ethertype is >not wildcarded because it's needed in (the hidden) in-band control rules. I >don't remember while the frag field is not wildcarded, but I think it had to >do with the kernel interface. We should really document the logic. I'll try >to remember to add some documentation around that. > >--Justin > > _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev