vRouter: Mirroring does not work if the mirror destination is local
Affects | Status | Importance | Assigned to | Milestone | ||
---|---|---|---|---|---|---|
Juniper Openstack | Status tracked in Trunk | |||||
R2.20 |
Fix Committed
|
Undecided
|
Anand H. Krishnan | |||
R2.21.x |
Fix Committed
|
Undecided
|
Anand H. Krishnan | |||
R2.22.x |
Fix Committed
|
Undecided
|
Anand H. Krishnan | |||
Trunk |
Fix Committed
|
Undecided
|
Anand H. Krishnan |
Bug Description
For packets that are tunneled, vRouter updates the checksum offset of the packet to reflect tunnel addition. For mirrored packets, if the mirror destination (analyzer) is local, no tunnel headers (MPLSO(UDP/GRE)) are added and hence a checksum offset update is not done. This behavior is wrong since we do add mirror headers (and hence a tunnel) and the whole packet needs a checksum value.
Because of this bug, sometimes we will observe that the checksum offset is not in the head skb, for which the NIC drivers may not be able to calculate checksums.
(From Raja)
When the packet is received by the virtio driver in the analyzer VM, it is seeing frame error (in "ifconfig eth0"). The VM sees these errors as a result of this check in the virtio driver:
if (hdr->hdr.flags & VIRTIO_
if (!skb_partial_
skb_partial_
Changed in juniperopenstack: | |
assignee: | nobody → Anand H. Krishnan (anandhk) |
information type: | Proprietary → Public |
tags: | added: vrouter |
Review in progress for https:/ /review. opencontrail. org/15965
Submitter: Anand H. Krishnan (<email address hidden>)