Description

This article describes a scenario where RE (Routing Engine) based CPCD (Capitve Portal Content Delivery) does not redirect HTTP packet due to fragmentation.

Symptoms

The following examples highlight working and non-working scenarios of HTTP Redirect.

Working

HTTP Redirect is working fine when there is no fragmentation.
    1 0.000000       10.64.0.1        106.10.178.36         TCP      78     49995 → 80 [SYN] Seq=0 Win=65535 Len=0 MSS=1460 WS=32 TSval=760556238 TSecr=0 SACK_PERM=1
      2 0.023715       106.10.178.36        10.64.0.1         TCP      58     80 → 49995 [SYN, ACK] Seq=0 Ack=1 Win=65534 Len=0 MSS=1420
      3 0.023796       10.64.0.1        106.10.178.36         TCP      54     49995 → 80 [ACK] Seq=1 Ack=1 Win=65535 Len=0
      4 0.024147       10.64.0.1        106.10.178.36         HTTP     639    GET / HTTP/1.1
      5 0.050952       106.10.178.36        10.64.0.1         HTTP     178    HTTP/1.1 302 Found
      6 0.051009       10.64.0.1        106.10.178.36         TCP      54     49995 → 80 [ACK] Seq=586 Ack=125 Win=65535 Len=0

Not Working

HTTP Redirect is not working as HTTP GET packet is fragmented into 2 packet 1601(1474+127) due to the saved cookies.

           1 0.000000       10.64.0.1        106.10.178.36          TCP      78     64928 → 80 [SYN] Seq=0 Win=65535 Len=0 MSS=1460 WS=32 TSval=758228103 TSecr=0 SACK_PERM=1
      2 0.045711       106.10.178.36        10.64.0.1          TCP      58     80 → 64928 [SYN, ACK] Seq=0 Ack=1 Win=65534 Len=0 MSS=1420
      3 0.045785       10.64.0.1        106.10.178.36          TCP      54     64928 → 80 [ACK] Seq=1 Ack=1 Win=65535 Len=0
       4 0.047512       10.64.0.1        106.10.178.36          TCP      1474   [TCP segment of a reassembled PDU]
      5 0.047534       10.64.0.1        106.10.178.36          HTTP     127    GET / HTTP/1.1

      6 0.384035       10.64.0.1        106.10.178.36          TCP      1474   [TCP Retransmission] 64928 → 80 [ACK] Seq=1 Ack=1 Win=65535 Len=1420
      7 0.855087       10.64.0.1        106.10.178.36          TCP      1254   [TCP Retransmission] 64928 → 80 [ACK] Seq=1 Ack=1 Win=65535 Len=1200
      8 0.855115       10.64.0.1        106.10.178.36          TCP      347    [TCP Retransmission] 64928 → 80 [PSH, ACK] Seq=1201 Ack=1 Win=65535 Len=293

Solution

In RE based CPCD, light weight TCP stack is maintained due to performance issues. This does not support fragmentation and re-assembly.

There is no plan for supporting fragmentation and reassembly in RE based CPCD as this may cause performance bottleneck.