On 9/30/21 2:07 AM, Min Hu (Connor) wrote:
Hi, all, I got the answer: testpmd fwd mode should be set "io", then ping OK. IO fwd mode, it will not change packet MAC address info, and ping OK MAC fwd mode, it will change packet MAC address info, like: "rte_ether_addr_copy(&peer_eth_addrs[fs->peer_addr], ð_hdr->d_addr); rte_ether_addr_copy(&ports[fs->tx_port].eth_addr, ð_hdr->s_addr)" Then, ping failed. So, everyone, I got one question: how could this happen? router change packet src MAC and dst MAC, but ping OK, testpmd vhost, treated as switch, also changes packert src MAC and dst MAC, but ping failed ?
Running testpmd in this configuration is more like a virtual wire, not a switch, though in both cases the SRC/DST MAC addresses aren't typically modified by the wire/switch when the frame is in transit. Both endpoints reside in the same Ethernet broadcast domain and can talk to each other directly.
A router typically connects two different broadcast domains, which may or may not be using Ethernet, so the router usually changes the SRC/DST MAC address to work correctly as the frame transitions from one broadcast domain into another. See https://en.wikipedia.org/wiki/Broadcast_domain.
Dave