Igalia / snabb

Snabb Switch: Fast open source packet processing
Apache License 2.0
48 stars 5 forks source link

Restrict condition for use of V4V6 splitter #1151

Closed dpino closed 6 years ago

dpino commented 6 years ago

So far a V4V6 splitter was needed if VLAN tags for external and internal interfaces were equal. This condition assumed an scenario where MAC addresses for external and internal interfaces were equal too. It is necessary to add this constraint to the condition that evaluates whether a splitter is necessary.

Summarizing, we are only going to use a V4V6 splitter when both VLAN tags and MAC addresses of external and internal interfaces are the same.

dpino commented 6 years ago

The result of not adding this restriction was that configurations that used different MAC addresses for internal and external interfaces were not working. Example:

queue {
   id 0;
   external-interface {
      ip 10.0.1.1;
      mac 52:54:00:00:00:01;
      next-hop {
         mac 02:99:99:99:99:99;
      }
   }
   internal-interface {
      ip fc00::100;
      mac 52:54:00:00:00:02;
      next-hop {
         mac 02:99:99:99:99:99;
      }
   }
}

Why? Because according to the former condition the VLAN tags of both interfaces are NIL so the splitter can be used. But the splitter only configures one physical NIC and set its MAC address to the value of the external interface, so all IPv6 packets were lost.

dpino commented 6 years ago

Ideally this PR needs tests.