summaryrefslogtreecommitdiffstats
path: root/src/vnet/tcp/tcp_input.c
AgeCommit message (Expand)AuthorFilesLines
2018-01-25session: add support for memfd segmentsFlorin Coras1-2/+3
2017-12-15Fix icmp/udp/tcp punt/drop pathsVijayabhaskar Katamreddy1-10/+14
2017-11-28tcp: fix retransmissions under buffer shortageFlorin Coras1-2/+3
2017-11-27tcp: fix proxy connection validationFlorin Coras1-0/+4
2017-11-20session/tcp: filtering improvementsFlorin Coras1-14/+22
2017-11-09tcp: call accept notify after full connection initFlorin Coras1-9/+9
2017-10-28session: rules tablesFlorin Coras1-1/+1
2017-10-16udp: refactor udp codeFlorin Coras1-47/+45
2017-10-10session: add support for application namespacingFlorin Coras1-38/+50
2017-10-04[aarch64] Fixes CLI crashes on dpaa2 platform.Christophe Fontaine1-1/+1
2017-10-03tcp: updates to connection closing procedure (VPP-996)Florin Coras1-8/+12
2017-09-27Various fixes for issues found by Coverity (VPP-972)Chris Luke1-1/+2
2017-09-26tcp: update snd_nxt after congestion recoveryFlorin Coras1-0/+2
2017-09-25tcp: do not sample rtt for retransmitted segmentsFlorin Coras1-25/+27
2017-09-20tcp: add option to punt trafficPierre Pfister1-5/+17
2017-09-19session/tcp: improve preallocated segment handlingFlorin Coras1-39/+42
2017-09-12tcp: horizontal scaling improvmentsFlorin Coras1-58/+146
2017-08-30tcp: re-enable persist timer if no data available to sendFlorin Coras1-0/+1
2017-08-25TCP horizontal scalingDave Barach1-1/+5
2017-08-25tcp: retransmit and multi-buffer segment fixes and improvementsFlorin Coras1-11/+16
2017-08-16tcp: fix v6 sessionsroot1-15/+1
2017-08-15tcp: state machine improvementsFlorin Coras1-10/+20
2017-08-14TCP: Update time_now once per burstFlorin Coras1-1/+1
2017-08-11Fix tcp multi buffer segments retransmissionFlorin Coras1-11/+37
2017-08-02Fix tcp tx buffer allocationFlorin Coras1-0/+2
2017-07-30Make tcp active open data structures thread safeFlorin Coras1-15/+21
2017-07-25Cleanup/refactor session layer codeFlorin Coras1-1/+4
2017-07-21Improvements to tcp rx path and debuggingFlorin Coras1-66/+99
2017-07-15Fixes and improved tcp/session debuggingFlorin Coras1-35/+79
2017-07-11Horizontal (nSessions) scaling draftDave Barach1-34/+63
2017-06-19Overall tcp performance improvements (VPP-846)Florin Coras1-83/+110
2017-06-09Implement sack based tcp loss recovery (RFC 6675)Florin Coras1-186/+485
2017-05-20Improve session debuggingFlorin Coras1-9/+16
2017-05-18Improve sack bytes accounting and testingFlorin Coras1-18/+27
2017-05-16Fixes to tcp active opens and receptionDave Barach1-0/+5
2017-05-10Improve TCP option handling, VPP-757Florin Coras1-10/+37
2017-05-10Ignore data in RST segments, VPP-723Florin Coras1-15/+23
2017-05-09Add support for tcp/session buffer chainsFlorin Coras1-8/+8
2017-05-07Include TCP options in segment size computationFlorin Coras1-1/+5
2017-05-07Fix TCP loss recovery, VPP-745Florin Coras1-10/+25
2017-05-01TCP ooo reception fixesFlorin Coras1-26/+55
2017-04-25Session/tcp coverity fixesFlorin Coras1-96/+69
2017-04-25Add sack tx unit testFlorin Coras1-14/+28
2017-04-24Debug CLI to magically create / delete a TCP sessionDave Barach1-1/+1
2017-04-24Session layer improvementsFlorin Coras1-4/+4
2017-04-18Fix fifo ooo bugs and improve testingDave Barach1-9/+19
2017-04-14tcp: completed trace functionsClement Durand1-28/+72
2017-04-13Session layer refactoringFlorin Coras1-6/+1
2017-04-06Use thread local storage for thread indexDamjan Marion1-5/+5
2017-04-02TCP cc/window management fixes and debuggingFlorin Coras1-33/+35
| ${bd_id1}= | 1 | ${bd_id2}= | 2 | ${shg1}= | 3 | ${shg2}= | 4 | ${sock1}= | /tmp/sock1 | ${sock2}= | /tmp/sock2 | ${sock3}= | /tmp/sock3 | ${sock4}= | /tmp/sock4 | ${bid_b}= | 23 | ${bid_r}= | 24 | ${vlan_red}= | 50 | ${vlan_blue}= | 60 | ${dut1_if_ip}= | 16.0.0.1 | ${dut2_if_ip}= | 16.0.0.2 | ${dut1_blue1}= | 16.0.10.1 | ${dut1_blue2}= | 16.0.10.2 | ${dut1_red1}= | 16.0.10.3 | ${dut1_red2}= | 16.0.10.4 | ${dut2_blue1}= | 16.0.20.1 | ${dut2_blue2}= | 16.0.20.2 | ${dut2_red1}= | 16.0.20.3 | ${dut2_red2}= | 16.0.20.4 | ${namespace1}= | nmspace1 | ${namespace2}= | nmspace2 | ${namespace3}= | nmspace3 | ${namespace4}= | nmspace4 | ${prefix_length}= | 16 *** Test Cases *** | Provider network test cases with provider physical networks (VLAN) | | [Documentation] | Ping among all ports inside the same network should pass. | | ... | a) test l2 connectivity inside every network | | ... | b) test l2 connectivity between networks | | [Tags] | 3_NODE_DOUBLE_LINK_TOPO | VPP_VM_ENV | | Given Path for 3-node testing is set | ${nodes['TG']} | ${nodes['DUT1']} | | ... | ${nodes['DUT2']} | ${nodes['TG']} | | And Set Interface Address | ${dut1_node} | ${dut1_to_dut2} | ${dut1_if_ip} | | ... | ${prefix_length} | | And Set Interface Address | ${dut2_node} | ${dut2_to_dut1} | ${dut2_if_ip} | | ... | ${prefix_length} | | And Set Interface State | ${dut1_node} | ${dut1_to_dut2} | up | | And Set Interface State | ${dut2_node} | ${dut2_to_dut1} | up | | ${vhost_if1_DUT1}= | And Vpp Create Vhost User Interface | | ... | ${dut1_node} | ${sock1} | | ${vhost_if2_DUT1}= | And Vpp Create Vhost User Interface | | ... | ${dut1_node} | ${sock2} | | ${vhost_if3_DUT1}= | And Vpp Create Vhost User Interface | | ... | ${dut1_node} | ${sock3} | | ${vhost_if4_DUT1}= | And Vpp Create Vhost User Interface | | ... | ${dut1_node} | ${sock4} | | ${dut1_vhosts}= | And Create List | ${vhost_if1_DUT1} | ${vhost_if2_DUT1} | | ... | ${vhost_if3_DUT1} | ${vhost_if4_DUT1} | | ${vhost_if1_DUT2}= | And Vpp Create Vhost User Interface | | ... | ${dut2_node} | ${sock1} | | ${vhost_if2_DUT2}= | And Vpp Create Vhost User Interface | | ... | ${dut2_node} | ${sock2} | | ${vhost_if3_DUT2}= | And Vpp Create Vhost User Interface | | ... | ${dut2_node} | ${sock3} | | ${vhost_if4_DUT2}= | And Vpp Create Vhost User Interface | | ... | ${dut2_node} | ${sock4} | | ${dut2_vhosts}= | And Create List | ${vhost_if1_DUT2} | ${vhost_if2_DUT2} | | ... | ${vhost_if3_DUT2} | ${vhost_if4_DUT2} | | When Setup QEMU Vhost and Run | ${dut1_node} | | ... | ${sock1} | | ... | ${sock2} | | ... | ${sock3} | | ... | ${sock4} | | ... | ${dut1_blue1} | | ... | ${dut1_blue2} | | ... | ${dut1_red1} | | ... | ${dut1_red2} | | ... | ${prefix_length} | | ... | qemu_node1 | | ... | 04 | | And Setup QEMU Vhost and Run | ${dut2_node} | | ... | ${sock1} | | ... | ${sock2} | | ... | ${sock3} | | ... | ${sock4} | | ... | ${dut2_blue1} | | ... | ${dut2_blue2} | | ... | ${dut2_red1} | | ... | ${dut2_red2} | | ... | ${prefix_length} | | ... | qemu_node2 | | ... | 06 | | And Setup VLAN and BD on Dut | ${dut1_node} | ${dut1_to_dut2} | | ... | @{dut1_vhosts} | | And Setup VLAN and BD on Dut | ${dut2_node} | ${dut2_to_dut1} | | ... | @{dut2_vhosts} | | Then Positive Scenario Ping From DUT1 - Intra network | | And Positive Scenario Ping From DUT1 - Inter network | | And Positive Scenario Ping From DUT2 - Intra network | | And Positive Scenario Ping From DUT2 - Inter network | | And Negative Scenario Ping From DUT1 - Intra network | | And Negative Scenario Ping From DUT1 - Inter network | | And Negative Scenario Ping From DUT2 - Intra network | | And Negative Scenario Ping From DUT2 - Inter network *** Keywords *** | Setup VLAN and BD on Dut | | [Documentation] | Setup VLAN and bridge domain on specific DUT and | | ... | subsequently interconnect them properly. Also set VLAN tag | | ... | rewrite on vhosts. | | ... | | ... | *Arguments:* | | ... | - dut_node - Node where to setup VLAN and BD. Type: dict | | ... | - interface - Interface where to create VLAN sub-interface. | | ... | Type: string | | ... | - vhosts - List containing vhost interfaces. | | ... | | ... | *Example:* | | ... | | ... | \| Setup VLAN and BD on Dut \| ${dut_node} \| GigabitEthernet0/6/0 \ | | ... | \| @{vhosts} \| | | ... | | [Arguments] | ${dut_node} | ${interface} | @{vhosts} | | Bridge domain on DUT node is created | ${dut_node} | ${bid_b} | learn=${TRUE} | | Bridge domain on DUT node is created | ${dut_node} | ${bid_r} | learn=${TRUE} | | ${interface_name}= | Get interface name | ${dut_node} | ${interface} | | ${vlan1_name} | ${vlan1_index}= | Create Vlan Subinterface | | ... | ${dut_node} | ${interface_name} | ${vlan_blue} | | ${vlan2_name} | ${vlan2_index}= | Create Vlan Subinterface | | ... | ${dut_node} | ${interface_name} | ${vlan_red} | | L2 Vlan Tag Rewrite | ${dut_node} | @{vhosts}[0] | push-1 | | ... | tag1_id=${vlan_blue} | | L2 Vlan Tag Rewrite | ${dut_node} | @{vhosts}[1] | push-1 | | ... | tag1_id=${vlan_blue} | | L2 Vlan Tag Rewrite | ${dut_node} | @{vhosts}[2] | push-1 | | ... | tag1_id=${vlan_red} | | L2 Vlan Tag Rewrite | ${dut_node} | @{vhosts}[3] | push-1 | | ... | tag1_id=${vlan_red} | | Interface is added to bridge domain | ${dut_node} | | ... | ${vlan1_index} | ${bid_b} | 0 | | Interface is added to bridge domain | ${dut_node} | | ... | @{vhosts}[0] | ${bid_b} | 0 | | Interface is added to bridge domain | ${dut_node} | | ... | @{vhosts}[1] | ${bid_b} | 0 | | Interface is added to bridge domain | ${dut_node} | | ... | ${vlan2_index} | ${bid_r} | 0 | | Interface is added to bridge domain | ${dut_node} | | ... | @{vhosts}[2] | ${bid_r} | 0 | | Interface is added to bridge domain | ${dut_node} | | ... | @{vhosts}[3] | ${bid_r} | 0 | Positive Scenario Ping From DUT1 - Intra network | | [Documentation] | Send ping packets from specified namespaces to other in | | ... | order to test connectivity. | | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_blue2} | ${namespace1} | | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_blue1} | ${namespace2} | | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_red2} | ${namespace3} | | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_red1} | ${namespace4} | Positive Scenario Ping From DUT1 - Inter network | | [Documentation] | Send ping packets from specified namespaces to other in | | ... | order to test connectivity. | | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_blue1} | ${namespace1} | | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_blue2} | ${namespace1} | | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_blue1} | ${namespace2} | | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_blue2} | ${namespace2} | | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_red1} | ${namespace3} | | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_red2} | ${namespace3} | | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_red1} | ${namespace4} | | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_red2} | ${namespace4} | Positive Scenario Ping From DUT2 - Intra network | | [Documentation] | Send ping packets from specified namespaces to other in | | ... | order to test connectivity. | | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_blue2} | ${namespace1} | | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_blue1} | ${namespace2} | | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_red2} | ${namespace3} | | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_red1} | ${namespace4} | Positive Scenario Ping From DUT2 - Inter network | | [Documentation] | Send ping packets from specified namespaces to other in | | ... | order to test connectivity. | | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_blue1} | ${namespace1} | | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_blue2} | ${namespace1} | | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_blue1} | ${namespace2} | | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_blue2} | ${namespace2} | | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_red1} | ${namespace3} | | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_red2} | ${namespace3} | | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_red1} | ${namespace4} | | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_red2} | ${namespace4} | Negative Scenario Ping From DUT1 - Intra network | | [Documentation] | Send ping packets from specified namespaces to other in | | ... | order to test unreachability of namespaces. | | Run keyword and expect error | Ping Not Successful | | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_red1} | | ... | ${namespace1} | | Run keyword and expect error | Ping Not Successful | | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_red2} | | ... | ${namespace1} | | Run keyword and expect error | Ping Not Successful | | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_red1} | | ... | ${namespace2} | | Run keyword and expect error | Ping Not Successful | | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_red2} | | ... | ${namespace2} | | Run keyword and expect error | Ping Not Successful | | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_blue1} | | ... | ${namespace3} | | Run keyword and expect error | Ping Not Successful | | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_blue2} | | ... | ${namespace3} | | Run keyword and expect error | Ping Not Successful | | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_blue1} | | ... | ${namespace4} | | Run keyword and expect error | Ping Not Successful | | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_blue2} | | ... | ${namespace4} | Negative Scenario Ping From DUT1 - Inter network | | [Documentation] | Send ping packets from specified namespaces to other in | | ... | order to test unreachability of namespaces. | | Run keyword and expect error | Ping Not Successful | | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_red1} | | ... | ${namespace1} | | Run keyword and expect error | Ping Not Successful | | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_red2} | | ... | ${namespace1} | | Run keyword and expect error | Ping Not Successful | | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_red1} | | ... | ${namespace2} | | Run keyword and expect error | Ping Not Successful | | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_red2} | | ... | ${namespace2} | | Run keyword and expect error | Ping Not Successful | | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_blue1} | | ... | ${namespace3} | | Run keyword and expect error | Ping Not Successful | | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_blue2} | | ... | ${namespace3} | | Run keyword and expect error | Ping Not Successful | | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_blue1} | | ... | ${namespace4} | | Run keyword and expect error | Ping Not Successful | | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_blue2} | | ... | ${namespace4} | Negative Scenario Ping From DUT2 - Intra network | | [Documentation] | Send ping packets from specified namespaces to other in | | ... | order to test unreachability of namespaces. | | Run keyword and expect error | Ping Not Successful | | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_red1} | | ... | ${namespace1} | | Run keyword and expect error | Ping Not Successful | | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_red2} | | ... | ${namespace1} | | Run keyword and expect error | Ping Not Successful | | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_red1} | | ... | ${namespace2} | | Run keyword and expect error | Ping Not Successful | | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_red2} | | ... | ${namespace2} | | Run keyword and expect error | Ping Not Successful | | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_blue1} | | ... | ${namespace3} | | Run keyword and expect error | Ping Not Successful | | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_blue2} | | ... | ${namespace3} | | Run keyword and expect error | Ping Not Successful | | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_blue1} | | ... | ${namespace4} | | Run keyword and expect error | Ping Not Successful | | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_blue2} | | ... | ${namespace4} | Negative Scenario Ping From DUT2 - Inter network | | [Documentation] | Send ping packets from specified namespaces to other in | | ... | order to test unreachability of namespaces. | | Run keyword and expect error | Ping Not Successful | | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_red1} | | ... | ${namespace1} | | Run keyword and expect error | Ping Not Successful | | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_red2} | | ... | ${namespace1} | | Run keyword and expect error | Ping Not Successful | | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_red1} | | ... | ${namespace2} | | Run keyword and expect error | Ping Not Successful | | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_red2} | | ... | ${namespace2} | | Run keyword and expect error | Ping Not Successful | | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_blue1} | | ... | ${namespace3} | | Run keyword and expect error | Ping Not Successful | | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_blue2} | | ... | ${namespace3} | | Run keyword and expect error | Ping Not Successful | | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_blue1} | | ... | ${namespace4} | | Run keyword and expect error | Ping Not Successful | | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_blue2} | | ... | ${namespace4}