Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Smb hashmap/v9 #12036

Closed
wants to merge 11 commits into from
31 changes: 31 additions & 0 deletions doc/userguide/configuration/suricata-yaml.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1686,6 +1686,37 @@ the limits are exceeded, and an event will be raised.
`max-write-queue-size` and `max-write-queue-cnt` are as the READ variants,
but then for WRITEs.

Cache limits
^^^^^^^^^^^^

The SMB parser uses several per flow caches to track data between different records
and transactions.
victorjulien marked this conversation as resolved.
Show resolved Hide resolved

::

smb:
max-guid-cache-size: 1024
max-rec-offset-cache-size: 128
max-tree-cache-size: 512
max-dcerpc-frag-cache-size: 128
max-session-cache-size: 512

The `max-guid-cache-size` setting controls the size of the hash that maps the GUID to
filenames. These are added through CREATE commands and removed by CLOSE commands.

`max-rec-offset-cache-size` controls the size of the hash that maps the READ offset
from READ commands to the READ responses.

The `max-tree-cache-size` option contols the size of the SMB session to SMB tree hash.

`max-dcerpc-frag-cache-size` controls the size of the hash that tracks partial DCERPC
over SMB records. These are buffered in this hash to only parse the DCERPC record when
it is fully reassembled.

The `max-session-cache-size` setting controls the size of a generic hash table that maps
SMB session to filenames, GUIDs and share names.
Comment on lines +1694 to +1717
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Any additional comments here on the suitability of the defaults would be great.. Conservative? Good for average use? etc. Why they were chosen?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fairly random. I don't have a good env to test this stuff with. Want to make some ways to observe the sizes.



Configure HTTP2
~~~~~~~~~~~~~~~

Expand Down
129 changes: 84 additions & 45 deletions rust/Cargo.lock.in

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions rust/Cargo.toml.in
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ brotli = "~3.4.0"
hkdf = "~0.12.3"
aes = "~0.7.5"
aes-gcm = "~0.9.4"
lru = "~0.12.5"

der-parser = { version = "~9.0.0", default-features = false }
kerberos-parser = { version = "~0.8.0", default-features = false }
Expand Down
1 change: 1 addition & 0 deletions rust/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ extern crate bitflags;
extern crate byteorder;
extern crate crc;
extern crate memchr;
extern crate lru;
#[macro_use]
extern crate num_derive;
extern crate widestring;
Expand Down
Loading
Loading