DPDK usage discussions
 help / color / mirror / Atom feed
* [dpdk-users] Question about range type of DPDK ACL
@ 2017-06-20  8:27 이두환
  2017-06-20  8:58 ` Shyam Shrivastav
  0 siblings, 1 reply; 17+ messages in thread
From: 이두환 @ 2017-06-20  8:27 UTC (permalink / raw)
  To: users

Hello everyone.

I want to implement some feature like ACL using DPDK ACL library.
so, I defined rule like below.

struct acl_match_component
{
    uint8_t protocol;
    uint32_t sip;
    uint32_t dip;
    uint16_t sport;
    uint16_t dport;
    uint16_t in_if;
    uint16_t out_if;
}


struct rte_acl_field_def ipv4_defs[7] = {
    {
        .type = RTE_ACL_FIELD_TYPE_RANGE,
        .size = sizeof(uint8_t),
        .field_index = 0,
        .input_index = 0,
        .offset = 0
    },
    {
        .type = RTE_ACL_FIELD_TYPE_RANGE,
        .size = sizeof(uint32_t),
        .field_index = 1,
        .input_index = 1,
        .offset = offsetof(struct acl_match_component, sip)
    },
    {
        .type = RTE_ACL_FIELD_TYPE_RANGE,
        .size = sizeof(uint32_t),
        .field_index = 2,
        .input_index = 2,
        .offset = offsetof(struct acl_match_component, dip)
    },
    {
        .type = RTE_ACL_FIELD_TYPE_RANGE,
        .size = sizeof(uint16_t),
        .field_index = 3,
        .input_index = 3,
        .offset = offsetof(struct acl_match_component, sport)
    },
    {
        .type = RTE_ACL_FIELD_TYPE_RANGE,
        .size = sizeof(uint16_t),
        .field_index = 4,
        .input_index = 3,
        .offset = offsetof(struct acl_match_component, dport)
    },
    {
        .type = RTE_ACL_FIELD_TYPE_RANGE,
        .size = sizeof(uint16_t),
        .field_index = 5,
        .input_index = 4,
        .offset = offsetof(struct acl_match_component, in_if)
    },
    {
        .type = RTE_ACL_FIELD_TYPE_RANGE,
        .size = sizeof(uint16_t),
        .field_index = 6,
        .input_index = 4,
        .offset = offsetof(struct acl_match_component, out_if)
    },
};

I defined 32bit IPv4 address filed as RTE_ACL_FIELD_TYPE_RANGE type.
and I set rte_acl_field for IP field like below.

value.u32 = IPv4(10,10,10,10);
mask_range.u32 = IPv4(20,20,20,20);

In this case, I think IP 10.10.10.15 and 10.10.10.30 should be matched.
but result was IP 10.10.10.15 was matched and 10.10.10.30 was not matched.

I am using DPDK 16.04 and there was no example in the DPDK source using
32bit field as range type.
Range type with 16bit field (ex. port number) works well.
And, DPDK 17.05 has no meaningful changes on ACL library compare to DPDK
16.04

Do you have any idea about this?

Thank you.

^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2017-06-22  8:31 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-06-20  8:27 [dpdk-users] Question about range type of DPDK ACL 이두환
2017-06-20  8:58 ` Shyam Shrivastav
2017-06-21  0:50   ` 이두환
2017-06-21  5:11     ` Shyam Shrivastav
2017-06-21  6:06       ` Doohwan Lee
2017-06-21  9:46         ` Anupam Kapoor
2017-06-21 11:24           ` Doohwan Lee
2017-06-21 12:09             ` Shyam Shrivastav
2017-06-22  2:27               ` Doohwan Lee
2017-06-22  4:26                 ` Shyam Shrivastav
2017-06-22  5:58                   ` Doohwan Lee
2017-06-22  6:12                     ` Anupam Kapoor
2017-06-22  6:27                     ` Shyam Shrivastav
2017-06-22  6:58                       ` Doohwan Lee
2017-06-22  7:12                         ` Shyam Shrivastav
2017-06-22  7:27                           ` Doohwan Lee
2017-06-22  8:31                             ` Shyam Shrivastav

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).