Hi neale,

I set the memif0/2 as the arp proxy, with addr: 10.10.2.0/24.
It goes to "ip4-flow-classify" but becomes misses...

vpp# create tap id 0
tap0
vpp# create interface memif id 2 slave
vpp# create interface memif id 3 slave
vpp# set interface state memif0/2 up
vpp# set interface state memif0/3 up
vpp# set int state tap0 up
vpp# classify table mask hex 
00000000000000ff0000ffffffffffffffffffff000000000000000000000000 buckets 16
vpp# classify session opaque-index 0 table-index 0 match hex 
000000000000000600000a0a02010a0a0202300c000000000000000000000000 action 
set-ip4-fib-id 100
vpp# classify session opaque-index 1 table-index 0 match hex 
000000000000000600000a0a02010a0a0202306f000000000000000000000000 action 
set-ip4-fib-id 200
vpp# ip route add 10.10.2.2/32 table 100 via memif0/3
vpp# ip route add 10.10.2.2/32 table 200 via tap0
vpp# ip route add 10.10.2.1/32 via memif0/2
vpp# ip route add 10.10.2.0/24 via classify 0
vpp# set flow classify interface memif0/2 ip4-table 0

vpp# set int ip address memif0/2 10.10.2.0/24

vpp# set ip arp proxy 10.10.2.1 - 10.10.2.11
vpp# set interface proxy-arp memif0/2 enable

vpp# trace add memif-input 20
vpp#

#
ip addr add dev tap0 10.10.2.2/24

**** Before test
vpp# show err
Count                    Node                  Reason
8                arp-proxy               ARP replies sent
117             ethernet-input             no error

**** After test
vpp# show err
Count                    Node                  Reason
9                arp-proxy               ARP replies sent
6                ip4-glean               ARP requests sent
6 *ip4-flow-classify           Flow classify misses*
117             ethernet-input             no error

vpp# show trace
------------------- Start of thread 0 vpp_main -------------------
Packet 1

00:26:33:904177: memif-input
memif: hw_if_index 2 next-index 4
slot: ring 0
00:26:33:904194: ethernet-input
IP4: b2:5f:84:5e:0b:43 -> 02:fe:5f:e8:9a:43
00:26:33:904204: ip4-input
TCP: 10.10.2.1 -> 10.10.2.2
tos 0x00, ttl 64, length 60, checksum 0xaa35
fragment id 0x7870, flags DONT_FRAGMENT
TCP: 12399 -> 12345
seq. 0xdb5ba86d ack 0x00000000
flags 0x02 SYN, tcp header: 40 bytes
window 29200, checksum 0x712e
00:26:33:913725: *ip4-flow-classify*
FLOW_CLASSIFY: sw_if_index 2 next 1 table 0 offset -1
00:26:33:913764: ip4-lookup
fib 0 dpo-idx 3 flow hash: 0x00000000
TCP: 10.10.2.1 -> 10.10.2.2
tos 0x00, ttl 64, length 60, checksum 0xaa35
fragment id 0x7870, flags DONT_FRAGMENT
TCP: 12399 -> 12345
seq. 0xdb5ba86d ack 0x00000000
flags 0x02 SYN, tcp header: 40 bytes
window 29200, checksum 0x712e
00:26:33:948054: ip4-glean
TCP: 10.10.2.1 -> 10.10.2.2
tos 0x00, ttl 64, length 60, checksum 0xaa35
fragment id 0x7870, flags DONT_FRAGMENT
TCP: 12399 -> 12345
seq. 0xdb5ba86d ack 0x00000000
flags 0x02 SYN, tcp header: 40 bytes
window 29200, checksum 0x712e
00:26:33:948069: memif0/2-output
memif0/2
ARP: 02:fe:5f:e8:9a:43 -> ff:ff:ff:ff:ff:ff
request, type ethernet/IP4, address size 6/4
02:fe:5f:e8:9a:43/10.10.2.0 -> 00:00:00:00:00:00/10.10.2.2
00:26:33:948072: error-drop
rx:memif0/2
00:26:33:948076: drop
ip4-glean: ARP requests sent

Packet 2

00:26:34:893852: memif-input
memif: hw_if_index 2 next-index 4
slot: ring 0
00:26:34:893859: ethernet-input
IP4: b2:5f:84:5e:0b:43 -> 02:fe:5f:e8:9a:43
00:26:34:893863: ip4-input
TCP: 10.10.2.1 -> 10.10.2.2
tos 0x00, ttl 64, length 60, checksum 0xaa34
fragment id 0x7871, flags DONT_FRAGMENT
TCP: 12399 -> 12345
seq. 0xdb5ba86d ack 0x00000000
flags 0x02 SYN, tcp header: 40 bytes
window 29200, checksum 0x6d44
00:26:34:893867: ip4-flow-classify
FLOW_CLASSIFY: sw_if_index 2 next 1 table 0 offset -1
00:26:34:893873: ip4-lookup
fib 0 dpo-idx 3 flow hash: 0x00000000
TCP: 10.10.2.1 -> 10.10.2.2
tos 0x00, ttl 64, length 60, checksum 0xaa34
fragment id 0x7871, flags DONT_FRAGMENT
TCP: 12399 -> 12345
seq. 0xdb5ba86d ack 0x00000000
flags 0x02 SYN, tcp header: 40 bytes
window 29200, checksum 0x6d44
00:26:34:893876: ip4-glean
TCP: 10.10.2.1 -> 10.10.2.2
tos 0x00, ttl 64, length 60, checksum 0xaa34
fragment id 0x7871, flags DONT_FRAGMENT
TCP: 12399 -> 12345
seq. 0xdb5ba86d ack 0x00000000
flags 0x02 SYN, tcp header: 40 bytes
window 29200, checksum 0x6d44
00:26:34:893879: memif0/2-output
memif0/2
ARP: 02:fe:5f:e8:9a:43 -> ff:ff:ff:ff:ff:ff
request, type ethernet/IP4, address size 6/4
02:fe:5f:e8:9a:43/10.10.2.0 -> 00:00:00:00:00:00/10.10.2.2
00:26:34:893880: error-drop
rx:memif0/2
00:26:34:893883: drop
ip4-glean: ARP requests sent

Packet 3

00:26:36:921068: memif-input
memif: hw_if_index 2 next-index 4
slot: ring 0
00:26:36:921077: ethernet-input
IP4: b2:5f:84:5e:0b:43 -> 02:fe:5f:e8:9a:43
00:26:36:921081: ip4-input
TCP: 10.10.2.1 -> 10.10.2.2
tos 0x00, ttl 64, length 60, checksum 0xaa33
fragment id 0x7872, flags DONT_FRAGMENT
TCP: 12399 -> 12345
seq. 0xdb5ba86d ack 0x00000000
flags 0x02 SYN, tcp header: 40 bytes
window 29200, checksum 0x6564
00:26:36:921085: ip4-flow-classify
FLOW_CLASSIFY: sw_if_index 2 next 1 table 0 offset -1
00:26:36:921091: ip4-lookup
fib 0 dpo-idx 3 flow hash: 0x00000000
TCP: 10.10.2.1 -> 10.10.2.2
tos 0x00, ttl 64, length 60, checksum 0xaa33
fragment id 0x7872, flags DONT_FRAGMENT
TCP: 12399 -> 12345
seq. 0xdb5ba86d ack 0x00000000
flags 0x02 SYN, tcp header: 40 bytes
window 29200, checksum 0x6564
00:26:36:921094: ip4-glean
TCP: 10.10.2.1 -> 10.10.2.2
tos 0x00, ttl 64, length 60, checksum 0xaa33
fragment id 0x7872, flags DONT_FRAGMENT
TCP: 12399 -> 12345
seq. 0xdb5ba86d ack 0x00000000
flags 0x02 SYN, tcp header: 40 bytes
window 29200, checksum 0x6564
00:26:36:921096: memif0/2-output
memif0/2
ARP: 02:fe:5f:e8:9a:43 -> ff:ff:ff:ff:ff:ff
request, type ethernet/IP4, address size 6/4
02:fe:5f:e8:9a:43/10.10.2.0 -> 00:00:00:00:00:00/10.10.2.2
00:26:36:921097: error-drop
rx:memif0/2
00:26:36:921100: drop
ip4-glean: ARP requests sent

Packet 4

00:26:38:864434: memif-input
memif: hw_if_index 2 next-index 4
slot: ring 0
00:26:38:904356: ethernet-input
ARP: b2:5f:84:5e:0b:43 -> 02:fe:5f:e8:9a:43
00:26:38:904369: arp-input
request, type ethernet/IP4, address size 6/4
b2:5f:84:5e:0b:43/10.10.2.1 -> 00:00:00:00:00:00/10.10.2.2
00:26:38:904372: arp-reply
request, type ethernet/IP4, address size 6/4
b2:5f:84:5e:0b:43/10.10.2.1 -> 00:00:00:00:00:00/10.10.2.2
00:26:38:904379: arp-proxy
request, type ethernet/IP4, address size 6/4
b2:5f:84:5e:0b:43/10.10.2.1 -> 00:00:00:00:00:00/10.10.2.2
00:26:38:904384: memif0/2-output
memif0/2 l2_hdr_offset_valid l3_hdr_offset_valid
ARP: 02:fe:5f:e8:9a:43 -> b2:5f:84:5e:0b:43
reply, type ethernet/IP4, address size 6/4
02:fe:5f:e8:9a:43/10.10.2.2 -> b2:5f:84:5e:0b:43/10.10.2.1

vpp# show classify table verbose
TableIdx  Sessions   NextTbl  NextNode
0         9        -1        -1
Heap: total: 2.06M, used: 2.95K, free: 2.06M, trimmable: 2.06M
nbuckets 16, skip 0 match 2 flag 0 offset 0
mask 00000000000000ff0000ffffffffffffffffffff000000000000000000000000
linear-search buckets 0

[2]: heap offset 1392, elts 2, normal
0: [1392]: next_index -1 advance 0 opaque 0 action 0 metadata 0
k: 000000000000005f00000b4308004500003c7874000000000000000000000000
hits 1, last_heard 1610.01

[6]: heap offset 1904, elts 2, normal
0: [1904]: next_index -1 advance 0 opaque 0 action 0 metadata 0
k: 000000000000005f00000b4308004500003c7871000000000000000000000000
hits 1, last_heard 1595.74

[7]: heap offset 2096, elts 2, normal
0: [2096]: next_index -1 advance 0 opaque 0 action 0 metadata 0
k: 000000000000005f00000b4308004500003c7872000000000000000000000000
hits 1, last_heard 1597.76

[9]: heap offset 1200, elts 2, normal
0: [1200]: next_index -1 advance 0 opaque 0 action 1 metadata 1
k: 000000000000000600000a0a02010a0a0202300c000000000000000000000000
*hits 0* , last_heard 0.00

[10]: heap offset 2864, elts 2, normal
0: [2864]: next_index -1 advance 0 opaque 0 action 0 metadata 0
k: 000000000000005f00000b4308004500003c7876000000000000000000000000
hits 1, last_heard 1660.04

[13]: heap offset 2288, elts 4, normal
0: [2288]: next_index -1 advance 0 opaque 1 action 1 metadata 2
k: 000000000000000600000a0a02010a0a0202306f000000000000000000000000
hits 0, last_heard 0.00

1: [2352]: next_index -1 advance 0 opaque 0 action 0 metadata 0
k: 000000000000005f00000b4308004500003c7870000000000000000000000000
hits 1, last_heard 1594.76

2: [2416]: next_index -1 advance 0 opaque 0 action 0 metadata 0
k: 000000000000005f00000b4308004500003c7873000000000000000000000000
hits 1, last_heard 1601.79

[15]: heap offset 2672, elts 2, normal
0: [2672]: next_index -1 advance 0 opaque 0 action 0 metadata 0
k: 000000000000005f00000b4308004500003c7875000000000000000000000000
hits 1, last_heard 1626.06

9 active elements
2 free lists
0 linear-search buckets

Those HEX should be matched but still misses....

One more question, I don't quite understand about when I should use these ...
Option A: set flow classify interface memif0/2 ip4-table 0
Option B: set int input acl intfc memif0/2 ip4-table 0

Thanks so much for help.

Po
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.

View/Reply Online (#15179): https://lists.fd.io/g/vpp-dev/message/15179
Mute This Topic: https://lists.fd.io/mt/69710393/21656
Mute #vpp: https://lists.fd.io/mk?hashtag=vpp&subid=1480452
Mute #vppwithoutdpdk: 
https://lists.fd.io/mk?hashtag=vppwithoutdpdk&subid=1480452
Mute #classify: https://lists.fd.io/mk?hashtag=classify&subid=1480452
Mute #flowprobe: https://lists.fd.io/mk?hashtag=flowprobe&subid=1480452
Group Owner: vpp-dev+ow...@lists.fd.io
Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to