Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

asked 2015-06-10 15:37:49 -0500

don gravatar image

ipv6 only goes half-way

juno, ubuntu 14.10

i have an instance which is sending IPv6. the UDP packets make it all the way, but TCP packets stop half way out of it. By this i mean these are the four interfaces involved (KVM, OVS). The tap interface and the qbr interface have ipv6 tcp on them, the qvb/qvo do not. But the udp goes there.

Is there some checksum offload or something? this is on a compute node running just nova-compute+neutron ovs agent. There is no iptables rule preventing (in fact i have port-security = off).

qbr3cdf22f7-17 Link encap:Ethernet HWaddr 26:bb:42:b0:66:42
qvb3cdf22f7-17 Link encap:Ethernet HWaddr 26:bb:42:b0:66:42
qvo3cdf22f7-17 Link encap:Ethernet HWaddr c6:c5:37:34:9e:72
tap3cdf22f7-17 Link encap:Ethernet HWaddr fe:16:3e:46:d6:59

so, uh, what could be eating the ipv6 tcp?

click to hide/show revision 2
No.2 Revision

ipv6 only goes half-way

juno, ubuntu 14.10

i have an instance which is sending IPv6. the UDP packets make it all the way, but TCP packets stop half way out of it. By this i mean these are the four interfaces involved (KVM, OVS). The tap interface and the qbr interface have ipv6 tcp on them, the qvb/qvo do not. But the udp goes there.

Is there some checksum offload or something? this is on a compute node running just nova-compute+neutron ovs agent. There is no iptables rule preventing (in fact i have port-security = off).

qbr3cdf22f7-17 Link encap:Ethernet  HWaddr 26:bb:42:b0:66:42 
qvb3cdf22f7-17 Link encap:Ethernet HWaddr 26:bb:42:b0:66:42
qvo3cdf22f7-17 Link encap:Ethernet HWaddr c6:c5:37:34:9e:72
tap3cdf22f7-17 Link encap:Ethernet HWaddr fe:16:3e:46:d6:59

fe:16:3e:46:d6:59

so, uh, what could be eating the ipv6 tcp?

ipv6 only goes half-way

juno, ubuntu 14.10

i have an instance which is sending IPv6. the UDP packets make it all the way, but TCP packets stop half way out of it. By this i mean these are the four interfaces involved (KVM, OVS). The tap interface and the qbr interface have ipv6 tcp on them, the qvb/qvo do not. But the udp goes there.

Is there some checksum offload or something? this is on a compute node running just nova-compute+neutron ovs agent. There is no iptables rule preventing (in fact i have port-security = off).

qbr3cdf22f7-17 Link encap:Ethernet  HWaddr 26:bb:42:b0:66:42  
qvb3cdf22f7-17 Link encap:Ethernet  HWaddr 26:bb:42:b0:66:42  
qvo3cdf22f7-17 Link encap:Ethernet  HWaddr c6:c5:37:34:9e:72  
tap3cdf22f7-17 Link encap:Ethernet  HWaddr fe:16:3e:46:d6:59

so, uh, what could be eating the ipv6 tcp?

[on the topology, this is all within the compute node, so it has nothing to do w/ the rest of the system. it is the default setup of nova+neutron when using ovs plugin ml2. Those 4 tap interfaces should all have the same packets on them. 1 is bound to the instance port, 1 is bound to the ovs port, and the other two bridge between them somehow. If you have such a setup and you do ifconfig on the compute node you will see this tap/qvo/qvb/qbr ###### for each instance port]

ipv6 only goes half-way

juno, ubuntu 14.10

i have an instance which is sending IPv6. the UDP packets make it all the way, but TCP packets stop half way out of it. By this i mean these are the four interfaces involved (KVM, OVS). The tap interface and the qbr interface have ipv6 tcp on them, the qvb/qvo do not. But the udp goes there.

Is there some checksum offload or something? this is on a compute node running just nova-compute+neutron ovs agent. There is no iptables rule preventing (in fact i have port-security = off).

qbr3cdf22f7-17 Link encap:Ethernet  HWaddr 26:bb:42:b0:66:42  
qvb3cdf22f7-17 Link encap:Ethernet  HWaddr 26:bb:42:b0:66:42  
qvo3cdf22f7-17 Link encap:Ethernet  HWaddr c6:c5:37:34:9e:72  
tap3cdf22f7-17 Link encap:Ethernet  HWaddr fe:16:3e:46:d6:59

so, uh, what could be eating the ipv6 tcp?

[on the topology, this is all within the compute node, so it has nothing to do w/ the rest of the system. it is the default setup of nova+neutron when using ovs plugin ml2. Those 4 tap interfaces should all have the same packets on them. 1 is bound to the instance port, 1 is bound to the ovs port, and the other two bridge between them somehow. If you have such a setup and you do ifconfig on the compute node you will see this tap/qvo/qvb/qbr ###### for each instance port]

the journey is: instance sends on 'tap' interface. There is a linux bridge from tap interface to qvb interface [using qbr]

brctl show qbr3cdf22f7-17
bridge name     bridge id               STP enabled     interfaces
qbr3cdf22f7-17          8000.26bb42b06642       no              qvb3cdf22f7-17
                                                        tap3cdf22f7-17

and that is where the packet ends. If i run tcpdump on 'tap' and on 'qbr', i see all packets. If i run tcpdump on 'qvb', the ipv6 packets are missing.

tap3cdf22f7-17 Link encap:Ethernet  HWaddr fe:16:3e:46:d6:59  
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:248461 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1887 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:500 
          RX bytes:195112976 (195.1 MB)  TX bytes:316836 (316.8 KB)

qbr3cdf22f7-17 Link encap:Ethernet  HWaddr 26:bb:42:b0:66:42  
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:4268 errors:0 dropped:0 overruns:0 frame:0
          TX packets:24 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:1493145 (1.4 MB)  TX bytes:2320 (2.3 KB)

qvo3cdf22f7-17 Link encap:Ethernet  HWaddr c6:c5:37:34:9e:72  
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:3322 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1895 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1201140 (1.2 MB)  TX bytes:316888 (316.8 KB)

qbr3cdf22f7-17 Link encap:Ethernet  HWaddr 26:bb:42:b0:66:42  
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:4268 errors:0 dropped:0 overruns:0 frame:0
          TX packets:24 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:1493145 (1.4 MB)  TX bytes:2320 (2.3 KB)

So the linux bridge is silently dropping my ipv6 packets rather than forwarding them as a good L2 bridge should.

ipv6 only goes half-way

juno, ubuntu 14.10

i have an instance which is sending IPv6. the UDP packets make it all the way, but TCP packets stop half way out of it. By this i mean these are the four interfaces involved (KVM, OVS). The tap interface and the qbr interface have ipv6 tcp on them, the qvb/qvo do not. But the udp goes there.

[edit: it appears this is incorrect. the first few packets after its been idle for a while work, and they are udp. This implies maybe some bridge learning issue].

Is there some checksum offload or something? this is on a compute node running just nova-compute+neutron ovs agent. There is no iptables rule preventing (in fact i have port-security = off).

qbr3cdf22f7-17 Link encap:Ethernet  HWaddr 26:bb:42:b0:66:42  
qvb3cdf22f7-17 Link encap:Ethernet  HWaddr 26:bb:42:b0:66:42  
qvo3cdf22f7-17 Link encap:Ethernet  HWaddr c6:c5:37:34:9e:72  
tap3cdf22f7-17 Link encap:Ethernet  HWaddr fe:16:3e:46:d6:59

so, uh, what could be eating the ipv6 tcp?

[on the topology, this is all within the compute node, so it has nothing to do w/ the rest of the system. it is the default setup of nova+neutron when using ovs plugin ml2. Those 4 tap interfaces should all have the same packets on them. 1 is bound to the instance port, 1 is bound to the ovs port, and the other two bridge between them somehow. If you have such a setup and you do ifconfig on the compute node you will see this tap/qvo/qvb/qbr ###### for each instance port]

the journey is: instance sends on 'tap' interface. There is a linux bridge from tap interface to qvb interface [using qbr]

brctl show qbr3cdf22f7-17
bridge name     bridge id               STP enabled     interfaces
qbr3cdf22f7-17          8000.26bb42b06642       no              qvb3cdf22f7-17
                                                        tap3cdf22f7-17

and that is where the packet ends. If i run tcpdump on 'tap' and on 'qbr', i see all packets. If i run tcpdump on 'qvb', the ipv6 packets are missing.

tap3cdf22f7-17 Link encap:Ethernet  HWaddr fe:16:3e:46:d6:59  
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:248461 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1887 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:500 
          RX bytes:195112976 (195.1 MB)  TX bytes:316836 (316.8 KB)

qbr3cdf22f7-17 Link encap:Ethernet  HWaddr 26:bb:42:b0:66:42  
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:4268 errors:0 dropped:0 overruns:0 frame:0
          TX packets:24 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:1493145 (1.4 MB)  TX bytes:2320 (2.3 KB)

qvo3cdf22f7-17 Link encap:Ethernet  HWaddr c6:c5:37:34:9e:72  
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:3322 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1895 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1201140 (1.2 MB)  TX bytes:316888 (316.8 KB)

qbr3cdf22f7-17 Link encap:Ethernet  HWaddr 26:bb:42:b0:66:42  
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:4268 errors:0 dropped:0 overruns:0 frame:0
          TX packets:24 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:1493145 (1.4 MB)  TX bytes:2320 (2.3 KB)

So the linux bridge is silently dropping my ipv6 packets rather than forwarding them as a good L2 bridge should.