| tcpreplay-edit(1) | User Commands | tcpreplay-edit(1) |
نام (NAME)
tcpreplay-edit - بازپخش ترافیک شبکه ذخیرهشده در فایلهای pcap
خلاصه دستور (SYNOPSIS)
tcpreplay-edit [-flags] [-flag [value]] [--option-name[[=| ]value]] <pcap_file(s)> | <pcap_dir(s)>
tcpreplay ابزاری است برای بازپخش ترافیک شبکه از فایلهای ذخیرهشده با tcpdump یا سایر ابزارهایی که فایلهای pcap(3) مینویسند.
توضیحات (DESCRIPTION)
عملکرد اساسی tcpreplay ارسال مجدد تمام بستهها از فایل(های) ورودی با همان سرعتی است که ضبط شدهاند، یا با یک نرخ دادهٔ مشخصشده، تا حداکثر سرعتی که سختافزار توانایی آن را دارد.
بهصورت اختیاری، ترافیک میتواند بین دو رابط شبکه تفکیک شود، در فایلها نوشته شود، فیلتر گردد و به روشهای گوناگون ویرایش شود؛ و بدین ترتیب بستری برای آزمودن فایروالها، NIDS و سایر دستگاههای شبکه فراهم آورد.
برای جزئیات بیشتر، لطفاً راهنمای Tcpreplay را در نشانی زیر مشاهده کنید: http://tcpreplay.appneta.com
گزینهها (OPTIONS)
- -r string, --portmap=string
-
بازنویسی پورتهای TCP/UDP. این گزینه میتواند تا ۹۹۹۹ بار تکرار شود.فهرستی از نگاشتهای پورتِ جداشده با ویرگول را مشخص میکند که شامل جفتشمارههای پورتِ جداشده با دونقطه است. هر جفت پورتِ جداشده با دونقطه، متشکل از پورتی برای تطبیق و به دنبال آن شماره پورت برای بازنویسی است.
مثالها:
--portmap=80:8000 --portmap=8080:80 # 80->8000 and 8080->80 --portmap=8000,8080,88888:80 # 3 different ports become 80 --portmap=8000-8999:80 # ports 8000 to 8999 become 80
- -s number, --seed=number
-
تصادفیسازی آدرسهای مبدأ/مقصد IPv4/v6 با هستهٔ اولیه (seed) دادهشده. این گزینه میتواند تا ۱ بار استفاده شود. این گزینه نباید در ترکیب با هیچیک از گزینههای زیر استفاده شود: fuzz-seed. این گزینه یک عدد صحیح را به عنوان آرگومان خود میپذیرد.باعث میشود آدرسهای مبدأ و مقصد IPv4/v6 بهطور شبهتصادفی تغییر کنند اما همچنان روابط کلاینت/سرور حفظ شود. از آنجا که تصادفیسازی بر اساس seed قطعی (deterministic) است، میتوانید از همان مقدار seed برای بازتولید مجدد ترافیک استفاده کنید.
- -N string, --pnat=string
-
بازنویسی آدرسهای IPv4/v6 با استفاده از pseudo-NAT. این گزینه میتواند تا ۲ بار استفاده شود. این گزینه نباید در ترکیب با هیچیک از گزینههای زیر استفاده شود: srcipmap.مجموعهای از جفتبلوکهای شبکهٔ CIDR جداشده با ویرگول و دونقطه را دریافت میکند. هر جفتبلوک شبکه به ترتیب با آدرسهای IP سنجیده میشود. اگر آدرس IP موجود در بسته با نخستین بلوک شبکه تطبیق یابد، با استفاده از بلوک شبکهٔ دوم به عنوان ماسک برای بیتهای مرتبهبالا (high order bits) بازنویسی میشود.
مثال IPv4:
--pnat=192.168.0.0/16:10.77.0.0/16,172.16.0.0/12:10.1.0.0/24
مثال IPv6:--pnat=[2001:db8::/32]:[dead::/16],[2001:db8::/32]:[::ffff:0:0/96]
- -S string, --srcipmap=string
-
بازنویسی آدرسهای مبدأ IPv4/v6 با استفاده از pseudo-NAT. این گزینه میتواند تا ۱ بار استفاده شود. این گزینه نباید در ترکیب با هیچیک از گزینههای زیر استفاده شود: pnat.دقیقاً مانند گزینهٔ --pnat عمل میکند، اما تنها بر آدرسهای IP مبدأ در هدر IPv4/v6 تأثیر میگذارد.
- -D string, --dstipmap=string
-
بازنویسی آدرسهای مقصد IPv4/v6 با استفاده از pseudo-NAT. این گزینه میتواند تا ۱ بار استفاده شود. این گزینه نباید در ترکیب با هیچیک از گزینههای زیر استفاده شود: pnat.دقیقاً مانند گزینهٔ --pnat عمل میکند، اما تنها بر آدرسهای IP مقصد در هدر IPv4/v6 تأثیر میگذارد.
- -e string, --endpoints=string
-
بازنویسی آدرسهای IP به گونهای که بین دو نقطهٔ پایانی (endpoints) قرار گیرند. این گزینه میتواند تا ۱ بار استفاده شود. این گزینه باید در ترکیب با گزینههای زیر استفاده شود: cachefile.یک جفت آدرس IPv4/v6 جداشده با دونقطه را دریافت میکند که برای بازنویسی تمام ترافیک استفاده خواهد شد تا چنین به نظر برسد که ترافیک بین این دو آدرس IP جریان دارد.
مثال IPv4:
--endpoints=172.16.0.1:172.16.0.2
مثال IPv6:--endpoints=[2001:db8::dead:beef]:[::ffff:0:0:ac:f:0:2]
- --tcp-sequence=number
-
تغییر شمارههای توالی TCP (و ACK) با هستهٔ اولیه (seed) دادهشده. این گزینه یک عدد صحیح را به عنوان آرگومان خود میپذیرد. مقدار number محدود است به اینکه:
بزرگتر یا مساوی ۱ باشد
مقدار پیشفرض number برای این گزینه عبارت است از:
0تمام شمارههای توالی TCP و شمارههای تأیید دریافت (ACK) مرتبط با آنها را تغییر میدهد. آنها به یک میزان تصادفی بر اساس seed ارائهشده جابهجا (shift) خواهند شد.
- -b, --skipbroadcast
-
صرفنظر از بازنویسی آدرسهای همگانی/چندپخشی (broadcast/multicast) در IPv4/v6.بهطور پیشفرض گزینههای --seed، --pnat و --endpoints آدرسهای همگانی و چندپخشی IPv4/v6 و آدرسهای MAC را بازنویسی میکنند. فعالسازی این پرچم مانع از بازنویسی آدرسهای همگانی/چندپخشی IPv4/v6 و MAC خواهد شد.
- -C, --fixcsum
-
محاسبهٔ مجدد اجباری چکسامهای هدر IPv4/TCP/UDP.باعث میشود چکسام هر بستهٔ IPv4/v6 مجدداً محاسبه و اصلاح شود. این قابلیت به صورت خودکار برای بستههایی که با --seed، --pnat، --endpoints یا --fixlen تغییر یافتهاند فعال میشود.
- --fixhdrlen
-
تغییر طول هدر IP/TCP برای تطبیق با طول بسته.بهطور پیشفرض، tcpreplay بستهها را با طول اصلی بسته ارسال میکند، با این حال ممکن است بخواهید طول بسته به حداقل اندازهٔ بسته اصلاح شود. با استفاده از این گزینه، tcpreplay طول بسته را بازنویسی (اصلاح) میکند و در صورت تغییر طول بسته، چکسامها را دوباره محاسبه مینماید. هشدار: هنگام تعیین این گزینه ممکن است تغییرات ناخواستهای در بستهها رخ دهد.
- -m number, --mtu=number
-
لغو طول پیشفرض MTU (۱۵۰۰ بایت). این گزینه میتواند تا ۱ بار استفاده شود. این گزینه یک عدد صحیح را به عنوان آرگومان خود میپذیرد. مقدار number محدود است به اینکه:
در بازهٔ ۱ تا MAX_SNAPLEN
بازنویسی اندازه پیشفرض ۱۵۰۰ بایتی MTU برای تعیین بیشینه طول فاصلهگذاری (padding) با (--fixlen=pad) یا هنگام کوتاهسازی (--mtu-trunc).
- --mtu-trunc
-
کوتاهسازی بستههای بزرگتر از MTU مشخصشده. این گزینه میتواند حداکثر ۱ بار مشخص شود.مشابه --fixlen، این گزینه دادههای موجود در بستهها را از لایه ۳ به بالا به گونهای کوتاه میکند که بزرگتر از MTU نباشند.
- -E, --efcs
-
حذف چکسامهای اترنت (FCS) از انتهای فریمها.توجه داشته باشید که این گزینه بسیار خطرناک است! ما در واقع بررسی نمیکنیم که آیا FCS واقعاً در فریم وجود دارد یا خیر، بلکه صرفاً ۴ بایت انتهایی را کورکورانه حذف میکنیم. بنابراین، تنها در صورتی باید از این گزینه استفاده کنید که مطمئن باشید سیستمعامل شما هنگام خواندن بستههای خام (raw packets)، مقدار FCS را ارائه میدهد.
- --ttl=string
-
تغییر دادن مقدار TTL/Hop Limit در IPv4/v6.امکان تغییر دادن TTL/Hop Limit تمام بستههای IPv4/v6 را فراهم میکند. برای مقداردهی صریح (ثابت) یک عدد تعیین کنید، یا برای افزایش و کاهش به میزان مشخص از مقدار-/+ استفاده کنید (محدود به ۱-۲۵۵).
مثالها:
--ttl=10 --ttl=+7 --ttl=-64
- --tos=number
-
تنظیم بایت TOS/DiffServ/ECN در IPv4. این گزینه میتواند حداکثر ۱ بار مشخص شود. این گزینه یک عدد صحیح را به عنوان آرگومان خود دریافت میکند. مقدار number باید محدود به موارد زیر باشد:
در بازهٔ ۰ تا ۲۵۵
امکان بازنویسی مقدار TOS (که با نام DiffServ/ECN نیز شناخته میشود) را در IPv4 فراهم میکند.
- --tclass=number
-
تنظیم بایت Traffic Class در IPv6. این گزینه میتواند حداکثر ۱ بار مشخص شود. این گزینه یک عدد صحیح را به عنوان آرگومان خود دریافت میکند. مقدار number باید محدود به موارد زیر باشد:
در بازهٔ ۰ تا ۲۵۵
امکان بازنویسی فیلد Traffic Class در IPv6 را فراهم میکند.
- --flowlabel=number
-
تنظیم Flow Label در IPv6. این گزینه میتواند حداکثر ۱ بار مشخص شود. این گزینه یک عدد صحیح را به عنوان آرگومان خود دریافت میکند. مقدار number باید محدود به موارد زیر باشد:
در بازهٔ ۰ تا ۱۰۴۸۵۷۵
امکان بازنویسی فیلد ۲۰ بیتی Flow Label در IPv6 را فراهم میکند. بر بستههای IPv4 هیچ تأثیری ندارد.
- -F string, --fixlen=string
-
فاصلهگذاری (pad) یا کوتاهسازی دادههای بسته برای تطابق با طول سرایند. این گزینه میتواند حداکثر ۱ بار مشخص شود.اگر مقدار snaplen از بسته کوچکتر باشد، بستهها ممکن است در حین ضبط کوتاه (ترانکیت) شوند. این گزینه به شما امکان میدهد تا با افزودن بایتهای پرکننده (pad)، بسته را به اندازهای که در سرایند IPv4/v6 ذخیره شده بازگردانید، یا فیلد طول کل در سرایند IP را برای بازتاب طول واقعی بسته بازنویسی کنید.
pad به بستههای کوتاه شده بایتهای اضافی افزوده میشود تا طول بسته با مقدار total length در IPv4 مطابقت پیدا کند
trunc فیلد total length در IPv4 بستههای کوتاه شده، برای مطابقت با طول واقعی بسته بازنویسی خواهد شد
del حذف بسته
- --fuzz-seed=number
-
فازینگ ۱ بسته از هر X بسته. ویرایش بایتها، طول، یا شبیهسازی افتادن بسته (packet drop). این گزینه یک عدد صحیح را به عنوان آرگومان خود دریافت میکند. مقدار number باید محدود به موارد زیر باشد:
بزرگتر یا مساوی با ۰
مقدار پیشفرض number برای این گزینه عبارت است از:
0این فازینگ برای آزمودن پروتکلهای لایه ۷ از قبیل پروتکلهای voip طراحی شده است. این قابلیت به طور تصادفی ۱ بسته از هر X بسته (که X = --fuzz-factor است) را دستکاری میکند تا پروتکلهای دارای وضعیت (stateful) بتوانند بخشهای بیشتری از کُد خود را پوشش دهند. اقدامات فازینگ تصادفی بر ابتدا و انتهای دادهها تمرکز دارد، زیرا پروتکلهای کاربردی اغلب تصمیمات خود را بر اساس این بخشها اتخاذ میکنند.
فهرست اقدامات احتمالی فازینگ:
* دور انداختن بسته (drop packet)
* کاهش اندازهٔ بسته
* ویرایش بایتهای بسته:
* همهٔ بایتها در دنیای واقعی احتمال وقوع یکسانی ندارند.
جایگزینی با 0x00، 0xFF یا یک بایت تصادفی با شانس برابر.
* همهٔ بایتها در یک بسته اهمیت یکسانی ندارند.
جایگزینی ابتدا، انتها یا میانهٔ بسته با شانس برابر.
* انجام ندادن هیچ کاری (۷ بسته از ۸ بسته) - --fuzz-factor=number
-
تنظیم نسبت فازینگ ۱ در هر X بسته (پیشفرض ۱ در ۸ بسته). این گزینه باید در ترکیب با گزینهٔ زیر استفاده شود: fuzz-seed. این گزینه یک عدد صحیح را به عنوان آرگومان خود دریافت میکند. مقدار number باید محدود به موارد زیر باشد:
بزرگتر یا مساوی با ۱
مقدار پیشفرض number برای این گزینه عبارت است از:
8نسبت را برای گزینهٔ --fuzz-seed تنظیم میکند. این مقدار به صورت پیشفرض ۸ است، به این معنی که ۱ بسته از هر ۸ بسته توسط فازینگ دستکاری میشود. توجه داشته باشید که این نسبت بر مبنای عدد تصادفی تولیدشده از دانهٔ فاز (fuzz seed) ارائهشده است. بنابراین به طور پیشفرض نمیتوانید انتظار داشته باشید که دقیقاً هر بستهٔ هشتم دستکاری شود.
- --skipl2broadcast
-
صرفنظر از بازنویسی آدرسهای لایه ۲ همهپخشی/چندپخشی (broadcast/multicast).به طور پیشفرض، ویرایش آدرسهای لایه ۲ آدرسهای MAC همهپخشی (broadcast) و چندپخشی (multicast) را بازنویسی میکند. فعال کردن این پرچم، مانع از بازنویسی آدرسهای MAC مربوط به broadcast/multicast میشود.
- --dlt=string
-
بازنویسی کپسولهسازی DLT در خروجی. این گزینه میتواند حداکثر ۱ بار مشخص شود.به صورت پیشفرض، هیچ تبدیلی در DLT (نوع پیوند داده یا data link type) صورت نخواهد گرفت. برای تغییر نوع DLT فایل pcap خروجی، یکی از مقادیر زیر را انتخاب کنید:
enet اترنت معروف به DLT_EN10MB.sp 1 hdlc Cisco HDLC یا همان DLT_C_HDLC
jnpr_eth Juniper Ethernet DLT_C_JNPR_ETHER
pppserial PPP Serial یا همان DLT_PPP_SERIAL
user هدر Layer 2 و نوع DLT مشخصشده توسط کاربر
- --enet-dmac=string
-
بازنویسی نشانیهای MAC مقصد اترنت. این گزینه میتواند حداکثر ۱ بار مشخص شود.یک جفت نشانی MAC اترنت جداشده با کاما دریافت میکند که جایگزین نشانی MAC مقصد بستههای خروجی خواهد شد. اولین نشانی MAC برای ترافیک سرور به کلاینت استفاده میشود و نشانی دوم که اختیاری است برای ترافیک کلاینت به سرور به کار خواهد رفت.
مثال:
--enet-dmac=00:12:13:14:15:16,00:22:33:44:55:66
- --enet-smac=string
-
بازنویسی نشانیهای MAC مبدأ اترنت. این گزینه میتواند حداکثر ۱ بار مشخص شود.یک جفت نشانی MAC اترنت جداشده با کاما دریافت میکند که جایگزین نشانی MAC مبدأ بستههای خروجی خواهد شد. اولین نشانی MAC برای ترافیک سرور به کلاینت استفاده میشود و نشانی دوم که اختیاری است برای ترافیک کلاینت به سرور به کار خواهد رفت.
مثال:
--enet-smac=00:12:13:14:15:16,00:22:33:44:55:66
- --enet-subsmac=string
-
جایگزینی نشانیهای MAC. این گزینه میتواند تا ۹۹۹۹ بار مشخص شود.به شما امکان میدهد نشانیهای MAC اترنت بستهها را بازنویسی کنید. این گزینه یک جفت نشانی MAC جداشده با کاما دریافت کرده و تمام رخدادهای نشانی MAC اول را با مقدار نشانی MAC دوم بازنویسی میکند. مثال:
--enet-subsmac=00:12:13:14:15:16,00:22:33:44:55:66
- --enet-mac-seed=number
-
تصادفیسازی نشانیهای MAC. این گزینه میتواند حداکثر ۱ بار مشخص شود. این گزینه نباید در ترکیب با هیچیک از گزینههای زیر استفاده شود: enet-smac, enet-dmac, enet-subsmac. این گزینه یک عدد صحیح را به عنوان آرگومان دریافت میکند.به شما امکان میدهد نشانیهای MAC اترنت بستهها را تصادفیسازی کنید، شبیه به کاری که گزینهٔ --seed برای نشانیهای IPv4/IPv6 انجام میدهد.
- --enet-mac-seed-keep-bytes=number
-
تصادفیسازی نشانیهای MAC. این گزینه میتواند حداکثر ۱ بار مشخص شود. این گزینه باید در ترکیب با گزینههای زیر استفاده شود: enet-mac-seed. این گزینه یک عدد صحیح را به عنوان آرگومان دریافت میکند. مقدار number محدود است به:
در بازهٔ 1 تا 6
دستنخورده نگه داشتن برخی بایتها هنگام استفاده از گزینهٔ --enet-mac-seed.
- --enet-vlan=string
-
تعیین حالت برچسب VLAN اترنت 802.1q. این گزینه میتواند حداکثر ۱ بار مشخص شود.به شما امکان میدهد فریمهای اترنت را برای افزودن یک هدر 802.1q به هدرهای استاندارد اترنت 802.3 بازنویسی کرده یا اطلاعات برچسب VLAN مربوط به 802.1q را حذف کنید.
add یک هدر 802.1q VLAN به هدر اترنت 802.3 موجود اضافه میکند. اگر از پیش یک هدر VLAN وجود داشته باشد، هدر VLAN جدید در خارج از هدر موجود اضافه میشود.
توجه داشته باشید که مجاز خواهید بود این گزینه را چندین بار اجرا کنید تا بیش از ۲ هدر VLAN ایجاد نمایید، با این حال آن بستهها معتبر خواهند بود. در بیشترین حالت باید ۲ برچسب 802.1q VLAN، یا یک برچسب بیرونی 802.1ad و یک برچسب درونی 802.1q VLAN داشته باشید.
del هدر 802.1q VLAN موجود را به صورت یک هدر اترنت 802.3 بازنویسی میکند
- --enet-vlan-tag=number
-
تعیین مقدار جدید برچسب VLAN اترنت 802.1q. این گزینه میتواند حداکثر ۱ بار مشخص شود. این گزینه باید در ترکیب با گزینههای زیر استفاده شود: enet-vlan. این گزینه یک عدد صحیح را به عنوان آرگومان دریافت میکند. مقدار number محدود است به:
در بازهٔ 0 تا 4095
- --enet-vlan-cfi=number
-
تعیین مقدار CFI مربوط به 802.1q VLAN اترنت. این گزینه میتواند حداکثر ۱ بار مشخص شود. این گزینه باید در ترکیب با گزینههای زیر استفاده شود: enet-vlan. این گزینه یک عدد صحیح را به عنوان آرگومان دریافت میکند. مقدار number محدود است به:
در بازهٔ 0 تا 1
- --enet-vlan-pri=number
-
تعیین اولویت 802.1q VLAN اترنت. این گزینه میتواند حداکثر ۱ بار مشخص شود. این گزینه باید در ترکیب با گزینههای زیر استفاده شود: enet-vlan. این گزینه یک عدد صحیح را به عنوان آرگومان دریافت میکند. مقدار number محدود است به:
در بازهٔ 0 تا 7
- --enet-vlan-proto=string
-
تعیین پروتکل برچسب VLAN شامل 802.1q یا 802.1ad. این گزینه میتواند حداکثر ۱ بار مشخص شود.به شما امکان میدهد پروتکل برچسبهای VLAN اضافهشده را تعیین کنید.
802.1q مشخص میکند که هدرهای 802.1q VLAN باید اضافه شوند. این مقدار پیشفرض است.
802.1ad مشخص میکند که هدرهای 802.1ad Q-in-Q VLAN باید اضافه شوند. برای ایجاد بستههای معتبر، بستههای ورودی باید از پیش دارای هدرهای 802.1q VLAN باشند.
- --hdlc-control=number
-
تعیین مقدار کنترل HDLC. این گزینه میتواند حداکثر ۱ بار مشخص شود. این گزینه یک عدد صحیح را به عنوان آرگومان دریافت میکند.هدر Cisco HDLC یک فیلد ۱ بایتی «control» دارد. ظاهراً این مقدار همیشه باید 0 باشد، اما میتوانید از هر مقدار ۱ بایتی دیگری نیز استفاده کنید.
- --hdlc-address=number
-
تعیین نشانی HDLC. این گزینه میتواند حداکثر ۱ بار مشخص شود. این گزینه یک عدد صحیح را به عنوان آرگومان دریافت میکند..sp هدر Cisco HDLC یک فیلد «address» ۱ بایتی دارد که دارای دو مقدار معتبر است:0x0F تکپخشی (Unicast)
0xBF پخش همگانی (Broadcast)
با این حال میتوانید هر مقدار تکبایتی دلخواهی را مشخص کنید. - --user-dlt=number
-
تنظیم نوع DLT فایل خروجی. این گزینه میتواند حداکثر ۱ بار مشخص شود. این گزینه یک عدد صحیح را به عنوان آرگومان میپذیرد.مقدار DLT فایل pcap خروجی را تنظیم میکند.
- --user-dlink=string
-
بازنویسی لایه پیوند داده (Data-Link) با دادههای مشخصشده توسط کاربر. این گزینه میتواند حداکثر ۲ بار مشخص شود.مجموعهای از مقادیر هگزادسیمال جداشده با کاما را ارائه دهید که برای بازنویسی یا ایجاد هدر لایه ۲ بستهها استفاده خواهد شد. نخستین نمونه از این آرگومان، ترافیک سرور و کلاینت را بازنویسی میکند، اما اگر این آرگومان برای بار دوم مشخص شود، برای ترافیک کلاینت استفاده خواهد شد.
مثال:
--user-dlink=01,02,03,04,05,06,00,1A,2B,3C,4D,5E,6F,08,00
- -d number, --dbug=number
-
فعالسازی خروجی اشکالزدایی. این گزینه میتواند حداکثر ۱ بار مشخص شود. این گزینه یک عدد صحیح را به عنوان آرگومان میپذیرد. مقدار number محدود است به:
در بازه 0 تا 5
مقدار پیشفرض number برای این گزینه برابر است با:
0در صورت پیکربندی با --enable-debug، میتوانید سطح پرگویی (verbosity) را برای خروجی اشکالزدایی تعیین کنید. اعداد بزرگتر پرگویی را افزایش میدهند.
- -q, --quiet
-
حالت بیصدا.در پایان اجرا هیچ چیزی به جز آمارها چاپ نمیشود.
- -T string, --timer=string
-
انتخاب حالت زمانبندی بستهها: select، ioport، gtod، nano. این گزینه میتواند حداکثر ۱ بار مشخص شود. مقدار پیشفرض string برای این گزینه برابر است با:
gtodبه شما امکان میدهد روش زمانبندی بستهها را انتخاب کنید:
nano - استفاده از API تابع nanosleep()
select - استفاده از API تابع select()
ioport - نوشتن روی درگاه i386 IO Port 0x80
gtod [پیشفرض] - استفاده از حلقه gettimeofday()
- --maxsleep=number
-
مکث حداکثر به میزان X میلیثانیه بین بستهها. این گزینه یک عدد صحیح را به عنوان آرگومان میپذیرد. مقدار پیشفرض number برای این گزینه برابر است با:
0محدودیتی برای حداکثر میلیثانیههایی که tcpreplay بین بستهها مکث (sleep) میکند تعیین میکند. این کار به طور مؤثری از تأخیرهای طولانی بین بستهها بدون اثرگذاری بر اکثریت بستهها جلوگیری میکند. پیشفرض غیرفعال است.
- -v, --verbose
-
چاپ بستههای رمزگشاییشده از طریق tcpdump در STDOUT. این گزینه میتواند حداکثر ۱ بار مشخص شود. - -A string, --decode=string
-
آرگومانهای ارسالی به رمزگشای tcpdump. این گزینه میتواند حداکثر ۱ بار مشخص شود. این گزینه باید همراه با گزینه زیر استفاده شود: verbose.هنگام فعالسازی حالت پرگو (-v)، میتوانید یک یا چند آرگومان اضافی نیز برای ارسال به tcpdump جهت تغییر نحوه رمزگشایی بستهها مشخص کنید. به طور پیشفرض، گزینههای -n و -l استفاده میشوند. حتماً آرگومانها را به این صورت در نقلقول قرار دهید: -A "-axxx" تا توسط tcpreplay تفسیر نشوند. لطفاً برای مشاهده فهرست کامل گزینهها، به صفحه راهنمای tcpdump(1) مراجعه کنید.
- -K, --preload-pcap
-
پیشبارگذاری بستهها در RAM قبل از ارسال.این گزینه pcap(های) مشخصشده را پیش از شروع ارسال در حافظه RAM بارگذاری میکند تا کارایی بازپخش را بهبود بخشد، اگرچه در زمان راهاندازی با افت کارایی همراه است. پیشبارگذاری میتواند با یا بدون --loop استفاده شود. این گزینه همچنین جمعآوری آمارهای جریان (flow) را در هر تکرار متوقف میکند که میتواند مصرف حافظه را به طور چشمگیری کاهش دهد. آمارهای جریان بر اساس گزینههای دادهشده و آمارهای جمعآوریشده از تکرار نخست حلقه پیشبینی میشوند.
- -c string, --cachefile=string
-
تفکیک ترافیک از طریق فایل حافظه موقت (cache) tcpprep. این گزینه میتواند حداکثر ۱ بار مشخص شود. این گزینه باید همراه با گزینه زیر استفاده شود: intf2. این گزینه نباید با هیچیک از گزینههای زیر استفاده شود: dualfile.اگر فایل pcap دارید و میخواهید از آن برای ارسال ترافیک دوطرفه از میان یک دستگاه (دیوار آتش، روتر، IDS و غیره) استفاده کنید، میتوانید با استفاده از tcpprep یک فایل حافظه موقت ایجاد کنید تا tcpreplay از آن برای تفکیک ترافیک بین دو رابط شبکه استفاده کند.
- -2, --dualfile
-
بازپخش همزمان دو فایل ضبطشده از یک Network Tap. این گزینه میتواند حداکثر ۱ بار مشخص شود. این گزینه باید همراه با گزینه زیر استفاده شود: intf2. این گزینه نباید با هیچیک از گزینههای زیر استفاده شود: cachefile.اگر ترافیک شبکه را با استفاده از یک Network Tap ثبت کرده باشید، ممکن است دو فایل pcap داشته باشید—یکی برای هر جهت. این گزینه این دو فایل را به طور همزمان بازپخش میکند، هر کدام روی یک رابط شبکه، و آنها را بر اساس برچسبهای زمانی (timestamp) موجود در هر کدام ادغام میکند.
- -i string, --intf1=string
-
رابط خروجی ترافیک کلاینت به سرور/RX/اصلی (primary). این گزینه میتواند حداکثر ۱ بار مشخص شود. این گزینه عضوی از دسته گزینههای intf1 است.رابط شبکه الزامی که برای ارسال تمام ترافیک یا ترافیکی که از طریق tcpprep به عنوان «primary» علامتگذاری شده است استفاده میشود. ترافیک اصلی معمولاً کلاینتبهسرور یا ورودی (RX) روی رابطهای مجازی khial است.
- -I string, --intf2=string
-
رابط خروجی ترافیک سرور به کلاینت/TX/ثانویه (secondary). این گزینه میتواند حداکثر ۱ بار مشخص شود.رابط شبکه اختیاری که برای ارسال ترافیکی که از طریق tcpprep به عنوان «secondary» علامتگذاری شده استفاده میشود. ترافیک ثانویه معمولاً سروربهکلاینت یا خروجی (TX) روی رابطهای مجازی khial است. معمولاً استفاده از این گزینه تنها به همراه --cachefile منطقی است.
- -w string, --write=string
-
فایل pcap برای دریافت خروجیهای ترافیک. این گزینه میتواند حداکثر ۱ بار مشخص شود. این گزینه عضوی از دسته گزینههای intf1 است. این گزینه نباید با هیچیک از گزینههای زیر استفاده شود: intf2.نام اختیاری فایل pcap مورد استفاده برای دریافت ترافیک.
- --include=string
-
فقط ارسال شماره بستههای انتخابشده. این گزینه میتواند حداکثر ۱ بار مشخص شود. این گزینه نباید با هیچیک از گزینههای زیر استفاده شود: exclude..sp نادیده گرفتن پیشفرضِ پردازش تمام بستههای ذخیرهشده در فایل ضبط و تنها ارسال بستههایی که بخشی از فهرست ارائهشده از شماره بستهها هستند.-x P:1-5,9,15,72-
بستههای 1 تا 5، بسته نهم و پانزدهم، و بستههای 72 تا انتهای فایل را نادیده خواهد گرفت - --exclude=string
-
ارسال تمام بستهها به جز شماره بستههای انتخابشده. این گزینه حداکثر میتواند ۱ بار به کار رود. این گزینه نباید در ترکیب با هیچیک از گزینههای زیر به کار رود: include.نادیده گرفتن پیشفرضِ پردازش تمام بستههای ذخیرهشده در فایل ضبط و تنها ارسال بستههایی که بخشی از فهرست ارائهشده از شماره بستهها نیستند.
-x P:1-5,9,15,72-
بستههای 1 تا 5، بسته نهم و پانزدهم، و بستههای 72 تا انتهای فایل را نادیده خواهد گرفت - --listnics
-
فهرست کردن رابطهای شبکه دردسترس و خروج. - -l number, --loop=number
-
تکرار فایل ضبط به تعداد X بار. این گزینه حداکثر میتواند ۱ بار به کار رود. این گزینه یک عدد صحیح را به عنوان آرگومان خود میپذیرد. مقدار number محدود است به:
بزرگتر یا مساوی با 0
مقدار پیشفرض number برای این گزینه عبارت است از:
1 - --loopdelay-ms=number
-
تاخیر میان تکرارها به میلیثانیه. این گزینه باید در ترکیب با گزینههای زیر مشخص شود: loop. این گزینه نباید در ترکیب با هیچیک از گزینههای زیر به کار رود: loopdelay-ns. این گزینه یک عدد صحیح را به عنوان آرگومان خود میپذیرد. مقدار number محدود است به:
بزرگتر یا مساوی با 0
مقدار پیشفرض number برای این گزینه عبارت است از:
0 - --loopdelay-ns=number
-
تاخیر میان تکرارها به نانوثانیه. این گزینه باید در ترکیب با گزینههای زیر مشخص شود: loop. این گزینه نباید در ترکیب با هیچیک از گزینههای زیر به کار رود: loopdelay-ms. این گزینه یک عدد صحیح را به عنوان آرگومان خود میپذیرد. مقدار number محدود است به:
بزرگتر یا مساوی با 0
مقدار پیشفرض number برای این گزینه عبارت است از:
0بهطور پیشفرض، tcpreplay از تاخیر تکرار با دقت میکروثانیه (loopdelay-ms) استفاده خواهد کرد. برای استفاده از تاخیر تکرار با دقت نانوثانیه باید از حالت زمانبندی بسته nano استفاده کنید.
- --pktlen
-
لغو snaplen و استفاده از طول واقعی بسته. این گزینه حداکثر میتواند ۱ بار به کار رود.بهطور پیشفرض، tcpreplay بستهها را بر اساس اندازه «snaplen» ذخیرهشده در فایل pcap ارسال میکند که معمولاً کار درستی است. با این حال، گاهی ابزارها بایتهای بیشتری نسبت به آنچه مشخص شده ذخیره میکنند. با تعیین این گزینه، tcpreplay فیلد snaplen را نادیده گرفته و در عوض تلاش میکند بستهها را بر اساس طول اصلی بسته ارسال کند. اگر این گزینه را مشخص کنید، ممکن است اتفاقات ناخوشایندی رخ دهد.
- -L number, --limit=number
-
محدود کردن تعداد بستهها برای ارسال. این گزینه حداکثر میتواند ۱ بار به کار رود. این گزینه یک عدد صحیح را به عنوان آرگومان خود میپذیرد. مقدار number محدود است به:
بزرگتر یا مساوی با 1
مقدار پیشفرض number برای این گزینه عبارت است از:
-1بهطور پیشفرض، tcpreplay تمام بستهها را ارسال خواهد کرد. در غیر این صورت، میتوانید حداکثر تعداد بستهها برای ارسال را مشخص کنید.
- --duration=number
-
محدود کردن تعداد ثانیهها برای ارسال. این گزینه حداکثر میتواند ۱ بار به کار رود. این گزینه یک عدد صحیح را به عنوان آرگومان خود میپذیرد. مقدار number محدود است به:
بزرگتر یا مساوی با 1
مقدار پیشفرض number برای این گزینه عبارت است از:
-1بهطور پیشفرض، tcpreplay تمام بستهها را ارسال خواهد کرد. در غیر این صورت، میتوانید حداکثر مدت زمان بر حسب ثانیه را برای ارسال مشخص کنید.
- -x string, --multiplier=string
-
تغییر سرعت بازپخش با یک ضریب مشخص. این گزینه حداکثر میتواند ۱ بار به کار رود. این گزینه نباید در ترکیب با هیچیک از گزینههای زیر به کار رود: pps, mbps, oneatatime, topspeed.مقداری را برای تغییر سرعت بازپخش بسته مشخص کنید. مثالها:
2.0 ترافیک را با دو برابر سرعت ضبط بازپخش خواهد کرد 0.7 ترافیک را با 70% سرعت ضبط بازپخش خواهد کرد
- -p string, --pps=string
-
بازپخش بستهها با نرخ بسته بر ثانیه مشخص. این گزینه حداکثر میتواند ۱ بار به کار رود. این گزینه نباید در ترکیب با هیچیک از گزینههای زیر به کار رود: multiplier, mbps, oneatatime, topspeed.مقداری را برای تنظیم بازپخش بسته روی نرخ مشخصی از بسته بر ثانیه تعیین کنید. مثالها:
200 ترافیک را با 200 بسته در ثانیه بازپخش خواهد کرد 0.25 ترافیک را با 15 بسته در دقیقه بازپخش خواهد کرد
- -M string, --mbps=string
-
بازپخش بستهها با نرخ مگابیت بر ثانیه (Mbps) مشخص. این گزینه حداکثر میتواند ۱ بار به کار رود. این گزینه نباید در ترکیب با هیچیک از گزینههای زیر به کار رود: multiplier, pps, oneatatime, topspeed..sp مقدار ممیز شناوری را برای نرخ مگابیتبرثانیه (Mbps) که tcpreplay باید بستهها را با آن ارسال کند، مشخص میکند. - -t, --topspeed
-
بازپخش بستهها با حداکثر سرعت ممکن. این گزینه نباید در ترکیب با هیچیک از گزینههای زیر استفاده شود: mbps، multiplier، pps، oneatatime. - -o, --oneatatime
-
بازپخش یک بسته در هر بار با هر ورودی کاربر. این گزینه نباید در ترکیب با هیچیک از گزینههای زیر استفاده شود: mbps، pps، multiplier، topspeed.به شما امکان میدهد در بین بستهها، یک یا چند بسته در هر بار، گام بردارید.
- --pps-multi=number
-
تعداد بستههای ارسالی در هر بازه زمانی. این گزینه باید در ترکیب با گزینه زیر استفاده شود: pps. این گزینه یک عدد صحیح را به عنوان آرگومان خود میپذیرد. مقدار number به موارد زیر محدود است:
بزرگتر یا مساوی ۱
مقدار پیشفرض number برای این گزینه برابر است با:
1هنگام تلاش برای ارسال بستهها با نرخهای بسیار بالا، زمان بین هر بسته میتواند چنان کوتاه باشد که توقف (sleep) دقیق برای بازه زمانی مورد نیاز غیرممکن گردد. این گزینه به شما امکان میدهد چندین بسته را در یک زمان ارسال کنید، بنابراین زمانهای توقف طولانیتری فراهم میشود که میتوان آنها را با دقت بیشتری پیادهسازی کرد.
- --unique-ip
-
تغییر آدرسهای IP در هر دور تکرار حلقه برای ایجاد جریانهای (flows) یکتا. این گزینه باید در ترکیب با گزینه زیر استفاده شود: loop. این گزینه نباید در ترکیب با هیچیک از گزینههای زیر استفاده شود: seed، fuzz-seed.اطمینان حاصل میکند که بستههای IPv4 و IPv6 در هر دور تکرار --loop یکتا خواهند بود. این کار به روشی انجام میشود که CRC بسته تغییر نکرده و بنابراین بهطور کلی بر کارایی تأثیری نخواهد گذاشت. این گزینه تعداد جریانها در ثانیه (flows/sec) تولیدشده را در تکرارهای متعدد حلقه بهطور چشمگیری افزایش میدهد.
- --unique-ip-loops=string
-
تعداد دفعات تکرار حلقه پیش از تخصیص IP یکتای جدید. این گزینه حداکثر ۱ بار میتواند استفاده شود. این گزینه باید در ترکیب با گزینه زیر استفاده شود: unique-ip.تعداد دورهای تکرار --loop پیش از اختصاص یک IP یکتای جدید. مقدار پیشفرض ۱ است. حضور همزمان --loop و --unique-ip فرض میشود.
- --netmap
-
نوشتن مستقیم بستهها در آداپتور شبکه دارای قابلیت netmap.این ویژگی درایورهای شبکه دارای قابلیت netmap را در سیستمهای لینوکس و BSD شناسایی میکند. در صورت شناسایی، درایور شبکه در طول مدت اجرا دور زده شده و بافرهای شبکه مستقیماً نوشته میشوند. این کار به شما امکان میدهد تا در آداپتورهای شبکه تجاری معمولی به نرخ کامل خط (full line rate) دست یابید، مشابه نرخهایی که توسط مولدهای تجاری ترافیک شبکه حاصل میشود. توجه داشته باشید که دور زدن درایور شبکه، کارکرد سایر برنامههای متصل از طریق رابط آزمایشی را مختل خواهد کرد. برای اطلاعات بیشتر فایل INSTALL را ببینید.
این ویژگی را همچنین میتوان با تعیین یک رابط به صورت 'netmap:<intf>' یا 'vale:<intf>' فعال کرد. به عنوان مثال 'netmap:eth0' قابلیت netmap را روی رابط eth0 مشخص میکند.
- --nm-delay=number
-
تأخیر راهاندازی netmap. این گزینه یک عدد صحیح را به عنوان آرگومان خود میپذیرد. مقدار پیشفرض number برای این گزینه برابر است با:
10تعداد ثانیههای تأخیر پس از بارگذاری netmap. برای اطمینان از بالا آمدن کامل رابطها پیش از ارسال با netmap مورد نیاز است. به گزینه netmap نیاز دارد. مقدار پیشفرض ۱۰ ثانیه است.
- --no-flow-stats
-
جلوگیری از چاپ و ردیابی شمارش جریان، نرخها و انقضاها.جلوگیری از جمعآوری و چاپ آمار جریانها. این گزینه ممکن است عملکرد را هنگام عدم استفاده از گزینه --preload-pcap بهبود بخشد، در غیر این صورت تنها کارکرد آن ممانعت از چاپ آمار است.
قابلیت جریان آمار جریانهای ارسالی را ردیابی و چاپ میکند. یک جریان بهطور کلی به عنوان ترکیب یکتایی از یک ۵-تایی (5-tuple) تعریف میشود، یعنی: IP مبدأ، IP مقصد، پورت مبدأ، پورت مقصد و پروتکل.
اگر --loop مشخص شده باشد، جریانها از یک دور تکرار به تکرار بعدی یکتا نخواهند بود، مگر اینکه بستهها تغییر داده شوند. از --unique-ip یا tcpreplay-edit برای تغییر بستهها بین دورهای تکرار استفاده کنید.
- --flow-expiry=number
-
تعداد ثانیههای عدم فعالیت پیش از منقضی در نظر گرفته شدن یک جریان. این گزینه نباید در ترکیب با هیچیک از گزینههای زیر استفاده شود: no-flow-stats. این گزینه یک عدد صحیح را به عنوان آرگومان خود میپذیرد. مقدار number به موارد زیر محدود است:
بزرگتر یا مساوی ۰
مقدار پیشفرض number برای این گزینه برابر است با:
0این گزینه انقضای جریانها را بر اساس زمانهای بیکاری (idle times) جریان ردیابی و گزارش میکند. برای تعیین زمان انقضا، از برچسبهای زمانی درون فایل pcap استفاده میشود، نه برچسب زمانی واقعی در هنگام بازپخش بستهها. برای مثال، مقدار ۳۰ نشان میدهد که اگر به مدت ۳۰ ثانیه هیچ ترافیکی در یک جریان دیده نشود، هر ترافیک پس از آن یک جریان جدید در نظر گرفته خواهد شد و در نتیجه آمار جریانها و جریان در ثانیه (fps) افزایش مییابد.
این گزینه میتواند برای بهینهسازی تنظیمات مهلت زمانی جریان (flow timeout) برای ابزارهای تحلیل جریان استفاده شود. تنظیم این زمان روی مقداری پایین ممکن است باعث حذف شدن جریانها شود در حالی که در واقعیت، جریان تنها پاسخی کُند دارد. تنظیم بیش از حد بالای مهلت زمانی ممکن است منابع مورد نیاز محصول تحلیل جریان شما را افزایش دهد.
توجه داشته باشید که استفاده از این گزینه هنگام بازپخش با سرعتی بالاتر از سرعت اصلی میتواند منجر به شمارش متورم و کاذب جریانها و نرخ fps شود.
پیشفرض ۰ است (بدون انقضا) و مقدار معمول ۳۰ تا ۱۲۰ ثانیه است.
- -P, --pid
-
چاپ PID برنامه tcpreplay در هنگام راهاندازی. - --stats=number
-
چاپ آمار هر X ثانیه یکبار، یا در صورت تعیین '0' در هر دور تکرار حلقه. این گزینه یک عدد صحیح را به عنوان آرگومان خود میپذیرد. مقدار number به موارد زیر محدود است:
بزرگتر یا مساوی ۰
توجه داشته باشید که تأخیرهای زمانبندیشده بر مبنای «بیشترین تلاش» (best effort) هستند و تأخیرهای طولانی بین ارسال بستهها ممکن است باعث ایجاد تأخیرهایی به همان اندازه طولانی در چاپ آمار شود.
- -W, --suppress-warnings
-
جلوگیری از چاپ پیامهای هشدار. - --xdp
-
نوشتن مستقیم بستهها در آداپتور شبکه دارای قابلیت AF_XDP.این ویژگی درایورهای شبکه دارای قابلیت AF_XDP را در سیستمهای لینوکسی که بستههای 'libxdp-dev' و 'libbpf-dev' روی آنها نصب باشد، شناسایی میکند. در صورت شناسایی، پشته شبکه دور زده شده و بستهها مستقیماً به یک درایور دارای قابلیت eBPF ارسال میشوند. این امر به شما امکان میدهد در آداپتورهای شبکه تجاری به نرخهای کامل خط دست یابید، مشابه نرخهایی که توسط مولدهای تجاری ترافیک شبکه حاصل میشود.
- --xdp-batch-size=number
-
حداکثر تعداد بستههایی که میتوانند همزمان به حلقه ارسال (TX ring) در AF_XDP تحویل داده شوند. این گزینه باید در ترکیب با گزینههای زیر استفاده شود: xdp، topspeed. این گزینه نباید در ترکیب با هیچیک از گزینههای زیر استفاده شود: oneatatime، pps-multi. این گزینه یک عدد صحیح را به عنوان آرگومان خود میپذیرد. مقدار number به موارد زیر محدود است:
در بازهٔ 1 تا 4096
مقدار پیشفرض number برای این گزینه عبارت است از:
1تنها در صورتی مجاز است که ارسال با حداکثر سرعت انجام شود. مقادیر بزرگتر از 1 ممکن است کارایی را به بهای کاهش دقت بهبود بخشند.
- -V, --version
-
چاپ اطلاعات نسخه. - -h, --less-help
-
نمایش اطلاعات راهنمای مختصرتر و خروج. - -H, --help
-
نمایش اطلاعات نحوه استفاده و خروج. - -!, --more-help
-
ارسال اطلاعات تفصیلی نحوه استفاده از طریق یک صفحهبند (pager). - --save-opts [=cfgfile]
-
ذخیره وضعیت گزینهها در cfgfile. مقدار پیشفرض آخرین فایل پیکربندی فهرستشده در بخش پیشتنظیمهای گزینه (OPTION PRESETS) در زیر است. دستور پس از بهروزرسانی فایل پیکربندی خارج خواهد شد. - --load-opts=cfgfile, --no-load-opts
-
بارگذاری گزینهها از cfgfile. صورت no-load-opts بارگذاری فایلهای پیکربندی/rc/ini قبلی را غیرفعال میکند. گزینهٔ --no-load-opts در مراحل ابتدایی و خارج از نوبت پردازش میشود.
پیشتنظیمهای گزینه (OPTION PRESETS)
هر گزینهای که با عنوان not presettable علامتگذاری نشده باشد، میتواند با بارگذاری مقادیر از فایل(های) پیکربندی («RC» یا «.INI») از پیش تنظیم شود. فایل homerc برابر «$$/» است، مگر اینکه یک دایرکتوری باشد. در این صورت، فایل «.tcpreplay-editrc» درون آن دایرکتوری جستجو میشود.
فایلها (FILES)
برای فایلهای پیکربندی به بخش پیشتنظیمهای گزینه (OPTION PRESETS) مراجعه کنید.
وضعیت خروج (EXIT STATUS)
یکی از مقادیر خروج زیر بازگردانده خواهد شد:
- 0 (EXIT_SUCCESS)
-
اجرای موفقیتآمیز برنامه. - 1 (EXIT_FAILURE)
-
عملیات ناموفق بود یا نحو دستور معتبر نبود. - 66 (EX_NOINPUT)
-
بارگذاری فایل پیکربندی مشخصشده امکانپذیر نبود. - 70 (EX_SOFTWARE)
-
کتابخانه libopts دچار یک خطای عملیاتی داخلی شد. لطفاً آن را به autogen-users@lists.sourceforge.net گزارش دهید. با تشکر.
نویسندگان (AUTHORS)
حق نشر 2013-2025 Fred Klassen - AppNeta حق نشر 2000-2012 Aaron Turner برای پشتیبانی لطفاً از فهرست پستی tcpreplay-users@lists.sourceforge.net استفاده کنید. جدیدترین نسخه این نرمافزار همیشه از نشانی زیر در دسترس است: http://tcpreplay.appneta.com
کپیرایت و تکثیر (COPYRIGHT)
حق نشر (C) 2000-2025 متعلق به Aaron Turner و Fred Klassen است، کلیه حقوق محفوظ است. این برنامه تحت شرایط مجوز عمومی همگانی گنو (GNU General Public License)، نسخه ۳ یا بالاتر منتشر شده است.
گزارش باگها (BUGS)
لطفاً گزارشهای باگ را به tcpreplay-users@lists.sourceforge.net ارسال کنید.
نکات (NOTES)
این صفحه راهنما توسط AutoGen از تعاریف گزینههای tcpreplay-edit تولید شده است.
| 26 Aug 2025 | tcpreplay |