Skip to content

Repository files navigation

An ML/DL framework for Traffic Classification TC

domainDocumentation

tcbench design is cored in the following objectives:

  • Easing ML/DL models training/testing results replicability.
  • Tight integration with public TC datasets with ease data installation and curation,
  • Model tracking via AIM.
  • Rich command line for executing modeling campaings and collecting performance reports.

...wait, what is Traffic Classification?

A computer network is formed by hosts that exchange information, namely packets, according to standardized protocols (e.g., HTTP is the protocol used for the web). So to properly operate/manage networks one is required to monitor this flow of information and react accordingly. For instance, in an office/enterprise environment, one might want to prioritize video meeting traffic while limit social media traffic.

Traffic classification is the the act of labeling an exchange of packets between network hosts based on the application that generated it. For instance, you want to identify traffic related to zoom/webx/skype/etc. calls or traffic related to twitter/instagram/facebook/mastodon out of all traffic flowing throught the network.

Motivations

The academic literature is ripe with methods and proposals for TC. Yet, it is scarce of code artifacts and public datasets do not offer common conventions of use.

We designed tcbench with the following goals in mind:

GoalState of the arttcbench
Data curationThere are a few public datasets for TC, yet no common format/schema, cleaning process, or standard train/val/test folds.An (opinionated) curation of datasets to create easy to use parquet files with associated train/val/test fold.
CodeTC literature has no reference code base for ML/DL modelingtcbench is open source with an easy to use CLI based on click
Model trackingMost of ML framework requires integration with cloud environments and subscription servicestcbench uses aimstack to save on local servers metrics during training which can be later explored via its web UI or aggregated in report summaries using tcbench

Install

Create a conda environment

conda create -n tcbench python=3.10 pip
conda activate tcbench
python -m pip install tcbench

For the developer version

python -m pip install tcbench[dev]

Features and roadmap

tcbench is still under development, but (as suggested by its name) ultimately aims to be a reference framework for benchmarking multiple ML/DL solutions related to TC.

At the current stage, tcbench offers

  • Integration with 4 datasets, namely ucdavis-icdm19, mirage19, mirage22 and utmobilenet21. You can use these datasets and their curated version independently from tcbench. Check out the dataset install process and dataset loading tutorial.

  • Good support for flowpic input representation.

  • Initial support for for 1d packet time series (based on network packets properties) input representation.

  • Data augmentation functionality for flowpic input representation.

  • Modeling via XGBoost, vanilla DL supervision and contrastive learning (via SimCLR or SupCon).

More exiting features including more datasets and algorithms will come in the next months.

Stay tuned ;)!

Papers

About

tcbench is a Machine Learning and Deep Learning framework to train model from traffic packet time series or other input representations.

Topics

Resources

Stars

32 stars

Watchers

4 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - tcbenchstack/tcbench: tcbench is a Machine Learning and Deep Learning framework to train model from traffic packet time series or other input representations. · GitHub
Skip to content

Repository files navigation

An ML/DL framework for Traffic Classification TC

domainDocumentation

tcbench design is cored in the following objectives:

  • Easing ML/DL models training/testing results replicability.
  • Tight integration with public TC datasets with ease data installation and curation,
  • Model tracking via AIM.
  • Rich command line for executing modeling campaings and collecting performance reports.

...wait, what is Traffic Classification?

A computer network is formed by hosts that exchange information, namely packets, according to standardized protocols (e.g., HTTP is the protocol used for the web). So to properly operate/manage networks one is required to monitor this flow of information and react accordingly. For instance, in an office/enterprise environment, one might want to prioritize video meeting traffic while limit social media traffic.

Traffic classification is the the act of labeling an exchange of packets between network hosts based on the application that generated it. For instance, you want to identify traffic related to zoom/webx/skype/etc. calls or traffic related to twitter/instagram/facebook/mastodon out of all traffic flowing throught the network.

Motivations

The academic literature is ripe with methods and proposals for TC. Yet, it is scarce of code artifacts and public datasets do not offer common conventions of use.

We designed tcbench with the following goals in mind:

GoalState of the arttcbench
Data curationThere are a few public datasets for TC, yet no common format/schema, cleaning process, or standard train/val/test folds.An (opinionated) curation of datasets to create easy to use parquet files with associated train/val/test fold.
CodeTC literature has no reference code base for ML/DL modelingtcbench is open source with an easy to use CLI based on click
Model trackingMost of ML framework requires integration with cloud environments and subscription servicestcbench uses aimstack to save on local servers metrics during training which can be later explored via its web UI or aggregated in report summaries using tcbench

Install

Create a conda environment

conda create -n tcbench python=3.10 pip
conda activate tcbench
python -m pip install tcbench

For the developer version

python -m pip install tcbench[dev]

Features and roadmap

tcbench is still under development, but (as suggested by its name) ultimately aims to be a reference framework for benchmarking multiple ML/DL solutions related to TC.

At the current stage, tcbench offers

  • Integration with 4 datasets, namely ucdavis-icdm19, mirage19, mirage22 and utmobilenet21. You can use these datasets and their curated version independently from tcbench. Check out the dataset install process and dataset loading tutorial.

  • Good support for flowpic input representation.

  • Initial support for for 1d packet time series (based on network packets properties) input representation.

  • Data augmentation functionality for flowpic input representation.

  • Modeling via XGBoost, vanilla DL supervision and contrastive learning (via SimCLR or SupCon).

More exiting features including more datasets and algorithms will come in the next months.

Stay tuned ;)!

Papers

About

tcbench is a Machine Learning and Deep Learning framework to train model from traffic packet time series or other input representations.

Topics

Resources

Stars

32 stars

Watchers

4 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - tcbenchstack/tcbench: tcbench is a Machine Learning and Deep Learning framework to train model from traffic packet time series or other input representations. · GitHub
Skip to content

Repository files navigation

An ML/DL framework for Traffic Classification TC

domainDocumentation

tcbench design is cored in the following objectives:

  • Easing ML/DL models training/testing results replicability.
  • Tight integration with public TC datasets with ease data installation and curation,
  • Model tracking via AIM.
  • Rich command line for executing modeling campaings and collecting performance reports.

...wait, what is Traffic Classification?

A computer network is formed by hosts that exchange information, namely packets, according to standardized protocols (e.g., HTTP is the protocol used for the web). So to properly operate/manage networks one is required to monitor this flow of information and react accordingly. For instance, in an office/enterprise environment, one might want to prioritize video meeting traffic while limit social media traffic.

Traffic classification is the the act of labeling an exchange of packets between network hosts based on the application that generated it. For instance, you want to identify traffic related to zoom/webx/skype/etc. calls or traffic related to twitter/instagram/facebook/mastodon out of all traffic flowing throught the network.

Motivations

The academic literature is ripe with methods and proposals for TC. Yet, it is scarce of code artifacts and public datasets do not offer common conventions of use.

We designed tcbench with the following goals in mind:

GoalState of the arttcbench
Data curationThere are a few public datasets for TC, yet no common format/schema, cleaning process, or standard train/val/test folds.An (opinionated) curation of datasets to create easy to use parquet files with associated train/val/test fold.
CodeTC literature has no reference code base for ML/DL modelingtcbench is open source with an easy to use CLI based on click
Model trackingMost of ML framework requires integration with cloud environments and subscription servicestcbench uses aimstack to save on local servers metrics during training which can be later explored via its web UI or aggregated in report summaries using tcbench

Install

Create a conda environment

conda create -n tcbench python=3.10 pip
conda activate tcbench
python -m pip install tcbench

For the developer version

python -m pip install tcbench[dev]

Features and roadmap

tcbench is still under development, but (as suggested by its name) ultimately aims to be a reference framework for benchmarking multiple ML/DL solutions related to TC.

At the current stage, tcbench offers

  • Integration with 4 datasets, namely ucdavis-icdm19, mirage19, mirage22 and utmobilenet21. You can use these datasets and their curated version independently from tcbench. Check out the dataset install process and dataset loading tutorial.

  • Good support for flowpic input representation.

  • Initial support for for 1d packet time series (based on network packets properties) input representation.

  • Data augmentation functionality for flowpic input representation.

  • Modeling via XGBoost, vanilla DL supervision and contrastive learning (via SimCLR or SupCon).

More exiting features including more datasets and algorithms will come in the next months.

Stay tuned ;)!

Papers

About

tcbench is a Machine Learning and Deep Learning framework to train model from traffic packet time series or other input representations.

Topics

Resources

Stars

32 stars

Watchers

4 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - tcbenchstack/tcbench: tcbench is a Machine Learning and Deep Learning framework to train model from traffic packet time series or other input representations. · GitHub
Skip to content

Repository files navigation

An ML/DL framework for Traffic Classification TC

domainDocumentation

tcbench design is cored in the following objectives:

  • Easing ML/DL models training/testing results replicability.
  • Tight integration with public TC datasets with ease data installation and curation,
  • Model tracking via AIM.
  • Rich command line for executing modeling campaings and collecting performance reports.

...wait, what is Traffic Classification?

A computer network is formed by hosts that exchange information, namely packets, according to standardized protocols (e.g., HTTP is the protocol used for the web). So to properly operate/manage networks one is required to monitor this flow of information and react accordingly. For instance, in an office/enterprise environment, one might want to prioritize video meeting traffic while limit social media traffic.

Traffic classification is the the act of labeling an exchange of packets between network hosts based on the application that generated it. For instance, you want to identify traffic related to zoom/webx/skype/etc. calls or traffic related to twitter/instagram/facebook/mastodon out of all traffic flowing throught the network.

Motivations

The academic literature is ripe with methods and proposals for TC. Yet, it is scarce of code artifacts and public datasets do not offer common conventions of use.

We designed tcbench with the following goals in mind:

GoalState of the arttcbench
Data curationThere are a few public datasets for TC, yet no common format/schema, cleaning process, or standard train/val/test folds.An (opinionated) curation of datasets to create easy to use parquet files with associated train/val/test fold.
CodeTC literature has no reference code base for ML/DL modelingtcbench is open source with an easy to use CLI based on click
Model trackingMost of ML framework requires integration with cloud environments and subscription servicestcbench uses aimstack to save on local servers metrics during training which can be later explored via its web UI or aggregated in report summaries using tcbench

Install

Create a conda environment

conda create -n tcbench python=3.10 pip
conda activate tcbench
python -m pip install tcbench

For the developer version

python -m pip install tcbench[dev]

Features and roadmap

tcbench is still under development, but (as suggested by its name) ultimately aims to be a reference framework for benchmarking multiple ML/DL solutions related to TC.

At the current stage, tcbench offers

  • Integration with 4 datasets, namely ucdavis-icdm19, mirage19, mirage22 and utmobilenet21. You can use these datasets and their curated version independently from tcbench. Check out the dataset install process and dataset loading tutorial.

  • Good support for flowpic input representation.

  • Initial support for for 1d packet time series (based on network packets properties) input representation.

  • Data augmentation functionality for flowpic input representation.

  • Modeling via XGBoost, vanilla DL supervision and contrastive learning (via SimCLR or SupCon).

More exiting features including more datasets and algorithms will come in the next months.

Stay tuned ;)!

Papers

About

tcbench is a Machine Learning and Deep Learning framework to train model from traffic packet time series or other input representations.

Topics

Resources

Stars

32 stars

Watchers

4 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - tcbenchstack/tcbench: tcbench is a Machine Learning and Deep Learning framework to train model from traffic packet time series or other input representations. · GitHub
Skip to content

Repository files navigation

An ML/DL framework for Traffic Classification TC

domainDocumentation

tcbench design is cored in the following objectives:

  • Easing ML/DL models training/testing results replicability.
  • Tight integration with public TC datasets with ease data installation and curation,
  • Model tracking via AIM.
  • Rich command line for executing modeling campaings and collecting performance reports.

...wait, what is Traffic Classification?

A computer network is formed by hosts that exchange information, namely packets, according to standardized protocols (e.g., HTTP is the protocol used for the web). So to properly operate/manage networks one is required to monitor this flow of information and react accordingly. For instance, in an office/enterprise environment, one might want to prioritize video meeting traffic while limit social media traffic.

Traffic classification is the the act of labeling an exchange of packets between network hosts based on the application that generated it. For instance, you want to identify traffic related to zoom/webx/skype/etc. calls or traffic related to twitter/instagram/facebook/mastodon out of all traffic flowing throught the network.

Motivations

The academic literature is ripe with methods and proposals for TC. Yet, it is scarce of code artifacts and public datasets do not offer common conventions of use.

We designed tcbench with the following goals in mind:

GoalState of the arttcbench
Data curationThere are a few public datasets for TC, yet no common format/schema, cleaning process, or standard train/val/test folds.An (opinionated) curation of datasets to create easy to use parquet files with associated train/val/test fold.
CodeTC literature has no reference code base for ML/DL modelingtcbench is open source with an easy to use CLI based on click
Model trackingMost of ML framework requires integration with cloud environments and subscription servicestcbench uses aimstack to save on local servers metrics during training which can be later explored via its web UI or aggregated in report summaries using tcbench

Install

Create a conda environment

conda create -n tcbench python=3.10 pip
conda activate tcbench
python -m pip install tcbench

For the developer version

python -m pip install tcbench[dev]

Features and roadmap

tcbench is still under development, but (as suggested by its name) ultimately aims to be a reference framework for benchmarking multiple ML/DL solutions related to TC.

At the current stage, tcbench offers

  • Integration with 4 datasets, namely ucdavis-icdm19, mirage19, mirage22 and utmobilenet21. You can use these datasets and their curated version independently from tcbench. Check out the dataset install process and dataset loading tutorial.

  • Good support for flowpic input representation.

  • Initial support for for 1d packet time series (based on network packets properties) input representation.

  • Data augmentation functionality for flowpic input representation.

  • Modeling via XGBoost, vanilla DL supervision and contrastive learning (via SimCLR or SupCon).

More exiting features including more datasets and algorithms will come in the next months.

Stay tuned ;)!

Papers

About

tcbench is a Machine Learning and Deep Learning framework to train model from traffic packet time series or other input representations.

Topics

Resources

Stars

32 stars

Watchers

4 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - tcbenchstack/tcbench: tcbench is a Machine Learning and Deep Learning framework to train model from traffic packet time series or other input representations. · GitHub
Skip to content

Repository files navigation

An ML/DL framework for Traffic Classification TC

domainDocumentation

tcbench design is cored in the following objectives:

  • Easing ML/DL models training/testing results replicability.
  • Tight integration with public TC datasets with ease data installation and curation,
  • Model tracking via AIM.
  • Rich command line for executing modeling campaings and collecting performance reports.

...wait, what is Traffic Classification?

A computer network is formed by hosts that exchange information, namely packets, according to standardized protocols (e.g., HTTP is the protocol used for the web). So to properly operate/manage networks one is required to monitor this flow of information and react accordingly. For instance, in an office/enterprise environment, one might want to prioritize video meeting traffic while limit social media traffic.

Traffic classification is the the act of labeling an exchange of packets between network hosts based on the application that generated it. For instance, you want to identify traffic related to zoom/webx/skype/etc. calls or traffic related to twitter/instagram/facebook/mastodon out of all traffic flowing throught the network.

Motivations

The academic literature is ripe with methods and proposals for TC. Yet, it is scarce of code artifacts and public datasets do not offer common conventions of use.

We designed tcbench with the following goals in mind:

GoalState of the arttcbench
Data curationThere are a few public datasets for TC, yet no common format/schema, cleaning process, or standard train/val/test folds.An (opinionated) curation of datasets to create easy to use parquet files with associated train/val/test fold.
CodeTC literature has no reference code base for ML/DL modelingtcbench is open source with an easy to use CLI based on click
Model trackingMost of ML framework requires integration with cloud environments and subscription servicestcbench uses aimstack to save on local servers metrics during training which can be later explored via its web UI or aggregated in report summaries using tcbench

Install

Create a conda environment

conda create -n tcbench python=3.10 pip
conda activate tcbench
python -m pip install tcbench

For the developer version

python -m pip install tcbench[dev]

Features and roadmap

tcbench is still under development, but (as suggested by its name) ultimately aims to be a reference framework for benchmarking multiple ML/DL solutions related to TC.

At the current stage, tcbench offers

  • Integration with 4 datasets, namely ucdavis-icdm19, mirage19, mirage22 and utmobilenet21. You can use these datasets and their curated version independently from tcbench. Check out the dataset install process and dataset loading tutorial.

  • Good support for flowpic input representation.

  • Initial support for for 1d packet time series (based on network packets properties) input representation.

  • Data augmentation functionality for flowpic input representation.

  • Modeling via XGBoost, vanilla DL supervision and contrastive learning (via SimCLR or SupCon).

More exiting features including more datasets and algorithms will come in the next months.

Stay tuned ;)!

Papers

About

tcbench is a Machine Learning and Deep Learning framework to train model from traffic packet time series or other input representations.

Topics

Resources

Stars

32 stars

Watchers

4 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - tcbenchstack/tcbench: tcbench is a Machine Learning and Deep Learning framework to train model from traffic packet time series or other input representations. · GitHub
Skip to content

Repository files navigation

An ML/DL framework for Traffic Classification TC

domainDocumentation

tcbench design is cored in the following objectives:

  • Easing ML/DL models training/testing results replicability.
  • Tight integration with public TC datasets with ease data installation and curation,
  • Model tracking via AIM.
  • Rich command line for executing modeling campaings and collecting performance reports.

...wait, what is Traffic Classification?

A computer network is formed by hosts that exchange information, namely packets, according to standardized protocols (e.g., HTTP is the protocol used for the web). So to properly operate/manage networks one is required to monitor this flow of information and react accordingly. For instance, in an office/enterprise environment, one might want to prioritize video meeting traffic while limit social media traffic.

Traffic classification is the the act of labeling an exchange of packets between network hosts based on the application that generated it. For instance, you want to identify traffic related to zoom/webx/skype/etc. calls or traffic related to twitter/instagram/facebook/mastodon out of all traffic flowing throught the network.

Motivations

The academic literature is ripe with methods and proposals for TC. Yet, it is scarce of code artifacts and public datasets do not offer common conventions of use.

We designed tcbench with the following goals in mind:

GoalState of the arttcbench
Data curationThere are a few public datasets for TC, yet no common format/schema, cleaning process, or standard train/val/test folds.An (opinionated) curation of datasets to create easy to use parquet files with associated train/val/test fold.
CodeTC literature has no reference code base for ML/DL modelingtcbench is open source with an easy to use CLI based on click
Model trackingMost of ML framework requires integration with cloud environments and subscription servicestcbench uses aimstack to save on local servers metrics during training which can be later explored via its web UI or aggregated in report summaries using tcbench

Install

Create a conda environment

conda create -n tcbench python=3.10 pip
conda activate tcbench
python -m pip install tcbench

For the developer version

python -m pip install tcbench[dev]

Features and roadmap

tcbench is still under development, but (as suggested by its name) ultimately aims to be a reference framework for benchmarking multiple ML/DL solutions related to TC.

At the current stage, tcbench offers

  • Integration with 4 datasets, namely ucdavis-icdm19, mirage19, mirage22 and utmobilenet21. You can use these datasets and their curated version independently from tcbench. Check out the dataset install process and dataset loading tutorial.

  • Good support for flowpic input representation.

  • Initial support for for 1d packet time series (based on network packets properties) input representation.

  • Data augmentation functionality for flowpic input representation.

  • Modeling via XGBoost, vanilla DL supervision and contrastive learning (via SimCLR or SupCon).

More exiting features including more datasets and algorithms will come in the next months.

Stay tuned ;)!

Papers

About

tcbench is a Machine Learning and Deep Learning framework to train model from traffic packet time series or other input representations.

Topics

Resources

Stars

32 stars

Watchers

4 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - tcbenchstack/tcbench: tcbench is a Machine Learning and Deep Learning framework to train model from traffic packet time series or other input representations. · GitHub
Skip to content

Repository files navigation

An ML/DL framework for Traffic Classification TC

domainDocumentation

tcbench design is cored in the following objectives:

  • Easing ML/DL models training/testing results replicability.
  • Tight integration with public TC datasets with ease data installation and curation,
  • Model tracking via AIM.
  • Rich command line for executing modeling campaings and collecting performance reports.

...wait, what is Traffic Classification?

A computer network is formed by hosts that exchange information, namely packets, according to standardized protocols (e.g., HTTP is the protocol used for the web). So to properly operate/manage networks one is required to monitor this flow of information and react accordingly. For instance, in an office/enterprise environment, one might want to prioritize video meeting traffic while limit social media traffic.

Traffic classification is the the act of labeling an exchange of packets between network hosts based on the application that generated it. For instance, you want to identify traffic related to zoom/webx/skype/etc. calls or traffic related to twitter/instagram/facebook/mastodon out of all traffic flowing throught the network.

Motivations

The academic literature is ripe with methods and proposals for TC. Yet, it is scarce of code artifacts and public datasets do not offer common conventions of use.

We designed tcbench with the following goals in mind:

GoalState of the arttcbench
Data curationThere are a few public datasets for TC, yet no common format/schema, cleaning process, or standard train/val/test folds.An (opinionated) curation of datasets to create easy to use parquet files with associated train/val/test fold.
CodeTC literature has no reference code base for ML/DL modelingtcbench is open source with an easy to use CLI based on click
Model trackingMost of ML framework requires integration with cloud environments and subscription servicestcbench uses aimstack to save on local servers metrics during training which can be later explored via its web UI or aggregated in report summaries using tcbench

Install

Create a conda environment

conda create -n tcbench python=3.10 pip
conda activate tcbench
python -m pip install tcbench

For the developer version

python -m pip install tcbench[dev]

Features and roadmap

tcbench is still under development, but (as suggested by its name) ultimately aims to be a reference framework for benchmarking multiple ML/DL solutions related to TC.

At the current stage, tcbench offers

  • Integration with 4 datasets, namely ucdavis-icdm19, mirage19, mirage22 and utmobilenet21. You can use these datasets and their curated version independently from tcbench. Check out the dataset install process and dataset loading tutorial.

  • Good support for flowpic input representation.

  • Initial support for for 1d packet time series (based on network packets properties) input representation.

  • Data augmentation functionality for flowpic input representation.

  • Modeling via XGBoost, vanilla DL supervision and contrastive learning (via SimCLR or SupCon).

More exiting features including more datasets and algorithms will come in the next months.

Stay tuned ;)!

Papers

About

tcbench is a Machine Learning and Deep Learning framework to train model from traffic packet time series or other input representations.

Topics

Resources

Stars

32 stars

Watchers

4 watching

Forks

Releases

Packages

Used by

Contributors

Languages