{"id":363141,"date":"2024-05-21T01:49:40","date_gmt":"2024-05-21T01:49:40","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=363141"},"modified":"-0001-11-30T00:00:00","modified_gmt":"2024-05-21T01:49:40","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=363141","title":{"rendered":"<span>Cisco TRex \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c29\/934\/c85\/c29934c85e6f87d66aa4365330d2b8c2.png\" width=\"1440\" height=\"816\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c29\/934\/c85\/c29934c85e6f87d66aa4365330d2b8c2.png\"\/><\/figure>\n<h2>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 Cisco TRex<\/h2>\n<p>\u041a\u0430\u043a \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 <a href=\"https:\/\/habr.com\/ru\/articles\/510086\/\" rel=\"noopener noreferrer nofollow\">\u0413\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0442\u0440\u0430\u0444\u0438\u043a\u0430 Cisco TRex: \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u043e\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432<\/a>:<\/p>\n<blockquote>\n<p>\u042d\u0442\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430\u0445 Intel \u043d\u0430 \u0431\u0430\u0437\u0435 DPDK, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0440\u0435\u0436\u0438\u043c\u044b \u0441 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0435\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043f\u043e\u0442\u043e\u043a\u0430 \u0438 \u0431\u0435\u0437 (stateful \/ stateless modes). \u0421\u0440\u0430\u0432\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u043c\u044b\u0439.<\/p>\n<p>\u0410\u043d\u0433\u043b\u043e\u044f\u0437\u044b\u0447\u043d\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430\u00a0<a href=\"https:\/\/trex-tgn.cisco.com\/trex\/doc\" rel=\"noopener noreferrer nofollow\">\u043d\u0430 \u0441\u0430\u0439\u0442\u0435<\/a>.<\/p>\n<p>Trex \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u0442\u0438\u043f\u044b \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0438 \u0438\u0445 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0438. \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 MAC \u0438 IP. \u041c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0438 \u0438\u0445 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e, \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u0432 \u0441\u0440\u0435\u0434\u0435 Linux.<\/p>\n<p>\u041e\u0434\u043d\u043e \u0438\u0437 \u0432\u0430\u0436\u043d\u044b\u0445 \u043e\u0442\u043b\u0438\u0447\u0438\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 Trex \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 DPDK, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0431\u043e\u0439\u0442\u0438 \u00ab\u0443\u0437\u043a\u0438\u0435 \u043c\u0435\u0441\u0442\u0430\u00bb \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0441\u0442\u0435\u043a\u0430 Linux. DPDK \u0438\u043b\u0438 Data Plane Development Kit \u2014 \u044d\u0442\u043e \u0446\u0435\u043b\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0438 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u043e\u0432 \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0441\u0442\u0435\u043a Linux \u0438\u0437 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441 \u0441\u0435\u0442\u0435\u0432\u044b\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e.<\/p>\n<p>DPDK \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u043e\u0431\u0449\u0435\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u043a\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432. \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u044d\u0442\u043e\u0439 \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e\u0442\u043f\u0430\u0434\u0430\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0432 \u0434\u043e\u0440\u043e\u0433\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0445 \u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0442\u043e\u0440\u0430\u0445 \u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440\u0430\u0445. \u041e\u0434\u043d\u0430\u043a\u043e DPDK \u043d\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u043e\u0432, \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u0436\u0435\u043b\u0435\u0437\u0430 \u0443\u043a\u0430\u0437\u0430\u043d \u043d\u0430\u00a0<a href=\"http:\/\/core.dpdk.org\/supported\" rel=\"noopener noreferrer nofollow\">\u043d\u0430 \u0441\u0441\u044b\u043b\u043a\u0435<\/a>\u00a0\u2014 \u0442\u0443\u0442 \u0441\u0430\u043c\u0430\u044f \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u043e\u0442\u00a0<a href=\"http:\/\/core.dpdk.org\/supported\/nics\/intel\/\" rel=\"noopener noreferrer nofollow\">Intel<\/a>, \u0442.\u0435. \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0436\u0435\u043b\u0435\u0437\u0430, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 linux-\u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430\u043c\u0438 e1000, ixgbe, i40e, ice, fm10k, ipn3ke, ifc, igc.<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0432\u0430\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u0447\u0442\u043e \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b TRex-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043d\u0430 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044f\u0445 10 \u0413\u0431\u0438\u0442\/\u0441 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c \u043c\u043d\u043e\u0433\u043e\u044f\u0434\u0435\u0440\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u2014 \u043e\u0442 4 \u044f\u0434\u0435\u0440 \u0438 \u0432\u044b\u0448\u0435, \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e CPU \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u0430 Intel c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 (hyper-threading).  <\/p>\n<\/blockquote>\n<h2>\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 TRex \u043a \u0440\u0430\u0431\u043e\u0442\u0435<\/h2>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/dce\/818\/457\/dce818457e48df771ea94f97a578beb7.png\" alt=\"\u041b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0442\u043e\u043f\u043e\u043b\u043e\u0433\u0438\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f TRex\" title=\"\u041b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0442\u043e\u043f\u043e\u043b\u043e\u0433\u0438\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f TRex\" width=\"885\" height=\"514\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/dce\/818\/457\/dce818457e48df771ea94f97a578beb7.png\"\/><\/p>\n<div><figcaption>\u041b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0442\u043e\u043f\u043e\u043b\u043e\u0433\u0438\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f TRex<\/figcaption><\/div>\n<\/figure>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td colspan=\"2\">\n<p align=\"center\"><strong>\u0414\u0430\u043d\u043d\u044b\u0435 TRex VM<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\">\n<p align=\"left\">\u041f\u0443\u0442\u044c \u0434\u043e TRex:\u00a0\/opt\/trex\/v3.00\/<\/p>\n<p align=\"left\">TRex Version: 3.00<\/p>\n<p align=\"left\">DPDK version: 22.03.0<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\">\n<p align=\"center\"><strong>\u041f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0435 \u0441\u0435\u0442\u0438 \u0434\u043b\u044f TRex Virtual Router (TRVR)<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0414\u043b\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0439 \u0441\u0435\u0442\u0438 (VLAN_87):<\/p>\n<p align=\"left\">Default gw: 172.16.9.1\/30<\/p>\n<p align=\"left\">TRVR: 172.16.9.2\/30<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0414\u043b\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 (VLAN_88):<\/p>\n<p align=\"left\">Default gw: 172.16.9.5\/30<\/p>\n<p align=\"left\">TRVR: 172.16.9.6\/30<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\">\n<p align=\"center\"><strong>\u042d\u043c\u0443\u043b\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u0441\u0435\u0442\u0438 \u0437\u0430 TRex Virtual Router (TRVR)<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0430\u044f \u0441\u0435\u0442\u044c:<\/p>\n<p align=\"left\">172.16.7.0\/24<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0421\u0435\u0440\u0432\u0435\u0440\u043d\u0430\u044f \u0441\u0435\u0442\u044c:<\/p>\n<p align=\"left\">172.16.12.0\/24<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p><strong>\u0412\u0410\u0416\u041d\u041e \u043f\u0435\u0440\u0435\u0434 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u0440\u0430\u0431\u043e\u0442 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c Secure Boot \u043d\u0430\u00a0TRex VM.<\/strong><\/p>\n<p><strong>\u0422\u0430\u043a\u0436\u0435 \u043f\u0435\u0440\u0435\u0434 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u0440\u0430\u0431\u043e\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u043e\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u044b \u0434\u043b\u044f \u044d\u043c\u0443\u043b\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u0441\u0435\u0442\u0435\u0439 \u0447\u0435\u0440\u0435\u0437 \u0442\u0435\u0441\u0442\u043e\u0432\u0443\u044e \u0437\u043e\u043d\u0443.<\/strong><\/p>\n<p>1) \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c\u0441\u044f \u043a vm \u0438 \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e TRex:<\/p>\n<pre><code class=\"bash\">[trexlab@lab-ine-trex-01 v3.00]$ cd \/opt\/trex\/v3.00\/ [trexlab@lab-ine-trex-01 v3.00]$ ls astf              daemon_server          ouvp_stl              _t-rex-64-debug-o astf_schema.json  doc_process.py         __pycache__           t-rex-64-debug-o astf-sim          dpdk_nic_bind.py       run_functional_tests  _t-rex-64-o astf-sim-utl      dpdk_setup_ports.py    run_regression        t-rex-64-o automation        emu                    so                    trex-cfg avl               exp                    stl                   trex_client_v3.00.tar.gz bird              external_libs          stl-sim               trex-console b.pcap            find_python.sh         test.yaml             trex_daemon_server bp-sim-64         general_daemon_server  _t-rex-64             trex-emu bp-sim-64-debug   generated              t-rex-64              trex_emu cap2              ko                     _t-rex-64-debug       x710_ddp cap222.pcap       master_daemon.py       t-rex-64-debug        y cfg               ndr                    t-rex-64-debug-gdb<\/code><\/pre>\n<p>\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043f\u0430\u043f\u043e\u043a TRex:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"center\"><strong>Location<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>Description<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\/stl<\/p>\n<\/td>\n<td>\n<p align=\"left\">Stateless native (py) profiles<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\/stl\/hlt<\/p>\n<\/td>\n<td>\n<p align=\"left\">Stateless HLT profiles<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\/ko<\/p>\n<\/td>\n<td>\n<p align=\"left\">Kernel modules for DPDK<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\/external_libs<\/p>\n<\/td>\n<td>\n<p align=\"left\">Python external libs used by server\/clients<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\/exp<\/p>\n<\/td>\n<td>\n<p align=\"left\">Golden PCAP file for unit-tests<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\/cfg<\/p>\n<\/td>\n<td>\n<p align=\"left\">Examples of config files<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\/cap2<\/p>\n<\/td>\n<td>\n<p align=\"left\">Stateful profiles<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\/avl<\/p>\n<\/td>\n<td>\n<p align=\"left\">Stateful profiles &#8212; EMIX profile<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\/automation<\/p>\n<\/td>\n<td>\n<p align=\"left\">Python client\/server code for both Stateful and Stateless<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\/automation\/regression<\/p>\n<\/td>\n<td>\n<p align=\"left\">Regression for Stateless and Stateful<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\/automation\/config<\/p>\n<\/td>\n<td>\n<p align=\"left\">Regression setups config files<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\/automation\/trex_control_plane\/interactive\/trex<\/p>\n<\/td>\n<td>\n<p align=\"left\">Stateless lib and Console<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\/automation\/trex_control_plane\/interactive\/trex\/stl<\/p>\n<\/td>\n<td>\n<p align=\"left\">Stateless lib<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\/automation\/trex_control_plane\/interactive\/trex\/examples\/stl<\/p>\n<\/td>\n<td>\n<p align=\"left\">Stateless examples<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\/astf<\/p>\n<\/td>\n<td>\n<p align=\"left\">ASTF native (py) profiles<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\/automation\/trex_control_plane\/interactive\/trex\/examples\/astf<\/p>\n<\/td>\n<td>\n<p align=\"left\">Automation examples<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\/automation\/trex_control_plane\/interactive\/trex\/astf<\/p>\n<\/td>\n<td>\n<p align=\"left\">ASTF lib compiler (convert py to JSON), Interactive lib<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\/automation\/trex_control_plane\/stf<\/p>\n<\/td>\n<td>\n<p align=\"left\">STF automation (used by ASTF mode)<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>2) \u0412\u044b\u0432\u0435\u0434\u0435\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 DPDK:<\/p>\n<pre><code class=\"bash\">[trexlab@lab-ine-trex-01 v3.00]$ sudo .\/dpdk_setup_ports.py -t +----+------+---------+-------------------+-----------------------------+---------+----------+----------+ | ID | NUMA |   PCI   |        MAC        |            Name             | Driver  | Linux IF |  Active  | +====+======+=========+===================+=============================+=========+==========+==========+ | 0  | -1   | 0b:00.0 | 00:50:56:a0:1b:92 | VMXNET3 Ethernet Controller | vmxnet3 | ens192   | *Active* | +----+------+---------+-------------------+-----------------------------+---------+----------+----------+ | 1  | -1   | 13:00.0 | 00:50:56:a0:01:33 | VMXNET3 Ethernet Controller | vmxnet3 | ens224   |          | +----+------+---------+-------------------+-----------------------------+---------+----------+----------+ | 2  | -1   | 1b:00.0 | 00:50:56:a0:55:ac | VMXNET3 Ethernet Controller | vmxnet3 | ens256   |          | +----+------+---------+-------------------+-----------------------------+---------+----------+----------+<\/code><\/pre>\n<p>ens192 &#8212;\u00a0management interface \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a VM \u043f\u043e SSH (\u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u043b\u044c\u0437\u044f)<\/p>\n<p>ens224 \u0438\u00a0ens256 &#8212; \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 DPDK<\/p>\n<p>3) \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443\u00a0\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0434\u0430\u043d\u043d\u044b\u043c TRex VM \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c \u0432\u044b\u0448\u0435:<\/p>\n<pre><code class=\"bash\">[trexlab@lab-ine-trex-01 v3.00]$ sudo .\/dpdk_setup_ports.py -i By default, IP based configuration file will be created. Do you want to use MAC based config? (y\/N)n +----+------+---------+-------------------+-----------------------------+---------+----------+----------+ | ID | NUMA |   PCI   |        MAC        |            Name             | Driver  | Linux IF |  Active  | +====+======+=========+===================+=============================+=========+==========+==========+ | 0  | -1   | 0b:00.0 | 00:50:56:a0:1b:92 | VMXNET3 Ethernet Controller | vmxnet3 | ens192   | *Active* | +----+------+---------+-------------------+-----------------------------+---------+----------+----------+ | 1  | -1   | 13:00.0 | 00:50:56:a0:01:33 | VMXNET3 Ethernet Controller | vmxnet3 | ens224   |          | +----+------+---------+-------------------+-----------------------------+---------+----------+----------+ | 2  | -1   | 1b:00.0 | 00:50:56:a0:55:ac | VMXNET3 Ethernet Controller | vmxnet3 | ens256   |          | +----+------+---------+-------------------+-----------------------------+---------+----------+----------+ Please choose an even number of interfaces from the list above, either by ID, PCI or Linux IF Stateful will use order of interfaces: Client1 Server1 Client2 Server2 etc. for flows. Stateless can be in any order. Enter list of interfaces separated by space (for example: 1 3) : 1 2   For interface 1, assuming loopback to its dual interface 2. Putting IP 1.1.1.1, default gw 2.2.2.2 Change it?(y\/N).y Please enter IP address for interface 1: 172.16.9.2 Please enter default gateway for interface 1: 172.16.9.1 For interface 2, assuming loopback to its dual interface 1. Putting IP 2.2.2.2, default gw 1.1.1.1 Change it?(y\/N).y Please enter IP address for interface 2: 172.16.9.6 Please enter default gateway for interface 2: 172.16.9.5 Print preview of generated config? (Y\/n)y ### Config file generated by dpdk_setup_ports.py ###   - version: 2   interfaces: ['13:00.0', '1b:00.0']   port_info:       - ip: 172.16.9.2         default_gw: 172.16.9.1       - ip: 172.16.9.6         default_gw: 172.16.9.5     platform:       master_thread_id: 0       latency_thread_id: 1       dual_if:         - socket: 0           threads: [2,3,4,5,6,7]     Save the config to file? (Y\/n)y Default filename is \/etc\/trex_cfg.yaml Press ENTER to confirm or enter new file: File \/etc\/trex_cfg.yaml already exist, overwrite? (y\/N)y Saved to \/etc\/trex_cfg.yaml.<\/code><\/pre>\n<p>\u041a\u0430\u043a \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u0432\u044b\u0432\u043e\u0434\u0435, \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 \u0431\u0443\u0434\u0443\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u043f\u043e \u043f\u0443\u0442\u0438\u00a0\u00a0\/etc\/trex_cfg.yaml.<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c TRex \u043a \u0437\u0430\u043f\u0443\u0441\u043a\u0443 \u0432 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0440\u0435\u0436\u0438\u043c\u043e\u0432:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td data-colwidth=\"323\" width=\"323\">\n<p align=\"center\"><strong>Stateless mode\u00a0<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>Stateful mode<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"323\" width=\"323\">\n<p align=\"left\">\u0414\u0430\u043d\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c \u0443\u0434\u043e\u0431\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0440\u0430\u0441\u0447\u0435\u0442\u0430 \u043f\u043e\u0442\u0435\u0440\u044c \u043f\u0440\u0438 L3\/L2 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f\u0445.<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0414\u0430\u043d\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c \u0443\u0434\u043e\u0431\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438   \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438\u00a0Firewall, NAT, DPI, Load Balancer, Network cache devices \u0438   \u0442.\u0434.<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td rowspan=\"2\" data-colwidth=\"323\" width=\"323\">\n<p align=\"left\">&#8212; Large scale\u00a0\u2014 Supports about 10\u201330\u00a0million packets per second (Mpps) per core, scalable with the number of cores<\/p>\n<p align=\"left\">&#8212; Each profile can support multiple streams, scalable to 10K parallel streams<\/p>\n<p align=\"left\">&#8212; Each stream supports:<\/p>\n<p align=\"left\">   &#8212; Packet   template &#8212; ability to build any packet (including malformed) using Scapy   (example: MPLS\/IPv4\/Ipv6\/GRE\/VXLAN\/NSH)<\/p>\n<p align=\"left\">   &#8212; Ability to change any field inside the packet<\/p>\n<p align=\"left\">   &#8212; Ability to change the packet size<\/p>\n<p align=\"left\">   &#8212; Mode &#8212; Continuous\/Burst\/Multi-burst<\/p>\n<p align=\"left\">   &#8212; Rate specification in pps, line rate percentage or L1\/L2 bandwidth<\/p>\n<p align=\"left\">   &#8212;\u00a0Action &#8212; stream can trigger a stream<\/p>\n<p align=\"left\">&#8212; Interactive support &#8212; Fast Console, GUI<\/p>\n<p align=\"left\">&#8212; Statistics per interface or per stream   supported in hardware\/software<\/p>\n<p align=\"left\">&#8212; Latency and Jitter per stream<\/p>\n<p align=\"left\">&#8212; Blazingly fast Python automation API<\/p>\n<p align=\"left\">&#8212; Capture\/Monitor traffic with BPF filters &#8212; no   need for Wireshark<\/p>\n<p align=\"left\">&#8212; Capture network traffic by redirecting the   traffic to Wireshark<\/p>\n<p align=\"left\">&#8212; PCAP file import\/export with huge pcap file   transmission support (e.g. 1TB pcap file) for DPI<\/p>\n<p align=\"left\">&#8212; Multi-user support<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212; Emulate L7 applications, e.g.   HTTP\/HTTPS\/Citrix<\/p>\n<p align=\"left\">&#8212; Multi profile support and ability to group   flows<\/p>\n<p align=\"left\">&#8212; Performance and scale:<\/p>\n<p align=\"left\">   &#8212; High bandwidth &#8212; 200 Gb\/sec<\/p>\n<p align=\"left\">   &#8212; High connection rate &#8212; order of MCPS<\/p>\n<p align=\"left\">   &#8212; Scale to millions of active established flows<\/p>\n<p align=\"left\">&#8212; Benchmark and Stress features\/devices like:<\/p>\n<p align=\"left\">   &#8212; NAT<\/p>\n<p align=\"left\">   &#8212; DPI<\/p>\n<p align=\"left\">   &#8212; Load Balancer<\/p>\n<p align=\"left\">   &#8212; Network cache devices<\/p>\n<p align=\"left\">   &#8212; Firewalls<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><strong>Stateful(STF) vs Advance Stateful (ASTF)<\/strong><\/p>\n<p align=\"left\">&#8212; Same Flexible tuple generator<\/p>\n<p align=\"left\">&#8212; Same Clustering mode<\/p>\n<p align=\"left\">&#8212; Same VLAN support<\/p>\n<p align=\"left\">&#8212; NAT &#8212; no need for complex learn mode. ASTF   supports NAT64 out of the box.<\/p>\n<p align=\"left\">&#8212; Flow order. ASTF has inherent ordering verification using the TCP layer. It also checks IP\/TCP\/UDP checksum out of the box.<\/p>\n<p align=\"left\">&#8212; Latency measurement is supported in both.<\/p>\n<p align=\"left\">&#8212; In ASTF mode, you can\u2019t control the IPG, less   predictable (concurrent flows is less deterministic)<\/p>\n<p align=\"left\">&#8212; ASTF can be interactive (start, stop, stats)<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p><strong>Advance Stateful mode \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0435 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0435 \u0431\u0443\u0434\u0435\u0442<\/strong><\/p>\n<h2>Stateless mode<\/h2>\n<p>\u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f Python-\u0441\u043a\u0440\u0438\u043f\u0442, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432\u0441\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438.<\/p>\n<h3>\u041c\u0435\u0442\u043e\u0434\u0438\u043a\u0430 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439<\/h3>\n<p>TRex \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e 4 \u043f\u043e\u0442\u043e\u043a\u0430\u043c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0438\u043d\u0438\u043c\u0443\u043c 4 5tuple-\u043f\u043e\u0442\u043e\u043a\u0430 \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td data-colwidth=\"50\" width=\"50\">\n<p align=\"center\"><strong>\u2116<\/strong><\/p>\n<\/td>\n<td data-colwidth=\"161\" width=\"161\">\n<p align=\"center\"><strong>\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435<\/strong><\/p>\n<\/td>\n<td data-colwidth=\"50\" width=\"50\">\n<p align=\"center\"><strong>ID<\/strong><\/p>\n<\/td>\n<td data-colwidth=\"126\" width=\"126\">\n<p align=\"center\"><strong>Source parameters<\/strong><\/p>\n<\/td>\n<td data-colwidth=\"108\" width=\"108\">\n<p align=\"center\"><strong>Destination<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>Rate, pps<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>Frame size, bytes<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>Stats<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"50\" width=\"50\">\n<p align=\"center\">1<\/p>\n<\/td>\n<td data-colwidth=\"161\" width=\"161\">\n<p align=\"left\">\u041f\u0440\u044f\u043c\u043e\u0439 \u0442\u0440\u0430\u0444\u0438\u043a (\u043a\u043b\u0438\u0435\u043d\u0442 &#8212;> \u0441\u0435\u0440\u0432\u0435\u0440)<\/p>\n<\/td>\n<td data-colwidth=\"50\" width=\"50\">\n<p align=\"center\">10<\/p>\n<\/td>\n<td data-colwidth=\"126\" width=\"126\">\n<p align=\"left\">IP:172.16.7.1-172.16.7.60<\/p>\n<\/td>\n<td data-colwidth=\"108\" width=\"108\">\n<p align=\"left\">172.16.12.10<\/p>\n<\/td>\n<td>\n<p align=\"center\">10000<\/p>\n<\/td>\n<td>\n<p align=\"center\">1400<\/p>\n<\/td>\n<td>\n<p align=\"center\">On<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"50\" width=\"50\">\n<p align=\"center\">2<\/p>\n<\/td>\n<td data-colwidth=\"161\" width=\"161\">\n<p align=\"left\">\u041f\u0440\u044f\u043c\u043e\u0439 \u0442\u0440\u0430\u0444\u0438\u043a (\u043a\u043b\u0438\u0435\u043d\u0442\u00a0&#8212;> \u0441\u0435\u0440\u0432\u0435\u0440)<\/p>\n<\/td>\n<td data-colwidth=\"50\" width=\"50\">\n<p align=\"center\">20<\/p>\n<\/td>\n<td data-colwidth=\"126\" width=\"126\">\n<p align=\"left\">IP:172.16.7.61-172.16.7.120<\/p>\n<\/td>\n<td data-colwidth=\"108\" width=\"108\">\n<p align=\"left\">172.16.12.20<\/p>\n<\/td>\n<td>\n<p align=\"center\">10000<\/p>\n<\/td>\n<td>\n<p align=\"center\">1400<\/p>\n<\/td>\n<td>\n<p align=\"center\">On<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"50\" width=\"50\">\n<p align=\"center\">3<\/p>\n<\/td>\n<td data-colwidth=\"161\" width=\"161\">\n<p align=\"left\">\u041f\u0440\u044f\u043c\u043e\u0439 \u0442\u0440\u0430\u0444\u0438\u043a (\u043a\u043b\u0438\u0435\u043d\u0442\u00a0&#8212;> \u0441\u0435\u0440\u0432\u0435\u0440)<\/p>\n<\/td>\n<td data-colwidth=\"50\" width=\"50\">\n<p align=\"center\">30<\/p>\n<\/td>\n<td data-colwidth=\"126\" width=\"126\">\n<p align=\"left\">IP:172.16.7.121-172.16.7.180<\/p>\n<\/td>\n<td data-colwidth=\"108\" width=\"108\">\n<p align=\"left\">172.16.12.30<\/p>\n<\/td>\n<td>\n<p align=\"center\">10000<\/p>\n<\/td>\n<td>\n<p align=\"center\">1400<\/p>\n<\/td>\n<td>\n<p align=\"center\">On<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"50\" width=\"50\">\n<p align=\"center\">4<\/p>\n<\/td>\n<td data-colwidth=\"161\" width=\"161\">\n<p align=\"left\">\u041f\u0440\u044f\u043c\u043e\u0439 \u0442\u0440\u0430\u0444\u0438\u043a (\u043a\u043b\u0438\u0435\u043d\u0442\u00a0&#8212;> \u0441\u0435\u0440\u0432\u0435\u0440)<\/p>\n<\/td>\n<td data-colwidth=\"50\" width=\"50\">\n<p align=\"center\">40<\/p>\n<\/td>\n<td data-colwidth=\"126\" width=\"126\">\n<p align=\"left\">IP:172.16.7.181-172.16.7.240<\/p>\n<\/td>\n<td data-colwidth=\"108\" width=\"108\">\n<p align=\"left\">172.16.12.40<\/p>\n<\/td>\n<td>\n<p align=\"center\">10000<\/p>\n<\/td>\n<td>\n<p align=\"center\">1400<\/p>\n<\/td>\n<td>\n<p align=\"center\">On<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>*Rate (pps, Packets Per Second) : \u0427\u0430\u0441\u0442\u043e\u0442\u0430 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0432 \u043f\u0430\u043a\u0435\u0442\u0430\u0445 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443<\/p>\n<p>*Frame size (bytes) : \u0420\u0430\u0437\u043c\u0435\u0440 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u043e\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u0430. \u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 1400, \u043d\u043e \u043f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u043f\u043e\u0442\u0435\u0440\u044c \u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u0437\u0438\u0442\u044c<\/p>\n<p>*Stats : \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u00a0\u0431\u0443\u0434\u0435\u0442 \u043b\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0442\u043e\u043a\u0430 \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 TRex (\u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 python-\u0441\u043a\u0440\u0438\u043f\u0442\u0435, \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 flow_stats)<\/p>\n<p>\u0412 \u043e\u0442\u0447\u0435\u0442 \u0437\u0430\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u043f\u043e\u0442\u0435\u0440\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0438\u0437 \u0432\u0441\u0435\u0445 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, \u0437\u0430\u0442\u0435\u043c \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0441\u0430\u043c\u043e\u0435 \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u043f\u043e\u0442\u0435\u0440\u044c \u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u044b (1 \u043c\u0441 = 10 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u043f\u0440\u0438 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 \u0432 10000 pps):<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/605\/ac5\/df6\/605ac5df66f07585610ea1939d068cb3.png\" alt=\"\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u043e\u0442\u0447\u0435\u0442\u0430 \u0441 \u043e\u0434\u043d\u043e\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u043c \u043f\u043e\u0442\u043e\u043a\u043e\u043c \u0434\u0430\u043d\u043d\u044b\u0445 \" title=\"\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u043e\u0442\u0447\u0435\u0442\u0430 \u0441 \u043e\u0434\u043d\u043e\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u043c \u043f\u043e\u0442\u043e\u043a\u043e\u043c \u0434\u0430\u043d\u043d\u044b\u0445 \" width=\"721\" height=\"811\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/605\/ac5\/df6\/605ac5df66f07585610ea1939d068cb3.png\"\/><\/p>\n<div><figcaption>\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u043e\u0442\u0447\u0435\u0442\u0430 \u0441 \u043e\u0434\u043d\u043e\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u043c \u043f\u043e\u0442\u043e\u043a\u043e\u043c \u0434\u0430\u043d\u043d\u044b\u0445 <\/figcaption><\/div>\n<\/figure>\n<p>\u0412 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f\u0445 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044e\u0442 \u0435\u0449\u0435 4 \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u0445 \u043f\u043e\u0442\u043e\u043a\u0430 \u0431\u0435\u0437 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u044f (Stats Off) \u0434\u043b\u044f \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e\u0439 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u043e\u0440\u0442\u043e\u0432 \u0432\u043e \u0432\u0441\u0435\u0445 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u0445:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d37\/854\/4fc\/d378544fcef45e1213c283cb61f8c370.png\" alt=\"\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043e\u0442\u0447\u0435\u0442\u0430 \u0441 \u0434\u0432\u0443\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u043c \u043f\u043e\u0442\u043e\u043a\u043e\u043c \u0434\u0430\u043d\u043d\u044b\u0445\" title=\"\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043e\u0442\u0447\u0435\u0442\u0430 \u0441 \u0434\u0432\u0443\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u043c \u043f\u043e\u0442\u043e\u043a\u043e\u043c \u0434\u0430\u043d\u043d\u044b\u0445\" width=\"1263\" height=\"776\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d37\/854\/4fc\/d378544fcef45e1213c283cb61f8c370.png\"\/><\/p>\n<div><figcaption>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043e\u0442\u0447\u0435\u0442\u0430 \u0441 \u0434\u0432\u0443\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u043c \u043f\u043e\u0442\u043e\u043a\u043e\u043c \u0434\u0430\u043d\u043d\u044b\u0445<\/figcaption><\/div>\n<\/figure>\n<h3>\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 TRex \u0432\u00a0Stateless mode<\/h3>\n<p>1) \u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043c python-\u0441\u043a\u0440\u0438\u043f\u0442 (ouvp_stl\/new_marker_streams_p0_p1.py):<\/p>\n<pre><code class=\"python\">from trex_stl_lib.api import *   def generate_payload(length):       word = ''       alphabet_size = len(string.ascii_letters)       for i in range(length):           word += string.ascii_letters[(i % alphabet_size)]       return word   class STLS1(object):       def __init__ (self):         self.fsize       =200;       def create_stream_to_1 (self):         size = self.fsize - 4;         #generating 5tuple flows with 802.1p =0 and dscp = be (00, tos = 0), should be dropped         base_pkt =  Ether()\/IP(src=\"172.16.7.1\", dst = \"172.16.12.10\")\/UDP(sport=1025,dport=12)         vm = STLScVmRaw( [ STLVmTupleGen( ip_min = \"172.16.7.1\",                                           ip_max = \"172.16.7.60\",                                           port_min = 1025,                                           port_max = 65535,                                           name = \"tuple\"),                            STLVmWrFlowVar(fv_name=\"tuple.ip\", pkt_offset=\"IP.src\"),                            STLVmFixIpv4(offset = \"IP\"),                            STLVmWrFlowVar(fv_name=\"tuple.port\", pkt_offset=\"UDP.sport\"),                           ],                         )         pkt = STLPktBuilder(pkt=base_pkt\/generate_payload(size-len(base_pkt)), vm=vm)           return STLStream( name='1 stream to',                           packet = pkt,                           mode = STLTXCont( pps = 10000 ),                           flow_stats = STLFlowStats(pg_id = 10)                         )       def create_stream_to_2 (self):         size = self.fsize - 4;         #generating 5tuple flows with 802.1p =0 and dscp = be (00, tos = 0), should be dropped         base_pkt =  Ether()\/IP(src=\"172.16.7.61\", dst = \"172.16.12.20\")\/UDP(sport=1025,dport=12)         vm = STLScVmRaw( [ STLVmTupleGen( ip_min = \"172.16.7.61\",                                           ip_max = \"172.16.7.120\",                                           port_min = 1025,                                           port_max = 65535,                                           name = \"tuple\"),                            STLVmWrFlowVar(fv_name=\"tuple.ip\", pkt_offset=\"IP.src\"),                            STLVmFixIpv4(offset = \"IP\"),                            STLVmWrFlowVar(fv_name=\"tuple.port\", pkt_offset=\"UDP.sport\"),                           ],                         )         pkt = STLPktBuilder(pkt=base_pkt\/generate_payload(size-len(base_pkt)), vm=vm)           return STLStream( name='2 stream to',                           packet = pkt,                           mode = STLTXCont( pps = 10000 ),                           flow_stats = STLFlowStats(pg_id = 20)                         )       def create_stream_to_3 (self):         size = self.fsize - 4;         #generating 5tuple flows with 802.1p =0 and dscp = be (00, tos = 0), should be dropped         base_pkt =  Ether()\/IP(src=\"172.16.7.121\", dst = \"172.16.12.30\")\/UDP(sport=1025,dport=12)         vm = STLScVmRaw( [ STLVmTupleGen( ip_min = \"172.16.7.121\",                                           ip_max = \"172.16.7.180\",                                           port_min = 1025,                                           port_max = 65535,                                           name = \"tuple\"),                            STLVmWrFlowVar(fv_name=\"tuple.ip\", pkt_offset=\"IP.src\"),                            STLVmFixIpv4(offset = \"IP\"),                            STLVmWrFlowVar(fv_name=\"tuple.port\", pkt_offset=\"UDP.sport\"),                           ],                         )         pkt = STLPktBuilder(pkt=base_pkt\/generate_payload(size-len(base_pkt)), vm=vm)           return STLStream( name='3 stream to',                           packet = pkt,                           mode = STLTXCont( pps = 10000 ),                           flow_stats = STLFlowStats(pg_id = 30)                         )       def create_stream_to_4 (self):         size = self.fsize - 4;         #generating 5tuple flows with 802.1p =0 and dscp = be (00, tos = 0), should be dropped         base_pkt =  Ether()\/IP(src=\"172.16.7.181\", dst = \"172.16.12.40\")\/UDP(sport=1025,dport=12)         vm = STLScVmRaw( [ STLVmTupleGen( ip_min = \"172.16.7.181\",                                           ip_max = \"172.16.7.240\",                                           port_min = 1025,                                           port_max = 65535,                                           name = \"tuple\"),                            STLVmWrFlowVar(fv_name=\"tuple.ip\", pkt_offset=\"IP.src\"),                            STLVmFixIpv4(offset = \"IP\"),                            STLVmWrFlowVar(fv_name=\"tuple.port\", pkt_offset=\"UDP.sport\"),                           ],                         )         pkt = STLPktBuilder(pkt=base_pkt\/generate_payload(size-len(base_pkt)), vm=vm)           return STLStream( name='4 stream to',                           packet = pkt,                           mode = STLTXCont( pps = 10000 ),                           flow_stats = STLFlowStats(pg_id = 40)                         )           def get_streams (self, direction = 0, **kwargs):         # create 4 stream         #self.streams = streams         return [           self.create_stream_to_1(),           self.create_stream_to_2(),           self.create_stream_to_3(),           self.create_stream_to_4(),           ]   # dynamic load - used for trex console or simulator def register():     return STLS1()<\/code><\/pre>\n<p>\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0438\u0437\u0443\u0447\u0438\u0442\u044c <a href=\"https:\/\/trex-tgn.cisco.com\/trex\/doc\/\" rel=\"noopener noreferrer nofollow\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e<\/a> TRex \u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \/stl<\/p>\n<p>2) \u041e\u0442\u043a\u0440\u043e\u0435\u043c TRex \u0432 \u0434\u0432\u0443\u0445 \u043e\u043a\u043d\u0430\u0445. \u0412 \u043f\u0435\u0440\u0432\u043e\u043c \u043e\u043a\u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c TRex \u0432\u00a0stateless mode:<\/p>\n<pre><code class=\"bash\">[trexlab@lab-ine-trex-01 v3.00]$ sudo .\/t-rex-64 -i   -Per port stats table       ports |               0 |               1  -----------------------------------------------------------------------------------------    opackets |               0 |               0      obytes |               0 |               0    ipackets |               0 |               0      ibytes |               0 |               0     ierrors |               0 |               0     oerrors |               0 |               0       Tx Bw |       0.00  bps |       0.00  bps   -Global stats enabled  Cpu Utilization : 0.0  %  Platform_factor : 1.0  Total-Tx        :       0.00  bps  Total-Rx        :       0.00  bps  Total-PPS       :       0.00  pps  Total-CPS       :       0.00  cps    Expected-PPS    :       0.00  pps  Expected-CPS    :       0.00  cps  Expected-BPS    :       0.00  bps    Active-flows    :        0  Clients :        0   Socket-util : 0.0000 %  Open-flows      :        0  Servers :        0   Socket :        0 Socket\/Clients :  -nan  drop-rate       :       0.00  bps  current time    : 3.6 sec  test duration   : 0.0 sec<\/code><\/pre>\n<p>3) \u0412\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u043e\u043a\u043d\u0435 \u0437\u0430\u0439\u0434\u0435\u043c \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c TRex:<\/p>\n<pre><code class=\"bash\">[trexlab@lab-ine-trex-01 v3.00]$ sudo .\/trex-console   Using 'python3' as Python interpeter     Connecting to RPC server on localhost:4501                   [SUCCESS]     Connecting to publisher server on localhost:4500             [SUCCESS]     Acquiring ports [0, 1]:                                      [SUCCESS]     Server Info:   Server version:   v3.00 @ STL Server mode:      Stateless Server CPU:       1 x Intel(R) Xeon(R) Gold 6252 CPU @ 2.10GHz Ports count:      2 x 10Gbps @ VMXNET3 Ethernet Controller   -=TRex Console v3.0=-   Type 'help' or '?' for supported actions   trex><\/code><\/pre>\n<p>4) \u0412\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u043e\u043a\u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f\u00a0\u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0440\u0430\u043d\u0435\u0435 \u0441\u043a\u0440\u0438\u043f\u0442:<\/p>\n<pre><code class=\"bash\">trex>start -f ouvp_stl\/new_marker_streams_p0_p1.py --port 0 -d 180<\/code><\/pre>\n<p>-f &lt;file>\u00a0: \u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u043f\u0443\u0442\u044c \u0434\u043e python-\u0441\u043a\u0440\u0438\u043f\u0442\u0430<\/p>\n<p>&#8212;port\u00a0&lt;num> : \u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u043f\u043e\u0440\u0442 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430, \u0431\u0435\u0437 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043b\u044e\u0447\u0430 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u0441\u043e \u0432\u0441\u0435\u0445 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 TRex \u043f\u043e\u0440\u0442\u043e\u0432<\/p>\n<p>-d &lt;num> : \u0417\u0430\u0434\u0430\u0435\u0442 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445 (\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e 3600 \u0441\u0435\u043a)<\/p>\n<p>5) \u0412\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u043e\u043a\u043d\u0435 \u043e\u0442\u043a\u0440\u043e\u0435\u043c \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 TRex:<\/p>\n<pre><code class=\"bash\">trex>tui   Global Statistics   connection   : localhost, Port 4501                       total_tx_L2  : 64.09 Mbps version      : STL @ v3.00                                total_tx_L1  : 70.5 Mbps cpu_util.    : 0.74% @ 1 cores (1 per dual port)          total_rx     : 64.09 Mbps rx_cpu_util. : 0.34% \/ 40.06 Kpps                         total_pps    : 40.06 Kpps async_util.  : 0% \/ 12.73 bps                             drop_rate    : 0 bps total_cps.   : 0 cps                                      queue_full   : 0 pkts   Port Statistics      port    |         0         |         1         |       total -----------+-------------------+-------------------+------------------ owner      |              root |              root | link       |                UP |                UP | state      |      TRANSMITTING |              IDLE | speed      |           10 Gb\/s |           10 Gb\/s | CPU util.  |             0.74% |              0.0% | --         |                   |                   | Tx bps L2  |        64.09 Mbps |             0 bps |        64.09 Mbps Tx bps L1  |         70.5 Mbps |             0 bps |         70.5 Mbps Tx pps     |        40.06 Kpps |             0 pps |        40.06 Kpps Line Util. |            0.71 % |               0 % | ---        |                   |                   | Rx bps     |             0 bps |        64.09 Mbps |        64.09 Mbps Rx pps     |             0 pps |        40.06 Kpps |        40.06 Kpps ----       |                   |                   | opackets   |           1476516 |                 0 |           1476516 ipackets   |                 0 |           1476516 |           1476516 obytes     |         295303200 |                 0 |         295303200 ibytes     |                 0 |         295303200 |         295303200 tx-pkts    |        1.48 Mpkts |            0 pkts |        1.48 Mpkts rx-pkts    |            0 pkts |        1.48 Mpkts |        1.48 Mpkts tx-bytes   |          295.3 MB |               0 B |          295.3 MB rx-bytes   |               0 B |          295.3 MB |          295.3 MB -----      |                   |                   | oerrors    |                 0 |                 0 |                 0 ierrors    |                 0 |                 0 |                 0   status:  \/   Press 'ESC' for navigation panel... status:   tui><\/code><\/pre>\n<p>6) \u0412\u043a\u043b\u044e\u0447\u0438\u043c \u0440\u0435\u0436\u0438\u043c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438 \u043f\u043e\u0442\u043e\u043a\u043e\u0432, \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u0436\u0430\u0432 \u043a\u043b\u0430\u0432\u0438\u0448\u0438\u00a0\u00abEsc\u00bb,\u00a0\u00abS\u00bb \u0438 \u0435\u0449\u0435 \u0440\u0430\u0437\u00a0\u00abEsc\u00bb:<\/p>\n<pre><code class=\"bash\">Global Statistics   connection   : localhost, Port 4501                       total_tx_L2  : 64.17 Mbps version      : STL @ v3.00                                total_tx_L1  : 70.58 Mbps cpu_util.    : 0.83% @ 1 cores (1 per dual port)          total_rx     : 64.18 Mbps rx_cpu_util. : 0.31% \/ 40.11 Kpps                         total_pps    : 40.1 Kpps async_util.  : 0% \/ 8.93 bps                              drop_rate    : 0 bps total_cps.   : 0 cps                                      queue_full   : 0 pkts   Streams Statistics     PG ID    |        10         |        20         |        30         |        40 -----------+-------------------+-------------------+-------------------+------------------ Tx pps     |           10 Kpps |           10 Kpps |           10 Kpps |           10 Kpps Tx bps L2  |           16 Mbps |           16 Mbps |           16 Mbps |           16 Mbps Tx bps L1  |         17.6 Mbps |         17.6 Mbps |         17.6 Mbps |         17.6 Mbps ---        |                   |                   |                   | Rx pps     |           10 Kpps |           10 Kpps |           10 Kpps |           10 Kpps Rx bps     |           16 Mbps |           16 Mbps |           16 Mbps |           16 Mbps ----       |                   |                   |                   | opackets   |           2074074 |           2074074 |           2074074 |           2074074 ipackets   |           2074074 |           2074074 |           2074074 |           2074074 obytes     |         414814800 |         414814800 |         414814800 |         414814800 ibytes     |         414813800 |         414813800 |         414813800 |         414813800 -----      |                   |                   |                   | opackets   |        2.07 Mpkts |        2.07 Mpkts |        2.07 Mpkts |        2.07 Mpkts ipackets   |        2.07 Mpkts |        2.07 Mpkts |        2.07 Mpkts |        2.07 Mpkts obytes     |         414.81 MB |         414.81 MB |         414.81 MB |         414.81 MB ibytes     |         414.81 MB |         414.81 MB |         414.81 MB |         414.81 MB   status:  \/   Press 'ESC' for navigation panel... status:   tui><\/code><\/pre>\n<p>\u041d\u0430\u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0442 \u0440\u0430\u0441\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u0445 \u00abopackets\u00bb \u0438\u00a0\u00abipackets\u00bb \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u043f\u043e\u0442\u043e\u043a\u0435.<\/p>\n<p>\u041e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u043c\u043e\u0436\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u00abstop\u00bb.<\/p>\n<p>\u0412\u044b\u0445\u043e\u0434 \u0438\u0437\u00a0\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0438 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b\u00a0\u00abq\u00bb.<\/p>\n<p>7) \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0438 \u0437\u0430\u043d\u0435\u0441\u0435\u043c \u0432 \u043e\u0442\u0447\u0435\u0442 \u043f\u043e\u0442\u0435\u0440\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u043f\u043e\u0442\u043e\u043a\u0435.<\/p>\n<p>8) \u041f\u0440\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u043c \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f:<\/p>\n<ul>\n<li>\n<p>\u0412 \u043f\u0435\u0440\u0432\u043e\u043c \u043e\u043a\u043d\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c TRex \u0432\u00a0stateless mode;<\/p>\n<\/li>\n<li>\n<p>\u0412\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u043e\u043a\u043d\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u0439\u0442\u0438 \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c TRex \u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u0432\u0441\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f.<\/p>\n<\/li>\n<\/ul>\n<h2>Stateful mode<\/h2>\n<p>\u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u0432\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432\u0441\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438:<\/p>\n<ul>\n<li>\n<p>\u0444\u0430\u0439\u043b, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u0430\u044f \u0441\u0435\u0442\u0435\u0432\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 TRex, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u044d\u0442\u043e \u0444\u0430\u0439\u043b\u00a0\/etc\/trex_cfg.yaml, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043b\u0438 \u0440\u0430\u043d\u0435\u0435;<\/p>\n<\/li>\n<li>\n<p>\u0444\u0430\u0439\u043b, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u043e\u0433\u043e \u0442\u0440\u0430\u0444\u0438\u043a, \u0434\u0430\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f\u0445\u00a0\u00a0\/cap2 \u0438\u00a0\/avl.<\/p>\n<\/li>\n<\/ul>\n<h3>\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 TRex \u0432\u00a0Stateful mode<\/h3>\n<p>1) \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u043f\u0435\u0440\u0432\u044b\u0439\u00a0\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b (\/etc\/trex_cfg.yaml):<\/p>\n<pre><code class=\"bash\">### Config file generated by dpdk_setup_ports.py ###   - version: 2   interfaces: ['13:00.0', '1b:00.0']   port_info:       - ip: 172.16.9.2         default_gw: 172.16.9.1       - ip: 172.16.9.6         default_gw: 172.16.9.5     platform:       master_thread_id: 0       latency_thread_id: 1       dual_if:         - socket: 0           threads: [2,3,4,5,6,7]<\/code><\/pre>\n<p>2) \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0432\u0442\u043e\u0440\u043e\u0439\u00a0\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b (cap2\/fw-int.yaml):<\/p>\n<pre><code class=\"bash\">- duration : 40   generator :           distribution : \"seq\"           clients_start : \"172.16.7.1\"           clients_end   : \"172.16.7.255\"           servers_start : \"172.16.12.1\"           servers_end   : \"172.16.12.255\"           clients_per_gb : 0           min_clients    : 0           dual_port_mask : \"1.0.0.0\"           tcp_aging      : 0           udp_aging      : 0   cap_info :      - name: cap2\/Oracle.pcap        cps : 1.0        ipg : 10000        rtt : 10000        w   : 4      - name: cap2\/Video_Calls.pcap        cps : 11.4        ipg : 10000        rtt : 10000        w   : 4      - name: cap2\/rtp_160k.pcap        cps : 3.6        ipg : 10000        rtt : 10000        w   : 4      - name: cap2\/rtp_250k_rtp_only_1.pcap        cps : 4.0        ipg : 10000        rtt : 10000        w   : 4      - name: cap2\/rtp_250k_rtp_only_2.pcap        cps : 4.0        ipg : 10000        rtt : 10000        w   : 4      - name: cap2\/smtp.pcap        cps : 34.2        ipg : 10000        rtt : 10000        w   : 4      - name: cap2\/Voice_calls_rtp_only.pcap        cps : 66.0        ipg : 10000        rtt : 10000        w   : 4      - name: cap2\/citrix.pcap        cps : 105.0        ipg : 10000        rtt : 10000        w   : 4      - name: cap2\/dns.pcap        cps : 240.0        ipg : 10000        rtt : 10000        w   : 4      - name: cap2\/exchange.pcap        cps : 63.0        ipg : 10000        rtt : 10000        w   : 4      - name: cap2\/http_browsing.pcap        cps : 267.0        ipg : 10000        rtt : 10000        w   : 4      - name: cap2\/http_get.pcap        cps : 34.0        ipg : 10000        rtt : 10000        w   : 4      - name: cap2\/http_post.pcap        cps : 345.0        ipg : 10000        rtt : 10000        w   : 4      - name: cap2\/https.pcap        cps : 111.0        ipg : 10000        rtt : 10000        w   : 4      - name: cap2\/mail_pop.pcap        cps : 34.2        ipg : 10000        rtt : 10000        w   : 4<\/code><\/pre>\n<p>*distribution : Currently, only sequential distribution is supported in IP allocation. This means the IP address is increased by one for each flow;<\/p>\n<p>*clients_per_gb : Not used<\/p>\n<p>*min_clients : Not used<\/p>\n<p>*dual_port_mask : Currently, there is one global IP pool for clients and servers. It serves all templates. All templates will allocate IP from this global pool. Each TRex client\/server &#171;dual-port&#187; (pair of ports, such as port 0 for client, port 1 for server) has its own generator offset, taken from the config file. The offset is called\u00a0dual_port_mask<\/p>\n<p>*tcp_aging : Time in sec to linger the deallocation of TCP flows (in particular return the src_port to the pool). Good for cases when there is a very high socket utilization (>50%) and there is a need to verify that socket source port are not wrapped and reuse. Default value is zero. Better to keep it like that from performance point of view. High value could create performance penalty<\/p>\n<p>*udp_aging : Same as\u00a0tcp_aging for UDP flows<\/p>\n<p>*name : The name of the template pcap file. The pcap file should include only one flow. (Exception: in case of plug-ins)<\/p>\n<p>*cps : Number of connections per second to generate. In the example, 1.0 means 1 connection per secod<\/p>\n<p>*ipg : inter-packet gap in microseconds<\/p>\n<p>*rtt : should be the same as ipg<\/p>\n<p>*w : This indicates to the IP generator how to generate the flows. If w=2, two flows from the same template will be generated in a burst (more for HTTP that has burst of flows)<\/p>\n<p>3) \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0440\u0430\u043d\u0435\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b:<\/p>\n<pre><code class=\"bash\">[trexlab@lab-ine-trex-01 v3.00]$ sudo .\/t-rex-64 --cfg \/etc\/trex_cfg.yaml -f cap2\/fw-int.yaml -d 30 -m 1 --nc<\/code><\/pre>\n<p>&#8212;cfg &lt;file> : Use file as TRex config file instead of the default \/etc\/trex_cfg.yaml<\/p>\n<p>-f &lt;file> : YAML file with traffic template configuration (Will run TRex in &#8216;stateful&#8217; mode)<\/p>\n<p>-d &lt;num> : Duration of the test in sec (default is 3600)<\/p>\n<p>-m &lt;num> : Rate multiplier. Multiply basic rate of templates by this number<\/p>\n<p>&#8212;nc : If set, will not wait for all flows to be closed, before terminating &#8212; see manual for more information<\/p>\n<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/781132\/\"> https:\/\/habr.com\/ru\/articles\/781132\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><\/figure>\n<h2>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 Cisco TRex<\/h2>\n<p>\u041a\u0430\u043a \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 <a href=\"https:\/\/habr.com\/ru\/articles\/510086\/\" rel=\"noopener noreferrer nofollow\">\u0413\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0442\u0440\u0430\u0444\u0438\u043a\u0430 Cisco TRex: \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u043e\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432<\/a>:<\/p>\n<blockquote>\n<p>\u042d\u0442\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430\u0445 Intel \u043d\u0430 \u0431\u0430\u0437\u0435 DPDK, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0440\u0435\u0436\u0438\u043c\u044b \u0441 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0435\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043f\u043e\u0442\u043e\u043a\u0430 \u0438 \u0431\u0435\u0437 (stateful \/ stateless modes). \u0421\u0440\u0430\u0432\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u043c\u044b\u0439.<\/p>\n<p>\u0410\u043d\u0433\u043b\u043e\u044f\u0437\u044b\u0447\u043d\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430\u00a0<a href=\"https:\/\/trex-tgn.cisco.com\/trex\/doc\" rel=\"noopener noreferrer nofollow\">\u043d\u0430 \u0441\u0430\u0439\u0442\u0435<\/a>.<\/p>\n<p>Trex \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u0442\u0438\u043f\u044b \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0438 \u0438\u0445 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0438. \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 MAC \u0438 IP. \u041c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0438 \u0438\u0445 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e, \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u0432 \u0441\u0440\u0435\u0434\u0435 Linux.<\/p>\n<p>\u041e\u0434\u043d\u043e \u0438\u0437 \u0432\u0430\u0436\u043d\u044b\u0445 \u043e\u0442\u043b\u0438\u0447\u0438\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 Trex \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 DPDK, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0431\u043e\u0439\u0442\u0438 \u00ab\u0443\u0437\u043a\u0438\u0435 \u043c\u0435\u0441\u0442\u0430\u00bb \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0441\u0442\u0435\u043a\u0430 Linux. DPDK \u0438\u043b\u0438 Data Plane Development Kit \u2014 \u044d\u0442\u043e \u0446\u0435\u043b\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0438 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u043e\u0432 \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0441\u0442\u0435\u043a Linux \u0438\u0437 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441 \u0441\u0435\u0442\u0435\u0432\u044b\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e.<\/p>\n<p>DPDK \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u043e\u0431\u0449\u0435\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u043a\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432. \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u044d\u0442\u043e\u0439 \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e\u0442\u043f\u0430\u0434\u0430\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0432 \u0434\u043e\u0440\u043e\u0433\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0445 \u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0442\u043e\u0440\u0430\u0445 \u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440\u0430\u0445. \u041e\u0434\u043d\u0430\u043a\u043e DPDK \u043d\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u043e\u0432, \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u0436\u0435\u043b\u0435\u0437\u0430 \u0443\u043a\u0430\u0437\u0430\u043d \u043d\u0430\u00a0<a href=\"http:\/\/core.dpdk.org\/supported\" rel=\"noopener noreferrer nofollow\">\u043d\u0430 \u0441\u0441\u044b\u043b\u043a\u0435<\/a>\u00a0\u2014 \u0442\u0443\u0442 \u0441\u0430\u043c\u0430\u044f \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u043e\u0442\u00a0<a href=\"http:\/\/core.dpdk.org\/supported\/nics\/intel\/\" rel=\"noopener noreferrer nofollow\">Intel<\/a>, \u0442.\u0435. \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0436\u0435\u043b\u0435\u0437\u0430, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 linux-\u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430\u043c\u0438 e1000, ixgbe, i40e, ice, fm10k, ipn3ke, ifc, igc.<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0432\u0430\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u0447\u0442\u043e \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b TRex-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043d\u0430 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044f\u0445 10 \u0413\u0431\u0438\u0442\/\u0441 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c \u043c\u043d\u043e\u0433\u043e\u044f\u0434\u0435\u0440\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u2014 \u043e\u0442 4 \u044f\u0434\u0435\u0440 \u0438 \u0432\u044b\u0448\u0435, \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e CPU \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u0430 Intel c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 (hyper-threading).  <\/p>\n<\/blockquote>\n<h2>\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 TRex \u043a \u0440\u0430\u0431\u043e\u0442\u0435<\/h2>\n<figure class=\"full-width\">\n<div><figcaption>\u041b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0442\u043e\u043f\u043e\u043b\u043e\u0433\u0438\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f TRex<\/figcaption><\/div>\n<\/figure>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td colspan=\"2\">\n<p align=\"center\"><strong>\u0414\u0430\u043d\u043d\u044b\u0435 TRex VM<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\">\n<p align=\"left\">\u041f\u0443\u0442\u044c \u0434\u043e TRex:\u00a0\/opt\/trex\/v3.00\/<\/p>\n<p align=\"left\">TRex Version: 3.00<\/p>\n<p align=\"left\">DPDK version: 22.03.0<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\">\n<p align=\"center\"><strong>\u041f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0435 \u0441\u0435\u0442\u0438 \u0434\u043b\u044f TRex Virtual Router (TRVR)<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0414\u043b\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0439 \u0441\u0435\u0442\u0438 (VLAN_87):<\/p>\n<p align=\"left\">Default gw: 172.16.9.1\/30<\/p>\n<p align=\"left\">TRVR: 172.16.9.2\/30<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0414\u043b\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 (VLAN_88):<\/p>\n<p align=\"left\">Default gw: 172.16.9.5\/30<\/p>\n<p align=\"left\">TRVR: 172.16.9.6\/30<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\">\n<p align=\"center\"><strong>\u042d\u043c\u0443\u043b\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u0441\u0435\u0442\u0438 \u0437\u0430 TRex Virtual Router (TRVR)<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0430\u044f \u0441\u0435\u0442\u044c:<\/p>\n<p align=\"left\">172.16.7.0\/24<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0421\u0435\u0440\u0432\u0435\u0440\u043d\u0430\u044f \u0441\u0435\u0442\u044c:<\/p>\n<p align=\"left\">172.16.12.0\/24<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p><strong>\u0412\u0410\u0416\u041d\u041e \u043f\u0435\u0440\u0435\u0434 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u0440\u0430\u0431\u043e\u0442 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c Secure Boot \u043d\u0430\u00a0TRex VM.<\/strong><\/p>\n<p><strong>\u0422\u0430\u043a\u0436\u0435 \u043f\u0435\u0440\u0435\u0434 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u0440\u0430\u0431\u043e\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u043e\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u044b \u0434\u043b\u044f \u044d\u043c\u0443\u043b\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u0441\u0435\u0442\u0435\u0439 \u0447\u0435\u0440\u0435\u0437 \u0442\u0435\u0441\u0442\u043e\u0432\u0443\u044e \u0437\u043e\u043d\u0443.<\/strong><\/p>\n<p>1) \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c\u0441\u044f \u043a vm \u0438 \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e TRex:<\/p>\n<pre><code class=\"bash\">[trexlab@lab-ine-trex-01 v3.00]$ cd \/opt\/trex\/v3.00\/ [trexlab@lab-ine-trex-01 v3.00]$ ls astf              daemon_server          ouvp_stl              _t-rex-64-debug-o astf_schema.json  doc_process.py         __pycache__           t-rex-64-debug-o astf-sim          dpdk_nic_bind.py       run_functional_tests  _t-rex-64-o astf-sim-utl      dpdk_setup_ports.py    run_regression        t-rex-64-o automation        emu                    so                    trex-cfg avl               exp                    stl                   trex_client_v3.00.tar.gz bird              external_libs          stl-sim               trex-console b.pcap            find_python.sh         test.yaml             trex_daemon_server bp-sim-64         general_daemon_server  _t-rex-64             trex-emu bp-sim-64-debug   generated              t-rex-64              trex_emu cap2              ko                     _t-rex-64-debug       x710_ddp cap222.pcap       master_daemon.py       t-rex-64-debug        y cfg               ndr                    t-rex-64-debug-gdb<\/code><\/pre>\n<p>\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043f\u0430\u043f\u043e\u043a TRex:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"center\"><strong>Location<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>Description<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\/stl<\/p>\n<\/td>\n<td>\n<p align=\"left\">Stateless native (py) profiles<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\/stl\/hlt<\/p>\n<\/td>\n<td>\n<p align=\"left\">Stateless HLT profiles<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\/ko<\/p>\n<\/td>\n<td>\n<p align=\"left\">Kernel modules for DPDK<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\/external_libs<\/p>\n<\/td>\n<td>\n<p align=\"left\">Python external libs used by server\/clients<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\/exp<\/p>\n<\/td>\n<td>\n<p align=\"left\">Golden PCAP file for unit-tests<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\/cfg<\/p>\n<\/td>\n<td>\n<p align=\"left\">Examples of config files<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\/cap2<\/p>\n<\/td>\n<td>\n<p align=\"left\">Stateful profiles<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\/avl<\/p>\n<\/td>\n<td>\n<p align=\"left\">Stateful profiles &#8212; EMIX profile<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\/automation<\/p>\n<\/td>\n<td>\n<p align=\"left\">Python client\/server code for both Stateful and Stateless<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\/automation\/regression<\/p>\n<\/td>\n<td>\n<p align=\"left\">Regression for Stateless and Stateful<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\/automation\/config<\/p>\n<\/td>\n<td>\n<p align=\"left\">Regression setups config files<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\/automation\/trex_control_plane\/interactive\/trex<\/p>\n<\/td>\n<td>\n<p align=\"left\">Stateless lib and Console<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\/automation\/trex_control_plane\/interactive\/trex\/stl<\/p>\n<\/td>\n<td>\n<p align=\"left\">Stateless lib<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\/automation\/trex_control_plane\/interactive\/trex\/examples\/stl<\/p>\n<\/td>\n<td>\n<p align=\"left\">Stateless examples<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\/astf<\/p>\n<\/td>\n<td>\n<p align=\"left\">ASTF native (py) profiles<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\/automation\/trex_control_plane\/interactive\/trex\/examples\/astf<\/p>\n<\/td>\n<td>\n<p align=\"left\">Automation examples<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\/automation\/trex_control_plane\/interactive\/trex\/astf<\/p>\n<\/td>\n<td>\n<p align=\"left\">ASTF lib compiler (convert py to JSON), Interactive lib<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\/automation\/trex_control_plane\/stf<\/p>\n<\/td>\n<td>\n<p align=\"left\">STF automation (used by ASTF mode)<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>2) \u0412\u044b\u0432\u0435\u0434\u0435\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 DPDK:<\/p>\n<pre><code class=\"bash\">[trexlab@lab-ine-trex-01 v3.00]$ sudo .\/dpdk_setup_ports.py -t +----+------+---------+-------------------+-----------------------------+---------+----------+----------+ | ID | NUMA |   PCI   |        MAC        |            Name             | Driver  | Linux IF |  Active  | +====+======+=========+===================+=============================+=========+==========+==========+ | 0  | -1   | 0b:00.0 | 00:50:56:a0:1b:92 | VMXNET3 Ethernet Controller | vmxnet3 | ens192   | *Active* | +----+------+---------+-------------------+-----------------------------+---------+----------+----------+ | 1  | -1   | 13:00.0 | 00:50:56:a0:01:33 | VMXNET3 Ethernet Controller | vmxnet3 | ens224   |          | +----+------+---------+-------------------+-----------------------------+---------+----------+----------+ | 2  | -1   | 1b:00.0 | 00:50:56:a0:55:ac | VMXNET3 Ethernet Controller | vmxnet3 | ens256   |          | +----+------+---------+-------------------+-----------------------------+---------+----------+----------+<\/code><\/pre>\n<p>ens192 &#8212;\u00a0management interface \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a VM \u043f\u043e SSH (\u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u043b\u044c\u0437\u044f)<\/p>\n<p>ens224 \u0438\u00a0ens256 &#8212; \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 DPDK<\/p>\n<p>3) \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443\u00a0\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0434\u0430\u043d\u043d\u044b\u043c TRex VM \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c \u0432\u044b\u0448\u0435:<\/p>\n<pre><code class=\"bash\">[trexlab@lab-ine-trex-01 v3.00]$ sudo .\/dpdk_setup_ports.py -i By default, IP based configuration file will be created. Do you want to use MAC based config? (y\/N)n +----+------+---------+-------------------+-----------------------------+---------+----------+----------+ | ID | NUMA |   PCI   |        MAC        |            Name             | Driver  | Linux IF |  Active  | +====+======+=========+===================+=============================+=========+==========+==========+ | 0  | -1   | 0b:00.0 | 00:50:56:a0:1b:92 | VMXNET3 Ethernet Controller | vmxnet3 | ens192   | *Active* | +----+------+---------+-------------------+-----------------------------+---------+----------+----------+ | 1  | -1   | 13:00.0 | 00:50:56:a0:01:33 | VMXNET3 Ethernet Controller | vmxnet3 | ens224   |          | +----+------+---------+-------------------+-----------------------------+---------+----------+----------+ | 2  | -1   | 1b:00.0 | 00:50:56:a0:55:ac | VMXNET3 Ethernet Controller | vmxnet3 | ens256   |          | +----+------+---------+-------------------+-----------------------------+---------+----------+----------+ Please choose an even number of interfaces from the list above, either by ID, PCI or Linux IF Stateful will use order of interfaces: Client1 Server1 Client2 Server2 etc. for flows. Stateless can be in any order. Enter list of interfaces separated by space (for example: 1 3) : 1 2   For interface 1, assuming loopback to its dual interface 2. Putting IP 1.1.1.1, default gw 2.2.2.2 Change it?(y\/N).y Please enter IP address for interface 1: 172.16.9.2 Please enter default gateway for interface 1: 172.16.9.1 For interface 2, assuming loopback to its dual interface 1. Putting IP 2.2.2.2, default gw 1.1.1.1 Change it?(y\/N).y Please enter IP address for interface 2: 172.16.9.6 Please enter default gateway for interface 2: 172.16.9.5 Print preview of generated config? (Y\/n)y ### Config file generated by dpdk_setup_ports.py ###   - version: 2   interfaces: ['13:00.0', '1b:00.0']   port_info:       - ip: 172.16.9.2         default_gw: 172.16.9.1       - ip: 172.16.9.6         default_gw: 172.16.9.5     platform:       master_thread_id: 0       latency_thread_id: 1       dual_if:         - socket: 0           threads: [2,3,4,5,6,7]     Save the config to file? (Y\/n)y Default filename is \/etc\/trex_cfg.yaml Press ENTER to confirm or enter new file: File \/etc\/trex_cfg.yaml already exist, overwrite? (y\/N)y Saved to \/etc\/trex_cfg.yaml.<\/code><\/pre>\n<p>\u041a\u0430\u043a \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u0432\u044b\u0432\u043e\u0434\u0435, \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 \u0431\u0443\u0434\u0443\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u043f\u043e \u043f\u0443\u0442\u0438\u00a0\u00a0\/etc\/trex_cfg.yaml.<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c TRex \u043a \u0437\u0430\u043f\u0443\u0441\u043a\u0443 \u0432 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0440\u0435\u0436\u0438\u043c\u043e\u0432:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td data-colwidth=\"323\" width=\"323\">\n<p align=\"center\"><strong>Stateless mode\u00a0<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>Stateful mode<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"323\" width=\"323\">\n<p align=\"left\">\u0414\u0430\u043d\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c \u0443\u0434\u043e\u0431\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0440\u0430\u0441\u0447\u0435\u0442\u0430 \u043f\u043e\u0442\u0435\u0440\u044c \u043f\u0440\u0438 L3\/L2 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f\u0445.<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0414\u0430\u043d\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c \u0443\u0434\u043e\u0431\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438   \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438\u00a0Firewall, NAT, DPI, Load Balancer, Network cache devices \u0438   \u0442.\u0434.<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td rowspan=\"2\" data-colwidth=\"323\" width=\"323\">\n<p align=\"left\">&#8212; Large scale\u00a0\u2014 Supports about 10\u201330\u00a0million packets per second (Mpps) per core, scalable with the number of cores<\/p>\n<p align=\"left\">&#8212; Each profile can support multiple streams, scalable to 10K parallel streams<\/p>\n<p align=\"left\">&#8212; Each stream supports:<\/p>\n<p align=\"left\">   &#8212; Packet   template &#8212; ability to build any packet (including malformed) using Scapy   (example: MPLS\/IPv4\/Ipv6\/GRE\/VXLAN\/NSH)<\/p>\n<p align=\"left\">   &#8212; Ability to change any field inside the packet<\/p>\n<p align=\"left\">   &#8212; Ability to change the packet size<\/p>\n<p align=\"left\">   &#8212; Mode &#8212; Continuous\/Burst\/Multi-burst<\/p>\n<p align=\"left\">   &#8212; Rate specification in pps, line rate percentage or L1\/L2 bandwidth<\/p>\n<p align=\"left\">   &#8212;\u00a0Action &#8212; stream can trigger a stream<\/p>\n<p align=\"left\">&#8212; Interactive support &#8212; Fast Console, GUI<\/p>\n<p align=\"left\">&#8212; Statistics per interface or per stream   supported in hardware\/software<\/p>\n<p align=\"left\">&#8212; Latency and Jitter per stream<\/p>\n<p align=\"left\">&#8212; Blazingly fast Python automation API<\/p>\n<p align=\"left\">&#8212; Capture\/Monitor traffic with BPF filters &#8212; no   need for Wireshark<\/p>\n<p align=\"left\">&#8212; Capture network traffic by redirecting the   traffic to Wireshark<\/p>\n<p align=\"left\">&#8212; PCAP file import\/export with huge pcap file   transmission support (e.g. 1TB pcap file) for DPI<\/p>\n<p align=\"left\">&#8212; Multi-user support<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212; Emulate L7 applications, e.g.   HTTP\/HTTPS\/Citrix<\/p>\n<p align=\"left\">&#8212; Multi profile support and ability to group   flows<\/p>\n<p align=\"left\">&#8212; Performance and scale:<\/p>\n<p align=\"left\">   &#8212; High bandwidth &#8212; 200 Gb\/sec<\/p>\n<p align=\"left\">   &#8212; High connection rate &#8212; order of MCPS<\/p>\n<p align=\"left\">   &#8212; Scale to millions of active established flows<\/p>\n<p align=\"left\">&#8212; Benchmark and Stress features\/devices like:<\/p>\n<p align=\"left\">   &#8212; NAT<\/p>\n<p align=\"left\">   &#8212; DPI<\/p>\n<p align=\"left\">   &#8212; Load Balancer<\/p>\n<p align=\"left\">   &#8212; Network<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-363141","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/363141","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=363141"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/363141\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=363141"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=363141"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=363141"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}