Skip to contentSkip to conversation

No egressing packet

DISCUSSION Wu, Yiwen 3 participants 4 messages Sep 15, 2015 – Sep 16, 2015

lore
Share & tools
lore

Wu, Yiwen

author
#0 lore raw

Hi all,

I am new to dpdk. I am running a single forwarding program based on dpdk 2.1.0. The program runs on a VM, binding on two interfaces. All it's doing is to forward packets from one interface to another. All ingressing packets are fine but there seems no egressing packets. I used rte_eth_add_tx_callback to register a tx callback. The callback is able to print the right egress packet but the destination is just not receiving it (via tcpdump). Does anybody have the similar experience? Any solution or hints will be great.

Thanks,

Yiwen

#1 lore raw

2015-09-15 17:10, Wu, Yiwen:

Quoted 10 lines

Hi all,

I am new to dpdk. I am running a single forwarding program based on dpdk 2.1.0. The program runs on a VM, binding on two interfaces. All it's doing is to forward packets from one interface to another. All ingressing packets are fine but there seems no egressing packets. I used rte_eth_add_tx_callback to register a tx callback. The callback is able to print the right egress packet but the destination is just not receiving it (via tcpdump). Does anybody have the similar experience? Any solution or hints will be great.

You need to call rte_eth_tx_burst() instead of rte_eth_add_tx_callback(). For more information, please check the guide:
http://dpdk.org/doc/guides/prog_guide/poll_mode_drv.html#poll-mode-driver
You can also check this basic example:
http://dpdk.org/browse/dpdk/tree/examples/skeleton/basicfwd.c

author
#2 lore raw

Thomas,

I am using rte_eth_tx_burst to send packets. I also use rte_eth_add_tx_callback to register a callback to figure out what has been sent.

Thanks,

Yiwen

Quoted 16 lines · Thomas Monjalon

2015-09-15 17:10, Wu, Yiwen:

Quoted 10 lines

Hi all,

I am new to dpdk. I am running a single forwarding program based on dpdk 2.1.0. The program runs on a VM, binding on two interfaces. All it's doing is to forward packets from one interface to another. All ingressing packets are fine but there seems no egressing packets. I used rte_eth_add_tx_callback to register a tx callback. The callback is able to print the right egress packet but the destination is just not receiving it (via tcpdump). Does anybody have the similar experience? Any solution or hints will be great.

You need to call rte_eth_tx_burst() instead of rte_eth_add_tx_callback(). For more information, please check the guide:
http://dpdk.org/doc/guides/prog_guide/poll_mode_drv.html#poll-mode-driver
You can also check this basic example:
http://dpdk.org/browse/dpdk/tree/examples/skeleton/basicfwd.c

#3 lore raw
Quoted 9 lines

-----Original Message-----
From: dev [mailto:[email protected]] On Behalf Of Wu, Yiwen
Sent: Wednesday, September 16, 2015 2:31 PM
To: Thomas Monjalon
Cc: [email protected]
Subject: Re: [dpdk-dev] No egressing packet

Quoted 6 lines

Thomas,

I am using rte_eth_tx_burst to send packets. I also use rte_eth_add_tx_callback to register a callback to figure out what has been sent.

I would suggest checking that the source mac address is correct for all outgoing frames as packets with an incorrect source are likely to be blocked due to security (spoofing) concerns.

/Bruce

Quoted 24 lines

Thanks,

Yiwen

Quoted 10 lines · Thomas Monjalon

2015-09-15 17:10, Wu, Yiwen:

Quoted 9 lines

Hi all,

I am new to dpdk. I am running a single forwarding program based on dpdk 2.1.0. The program runs on a VM, binding on two interfaces. All it's doing is to forward packets from one interface to another. All ingressing packets are fine but there seems no egressing packets. I used rte_eth_add_tx_callback to register a tx callback. The callback is able to print the right egress packet but the destination is just not receiving it (via tcpdump). Does anybody have the similar

experience?

Quoted 2 lines
Quoted 1 line

Any solution or hints will be great.

You need to call rte_eth_tx_burst() instead of

rte_eth_add_tx_callback().

Quoted 5 lines

For more information, please check the guide:

http://dpdk.org/doc/guides/prog_guide/poll_mode_drv.html#poll-mode-dri
ver You can also check this basic example:
http://dpdk.org/browse/dpdk/tree/examples/skeleton/basicfwd.c