Commit Graph

72 Commits

Author SHA1 Message Date
luwenpeng
1f78881cbb rename struct packet_layer to struct raw_layer 2024-06-14 10:58:40 +08:00
luwenpeng
01958b56c5 rename layer_type to layer_proto 2024-06-12 18:21:45 +08:00
luwenpeng
3701fc7361 Add session_set_discard 2024-05-20 17:02:16 +08:00
luwenpeng
0e33a1b647 Resolve merge conflicts 2024-05-20 11:26:06 +08:00
luwenpeng
31a4267e23 support inject mutil packet base current packet 2024-05-17 19:10:28 +08:00
luwenpeng
c22e4e5955 recv SYN after FIN or RST is considered to be TCP port reuse 2024-05-17 17:38:08 +08:00
luwenpeng
32ae4618ef Add support for TCP port reuse (same tuple6 but different ISN) in session manager: evict old session and create new session 2024-05-16 19:21:12 +08:00
luwenpeng
1559f0a13e bugfix: session cannot get current flow direction on duplicate package 2024-05-16 17:07:53 +08:00
luwenpeng
4c50a6dca7 Add injected packets to duplicate packet filter 2024-05-16 10:32:42 +08:00
luwenpeng
fdc65067b2 stellar support monotonic time and real time 2024-05-16 10:13:43 +08:00
luwenpeng
44c2cf86e4 session_get_tcp_segment() and session_free_tcp_segment() support asynchronous calls 2024-05-15 17:47:57 +08:00
luwenpeng
7b20747c8f Update session.h: support get tuple6 by session 2024-05-15 16:29:33 +08:00
luwenpeng
b33dafff53 Add packet injector test frame 2024-05-15 14:48:15 +08:00
luwenpeng
cda77c6f6f Add the packet_injector tool to test the packet injection effect 2024-05-11 18:58:36 +08:00
luwenpeng
13001003e2 Refactor enum session_stat with improved naming conventions 2024-05-09 16:32:45 +08:00
luwenpeng
cc380d9271 rename session_direction to flow_direction 2024-05-09 14:57:12 +08:00
luwenpeng
37d12ebcfc inject TCP RST test pass 2024-05-08 18:24:26 +08:00
luwenpeng
61ee619689 TCP reassembly add stat of TCP retransmit and TCP overlap 2024-05-06 17:33:02 +08:00
luwenpeng
309736f9f1 session manager support TCP fast open 2024-05-06 12:06:20 +08:00
luwenpeng
c59f178769 Update stat of session manager 2024-04-30 17:03:36 +08:00
luwenpeng
dc37306594 update session table add/del API 2024-04-30 15:29:31 +08:00
luwenpeng
17ca476c24 tcp session record last packet tcp payload length used to calculate seq of injected RST packets 2024-04-25 15:39:02 +08:00
luwenpeng
476c5bac56 session table can search session by tuple6 or tuple4 or id 2024-04-24 11:39:15 +08:00
luwenpeng
74f0504d3d Update Stellar export header and add stellar_get_current_thread_index() function 2024-04-23 14:38:58 +08:00
luwenpeng
5508454a1b Optimize packet I/O and timeouts
- Introduce per-thread I/O statistics for packet I/O to reduce performance overhead.
- Implement packet_io_yield() for better thread management during I/O operations.
- Refactor time wheel management:
  - Replace timeouts-based cron tasks with (now_ts - last_ts > timeout) for scheduled tasks.
  - Update the time wheel every 5 ms for improved time management.
2024-04-18 14:37:03 +08:00
luwenpeng
d57c81697f bugfix: call duplicated packet filter too many times 2024-04-17 17:53:42 +08:00
luwenpeng
f5f09e5e23 Update timeout and timestamp
* Timeout using CLOCK_MONOTONIC
    * Session start/last timestamps use CLOCK_REALTIME
    * Session ID generator uses CLOCK_REALTIME
2024-04-16 19:19:00 +08:00
luwenpeng
cfbad63021 Duplicated packet filter supports IPv4-Based TCP / UDP packet (IPv6 is not supported, because IPv6 does not have an IPid and cannot distinguish between retransmissions and duplicates) 2024-04-11 11:29:01 +08:00
luwenpeng
24e109e34f Export tuple.h / packet.h / session.h to the include directory 2024-04-10 15:37:42 +08:00
luwenpeng
a5a133bf91 Modify the stat of session 2024-04-09 17:27:49 +08:00
luwenpeng
3b00acab81 Modify the stat of session manager 2024-04-09 10:36:39 +08:00
luwenpeng
daff1ecbc7 When tcp reassembly is turned off, all tcp segments are considered in order 2024-04-08 12:10:25 +08:00
luwenpeng
c8beafe081 Modify the configuration items of evicted_session_filter && duplicated_packet_filter 2024-04-08 11:28:45 +08:00
luwenpeng
151b6f8f1d Add TCP reassembly metrics on session 2024-04-03 19:51:44 +08:00
luwenpeng
e8e60cee6d Refactor TCP reassembly, the session knows where the TCP segment comes from: raw packet or tcp segment queue 2024-04-03 15:45:08 +08:00
luwenpeng
a509f0ce3b Update API of manipulation session 2024-04-01 17:15:19 +08:00
luwenpeng
772860c1be Update session timer 2024-03-29 19:49:01 +08:00
luwenpeng
8e527a0f4c Replace session queue with kernel list 2024-03-29 17:45:41 +08:00
luwenpeng
6e422ecb8d Update session timeouts 2024-03-29 16:32:16 +08:00
luwenpeng
814a0d739f Add linux kernel interval tree 2024-03-27 17:16:59 +08:00
luwenpeng
eb281ab789 session manager support tcp reassembly 2024-03-26 15:09:03 +08:00
luwenpeng
1cdbb7c2a4 Add session state 'discard' 2024-03-15 17:02:12 +08:00
luwenpeng
ce00122557 Refactor the session manager using session transformation 2D array & Update test case 2024-03-14 18:03:34 +08:00
luwenpeng
639614622b update session_manager_stat 2024-03-11 15:04:18 +08:00
luwenpeng
512dfddd03 reactor packet I/O & duplicated packet filter & evicted session filter 2024-03-10 19:07:26 +08:00
luwenpeng
ee35a26a9d update stellar thread main loop 2024-03-08 18:10:38 +08:00
luwenpeng
734f6a5135 rename config -> options 2024-03-08 14:51:21 +08:00
luwenpeng
d0914483bb rename counter -> stat 2024-03-08 14:25:01 +08:00
luwenpeng
c945931620 rename xxx_create() / xxx_destory() -> xxx_new() / xxx_free() 2024-03-08 14:20:36 +08:00
luwenpeng
d7370e0e19 rename xxx_tostring() -> xxx_to_str() 2024-03-08 13:43:03 +08:00