ນີ້ແມ່ນຄໍາສັ່ງ flowgrind ທີ່ສາມາດດໍາເນີນການໄດ້ຢູ່ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີໂດຍໃຊ້ຫນຶ່ງໃນຫຼາຍສະຖານີເຮັດວຽກອອນໄລນ໌ຂອງພວກເຮົາເຊັ່ນ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator
ໂຄງການ:
NAME
flowgrind - ເຄື່ອງກໍາເນີດການຈະລາຈອນ TCP ຂັ້ນສູງສໍາລັບ Linux, FreeBSD, ແລະ Mac OS X
ສະຫຼຸບສັງລວມ
flowgrind [ທາງເລືອກ] ...
ລາຍລະອຽດ
flowgrind ເປັນເຄື່ອງກໍາເນີດການຈະລາຈອນ TCP ຂັ້ນສູງສໍາລັບການທົດສອບແລະ benchmarking Linux,
FreeBSD, ແລະ Mac OS X TCP/IP stacks. ກົງກັນຂ້າມກັບເຄື່ອງມືການວັດແທກປະສິດທິພາບອື່ນໆມັນ
ມີສະຖາປັດຕະຍະກໍາທີ່ແຈກຢາຍ, ບ່ອນທີ່ການວັດແທກຜ່ານແລະການວັດແທກອື່ນໆ
ລະຫວ່າງຂະບວນການ server flowgrind arbitrary, flowgrind daemon flowgrindd(1).
ມາດຕະການ Flowgrind ນອກຈາກ goodput (throughput), ໄລຍະເວລາ interarrival layer ຂອງແອັບພລິເຄຊັນ
(IAT) ແລະເວລາໄປ-ກັບ (RTT), blockcount ແລະທຸລະກໍາເຄືອຂ່າຍ/s. ບໍ່ຄືກັນກັບທີ່ສຸດ
ເຄື່ອງມືການທົດສອບເວທີ, flowgrind ເກັບກໍາແລະລາຍງານ TCP metrics ກັບຄືນມາໂດຍ
ຕົວເລືອກເຕົ້າຮັບ TCP_INFO, ເຊິ່ງປົກກະຕິແລ້ວແມ່ນຢູ່ພາຍໃນຂອງ TCP/IP stack. ໃນ Linux ແລະ
FreeBSD ນີ້ລວມເຖິງການປະເມີນແກ່ນຂອງ Kernel ຂອງ RTT end-to-end, ຂະຫນາດ.
ຂອງ TCP congestion window (CWND) ແລະ threshold ເລີ່ມຊ້າ (SSTHRESH).
Flowgrind ມີສະຖາປັດຕະຍະກໍາທີ່ແຈກຢາຍ. ມັນແບ່ງອອກເປັນສອງອົງປະກອບ: flowgrind
ເດມອນ, flowgrindd(1), ແລະ flowgrind ຕົວຄວບຄຸມ. ການນໍາໃຊ້ຕົວຄວບຄຸມ, ໄຫຼລະຫວ່າງ
ສອງລະບົບທີ່ແລ່ນ daemon flowgrind ສາມາດຕັ້ງຄ່າໄດ້ (ການທົດສອບພາກສ່ວນທີສາມ). ເປັນປົກກະຕິ
ໄລ ຍະ ເວ ລາ ໃນ ລະ ຫວ່າງ ການ ທົດ ສອບ ຜູ້ ຄວບ ຄຸມ ເກັບ ກໍາ ແລະ ສະ ແດງ ຜົນ ໄດ້ ຮັບ ການ ວັດ ແທກ ຈາກ
daemon ໄດ້. ມັນສາມາດດໍາເນີນການຫຼາຍກະແສໃນເວລາດຽວກັນກັບການຕັ້ງຄ່າດຽວກັນຫຼືທີ່ແຕກຕ່າງກັນແລະ
ຈັດຕາຕະລາງແຕ່ລະອັນ. ການທົດສອບ ແລະການຄວບຄຸມການເຊື່ອມຕໍ່ສາມາດປ່ຽນເປັນທາງເລືອກ
ການໂຕ້ຕອບທີ່ແຕກຕ່າງກັນ.
ການຜະລິດການຈະລາຈອນຕົວມັນເອງແມ່ນການໂອນເປັນຈໍານວນຫຼາຍ, ອັດຕາຈໍາກັດ, ຫຼືຄວາມຊັບຊ້ອນ
ການທົດສອບການຮ້ອງຂໍ / ການຕອບສະຫນອງ. Flowgrind ໃຊ້ libpcap ເພື່ອປິດການຈະລາຈອນໂດຍອັດຕະໂນມັດ
ການວິເຄາະຄຸນນະພາບ.
OPTIONS
ພວກເຂົາເປັນສອງກຸ່ມທາງເລືອກທີ່ສໍາຄັນ: ຕົວເລືອກຄວບຄຸມແລະທາງເລືອກການໄຫຼ. ເຊັ່ນດຽວກັນກັບ
ຊື່ຊີ້ໃຫ້ເຫັນ, ທາງເລືອກໃນການຄວບຄຸມນໍາໃຊ້ໃນທົ່ວໂລກແລະອາດຈະມີຜົນກະທົບການໄຫຼເຂົ້າທັງຫມົດ, ໃນຂະນະທີ່
ຕົວເລືອກສະເພາະການໄຫຼເຂົ້າໃຊ້ກັບຊຸດຍ່ອຍຂອງກະແສທີ່ເລືອກໂດຍໃຊ້ -F ທາງເລືອກ.
ການໂຕ້ຖຽງບັງຄັບຕໍ່ທາງເລືອກຍາວແມ່ນບັງຄັບສໍາລັບທາງເລືອກສັ້ນເກີນໄປ.
ໂດຍທົ່ວໄປ ທາງເລືອກໃນການ
-h, - ຊ່ວຍ[=ແມ່ນຫຍັງ]
ສະແດງການຊ່ວຍເຫຼືອແລະອອກ. ທາງເລືອກສິ່ງທີ່ສາມາດເປັນ 'ເຕົ້າຮັບ' ສໍາລັບການຊ່ວຍເຫຼືອໃນເຕົ້າຮັບ
ທາງເລືອກຫຼື 'ການຈະລາຈອນ' ການສ້າງການຈະລາຈອນຊ່ວຍ
-v, - ການປ່ຽນແປງ
ພິມຂໍ້ມູນສະບັບແລະອອກ
ການຄວບຄຸມ ທາງເລືອກໃນການ
-c, --show-colon=TYPE[,TYPE] ...
ສະແດງຖັນບົດລາຍງານໄລຍະກາງ TYPE ໃນຜົນໄດ້ຮັບ. ຄ່າທີ່ອະນຸຍາດສໍາລັບ
ປະເພດແມ່ນ: 'ໄລຍະຫ່າງ', 'ຜ່ານ', 'transac', 'iat', 'kernel' (ສະແດງທັງໝົດຕໍ່ຄ່າເລີ່ມຕົ້ນ),
ແລະ 'ບລັອກ', 'rtt', 'ຊັກຊ້າ' (ທາງເລືອກ)
-d, --debug
ເພີ່ມການດີບັກ verbosity. ເພີ່ມທາງເລືອກຫຼາຍຄັ້ງເພື່ອເພີ່ມຄວາມຄ່ອງແຄ້ວ
-e, --dump-prefix=PRE
prepend ຄໍານໍາຫນ້າ PRE ເພື່ອ dump ຊື່ໄຟລ໌ (ຄ່າເລີ່ມຕົ້ນ: "flowgrind-")
-i, --report-interval=#.#
ໄລຍະການລາຍງານ, ເປັນວິນາທີ (ຄ່າເລີ່ມຕົ້ນ: 0.05s)
--log-file[=ເອກະສານ]
ຂຽນຜົນໄດ້ຮັບໃສ່ logfile FILE (ຄ່າເລີ່ມຕົ້ນ: flowgrind-'timestamp'.log)
-m ລາຍງານການສົ່ງຜ່ານໃນ 2**20 bytes/s (ຄ່າເລີ່ມຕົ້ນ: 10**6 bit/s)
-n, --flows=#
ຈຳນວນຂອງການທົດສອບ (ຄ່າເລີ່ມຕົ້ນ: 1)
-o ຂຽນທັບໄຟລ໌ບັນທຶກທີ່ມີຢູ່ແລ້ວ (ຄ່າເລີ່ມຕົ້ນ: ຢ່າເຮັດ)
-p ຢ່າພິມຄ່າສັນຍາລັກ (ເຊັ່ນ INT_MAX) ແທນຕົວເລກ
-q, --ງຽບ
ງຽບ, ຢ່າເຂົ້າສູ່ລະບົບຫນ້າຈໍ (ຄ່າເລີ່ມຕົ້ນ: ປິດ)
-s, --tcp-stack=TYPE
ບໍ່ໄດ້ກໍານົດຫົວໜ່ວຍຂອງແຫຼ່ງ TCP stacks ໂດຍອັດຕະໂນມັດ. ບັງຄັບໃຫ້ຫົວໜ່ວຍໄປ TYPE, ບ່ອນທີ່
TYPE ແມ່ນ 'segment' ຫຼື 'byte'
-w ຂຽນ output ກັບ logfile (ຄືກັນກັບ --log-file)
ການໄຫຼ ທາງເລືອກໃນການ
ກະແສທັງໝົດມີສອງຈຸດ, ແຫຼ່ງທີ່ມາ ແລະຈຸດໝາຍປາຍທາງ. ຄວາມແຕກຕ່າງລະຫວ່າງແຫຼ່ງ
ແລະຈຸດສິ້ນສຸດຂອງຈຸດຫມາຍປາຍທາງມີຜົນກະທົບພຽງແຕ່ການສ້າງຕັ້ງການເຊື່ອມຕໍ່. ໃນເວລາທີ່ເລີ່ມຕົ້ນການໄຫຼ
ຈຸດສິ້ນສຸດປາຍທາງຈະຟັງຢູ່ໃນເຕົ້າຮັບ ແລະຈຸດສິ້ນສຸດຂອງແຫຼ່ງເຊື່ອມຕໍ່ຫາມັນ. ສໍາລັບ
ການທົດສອບຕົວຈິງນີ້ບໍ່ມີຄວາມແຕກຕ່າງກັນ, ທັງສອງຈຸດສຸດທ້າຍມີຄວາມສາມາດດຽວກັນຢ່າງແທ້ຈິງ.
ຂໍ້ມູນສາມາດຖືກສົ່ງໄປໃນທິດທາງທັງຫມົດແລະການຕັ້ງຄ່າຈໍານວນຫຼາຍສາມາດໄດ້ຮັບການຕັ້ງຄ່າສ່ວນບຸກຄົນສໍາລັບການ
ແຕ່ລະຈຸດສິ້ນສຸດ.
ບາງທາງເລືອກເຫຼົ່ານີ້ເອົາຈຸດສິ້ນສຸດການໄຫຼເປັນການໂຕ້ຖຽງ, ສະແດງດ້ວຍ 'x' ໃນຕົວເລືອກ
syntax. 'x' ຈໍາເປັນຕ້ອງຖືກແທນທີ່ດ້ວຍ 's' ສໍາລັບຈຸດສິ້ນສຸດຂອງແຫຼ່ງ, 'd' ສໍາລັບ
ຈຸດສິ້ນສຸດປາຍທາງ ຫຼື 'b' ສໍາລັບທັງສອງຈຸດສິ້ນສຸດ. ເພື່ອກໍານົດຄ່າທີ່ແຕກຕ່າງກັນສໍາລັບແຕ່ລະຄົນ
ຈຸດສິ້ນສຸດ, ແຍກພວກມັນດ້ວຍເຄື່ອງໝາຍຈຸດ. ຕົວຢ່າງ -W s=8192,d=4096 ກໍານົດການໂຄສະນາ
ປ່ອງຢ້ຽມໄປຫາ 8192 ຢູ່ແຫຼ່ງແລະ 4096 ຢູ່ປາຍທາງ.
-A x ໃຊ້ຂະຫນາດຕອບສະຫນອງຫນ້ອຍທີ່ສຸດທີ່ຈໍາເປັນສໍາລັບການຄິດໄລ່ RTT
(ຄືກັນກັບ -G s=p,C,40)
-B x=# ກໍານົດການຮ້ອງຂໍການສົ່ງ buffer, ໃນ bytes
-C x ຢຸດການໄຫຼຖ້າມັນປະສົບກັບຄວາມແອອັດໃນທ້ອງຖິ່ນ
-D x=DSCP
ຄ່າ DSCP ສໍາລັບປະເພດຂອງການບໍລິການ (TOS) IP header byte
-E enumerate bytes ໃນ payload ແທນທີ່ຈະສົ່ງສູນ
-F #[,#] ...
ຕົວເລືອກການໄຫຼຕາມທາງເລືອກນີ້ນຳໃຊ້ກັບ Flow IDs ທີ່ໃຫ້ມາເທົ່ານັ້ນ. ມີປະໂຫຍດໃນ
ປະສົມປະສານກັບ -n ເພື່ອກໍານົດທາງເລືອກສະເພາະສໍາລັບການໄຫຼທີ່ແນ່ນອນ. ຕົວເລກເລີ່ມຕົ້ນ
ດ້ວຍ 0, ດັ່ງນັ້ນ -F 1 ຫມາຍເຖິງການໄຫຼທີສອງ. ດ້ວຍ -1 ການໄຫຼທັງຫມົດສາມາດອ້າງອີງ
-G x=(q|p|g):(C|U|E|N|L|P|W):#1:[#2]
ກະຕຸ້ນການຜະລິດການຈະລາຈອນ stochastic ແລະກໍານົດພາລາມິເຕີຕາມການນໍາໃຊ້
ການແຜ່ກະຈາຍ. ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມເບິ່ງພາກ 'ທາງເລືອກການຜະລິດການຈະລາຈອນ'
-H x=ທີ່ສຸດ[/ການຄວບຄຸມ[:PORT]]
ທົດສອບຈາກ/ໄປຫາ HOST. ອາກິວເມັນທາງເລືອກແມ່ນທີ່ຢູ່ ແລະພອດສໍາລັບການຄວບຄຸມ
ການເຊື່ອມຕໍ່ກັບເຈົ້າພາບດຽວກັນ. ຈຸດສິ້ນສຸດທີ່ບໍ່ໄດ້ລະບຸແມ່ນສົມມຸດວ່າຈະເປັນ
localhost
-J # ໃຊ້ແກ່ນແບບສຸ່ມ # (ຄ່າເລີ່ມຕົ້ນ: ອ່ານ / dev / urandom)
-I ເປີດໃຊ້ງານການຄິດໄລ່ການຊັກຊ້າທາງດຽວ (ບໍ່ມີການ synchronization ໂມງ)
-L call connect() on test socket ທັນທີກ່ອນທີ່ຈະເລີ່ມສົ່ງຂໍ້ມູນ (late
ເຊື່ອມຕໍ່). ຖ້າບໍ່ໄດ້ລະບຸ, ການເຊື່ອມຕໍ່ການທົດສອບໄດ້ຖືກສ້າງຕັ້ງຂຶ້ນໃນການກະກຽມ
ໄລຍະກ່ອນການທົດສອບເລີ່ມຕົ້ນ
-M x dump ການຈະລາຈອນໂດຍໃຊ້ libpcap. flowgrindd(1) ຕ້ອງໄດ້ຮັບການດໍາເນີນການເປັນຮາກ
-N shutdown() ແຕ່ລະທິດທາງຂອງເຕົ້າຮັບຫຼັງຈາກການໄຫຼຂອງການທົດສອບ
-O x=OPT
ຕັ້ງທາງເລືອກເຕົ້າຮັບ OPT ໃນເຕົ້າຮັບການທົດສອບ. ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມເບິ່ງພາກ
'ຕົວເລືອກເຕົ້າສຽບ'
-P x ຢ່າເຮັດຊ້ຳຜ່ານ select() ເພື່ອສືບຕໍ່ສົ່ງໃນກໍລະນີທີ່ຂະໜາດບຼັອກບໍ່ໄດ້
ພຽງພໍທີ່ຈະຕື່ມຂໍ້ມູນໃສ່ແຖວສົ່ງ (pushy)
-Q ສະຫຼຸບພຽງແຕ່, ບໍ່ມີບົດລາຍງານໄລຍະກາງໄດ້ຖືກຄິດໄລ່ (ງຽບ)
-R x=#.#(z|k|M|G)(b|B)
ສົ່ງໃນອັດຕາທີ່ກໍານົດຕໍ່ວິນາທີ, ບ່ອນທີ່: z = 2**0, k = 2**10, M = 2**20, G =
2**30, ແລະ b = bits/s (ຄ່າເລີ່ມຕົ້ນ), B = bytes/s
-S x=# ກໍານົດຂະຫນາດ block (ຂໍ້ຄວາມ), ໃນ bytes (ຄືກັນກັບ -G s=q,C,#)
-T x=#.#
ກໍານົດໄລຍະເວລາການໄຫຼ, ເປັນວິນາທີ (ຄ່າເລີ່ມຕົ້ນ: s=10,d=0)
-U # ກໍານົດຂະຫນາດ buffer ຂອງແອັບພລິເຄຊັນ, ໃນ bytes (ຄ່າເລີ່ມຕົ້ນ: 8192) ຕັດຄ່າຖ້າໃຊ້ກັບ
ການຜະລິດການຈະລາຈອນ stochastic
-W x=# ຕັ້ງ buffer ຜູ້ຮັບທີ່ຮ້ອງຂໍ (ປ່ອງຢ້ຽມໂຄສະນາ), ໃນ bytes
-Y x=#.#
ຕັ້ງຄວາມລ່າຊ້າໃນເບື້ອງຕົ້ນກ່ອນທີ່ເຈົ້າພາບຈະເລີ່ມສົ່ງ, ໃນວິນາທີ
ການຈະລາຈອນ ການຜະລິດ ທາງເລືອກ
ທາງເລືອກ -G flowgrind ສະຫນັບສະຫນູນການຜະລິດການຈະລາຈອນ stochastic, ເຊິ່ງອະນຸຍາດໃຫ້ດໍາເນີນການ
ນອກຈາກປົກກະຕິຫຼາຍຍັງຂັ້ນສູງອັດຕາການຈໍາກັດແລະການສົ່ງຂໍ້ມູນການຕອບສະຫນອງການຮ້ອງຂໍ.
ທາງເລືອກການຜະລິດການຈະລາຈອນ stochastic -G ເອົາຈຸດສິ້ນສຸດການໄຫຼເປັນການໂຕ້ຖຽງ, ຫມາຍເຖິງ
ໂດຍ 'x' ໃນ syntax ທາງເລືອກ. 'x' ຈໍາເປັນຕ້ອງຖືກແທນທີ່ດ້ວຍ 's' ສໍາລັບແຫຼ່ງ
ຈຸດສິ້ນສຸດ, 'd' ສໍາລັບຈຸດສິ້ນສຸດປາຍທາງ ຫຼື 'b' ສໍາລັບທັງສອງຈຸດສິ້ນສຸດ. ຢ່າງໃດກໍຕາມ, ກະລຸນາສັງເກດ
ການຜະລິດການຈະລາຈອນສອງທິດທາງສາມາດນໍາໄປສູ່ຜົນໄດ້ຮັບທີ່ບໍ່ຄາດຄິດ. ເພື່ອລະບຸທີ່ແຕກຕ່າງກັນ
ຄ່າສໍາລັບແຕ່ລະຈຸດສິ້ນສຸດ, ແຍກພວກມັນດ້ວຍເຄື່ອງໝາຍຈຸດ.
-G x=(q|p|g):(C|U|E|N|L|P|W):#1:[#2]
ຕົວກໍານົດການໄຫຼ:
q ຂະໜາດການຮ້ອງຂໍ (ເປັນໄບຕ໌)
p ຂະໜາດຕອບສະໜອງ (ເປັນໄບຕ໌)
g ຮ້ອງຂໍຊ່ອງຫວ່າງ interpacket (ໃນວິນາທີ)
ການແຈກຢາຍ:
C ຄົງທີ່ (#1: ມູນຄ່າ, #2: ບໍ່ໄດ້ນໍາໃຊ້)
U ເອກະພາບ (#1: ນທ, #2: ສູງສຸດ)
E ເລກກຳລັງ (#1: lamba - ຕະຫຼອດຊີວິດ, #2: ບໍ່ໄດ້ນໍາໃຊ້)
N ປົກກະຕິ (#1: mu - ຄ່າຄວາມຫມາຍ, #2: sigma_square - ຄວາມແຕກຕ່າງ)
L ປົກກະຕິ (#1: zeta - ຫມາຍຄວາມວ່າ, #2: sigma - std dev)
P pareto (#1: k - ຮູບຮ່າງ, #2: x_min - ຂະຫນາດ)
W weibull (#1: lambda - ຂະຫນາດ, #2: k - ຮູບຮ່າງ
ການແຈກຢາຍແບບພິເສດເຊັ່ນ weibull ແມ່ນມີພຽງແຕ່ຖ້າ flowgrind ຖືກລວບລວມ
ສະຫນັບສະຫນູນ libgsl.
-U # ລະບຸຕົວພິມໃຫຍ່ສຳລັບຄ່າທີ່ຄຳນວນແລ້ວສຳລັບການຮ້ອງຂໍ ແລະຂະໜາດຕອບສະໜອງ, ຕ້ອງການ
ເນື່ອງຈາກວ່າມູນຄ່າການແຈກຢາຍແບບພິເສດແມ່ນບໍ່ມີຂອບເຂດ, ແຕ່ພວກເຮົາຈໍາເປັນຕ້ອງຮູ້ວ່າ
buffersize (ມັນບໍ່ຈໍາເປັນສໍາລັບຄ່າຄົງທີ່ຫຼືການແຈກຢາຍເປັນເອກະພາບ). ຄຸນຄ່າ
ຢູ່ນອກຂອບເຂດແມ່ນຖືກຄິດໄລ່ຄືນໃຫມ່ຈົນກ່ວາຜົນໄດ້ຮັບທີ່ຖືກຕ້ອງເກີດຂື້ນແຕ່ຢ່າງຫນ້ອຍ 10
ເວລາ (ຫຼັງຈາກນັ້ນມູນຄ່າຜູກມັດຖືກນໍາໃຊ້)
ກະເປົາ ທາງເລືອກ
Flowgrind ອະນຸຍາດໃຫ້ກໍານົດທາງເລືອກ socket ມາດຕະຖານຕໍ່ໄປນີ້ແລະບໍ່ມາດຕະຖານໂດຍຜ່ານທາງເລືອກ
-O.
ຕົວເລືອກຊັອກເກັດທັງໝົດເອົາຈຸດສິ້ນສຸດການໄຫຼເປັນອາກິວເມັນ, ສະແດງດ້ວຍ 'x' ໃນຕົວເລືອກ
syntax. 'x' ຈໍາເປັນຕ້ອງຖືກແທນທີ່ດ້ວຍ 's' ສໍາລັບຈຸດສິ້ນສຸດຂອງແຫຼ່ງ, 'd' ສໍາລັບ
ຈຸດສິ້ນສຸດປາຍທາງ ຫຼື 'b' ສໍາລັບທັງສອງຈຸດສິ້ນສຸດ. ເພື່ອກໍານົດຄ່າທີ່ແຕກຕ່າງກັນສໍາລັບແຕ່ລະຄົນ
ຈຸດສິ້ນສຸດ, ແຍກພວກມັນດ້ວຍເຄື່ອງໝາຍຈຸດ. ຍິ່ງໄປກວ່ານັ້ນ, ມັນເປັນໄປໄດ້ທີ່ຈະເຮັດຊ້ໍາອີກຄັ້ງດຽວກັນ
endpoint ເພື່ອກໍານົດທາງເລືອກ socket ຫຼາຍ.
ມາດຕະຖານ socket ທາງເລືອກໃນການ
-O x=TCP_CONGESTION=ALG
ຕັ້ງລະບົບຄວບຄຸມຄວາມແອອັດ ALG ຢູ່ໃນເຕົ້າຮັບການທົດສອບ
-O x=TCP_CORK
ຕັ້ງ TCP_CORK ໃນຊັອກເກັດທົດສອບ
-O x=TCP_NODELAY
ປິດການໃຊ້ງານວິທີການ nagle ຢູ່ໃນເຕົ້າຮັບການທົດສອບ
-O x=SO_DEBUG
ຕັ້ງຄ່າ SO_DEBUG ໃນຊັອກເກັດທົດສອບ
-O x=IP_MTU_DISCOVER
ຕັ້ງ IP_MTU_DISCOVER ເທິງຊັອກເກັດທົດສອບ ຖ້າບໍ່ໄດ້ເປີດໃຊ້ແລ້ວໂດຍຄ່າເລີ່ມຕົ້ນຂອງລະບົບ
-O x=ROUTE_RECORD
ຕັ້ງຄ່າ ROUTE_RECORD ໃນຊັອກເກັດທົດສອບ
ບໍ່ໄດ້ມາດຕະຖານ socket ທາງເລືອກໃນການ
-O x=TCP_MTCP
ຕັ້ງ TCP_MTCP (15) ໃນຊັອກເກັດທົດສອບ
-O x=TCP_ELCN
ຕັ້ງ TCP_ELCN (20) ຢູ່ໃນເຕົ້າຮັບການທົດສອບ
-O x=TCP_LCD
ຕັ້ງ TCP_LCD (21) ຢູ່ໃນເຕົ້າຮັບການທົດສອບ
ຕົວຢ່າງ
flowgrind
ທົດສອບປະສິດທິພາບຂອງ localhost IPv4 TCP ດ້ວຍການຕັ້ງຄ່າເລີ່ມຕົ້ນ, ຄືກັນກັບ flowgrind -H
b=127.0.0.1 −T s=10,d=0. daemon flowgrind ຈໍາເປັນຕ້ອງໄດ້ດໍາເນີນການຢູ່ໃນ localhost
flowgrind -H b=::1/127.0.0.1
ຄືກັນກັບຂ້າງເທິງ, ແຕ່ການທົດສອບປະສິດທິພາບຂອງ localhost IPv6 TCP ດ້ວຍການຕັ້ງຄ່າເລີ່ມຕົ້ນ
flowgrind -H s=host1,d=host2
ການໂອນ TCP ຫຼາຍລະຫວ່າງ host1 ແລະ host2. Host1 ເຮັດຫນ້າທີ່ເປັນແຫຼ່ງ, host2 as
ຈຸດຫມາຍປາຍທາງ. ຈຸດສິ້ນສຸດທັງສອງຈະຕ້ອງຖືກແລ່ນ daemon flowgrind. ໄດ້
ຕົວເລືອກການໄຫຼເຂົ້າເລີ່ມຕົ້ນຖືກໃຊ້, ໂດຍມີໄລຍະເວລາການໄຫຼຂອງ 10 ວິນາທີ ແລະກະແສຂໍ້ມູນ
ຈາກ host1 ຫາ host2
flowgrind -H s=host1,d=host2 -T s=0,d=10
ດຽວກັນກັບຂ້າງເທິງແຕ່ແທນທີ່ຈະມີ flow ສົ່ງຂໍ້ມູນສໍາລັບ 10 ວິນາທີຈາກ host2 ຫາ
ເຈົ້າພາບ 1
flowgrind -n 2 -F 0 -H s=192.168.0.1,d=192.168.0.69 -F 1 -H s=10.0.0.1,d=10.0.0.2
ຕັ້ງຄ່າສອງກະແສຂະໜານ, ການໄຫຼທຳອິດລະຫວ່າງ 192.168.0.1 ແລະ 192.168.0.69, ທີສອງ
ໄຫຼລະຫວ່າງ 10.0.0.1 ຫາ 10.0.0.2
flowgrind -p -H s=10.0.0.100/192.168.1.100,d=10.0.0.101/192.168.1.101 -A s
ຕັ້ງຄ່າຂັ້ນຕອນໜຶ່ງລະຫວ່າງ 10.0.0.100 ແລະ 10.0.0.101 ແລະໃຊ້ທີ່ຢູ່ IP 192.168.1.x
ສໍາລັບການຄວບຄຸມການຈະລາຈອນ. ເປີດໃຊ້ການຕອບສະຫນອງຫນ້ອຍທີ່ສຸດສໍາລັບການຄິດໄລ່ RTT
flowgrind -i 0.001 -T s = 1 | ຕົວຢ່າງ ^S | gnuplot - ຄົງຢູ່ -e 'ດິນຕອນ "-" ການນໍາໃຊ້ 3:5 ກັບ ສາຍ
ຫົວຂໍ້ "ຜ່ານ" '
ຕັ້ງຄ່າການໄຫຼດຽວຜ່ານອຸປະກອນ loopback ແລະວາງແຜນຂໍ້ມູນຂອງຜູ້ສົ່ງດ້ວຍການຊ່ວຍເຫຼືອ
ຂອງ gnuplot
flowgrind -G s=q,C,400 -G s=p,N,2000,50 -G s=g,U,0.005,0.01 -U 32000
-G s=q,C,400: ໃຊ້ຂະໜາດການຮ້ອງຂໍຄົງທີ່ຂອງ 400 bytes
-G s=p,N,2000,50: ໃຊ້ຂະຫນາດຕອບສະຫນອງການແຈກຢາຍປົກກະຕິໂດຍສະເລ່ຍ 2000 bytes ແລະ
ຄວາມແຕກຕ່າງ 50
-G s=g,U,0.005,0.01: ໃຊ້ຊ່ອງຫວ່າງ interpacket ແຈກຢາຍເປັນເອກະພາບທີ່ມີ min 0.005s ແລະ
ແລະສູງສຸດ 10ms
-U 32000: ຕັດຂະຫນາດຂອງຕັນທີ່ 32 kbytes (ຕ້ອງການສໍາລັບການແຜ່ກະຈາຍປົກກະຕິ)
ການຈະລາຈອນ ສະຖານະການ
ຕົວຢ່າງຕໍ່ໄປນີ້ສະແດງໃຫ້ເຫັນວ່າຄວາມສາມາດໃນການສ້າງການຈະລາຈອນຂອງ flowgrind ສາມາດເປັນແນວໃດ
ໃຊ້. ເຫຼົ່ານີ້ໄດ້ຖືກລວມເຂົ້າໃນການທົດສອບທີ່ແຕກຕ່າງກັນສໍາລັບການ flowgrind ແລະໄດ້ຮັບການພິສູດແລ້ວ
ມີຄວາມໝາຍ. ຢ່າງໃດກໍຕາມ, ເນື່ອງຈາກວ່າການຈະລາຈອນທາງອິນເຕີເນັດມີຄວາມຫຼາກຫຼາຍ, ບໍ່ມີການຮັບປະກັນວ່າສິ່ງເຫຼົ່ານີ້ແມ່ນ
ທີ່ເຫມາະສົມໃນທຸກສະຖານະການ.
ການຮ້ອງຂໍ ການຕອບສະຫນອງ ແບບ (HTTP)
ສະຖານະການນີ້ແມ່ນອີງໃສ່ການເຮັດວຽກໃນ
http://www.3gpp2.org/Public_html/specs/C.R1002-0_v1.0_041221.pdf.
flowgrind -M s -G s=q,C,350 -G s=p,L,9055,115.17 -U 100000
-M s: dump traffic ຂ້າງຜູ້ສົ່ງ
-G s=q,C,350: ໃຊ້ຂະໜາດການຮ້ອງຂໍຄົງທີ່ 350 bytes
-G s=p,L,9055,115: ໃຊ້ການແຈກຢາຍຕາມປົກກະຕິກັບຄ່າສະເລ່ຍ 9055 ແລະຄວາມແຕກຕ່າງ 115 ສໍາລັບ
ຂະຫນາດຕອບສະຫນອງ
-U 100000: ຕັດຄຳຕອບທີ່ 100 kbytes
ສໍາລັບສະຖານະການນີ້ພວກເຮົາແນະນໍາໃຫ້ສຸມໃສ່ RTT (ຄ່າຕ່ໍາແມ່ນດີກວ່າ) ແລະເຄືອຂ່າຍ
ທຸລະກໍາ / s ເປັນ metric (ມູນຄ່າສູງກວ່າແມ່ນດີກວ່າ).
Interactive ກອງປະຊຸມ (ໂທເນັດ)
ສະຖານະການນີ້ຈໍາລອງເຊດຊັນ telnet.
flowgrind -G s=q,U,40,10000 -G s=q,U,40,10000 -O b=TCP_NODELAY
-G s=q,U,40,10000 -G s=q,U,40,10000: ໃຊ້ຄຳຮ້ອງຂໍແລະການຕອບສະໜອງແບບແຈກຢາຍແບບເອກະພາບ
ຂະຫນາດລະຫວ່າງ 40B ແລະ 10kB
-O b=TCP_NODELAY: ຕັ້ງຕົວເລືອກຊັອກເກັດ TCP_NODELAY ຕາມທີ່ໃຊ້ໂດຍແອັບພລິເຄຊັນ telnet
ສໍາລັບສະຖານະການນີ້ RTT (ຕ່ໍາກວ່າແມ່ນດີກວ່າ) ແລະທຸລະກໍາເຄືອຂ່າຍ / s ແມ່ນການວັດແທກທີ່ເປັນປະໂຫຍດ
(ສູງກວ່າແມ່ນດີກວ່າ).
ອັດຕາການ ຈໍາກັດ (ການຖ່າຍທອດ ສື່)
ສະຖານະການນີ້ຈຳລອງການຖ່າຍທອດວິດີໂອດ້ວຍອັດຕາບິດຂອງ 800 kbit/s.
flowgrind -G s=q,C,800 -G s=g,N,0.008,0.001
ໃຊ້ຊ່ອງຫວ່າງ interpacket ທີ່ແຈກຢາຍປົກກະຕິໂດຍສະເລ່ຍ 0.008 ແລະຄວາມແຕກຕ່າງເລັກນ້ອຍ
(0.001). ໂດຍສົມທົບກັບຂະຫນາດຄໍາຮ້ອງຂໍ 800 bytes ອັດຕາບິດສະເລ່ຍປະມານ 800
kbit/s ແມ່ນບັນລຸໄດ້. ຄວາມແຕກຕ່າງໄດ້ຖືກເພີ່ມເພື່ອເຮັດຕາມອັດຕາບິດທີ່ປ່ຽນແປງໄດ້ຄືກັບມັນ
ໃຊ້ໃນຕົວແປງສັນຍານວິດີໂອໃນປັດຈຸບັນ.
ສໍາລັບສະຖານະການນີ້ IAT (ຕ່ໍາກວ່າແມ່ນດີກວ່າ) ແລະການສົ່ງຜ່ານຫນ້ອຍທີ່ສຸດ (ສູງກວ່າແມ່ນດີກວ່າ) ແມ່ນ
metrics ທີ່ຫນ້າສົນໃຈ.
OUTPUT ສີ
ກະແສ/ຈຸດສິ້ນສຸດ ຕົວລະບຸຕົວຕົນ
# flow endpoint, ທັງ 'S' ສໍາລັບແຫຼ່ງຫຼື 'D' ສໍາລັບປາຍທາງ
ID ຕົວລະບຸການໄຫຼຂອງຕົວເລກ
ເລີ່ມຕົ້ນ ແລະ ໃນຕອນທ້າຍ
ຂອບເຂດຂອງໄລຍະການວັດແທກເປັນວິນາທີ. ເວລາທີ່ສະແດງໃຫ້ເຫັນແມ່ນຜ່ານໄປ
ເວລານັບຕັ້ງແຕ່ໄດ້ຮັບຂໍ້ຄວາມ RPC ເພື່ອເລີ່ມຕົ້ນການທົດສອບຈາກຈຸດ daemons ຂອງ
ເບິ່ງ
ຄໍາຮ້ອງສະຫມັກ ຊັ້ນ ການວັດແທກ
ໂດຍຜ່ານການ
ສົ່ງຜົນດີຂອງຈຸດສິ້ນສຸດການໄຫຼເຂົ້າໃນລະຫວ່າງໄລຍະການວັດແທກນີ້,
ວັດແທກເປັນ Mbit/s (ຄ່າເລີ່ມຕົ້ນ) ຫຼື MB/s (-m)
ທຸລະກໍາ
ຈໍານວນຂອງການຕອບສະຫນອງຜົນສໍາເລັດ blocks ຕໍ່ວິນາທີ (ພວກເຮົາເອີ້ນວ່າເຄືອຂ່າຍ
ທຸລະກຳ/s)
requ/resp
ຈໍານວນຂອງຄໍາຮ້ອງສະຫມັກແລະການຕອບສະຫນອງທີ່ສົ່ງໄປໃນໄລຍະການວັດແທກນີ້ (ຖັນ
ປິດໃຊ້ງານໂດຍຄ່າເລີ່ມຕົ້ນ)
IAT ຂັດຂວາງເວລາມາຮອດ (IAT). ຮ່ວມກັນກັບຕໍາ່ສຸດທີ່ແລະສູງສຸດໄດ້
ສະເລ່ຍເລກຄະນິດສໍາລັບໄລຍະການວັດແທກສະເພາະນັ້ນແມ່ນສະແດງ. ຖ້າບໍ່ມີຕັນ
ໄດ້ຮັບໃນລະຫວ່າງໄລຍະການລາຍງານ, 'inf' ຈະຖືກສະແດງ.
DLY ແລະ RTT
1-way ແລະ 2-way block delay ຕາມລໍາດັບ latency ຕັນ ແລະ block ໄປ-ກັບ
ເວລາ (RTT). ສໍາລັບການຊັກຊ້າທັງສອງຄ່າຕ່ໍາສຸດແລະສູງສຸດທີ່ພົບໃນນັ້ນ
ໄລຍະການວັດແທກແມ່ນສະແດງພ້ອມກັບຄ່າສະເລ່ຍເລກເລກ. ຖ້າບໍ່ມີບລັອກ,
ຕາມລໍາດັບການຮັບຮູ້ຕັນແມ່ນມາຮອດໃນລະຫວ່າງໄລຍະເວລາບົດລາຍງານນັ້ນ, 'inf' ແມ່ນ
ສະແດງ. ທັງສອງ, ການລ່າຊ້າທາງຕັນ 1 ທາງ ແລະ 2 ທາງແມ່ນຖືກປິດໃຊ້ງານໂດຍຄ່າເລີ່ມຕົ້ນ (ເບິ່ງ
ທາງເລືອກ -I ແລະ -A).
ແກ່ນ ການວັດແທກ (TCP_INFO)
ການວັດແທກສະເພາະ TCP ຕໍ່ໄປນີ້ທັງໝົດແມ່ນໄດ້ມາຈາກ kernel ຜ່ານ TCP_INFO
ທາງເລືອກ socket ຢູ່ທີ່ ໃນຕອນທ້າຍ ຂອງແຕ່ລະໄລຍະການລາຍງານ. ອັດຕາການເກັບຕົວຢ່າງສາມາດປ່ຽນແປງໄດ້ໂດຍຜ່ານ
ທາງເລືອກ -i.
cwnd (tcpi_cwnd)
ຂະຫນາດຂອງ TCP congestion window (CWND) ໃນຈໍານວນ segments (Linux) ຫຼື bytes
(FreeBSD)
ssth (tcpi_snd_sshresh)
ຂະໜາດຂອງເກນເລີ່ມຕົ້ນຊ້າໃນຈຳນວນຂອງພາກສ່ວນ (Linux) ຫຼື bytes (FreeBSD)
ອູກ (tcpi_unacked)
ຈໍານວນຂອງພາກສ່ວນທີ່ບໍ່ໄດ້ຮັບຮູ້ໃນປັດຈຸບັນ, ເຊັ່ນ, ຈໍານວນຂອງພາກສ່ວນໃນການບິນ
(FlightSize) (Linux ເທົ່ານັ້ນ)
ຖົງ (tcpi_sacked)
ຈໍານວນຂອງພາກສ່ວນທີ່ຮັບຮູ້ຄັດເລືອກ (Linux ເທົ່ານັ້ນ)
ການສູນເສຍ (tcpi_lost)
ຈໍານວນຂອງພາກສ່ວນສົມມຸດວ່າສູນເສຍ (Linux ເທົ່ານັ້ນ)
ດຶງເອົາ (tcpi_retrans)
ຈໍານວນຂອງພາກສ່ວນທີ່ບໍ່ໄດ້ຮັບຮູ້ retransmitted (Linux ເທົ່ານັ້ນ)
tret (tcpi_retransmits)
ຈໍານວນຂອງ retransmissions ກະຕຸ້ນໂດຍການຫມົດເວລາ retransmission (RTO) (Linux ເທົ່ານັ້ນ)
fack (tcpi_fackets)
ຈໍານວນຂອງພາກສ່ວນລະຫວ່າງ SND.UNA ແລະສູງສຸດທີ່ຮັບຮູ້ຄັດເລືອກ
ໝາຍເລກລຳດັບ (SND.FACK) (Linux ເທົ່ານັ້ນ)
reor (tcpi_reordering)
ເມຕຣິກຈັດຮຽງລຳດັບພາກສ່ວນຄືນໃໝ່. Linux kernel ສາມາດກວດຫາແລະຮັບມືກັບການຈັດລໍາດັບໃຫມ່
ໂດຍບໍ່ມີການສູນເສຍ sigificat ຂອງການປະຕິບັດຖ້າຫາກວ່າໄລຍະຫ່າງຂອງພາກສ່ວນທີ່ໄດ້ຮັບການຍົກຍ້າຍເຮັດ
ບໍ່ເກີນ metric ການຈັດລໍາດັບ (Linux ເທົ່ານັ້ນ)
rtt (tcpi_rtt) ແລະ rttvar (tcpi_rttvar)
ເວລາໄປກັບ TCP ແລະຄວາມແຕກຕ່າງຂອງມັນຢູ່ໃນ ms
rto (tcpi_rto)
ການໝົດເວລາຂອງ retransmission ທີ່ໄດ້ຮັບໃນ ms
bkof (tcpi_backoff)
ຈໍານວນ RTO backoffs (Linux ເທົ່ານັ້ນ)
ca ລັດ (tcpi_ca_state)
ສະຖານະພາຍໃນຂອງ TCP congestion ຄວບຄຸມເຄື່ອງຈັກຂອງລັດທີ່ປະຕິບັດຢູ່ໃນ
Linux kernel. ສາມາດເປັນຫນຶ່ງໃນ ເປີດ, ບໍ່ເປັນລະບຽບ, cwr, ການຟື້ນຟູ or ການສູນເສຍ (Linux ເທົ່ານັ້ນ)
ເປີດ ແມ່ນສະຖານະປົກກະຕິ. ມັນຊີ້ໃຫ້ເຫັນວ່າບໍ່ມີການຮັບຮູ້ທີ່ຊ້ໍາກັນ (ACK) ແມ່ນ
ໄດ້ຮັບແລະບໍ່ມີສ່ວນແມ່ນຖືວ່າສູນເສຍ
ບໍ່ເປັນລະບຽບ
ໄດ້ຖືກເຂົ້າໄປໃນການຕ້ອນຮັບຂອງ ACK ທີ່ຊ້ໍາກັນຄັ້ງທໍາອິດຕິດຕໍ່ກັນຫຼື
ການຮັບຮູ້ຄັດເລືອກ (SACK)
CWR ຖືກປ້ອນເມື່ອການແຈ້ງເຕືອນຈາກການແຈ້ງເຕືອນຄວາມແອອັດທີ່ຈະແຈ້ງ (ECN)
ແມ່ນໄດ້ຮັບ
Recovery
ຖືກປ້ອນເມື່ອສາມ ACKs ຊ້ໍາກັນຫຼືຈໍານວນ SACK ທຽບເທົ່າ
ໄດ້ຮັບ. ໃນການຄວບຄຸມ congestion ລັດນີ້ແລະຂັ້ນຕອນການຟື້ນຕົວການສູນເສຍເຊັ່ນ:
ການສົ່ງຄືນໄວແລະການຟື້ນຕົວໄວ (RFC 5861) ຖືກປະຕິບັດ
ການສູນເສຍ ຖືກໃສ່ຖ້າ RTO ໝົດອາຍຸ. ອີກເທື່ອຫນຶ່ງການຄວບຄຸມຄວາມແອອັດແລະການຟື້ນຟູການສູນເສຍ
ຂັ້ນຕອນການແມ່ນປະຕິບັດ
smss ແລະ ໂມງແລງ
ຂະໜາດສູງສຸດຂອງຜູ້ສົ່ງ ແລະໜ່ວຍສົ່ງສູງສຸດຂອງເສັ້ນທາງເປັນໄບຕ໌
ພາຍໃນ flowgrind ລັດ (ພຽງແຕ່ ເປີດໃຫ້ໃຊ້ງານ in debug ສ້າງ)
ສະຖານະພາບ ສະພາບຂອງກະແສພາຍໃນ flowgrind ສໍາລັບຈຸດປະສົງການວິນິດໄສ. ມັນເປັນ tuple ຂອງສອງ
ຄ່າ, ອັນທໍາອິດສໍາລັບການສົ່ງແລະທີສອງສໍາລັບການຮັບ. ໂດຍຫລັກການແລ້ວລັດຂອງ
ທັງຈຸດສິ້ນສຸດຂອງແຫຼ່ງທີ່ມາ ແລະຈຸດໝາຍປາຍທາງຂອງການໄຫຼເຂົ້າຄວນຈະມີຄວາມສົມມາດແຕ່ຕັ້ງແຕ່ນັ້ນມາ
ພວກມັນບໍ່ໄດ້ຖືກ synchronized ພວກເຂົາອາດຈະບໍ່ປ່ຽນແປງໃນເວລາດຽວກັນ. ຄຸນຄ່າທີ່ເປັນໄປໄດ້
ແມ່ນ:
c ທິດທາງສຳເລັດການສົ່ງ/ຮັບ
d ລໍຖ້າຄວາມລ່າຊ້າໃນເບື້ອງຕົ້ນ
f ສະຖານະຄວາມຜິດ
l ສະຖານະທີ່ເຄື່ອນໄຫວ, ບໍ່ມີຫຍັງຖືກສົ່ງ ຫຼືໄດ້ຮັບເທື່ອ
n ກິດຈະກໍາປົກກະຕິ, ຂໍ້ມູນບາງຢ່າງໄດ້ຮັບການຖ່າຍທອດຫຼືໄດ້ຮັບ
o ການໄຫຼເຂົ້າມີໄລຍະເວລາສູນໃນທິດທາງນັ້ນ, ບໍ່ມີຂໍ້ມູນໃດໆຈະຖືກແລກປ່ຽນ
AUTHORS
Flowgrind ແມ່ນຕົ້ນສະບັບເລີ່ມຕົ້ນໂດຍ Daniel Schaffrath. ການວັດແທກການແຈກຢາຍ
ສະຖາປັດຕະຍະກໍາແລະການຜະລິດການຈະລາຈອນທີ່ກ້າວຫນ້າຕໍ່ມາໄດ້ຖືກເພີ່ມໂດຍ Tim Kosse ແລະ
ຄຣິສຕຽນ ແຊມເຊລ. ໃນປັດຈຸບັນ, flowgrind ໄດ້ຖືກພັດທະນາແລະຮັກສາ Arnd Hannemann ແລະ
Alexander Zimmermann.
ໃຊ້ flowgrind ອອນໄລນ໌ໂດຍໃຊ້ບໍລິການ onworks.net