ns-3 рдиреЗрдЯрд╡рд░реНрдХ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓. рдкреНрд░рдХрд░рдг 5

ns-3 рдиреЗрдЯрд╡рд░реНрдХ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓. рдкреНрд░рдХрд░рдг 5
рдзрдбрд╛ 1,2
рдзрдбрд╛ 3
рдзрдбрд╛ 4

5 рд╕реЗрдЯрд┐рдВрдЧреНрдЬ
5.1 рд▓реЙрдЧрд┐рдВрдЧ рдореЙрдбреНрдпреВрд▓ рд╡рд╛рдкрд░рдгреЗ
5.1.1 рд▓реЙрдЧрд┐рдВрдЧ рд╡рд┐рд╣рдВрдЧрд╛рд╡рд▓реЛрдХрди
5.1.2 рд▓реЙрдЧрд┐рдВрдЧ рд╕рдХреНрд╖рдо рдХрд░рд╛
5.1.3 рддреБрдордЪреНрдпрд╛ рдХреЛрдбрдордзреНрдпреЗ рд▓реЙрдЧрд┐рдВрдЧ рдЬреЛрдбрдгреЗ
5.2 рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╡рд┐рддрд░реНрдХ рд╡рд╛рдкрд░рдгреЗ
5.2.1 рдбреАрдлреЙрд▓реНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛ рдореВрд▓реНрдпреЗ рдУрд╡реНрд╣рд░рд░рд╛рдЗрдб рдХрд░рдгреЗ
5.2.2 рддреБрдордЪреНрдпрд╛ рд╕реНрд╡рддрдГрдЪреНрдпрд╛ рдЖрдЬреНрдЮрд╛ рдХреЕрдкреНрдЪрд░ рдХрд░рдгреЗ
5.3 рдЯреНрд░реЗрд╕рд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд╡рд╛рдкрд░рдгреЗ
5.3.1 ASCII рдЯреНрд░реЗрд╕рд┐рдВрдЧ
ASCII рдЯреНрд░реЗрд╕ рдкрд╛рд░реНрд╕ рдХрд░рдд рдЖрд╣реЗ
5.3.2 PCAP рдЯреНрд░реЗрд╕

рдзрдбрд╛ 5

рд╕рдорд╛рдпреЛрдЬрди

5.1 рд▓реЙрдЧрд┐рдВрдЧ рдореЙрдбреНрдпреВрд▓ рд╡рд╛рдкрд░рдгреЗ

рдЖрдореНрд╣реА рдЖрдзреАрдЪ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд╛рд╣реВрди ns-3 рд▓реЙрдЧрд┐рдВрдЧ рдореЙрдбреНрдпреВрд▓ рдереЛрдбрдХреНрдпрд╛рдд рдкрд╛рд╣рд┐рд▓реЗ рдЖрд╣реЗ рдкреНрд░рдердо.рд╕реАрд╕реА. рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд, рдЖрдореНрд╣реА рд▓реЙрдЧрд┐рдВрдЧ рдЙрдкрдкреНрд░рдгрд╛рд▓реАрдЪреНрдпрд╛ рд╕рдВрднрд╛рд╡реНрдп рдЙрдкрдпреЛрдЧрд╛рдВрд╡рд░ рдмрд╛рд░рдХрд╛рдИрдиреЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реВ.

5.1.1 рд▓реЙрдЧрд┐рдВрдЧ рд╡рд┐рд╣рдВрдЧрд╛рд╡рд▓реЛрдХрди

рдмрд▒реНрдпрд╛рдЪ рдореЛрдареНрдпрд╛ рдкреНрд░рдгрд╛рд▓реА рдХрд╛рд╣реА рдкреНрд░рдХрд╛рд░рдЪреНрдпрд╛ рд╕рдВрджреЗрд╢ рд▓реЙрдЧрд┐рдВрдЧ рд╕реБрд╡рд┐рдзреЗрд▓рд╛ рд╕рдорд░реНрдерди рджреЗрддрд╛рдд рдЖрдгрд┐ ns-3 рдЕрдкрд╡рд╛рдж рдирд╛рд╣реА. рдХрд╛рд╣реА рдкреНрд░рдХрд░рдгрд╛рдВрдордзреНрдпреЗ, "рдСрдкрд░реЗрдЯрд░ рдХрдиреНрд╕реЛрд▓" рд╡рд░ рдлрдХреНрдд рддреНрд░реБрдЯреА рд╕рдВрджреЗрд╢ рд▓рд┐рд╣рд┐рд▓реЗ рдЬрд╛рддрд╛рдд (рдЬреЗ рд╕рд╣рд╕рд╛ рдпреБрдирд┐рдХреНрд╕-рдЖрдзрд╛рд░рд┐рдд рд╕рд┐рд╕реНрдЯрдорд╡рд░ stderr рдЕрд╕рддреЗ). рдЗрддрд░ рдкреНрд░рдгрд╛рд▓реАрдВрд╡рд░, рдЪреЗрддрд╛рд╡рдгреА рд╕рдВрджреЗрд╢ рддрд╕реЗрдЪ рдЕрдзрд┐рдХ рддрдкрд╢реАрд▓рд╡рд╛рд░ рдорд╛рд╣рд┐рддреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреЗрд▓реА рдЬрд╛рдК рд╢рдХрддреЗ. рдХрд╛рд╣реА рдкреНрд░рдХрд░рдгрд╛рдВрдордзреНрдпреЗ, рд▓реЙрдЧрд┐рдВрдЧ рд╕рд╛рдзрдиреЗ рдбреАрдмрдЧ рд╕рдВрджреЗрд╢ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реА рдЬрд╛рддрд╛рдд рдЬреА рдЖрдЙрдЯрдкреБрдЯ рджреНрд░реБрддрдкрдгреЗ рдЕрд╕реНрдкрд╖реНрдЯ рдХрд░реВ рд╢рдХрддрд╛рдд.

ns-3 рдордзреНрдпреЗ рд╡рд╛рдкрд░рд▓реЗрд▓рд╛ subHRD рд╣реЗ рдЧреГрд╣реАрдд рдзрд░рддреЗ рдХреА рдорд╛рд╣рд┐рддреА рд╕рд╛рдордЧреНрд░реАрдЪреЗ рд╣реЗ рд╕рд░реНрд╡ рд╕реНрддрд░ рдЙрдкрдпреБрдХреНрдд рдЖрд╣реЗрдд рдЖрдгрд┐ рдЖрдореНрд╣реА рд╕рдВрджреЗрд╢ рд▓реЙрдЧрд┐рдВрдЧрд╕рд╛рдареА рдПрдХ рдирд┐рд╡рдбрдХ, рд╕реНрддрд░рд┐рдд рджреГрд╖реНрдЯреАрдХреЛрди рдкреНрд░рджрд╛рди рдХрд░рддреЛ. рд▓реЙрдЧрд┐рдВрдЧ рдкреВрд░реНрдгрдкрдгреЗ рдЕрдХреНрд╖рдо рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ, рдкреНрд░рддрд┐-рдШрдЯрдХ рдЖрдзрд╛рд░рд╛рд╡рд░ рдХрд┐рдВрд╡рд╛ рдЬрд╛рдЧрддрд┐рдХ рд╕реНрддрд░рд╛рд╡рд░ рд╕рдХреНрд╖рдо рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ. рдпрд╛ рдЙрджреНрджреЗрд╢рд╛рд╕рд╛рдареА, рдорд╛рд╣рд┐рддреА рд╕рд╛рдордЧреНрд░реАрдЪреЗ рд╕рдорд╛рдпреЛрдЬреНрдп рд╕реНрддрд░ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддрд╛рдд. ns-3 рд▓реЙрдЧрд┐рдВрдЧ рдореЙрдбреНрдпреВрд▓ рддреБрдордЪреНрдпрд╛ рд╕рд┐рдореНрдпреБрд▓реЗрд╢рдирдордзреВрди рдЙрдкрдпреБрдХреНрдд рдорд╛рд╣рд┐рддреА рдорд┐рд│рд╡рдгреНрдпрд╛рдЪрд╛ рддреБрд▓рдиреЗрдиреЗ рд╕реЛрдкрд╛ рдорд╛рд░реНрдЧ рдкреНрд░рджрд╛рди рдХрд░рддреЗ.

рддреБрдореНрд╣рд╛рд▓рд╛ рд╣реЗ рд╕рдордЬрд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ рдХреА рдЖрдореНрд╣реА рддреБрдордЪреНрдпрд╛ рдореЙрдбреЗрд▓реНрд╕рдордзреВрди рдбреЗрдЯрд╛ рдХрд╛рдврдгреНрдпрд╛рд╕рд╛рдареА рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЙрджреНрджреЗрд╢ рдпрдВрддреНрд░рдгрд╛ - рдЯреНрд░реЗрд╕рд┐рдВрдЧ - рдкреНрд░рджрд╛рди рдХрд░рддреЛ, рдЬреЗ рд╕рд┐рдореНрдпреБрд▓реЗрд╢рдирд╕рд╛рдареА рдкрд╕рдВрддреАрдЪреЗ рдЖрдЙрдЯрдкреБрдЯ рдЕрд╕рд╛рд╡реЗ (рдЖрдордЪреНрдпрд╛ рдЯреНрд░реЗрд╕рд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдорд╡рд░реАрд▓ рдЕрдзрд┐рдХ рдорд╛рд╣рд┐рддреАрд╕рд╛рдареА, рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд╡рд┐рднрд╛рдЧ 5.3 рдкрд╣рд╛). рдбреАрдмрдЧрд┐рдВрдЧ рдорд╛рд╣рд┐рддреА, рдЗрд╢рд╛рд░реЗ, рддреНрд░реБрдЯреА рд╕рдВрджреЗрд╢, рдХрд┐рдВрд╡рд╛ рдХреЛрдгрддреНрдпрд╛рд╣реА рд╡реЗрд│реА рдЖрдкрд▓реНрдпрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдВрд╡рд╛ рдореЙрдбреЗрд▓реНрд╕рдордзреВрди рд╕рдВрджреЗрд╢ рджреНрд░реБрддрдкрдгреЗ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд▓реЙрдЧрд┐рдВрдЧ рд╣реА рдкреНрд░рд╛рдзрд╛рдиреНрдпреАрдХреГрдд рдкрджреНрдзрдд рдЕрд╕рд╛рд╡реА.

рд╕рдзреНрдпрд╛, рдкреНрд░рдгрд╛рд▓реА рдорд╛рд╣рд┐рддреА рд╕рд╛рдордЧреНрд░реАрдЪреНрдпрд╛ рд╡рд╛рдврддреНрдпрд╛ рдХреНрд░рдорд╛рдиреЗ рд▓реЙрдЧ рд╕рдВрджреЗрд╢рд╛рдВрдЪреЗ рд╕рд╛рдд рд╕реНрддрд░ (рдкреНрд░рдХрд╛рд░) рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ.

  • LOG_ERROR - рд▓реЙрдЧрд┐рдВрдЧ рддреНрд░реБрдЯреА рд╕рдВрджреЗрд╢ (рд╕рдВрдмрдВрдзрд┐рдд рдореЕрдХреНрд░реЛ: NS_LOG_ERROR);
  • LOG_WARN - рд▓реЙрдЧ рдЪреЗрддрд╛рд╡рдгреА рд╕рдВрджреЗрд╢ (рд╕рдВрдмрдВрдзрд┐рдд рдореЕрдХреНрд░реЛ: NS_LOG_WARN);
  • LOG_DEBUG - рддреБрд▓рдиреЗрдиреЗ рджреБрд░реНрдорд┐рд│ рд╡рд┐рд╢реЗрд╖ рдбреАрдмрдЧ рд╕рдВрджреЗрд╢ рд▓реЙрдЧ рдХрд░рд╛ (рд╕рдВрдмрдВрдзрд┐рдд рдореЕрдХреНрд░реЛ: NS_LOG_DEBUG);
  • LOG_INFO - рдкреНрд░реЛрдЧреНрд░рд╛рдордЪреНрдпрд╛ рдкреНрд░рдЧрддреАрдмрджреНрджрд▓ рдорд╛рд╣рд┐рддреА рд╕рдВрджреЗрд╢рд╛рдВрдЪреА рдиреЛрдВрджрдгреА (рд╕рдВрдмрдВрдзрд┐рдд рдореЕрдХреНрд░реЛ: NS_LOG_INFO);
  • LOG_FUNCTION - рдХреЙрд▓ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рдлрдВрдХреНрд╢рдирдЪреЗ рд╡рд░реНрдгрди рдХрд░рдгрд╛рд░реЗ рд▓реЙрдЧ рд╕рдВрджреЗрд╢ (рджреЛрди рд╕рдВрдмрдВрдзрд┐рдд рдореЕрдХреНрд░реЛ: NS_LOG_FUNCTION, рд╕рджрд╕реНрдп рдлрдВрдХреНрд╢рдиреНрд╕рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реЗрд▓реЗ, рдЖрдгрд┐ NS_LOG_FUNCTION_NOARGS, рд╕реНрдЯреЕрдЯрд┐рдХ рдлрдВрдХреНрд╢рдиреНрд╕рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реЗрд▓реЗ);
  • LOG_LOGIC - рдлрдВрдХреНрд╢рдирдордзреАрд▓ рддрд╛рд░реНрдХрд┐рдХ рдкреНрд░рд╡рд╛рд╣рд╛рдЪреЗ рд╡рд░реНрдгрди рдХрд░рдгрд╛рд░реЗ рд╕рдВрджреЗрд╢ рд▓реЙрдЧрд┐рдВрдЧ рдХрд░рдгреЗ (рд╕рдВрдмрдВрдзрд┐рдд рдореЕрдХреНрд░реЛ: NS_LOG_LOGIC);
  • LOG_ALL - рд╡рд░ рдирдореВрдж рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╕рд░реНрд╡ рдЧреЛрд╖реНрдЯреА рд▓реЙрдЧ рдХрд░рд╛ (рд╕рдВрдмрдВрдзрд┐рдд рдореЕрдХреНрд░реЛ рдирд╛рд╣реА).
    рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд░рд╛рд╕рд╛рдареА (LOG_TYPE) рдПрдХ LOG_LEVEL_TYPE рджреЗрдЦреАрд▓ рдЖрд╣реЗ рдЬреЛ рд╡рд╛рдкрд░рд▓реНрдпрд╛рд╕, рддреНрдпрд╛рдЪреНрдпрд╛ рд╕реНрд╡рддрдГрдЪреНрдпрд╛ рд╕реНрддрд░рд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд рд╡рд░реАрд▓ рд╕рд░реНрд╡ рд╕реНрддрд░рд╛рдВрдирд╛ рд▓реЙрдЧ рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЛ. (рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, LOG_ERROR рдЖрдгрд┐ LOG_LEVEL_ERROR, рдЖрдгрд┐ LOG_ALL рдЖрдгрд┐ LOG_LEVEL_ALL рдХрд╛рд░реНрдпрдХреНрд╖рдорддреЗрдиреЗ рд╕рдорддреБрд▓реНрдп рдЖрд╣реЗрдд.) рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, LOG_INFO рд╕рдХреНрд╖рдо рдХреЗрд▓реНрдпрд╛рдиреЗ рдХреЗрд╡рд│ NS_LOG_INFO рдореЕрдХреНрд░реЛрджреНрд╡рд╛рд░реЗ рдкреНрд░рджрд╛рди рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╕рдВрджреЗрд╢рд╛рдВрдирд╛ рдЕрдиреБрдорддреА рдорд┐рд│реЗрд▓, рддрд░ LOG_LEVEL рджреНрд╡рд╛рд░реЗ рдкреНрд░рджрд╛рди рдХреЗрд▓реЗрд▓реНрдпрд╛ LOG_LEVEL_рд╕рдВрджреЗрд╢рд╛рдВрдирд╛ рджреЗрдЦреАрд▓ рд╕рдХреНрд╖рдо рдХреЗрд▓реЗ рдЬрд╛рдИрд▓ _LOG_WARN рдЖрдгрд┐ NS_LOG_ERROR.

рдЖрдореНрд╣реА рдПрдХ рдмрд┐рдирд╢рд░реНрдд рд▓реЙрдЧрд┐рдВрдЧ рдореЕрдХреНрд░реЛ рджреЗрдЦреАрд▓ рдкреНрд░рджрд╛рди рдХрд░рддреЛ рдЬреЛ рдиреЗрд╣рдореА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рддреЛ, рд▓реЙрдЧрд┐рдВрдЧ рдкрд╛рддрд│реА рдХрд┐рдВрд╡рд╛ рдирд┐рд╡рдб рдШрдЯрдХрд╛рдХрдбреЗ рджреБрд░реНрд▓рдХреНрд╖ рдХрд░реВрди.

  • NS_LOG_UNCOND - рд╕рдВрдмрдВрдзрд┐рдд рд╕рдВрджреЗрд╢рд╛рдЪреЗ рдмрд┐рдирд╢рд░реНрдд рд▓реЙрдЧрд┐рдВрдЧ (рд╕рдВрдмрдВрдзрд┐рдд рд▓реЙрдЧрд┐рдВрдЧ рд╕реНрддрд░ рдирд╛рд╣реА).

рдкреНрд░рддреНрдпреЗрдХ рд╕реНрддрд░ рд╕реНрд╡рддрдВрддреНрд░рдкрдгреЗ рдХрд┐рдВрд╡рд╛ рдПрдХрддреНрд░рд┐рддрдкрдгреЗ рд╡рд┐рдЪрд╛рд░рд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ. рд▓реЙрдЧрд┐рдВрдЧ sh рдкрд░реНрдпрд╛рд╡рд░рдг рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ NS_LOG рд╡рд╛рдкрд░реВрди рдХрд┐рдВрд╡рд╛ рд╕рд┐рд╕реНрдЯрдо рдлрдВрдХреНрд╢рди рдХреЙрд▓ рд▓реЙрдЧ рдХрд░реВрди рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ. рдЖрдзреА рджрд╛рдЦрд╡рд▓реНрдпрд╛рдкреНрд░рдорд╛рдгреЗ, рд▓реЙрдЧрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯреАрдордордзреНрдпреЗ рдбреЙрдХреНрд╕рд┐рдЬрди рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдг рдЖрд╣реЗ рдЖрдгрд┐ рдЬрд░ рддреБрдордЪреНрдпрд╛рдХрдбреЗ рдЖрдзреАрдкрд╛рд╕реВрди рдирд╕реЗрд▓ рддрд░ рддреНрдпрд╛рдЪреЗ рдкреБрдирд░рд╛рд╡рд▓реЛрдХрди рдХрд░рдгреНрдпрд╛рдЪреА рд╣реА рдЪрд╛рдВрдЧрд▓реА рд╡реЗрд│ рдЖрд╣реЗ.

рдЖрддрд╛ рддреБрдореНрд╣реА рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдг рдЦреВрдк рддрдкрд╢реАрд▓рд╡рд╛рд░ рд╡рд╛рдЪрд▓реЗ рдЖрд╣реЗ, рдЪрд▓рд╛ рддреНрдпрд╛ рдЬреНрдЮрд╛рдирд╛рдЪрд╛ рдЙрдкрдпреЛрдЧ рдЙрджрд╛рд╣рд░рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯрдордзреВрди рдХрд╛рд╣реА рдордиреЛрд░рдВрдЬрдХ рдорд╛рд╣рд┐рддреА рдорд┐рд│рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА рдХрд░реВрдпрд╛. scratch/myfirst.ccрдЬреЗ рддреБрдореНрд╣реА рдЖрдзреАрдЪ рд╕рдВрдХрд▓рд┐рдд рдХреЗрд▓реЗ рдЖрд╣реЗ.

5.1.2 рд▓реЙрдЧрд┐рдВрдЧ рд╕рдХреНрд╖рдо рдХрд░рд╛

рдЖрдгрдЦреА рдХрд╛рд╣реА рд▓реЙрдЧ рд░рди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА NS_LOG рдПрдиреНрд╡реНрд╣рд╛рдпрд░реНрдирдореЗрдВрдЯ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рд╡рд╛рдкрд░реВ, рдкрдг рдкреНрд░рдердо, рдлрдХреНрдд рддреБрдордЪреЗ рдмреЗрдЕрд░рд┐рдВрдЧ рдорд┐рд│рд╡рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣реА рдЖрдзреА рдХреЗрд▓реНрдпрд╛рдкреНрд░рдорд╛рдгреЗ рд╢реЗрд╡рдЯрдЪреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд╛рд▓рд╡рд╛,

$ ./waf --run scratch/myfirst

рддреБрдореНрд╣рд╛рд▓рд╛ рдкрд╣рд┐рд▓реНрдпрд╛ ns-3 рдЙрджрд╛рд╣рд░рдг рдкреНрд░реЛрдЧреНрд░рд╛рдордордзреВрди рдкрд░рд┐рдЪрд┐рдд рдЖрдЙрдЯрдкреБрдЯ рджрд┐рд╕рд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ

$ Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build' 'build'
finished successfully (0.413s)
Sent 1024 bytes to 10.1.1.2
Received 1024 bytes from 10.1.1.1
Received 1024 bytes from 10.1.1.2

рдЕрд╕реЗ рджрд┐рд╕реВрди рдЖрд▓реЗ рдХреА рдЖрдкрдг рд╡рд░ рдкрд╛рд╣рд┐рд▓реЗрд▓реЗ "рдкрд╛рдард╡рд▓реЗрд▓реЗ" рдЖрдгрд┐ "рдорд┐рд│рд▓реЗрд▓реЗ" рд╕рдВрджреЗрд╢ рдкреНрд░рддреНрдпрдХреНрд╖рд╛рдд рдХрдбреВрди рд▓реЙрдЧ рдХреЗрд▓реЗрд▓реЗ рд╕рдВрджреЗрд╢ рдЖрд╣реЗрдд UdpEchoClientApplication ╨╕ UdpEchoServerApplication. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЖрдореНрд╣реА рдХреНрд▓рд╛рдпрдВрдЯ рдНрдкреНрд▓рд┐рдХреЗрд╢рдирд▓рд╛ NS_LOG рдкрд░реНрдпрд╛рд╡рд░рдг рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓рджреНрд╡рд╛рд░реЗ рд▓реЙрдЧрд┐рдВрдЧ рд╕реНрддрд░ рд╕реЗрдЯ рдХрд░реВрди рдЕрддрд┐рд░рд┐рдХреНрдд рдорд╛рд╣рд┐рддреА рдореБрджреНрд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕ рд╕рд╛рдВрдЧреВ рд╢рдХрддреЛ.

рдЖрддрд╛рдкрд╛рд╕реВрди, рдореА рдЕрд╕реЗ рдЧреГрд╣реАрдд рдзрд░рдгрд╛рд░ рдЖрд╣реЗ рдХреА рддреБрдореНрд╣реА sh-рд╕рд╛рд░рдЦреЗ рд╢реЗрд▓ рд╡рд╛рдкрд░рдд рдЖрд╣рд╛рдд рдЬреЗ "variable=value" рд╡рд╛рдХреНрдпрд░рдЪрдирд╛ рд╡рд╛рдкрд░рддреЗ. рдЬрд░ рддреБрдореНрд╣реА csh-рд╕рд╛рд░рдЦреЗ рд╢реЗрд▓ рд╡рд╛рдкрд░рдд рдЕрд╕рд╛рд▓, рддрд░ рддреБрдореНрд╣рд╛рд▓рд╛ рдорд╛рдЭреА рдЙрджрд╛рд╣рд░рдгреЗ рддреНрдпрд╛ рд╢реЗрд▓реНрд╕рд╕рд╛рдареА рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ "рд╕реЗрдЯреЗрдирд╡реНрд╣ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рд╡реНрд╣реЕрд▓реНрдпреВ" рд╕рд┐рдВрдЯреЕрдХреНрд╕рдордзреНрдпреЗ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░рд╛рд╡реА рд▓рд╛рдЧрддреАрд▓.

рд╕рдзреНрдпрд╛, UDP рдЗрдХреЛ рдХреНрд▓рд╛рдпрдВрдЯ рдНрдкреНрд▓рд┐рдХреЗрд╢рди рдЦрд╛рд▓реАрд▓ рдХреЛрдбрдЪреНрдпрд╛ рдУрд│реАрд▓рд╛ рдкреНрд░рддрд┐рд╕рд╛рдж рджреЗрддреЛ scratch/myfirst.cc,

LogComponentEnable("UdpEchoClientApplication", LOG_LEVEL_INFO);

рд╣реЗ рд▓реЙрдЧрд┐рдВрдЧ рд╕реНрддрд░ LOG_LEVEL_INFO рд╕рдХреНрд╖рдо рдХрд░рддреЗ. рдЬреЗрд╡реНрд╣рд╛ рдЖрдореНрд╣реА рд▓реЙрдЧрд┐рдВрдЧ рд╕реНрддрд░ рдзреНрд╡рдЬ рдкрд╛рд╕ рдХрд░рддреЛ, рддреЗрд╡реНрд╣рд╛ рдЖрдореНрд╣реА рдкреНрд░рддреНрдпрдХреНрд╖рд╛рдд рддреЗ рд╕реНрддрд░ рдЖрдгрд┐ рд╕рд░реНрд╡ рдЦрд╛рд▓рдЪреНрдпрд╛ рд╕реНрддрд░рд╛рдВрдирд╛ рд╕рдХреНрд╖рдо рдХрд░рддреЛ. рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд, рдЖрдореНрд╣реА NS_LOG_INFO, NS_LOG_DEBUG, NS_LOG_WARN рдЖрдгрд┐ NS_LOG_ERROR рд╕рдХреНрд╖рдо рдХреЗрд▓реЗ рдЖрд╣реЗрдд. рдЖрдореНрд╣реА рдЦрд╛рд▓реАрд▓рдкреНрд░рдорд╛рдгреЗ NS_LOG рдкрд░реНрдпрд╛рд╡рд░рдг рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рд╕реЗрдЯ рдХрд░реВрди, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрджрд▓ рдЖрдгрд┐ рдкреБрдирд░реНрд╕рдВрдХрд▓рди рди рдХрд░рддрд╛ рд▓реЙрдЧрд┐рдВрдЧ рдкрд╛рддрд│реА рд╡рд╛рдврд╡реВ рд╢рдХрддреЛ рдЖрдгрд┐ рдЕрдзрд┐рдХ рдорд╛рд╣рд┐рддреА рдорд┐рд│рд╡реВ рд╢рдХрддреЛ:

$ export NS_LOG=UdpEchoClientApplication=level_all

рдореНрд╣рдгреВрди рдЖрдореНрд╣реА sh shell рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ NS_LOG рдЦрд╛рд▓реАрд▓ рдореВрд▓реНрдпрд╛рд╡рд░ рд╕реЗрдЯ рдХрд░рддреЛ,

UdpEchoClientApplication=level_all

рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯрдЪреНрдпрд╛ рдбрд╛рд╡реНрдпрд╛ рдмрд╛рдЬреВрд▓рд╛ рдЖрдореНрд╣реА рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░реВ рдЗрдЪреНрдЫрд┐рдд рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рд▓реЙрдЧ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдШрдЯрдХрд╛рдЪреЗ рдирд╛рд╡ рдЖрд╣реЗ рдЖрдгрд┐ рдЙрдЬрд╡реНрдпрд╛ рдмрд╛рдЬреВрд▓рд╛ рдЖрдореНрд╣реА рддреНрдпрд╛рд╕рд╛рдареА рдЕрд░реНрдЬ рдХрд░реВ рдЗрдЪреНрдЫрд┐рдд рдЕрд╕рд▓реЗрд▓рд╛ рдзреНрд╡рдЬ рдЖрд╣реЗ. рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд, рдЖрдореНрд╣реА рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рддреАрд▓ рдбреАрдмрдЧрд┐рдВрдЧрдЪреЗ рд╕рд░реНрд╡ рд╕реНрддрд░ рд╕рдХреНрд╖рдо рдХрд░рдгрд╛рд░ рдЖрд╣реЛрдд. рдЬрд░ рддреБрдореНрд╣реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ NS_LOG рд╕реЗрдЯрд╕рд╣ рдЕрд╢рд╛ рдкреНрд░рдХрд╛рд░реЗ рдЪрд╛рд▓рд╡рд▓реНрдпрд╛рд╕, ns-3 рд▓реЙрдЧрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдмрджрд▓ рд╕реНрд╡реАрдХрд╛рд░реЗрд▓ рдЖрдгрд┐ рддреБрдореНрд╣рд╛рд▓рд╛ рдЦрд╛рд▓реАрд▓ рдЖрдЙрдЯрдкреБрдЯ рджрд┐рд╕реЗрд▓:

Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
'build' finished successfully (0.404s)
UdpEchoClientApplication:UdpEchoClient()
UdpEchoClientApplication:SetDataSize(1024)
UdpEchoClientApplication:StartApplication()
UdpEchoClientApplication:ScheduleTransmit()
UdpEchoClientApplication:Send()
Sent 1024 bytes to 10.1.1.2
Received 1024 bytes from 10.1.1.1
UdpEchoClientApplication:HandleRead(0x6241e0, 0x624a20)
Received 1024 bytes from 10.1.1.2
UdpEchoClientApplication:StopApplication()
UdpEchoClientApplication:DoDispose()
UdpEchoClientApplication:~UdpEchoClient()

рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рджреНрд╡рд╛рд░реЗ рдкреНрд░рджрд╛рди рдХреЗрд▓реЗрд▓реА рдЕрддрд┐рд░рд┐рдХреНрдд рдбреАрдмрдЧрд┐рдВрдЧ рдорд╛рд╣рд┐рддреА рдЖрддрд╛ NS_LOG_FUNCTION рд╕реНрддрд░рд╛рд╡рд░ рдЖрд╣реЗ. рд╣реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯрдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрджрд░рдореНрдпрд╛рди рдлрдВрдХреНрд╢рди рдХреЙрд▓рдЪреЗ рдкреНрд░рддреНрдпреЗрдХ рдЙрджрд╛рд╣рд░рдг рджрд░реНрд╢рд╡рд┐рддреЗ. рд╕рд╛рдорд╛рдиреНрдп рдирд┐рдпрдо рдореНрд╣рдгреВрди, рдкрджреНрдзрддреА рдлрдВрдХреНрд╢рдиреНрд╕рдордзреНрдпреЗ рддреЗ рд╡рд╛рдкрд░рдгреЗ рд╢реНрд░реЗрдпрд╕реНрдХрд░ рдЖрд╣реЗ (рдХрд┐рдорд╛рди)NS_LOG_FUNCTION (this)... рд╡рд╛рдкрд░рд╛ NS_LOG_FUNCTION_NOARGS ()
рдлрдХреНрдд рд╕реНрдерд┐рд░ рдлрдВрдХреНрд╢рдиреНрд╕рдордзреНрдпреЗ. рддрдерд╛рдкрд┐, рд▓рдХреНрд╖рд╛рдд рдШреНрдпрд╛ рдХреА рдХреЛрдгрддреНрдпрд╛рд╣реА рд▓реЙрдЧрд┐рдВрдЧ рдХрд╛рд░реНрдпрдХреНрд╖рдорддреЗрд╕ рд╕рдорд░реНрдерди рджреЗрдгреНрдпрд╛рд╕рд╛рдареА ns-3 рдкреНрд░рдгрд╛рд▓реА рдЖрд╡рд╢реНрдпрдХ рдирд╛рд╣реА. рдХрд┐рддреА рдорд╛рд╣рд┐рддреА рд░реЗрдХреЙрд░реНрдб рдХрд░рд╛рдпрдЪреА рдпрд╛рдЪрд╛ рдирд┐рд░реНрдгрдп рд╡реИрдпрдХреНрддрд┐рдХ рдореЙрдбреЗрд▓ рдбреЗрд╡реНрд╣рд▓рдкрд░рд╡рд░ рд╕реЛрдбрд▓рд╛ рдЬрд╛рддреЛ. рдЗрдХреЛ рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕рдЪреНрдпрд╛ рдмрд╛рдмрддреАрдд, рдореЛрдареНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рдд рд▓реЙрдЧрд┐рдВрдЧ рдЖрдЙрдЯрдкреБрдЯ рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗ.

рддреБрдореНрд╣реА рдЖрддрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рджреНрд╡рд╛рд░реЗ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдлрдВрдХреНрд╢рди рдХреЙрд▓рдЪрд╛ рд▓реЙрдЧ рдкрд╛рд╣реВ рд╢рдХрддрд╛. рддреБрдореНрд╣реА рдмрд╛рд░рдХрд╛рдИрдиреЗ рдкрд╛рд╣рд┐рд▓реНрдпрд╛рд╕, рддреБрдореНрд╣рд╛рд▓рд╛ рд░реЗрд╖реЗрджрд░рдореНрдпрд╛рди рдПрдХ рдХреЛрд▓рди рджрд┐рд╕реЗрд▓ UdpEchoClientApplication рдЖрдгрд┐ рдкрджреНрдзрддреАрдЪреЗ рдирд╛рд╡, рдЬрд┐рдереЗ рддреБрдореНрд╣реА C++ рд╕реНрдХреЛрдк рдСрдкрд░реЗрдЯрд░ (: :) рдкрд╛рд╣рдгреНрдпрд╛рдЪреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░реВ рд╢рдХрддрд╛. рд╣реЗ рд╣реЗрддреБрдкреБрд░рд╕реНрд╕рд░ рдЖрд╣реЗ.

рд╣реЗ рдкреНрд░рддреНрдпрдХреНрд╖рд╛рдд рд╡рд░реНрдЧрд╛рдЪреЗ рдирд╛рд╡ рдирд╛рд╣реА рддрд░ рд▓реЙрдЧрд┐рдВрдЧ рдШрдЯрдХрд╛рдЪреЗ рдирд╛рд╡ рдЖрд╣реЗ. рдЬреЗрд╡реНрд╣рд╛ рд╕реНрддреНрд░реЛрдд рдлрд╛рдЗрд▓ рдЖрдгрд┐ рд╡рд░реНрдЧ рдпрд╛рдВрдЪреНрдпрд╛рдд рдЬреБрд│рддреЗ рддреЗрд╡реНрд╣рд╛ рддреЗ рд╕рд╣рд╕рд╛ рд╡рд░реНрдЧрд╛рдЪреЗ рдирд╛рд╡ рдЕрд╕рддреЗ, рдкрд░рдВрддреБ рддреБрдореНрд╣рд╛рд▓рд╛ рд╣реЗ рд╕рдордЬрд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ рдХреА рддреЗ рдкреНрд░рддреНрдпрдХреНрд╖рд╛рдд рд╡рд░реНрдЧрд╛рдЪреЗ рдирд╛рд╡ рдирд╛рд╣реА рдЖрдгрд┐ рджреБрд╣реЗрд░реА рдХреЛрд▓рдирдРрд╡рдЬреА рдПрдХрдЪ рдХреЛрд▓рди рдЖрд╣реЗ. рд▓реЙрдЧрд┐рдВрдЧ рдмреАрдирдЪреЗ рдирд╛рд╡ рдХреНрд▓рд╛рд╕рдЪреНрдпрд╛ рдирд╛рд╡рд╛рдкрд╛рд╕реВрди рддреБрд▓рдиреЗрдиреЗ рд╕реВрдХреНрд╖реНрдо рдкрджреНрдзрддреАрдиреЗ рд╡реЗрдЧрд│реЗ рдХрд░рдгреНрдпрд╛рдд рддреБрдореНрд╣рд╛рд▓рд╛ рдорджрдд рдХрд░рдгреНрдпрд╛рдЪрд╛ рд╣рд╛ рдПрдХ рдорд╛рд░реНрдЧ рдЖрд╣реЗ.

рддрдерд╛рдкрд┐, рдХрд╛рд╣реА рдкреНрд░рдХрд░рдгрд╛рдВрдордзреНрдпреЗ рд▓реЙрдЧ рд╕рдВрджреЗрд╢ рдкреНрд░рддреНрдпрдХреНрд╖рд╛рдд рдХреЛрдгрддреА рдкрджреНрдзрдд рдирд┐рд░реНрдорд╛рдг рдХрд░рдд рдЖрд╣реЗ рд╣реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдгреЗ рдХрдареАрдг рд╣реЛрдК рд╢рдХрддреЗ. рдЬрд░ рддреБрдореНрд╣реА рд╡рд░реАрд▓ рдордЬрдХреВрд░ рдкрд╛рд╣рд┐рд▓рд╛ рддрд░ рддреБрдореНрд╣рд╛рд▓рд╛ рдкреНрд░рд╢реНрди рдкрдбрд▓рд╛ рдЕрд╕реЗрд▓ рдХреА рд╣реА рдУрд│ рдХреБрдареЗ рдЖрд╣реЗReceived 1024 bytes from 10.1.1.2" рдЖрдкрдг рдкрд╛рддрд│реА рд╕реЗрдЯ рдХрд░реВрди рд╣реА рд╕рдорд╕реНрдпрд╛ рд╕реЛрдбрд╡реВ рд╢рдХрддрд╛ prefix_func NS_LOG рдкрд░реНрдпрд╛рд╡рд░рдг рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓рдордзреНрдпреЗ. рдкреБрдвреАрд▓ рдЧреЛрд╖реНрдЯреА рдХрд░реВрди рдкрд╣рд╛:

$ export 'NS_LOG=UdpEchoClientApplication=level_all|prefix_func'

рд▓рдХреНрд╖рд╛рдд рдШреНрдпрд╛ рдХреА рдЕрд╡рддрд░рдг рдЪрд┐рдиреНрд╣ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗрдд рдХрд╛рд░рдг рдЖрдореНрд╣реА OR рдСрдкрд░реЗрд╢рдирдЪреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рдд рдЕрд╕рд▓реЗрд▓реА рдЕрдиреБрд▓рдВрдм рдкрдЯреНрдЯреА рджреЗрдЦреАрд▓ рдПрдХ рдпреБрдирд┐рдХреНрд╕ рдкрд╛рдИрдк рдХрдиреЗрдХреНрдЯрд░ рдЖрд╣реЗ. рдЖрддрд╛ рддреБрдореНрд╣реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд╛рд▓рд╡рд▓реНрдпрд╛рд╕, рддреБрдореНрд╣рд╛рд▓рд╛ рджрд┐рд╕реЗрд▓ рдХреА рд▓реЙрдЧрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд╣реЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рдХреА рджрд┐рд▓реЗрд▓реНрдпрд╛ рд▓реЙрдЧрдордзреАрд▓ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрджреЗрд╢ рдШрдЯрдХрд╛рдЪреНрдпрд╛ рдирд╛рд╡рд╛рд╕рд╣ рдкреНрд░реАрдлрд┐рдХреНрд╕ рдХреЗрд▓реЗрд▓рд╛ рдЖрд╣реЗ.

Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
'build' finished successfully (0.417s)
UdpEchoClientApplication:UdpEchoClient()
UdpEchoClientApplication:SetDataSize(1024)
UdpEchoClientApplication:StartApplication()
UdpEchoClientApplication:ScheduleTransmit()
UdpEchoClientApplication:Send()
UdpEchoClientApplication:Send(): Sent 1024 bytes to 10.1.1.2
Received 1024 bytes from 10.1.1.1
UdpEchoClientApplication:HandleRead(0x6241e0, 0x624a20)
UdpEchoClientApplication:HandleRead(): Received 1024 bytes from 10.1.1.2
UdpEchoClientApplication:StopApplication()
UdpEchoClientApplication:DoDispose()
UdpEchoClientApplication:~UdpEchoClient()

рдЖрддрд╛ рддреБрдореНрд╣реА рдкрд╛рд╣реВ рд╢рдХрддрд╛ рдХреА UDP рдЗрдХреЛ рдХреНрд▓рд╛рдпрдВрдЯ рдНрдкреНрд▓рд┐рдХреЗрд╢рди рдордзреВрди рдпреЗрдгрд╛рд░реЗ рд╕рд░реНрд╡ рд╕рдВрджреЗрд╢ рдЬрд╕реЗ рдУрд│рдЦрд▓реЗ рдЬрд╛рддрд╛рдд. рд╕рдВрджреЗрд╢ "Received 1024 bytes from 10.1.1.2" рдЖрддрд╛ рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рдЗрдХреЛ рдХреНрд▓рд╛рдпрдВрдЯ рдНрдкреНрд▓рд┐рдХреЗрд╢рдирдордзреВрди рдпреЗрдд рдЕрд╕рд▓реНрдпрд╛рдЪреЗ рдУрд│рдЦрд▓реЗ рдЬрд╛рддреЗ. рдЙрд░реНрд╡рд░рд┐рдд рд╕рдВрджреЗрд╢ UDP рдЗрдХреЛ рд╕рд░реНрд╡реНрд╣рд░ рдНрдкреНрд▓рд┐рдХреЗрд╢рдирдХрдбреВрди рдпреЗрдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. NS_LOG рдкрд░реНрдпрд╛рд╡рд░рдг рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓рдордзреАрд▓ рдШрдЯрдХрд╛рдВрдЪреА рдХреЛрд▓рди-рд╡рд┐рднрдХреНрдд рд╕реВрдЪреА рдкреНрд░рд╡рд┐рд╖реНрдЯ рдХрд░реВрди рдЖрдореНрд╣реА рд╣рд╛ рдШрдЯрдХ рд╕рдХреНрд╖рдо рдХрд░реВ рд╢рдХрддреЛ.

$ export 'NS_LOG=UdpEchoClientApplication=level_all|prefix_func:
               UdpEchoServerApplication=level_all|prefix_func'

рдЪреЗрддрд╛рд╡рдгреА: рд╡рд░реАрд▓ рдЙрджрд╛рд╣рд░рдгрд╛рддреАрд▓ рдордЬрдХреБрд░рд╛рдд, рддреБрдореНрд╣рд╛рд▓рд╛ рдХреЛрд▓рди (:) рдирдВрддрд░рдЪреЗ рдирд╡реАрди рдЕрдХреНрд╖рд░ рдХрд╛рдврд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓, рддреЗ рджрд╕реНрддрдРрд╡рдЬрд╛рдЪреЗ рд╕реНрд╡рд░реВрдкрди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддреЗ. рдЖрддрд╛ рддреБрдореНрд╣реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд╛рд▓рд╡рд▓реНрдпрд╛рд╕, рддреБрдореНрд╣рд╛рд▓рд╛ рдХреНрд▓рд╛рдпрдВрдЯ рдЖрдгрд┐ рд╕рд░реНрд╡реНрд╣рд░ рдЗрдХреЛ ре▓рдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕рдЪреЗ рд╕рд░реНрд╡ рд▓реЙрдЧ рд╕рдВрджреЗрд╢ рджрд┐рд╕рддреАрд▓. рдЖрдкрдг рдкрд╛рд╣реВ рд╢рдХрддрд╛ рдХреА рдбреАрдмрдЧ рдХрд░рддрд╛рдирд╛ рд╣реЗ рдЦреВрдк рдЙрдкрдпреБрдХреНрдд рдЕрд╕реВ рд╢рдХрддреЗ.

Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
'build' finished successfully (0.406s)
UdpEchoServerApplication:UdpEchoServer()
UdpEchoClientApplication:UdpEchoClient()
UdpEchoClientApplication:SetDataSize(1024)
UdpEchoServerApplication:StartApplication()
UdpEchoClientApplication:StartApplication()
UdpEchoClientApplication:ScheduleTransmit()
UdpEchoClientApplication:Send()
UdpEchoClientApplication:Send(): Sent 1024 bytes to 10.1.1.2
UdpEchoServerApplication:HandleRead(): Received 1024 bytes from 10.1.1.1
UdpEchoServerApplication:HandleRead(): Echoing packet
UdpEchoClientApplication:HandleRead(0x624920, 0x625160)
UdpEchoClientApplication:HandleRead(): Received 1024 bytes from 10.1.1.2
UdpEchoServerApplication:StopApplication()
UdpEchoClientApplication:StopApplication()
UdpEchoClientApplication:DoDispose()
UdpEchoServerApplication:DoDispose()
UdpEchoClientApplication:~UdpEchoClient()
UdpEchoServerApplication:~UdpEchoServer()

рд▓реЙрдЧ рдореЗрд╕реЗрдЬ рд╡реНрдпреБрддреНрдкрдиреНрди рдЭрд╛рд▓реЗрд▓рд╛ рд╕рд┐рдореНрдпреБрд▓реЗрд╢рди рд╡реЗрд│ рдкрд╛рд╣рдгреНрдпрд╛рд╕ рд╕рдХреНрд╖рдо рдЕрд╕рдгреЗ рджреЗрдЦреАрд▓ рдХрдзреАрдХрдзреА рдЙрдкрдпреБрдХреНрдд рдЕрд╕рддреЗ. рддреБрдореНрд╣реА OR рдмрд┐рдЯ рдЬреЛрдбреВрди рд╣реЗ рдХрд░реВ рд╢рдХрддрд╛ prefix_time:

$ export 'NS_LOG=UdpEchoClientApplication=level_all|prefix_func|prefix_time: UdpEchoServerApplication=level_all|prefix_func|prefix_time'

рдкреБрдиреНрд╣рд╛, рддреБрдореНрд╣рд╛рд▓рд╛ рд╡рд░реАрд▓ рдирд╡реАрди рд╡рд░реНрдг рдХрд╛рдврд╛рд╡рд╛ рд▓рд╛рдЧреЗрд▓. рддреБрдореНрд╣реА рдЖрддрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд╛рд▓рд╡рд▓реНрдпрд╛рд╕ рддреБрдореНрд╣рд╛рд▓рд╛ рдЦрд╛рд▓реАрд▓ рдЖрдЙрдЯрдкреБрдЯ рджрд┐рд╕реЗрд▓:

Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
'build' finished successfully (0.418s)
0s UdpEchoServerApplication:UdpEchoServer()
0s UdpEchoClientApplication:UdpEchoClient()
0s UdpEchoClientApplication:SetDataSize(1024)
1s UdpEchoServerApplication:StartApplication()
2s UdpEchoClientApplication:StartApplication()
2s UdpEchoClientApplication:ScheduleTransmit()
2s UdpEchoClientApplication:Send()
2s UdpEchoClientApplication:Send(): Sent 1024 bytes to 10.1.1.2
2.00369s UdpEchoServerApplication:HandleRead(): Received 1024 bytes from 10.1.1.1
2.00369s UdpEchoServerApplication:HandleRead(): Echoing packet
2.00737s UdpEchoClientApplication:HandleRead(0x624290, 0x624ad0)
2.00737s UdpEchoClientApplication:HandleRead(): Received 1024 bytes from 10.1.1.2
10s UdpEchoServerApplication:StopApplication()
10s UdpEchoClientApplication:StopApplication()
UdpEchoClientApplication:DoDispose()
UdpEchoServerApplication:DoDispose()
UdpEchoClientApplication:~UdpEchoClient()
UdpEchoServerApplication:~UdpEchoServer()

рдХреГрдкрдпрд╛ рд▓рдХреНрд╖рд╛рдд рдШреНрдпрд╛ рдХреА рдХрдиреНрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╕рд╛рдареА UdpEchoServer рд╕рд┐рдореНрдпреБрд▓реЗрд╢рди 0 рд╕реЗрдХрдВрдж рджрд░рдореНрдпрд╛рди рдХреЙрд▓ рдХреЗрд▓рд╛ рдЧреЗрд▓рд╛. рд╕рд┐рдореНрдпреБрд▓реЗрд╢рди рд╕реБрд░реВ рд╣реЛрдгреНрдпрд╛рдкреВрд░реНрд╡реА рд╣реЗ рдкреНрд░рддреНрдпрдХреНрд╖рд╛рдд рдШрдбрддреЗ, рдкрд░рдВрддреБ рд╡реЗрд│ рд╢реВрдиреНрдп рд╕реЗрдХрдВрдж рдореНрд╣рдгреВрди рджрд░реНрд╢рд╡рд┐рд▓рд╛ рдЬрд╛рддреЛ. рдХрдиреНрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╕рдВрджреЗрд╢рд╛рд╕рд╛рдареА рд╣реЗрдЪ рдЦрд░реЗ рдЖрд╣реЗ UdpEchoClient.

Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
'build' finished successfully (0.418s)
0s UdpEchoServerApplication:UdpEchoServer()
0s UdpEchoClientApplication:UdpEchoClient()
0s UdpEchoClientApplication:SetDataSize(1024)
1s UdpEchoServerApplication:StartApplication()
2s UdpEchoClientApplication:StartApplication()
2s UdpEchoClientApplication:ScheduleTransmit()
2s UdpEchoClientApplication:Send()
2s UdpEchoClientApplication:Send(): Sent 1024 bytes to 10.1.1.2
2.00369s UdpEchoServerApplication:HandleRead(): Received 1024 bytes from 10.1.1.1
2.00369s UdpEchoServerApplication:HandleRead(): Echoing packet
2.00737s UdpEchoClientApplication:HandleRead(0x624290, 0x624ad0)
2.00737s UdpEchoClientApplication:HandleRead(): Received 1024 bytes from 10.1.1.2
10s UdpEchoServerApplication:StopApplication()
10s UdpEchoClientApplication:StopApplication()
UdpEchoClientApplication:DoDispose()
UdpEchoServerApplication:DoDispose()
UdpEchoClientApplication:~UdpEchoClient()
UdpEchoServerApplication:~UdpEchoServer()

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдард╡рддреЗ scratch/first.cc рд╕рд┐рдореНрдпреБрд▓реЗрд╢рди рд╕реБрд░реВ рд╣реЛрдгреНрдпрд╛рдЪреНрдпрд╛ рдПрдХ рд╕реЗрдХрдВрдж рдЖрдзреА рдЗрдХреЛ рд╕рд░реНрд╡реНрд╣рд░ рдНрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реБрд░реВ рдХреЗрд▓реЗ. рдЖрддрд╛ рддреБрдореНрд╣реА рддреА рдкрджреНрдзрдд рдкрд╛рд╣реВ рд╢рдХрддрд╛ рд╕реНрдЯрд╛рд░реНрдЯ рдНрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрд╡реНрд╣рд░рд▓рд╛ рдкреНрд░рддреНрдпрдХреНрд╖рд╛рдд рдкрд╣рд┐рд▓реНрдпрд╛ рд╕реЗрдХрдВрджрд╛рдд рдХреЙрд▓ рдХреЗрд▓рд╛ рдЬрд╛рддреЛ. рдЖрдкрдг рд╕реНрдХреНрд░рд┐рдкреНрдЯрдордзреНрдпреЗ рд╡рд┐рдЪрд╛рд░рд▓реНрдпрд╛рдкреНрд░рдорд╛рдгреЗ, рдЗрдХреЛ рдХреНрд▓рд╛рдпрдВрдЯ рд╕рд┐рдореНрдпреБрд▓реЗрд╢рдирдЪреНрдпрд╛ рджреБрд╕рд▒реНрдпрд╛ рд╕реЗрдХрдВрджрд╛рдд рд╕реБрд░реВ рд╣реЛрддреЗ рд╣реЗ рджреЗрдЦреАрд▓ рд▓рдХреНрд╖рд╛рдд рдпреЗрдИрд▓.

рддреБрдореНрд╣реА рдЖрддрд╛ рдХреЙрд▓рд╡рд░ рд╕рд┐рдореНрдпреБрд▓реЗрд╢рди рдкреНрд░рдЧрддреА рдлреЙрд▓реЛ рдХрд░реВ рд╢рдХрддрд╛ рд╢реЗрдбреНрдпреВрд▓ рдЯреНрд░рд╛рдиреНрд╕рдорд┐рдЯ рд╣рдБрдбрд▓рд░реАрдб рдХреЙрд▓рдмреЕрдХ рдХреЙрд▓ рдХрд░рдгрд╛рд▒реНрдпрд╛ рдХреНрд▓рд╛рдпрдВрдЯрдордзреНрдпреЗ рдЗрдХреЛ рд╕рд░реНрд╡реНрд╣рд░ рдНрдкреНрд▓рд┐рдХреЗрд╢рдирдордзреНрдпреЗ рдкрд╛рдард╡рд╛. рд▓рдХреНрд╖рд╛рдд рдШреНрдпрд╛ рдХреА рдкреЙрдЗрдВрдЯ-рдЯреВ-рдкреЙрдЗрдВрдЯ рд▓рд┐рдВрдХрд╡рд░ рдкреЕрдХреЗрдЯ рдкрд╛рдард╡рдгреНрдпрд╛рд╕рд╛рдареА рдЧреЗрд▓реЗрд▓реА рд╡реЗрд│ 3,69 рдорд┐рд▓реАрд╕реЗрдХрдВрдж рдЖрд╣реЗ. рддреБрдореНрд╣реА рдкрд╛рд╣реВ рд╢рдХрддрд╛ рдХреА рдЗрдХреЛ рд╕рд░реНрд╡реНрд╣рд░рдиреЗ рдкреЕрдХреЗрдЯрд▓рд╛ рдкреНрд░рддрд┐рд╕рд╛рдж рджрд┐рд▓реЗрд▓рд╛ рд╕рдВрджреЗрд╢ рд▓реЙрдЧ рдХреЗрд▓рд╛ рдЖрд╣реЗ, рдЖрдгрд┐ рдирдВрддрд░, рдЪреЕрдиреЗрд▓рдЪреНрдпрд╛ рд╡рд┐рд▓рдВрдмрд╛рдирдВрддрд░, рддреБрдореНрд╣рд╛рд▓рд╛ рджрд┐рд╕реЗрд▓ рдХреА рдЗрдХреЛ рдХреНрд▓рд╛рдпрдВрдЯрд▓рд╛ рддреНрдпрд╛рдЪреНрдпрд╛ рд╣рдБрдбрд▓рд░реАрдб рдкрджреНрдзрддреАрдиреЗ рдЗрдХреЛ рдкреЕрдХреЗрдЯ рдорд┐рд│рддреЗ.

рдпрд╛ рд╕рд┐рдореНрдпреБрд▓реЗрд╢рдирдордзреНрдпреЗ, рдЖрдкрдг рд▓рдХреНрд╖рд╛рдд рди рдШреЗрддрд╛ рдмрд░реЗрдЪ рдХрд╛рд╣реА рдШрдбрддреЗ. рдкрд░рдВрддреБ рдЖрдкрдг рд╕рд┐рд╕реНрдЯрдордордзреАрд▓ рд╕рд░реНрд╡ рд▓реЙрдЧрд┐рдВрдЧ рдШрдЯрдХ рд╕рдХреНрд╖рдо рдХрд░реВрди рд╕рдВрдкреВрд░реНрдг рдкреНрд░рдХреНрд░рд┐рдпреЗрдЪрд╛ рдЕрдЧрджреА рд╕рд╣рдЬрдкрдгреЗ рдорд╛рдЧреЛрд╡рд╛ рдШреЗрдК рд╢рдХрддрд╛. NS_LOG рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рдЦрд╛рд▓реАрд▓ рдореВрд▓реНрдпрд╛рд╡рд░ рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рд╛,

$ export 'NS_LOG=*=level_all|prefix_func|prefix_time'

рд╡рд░реАрд▓ рддрд╛рд░рд╛рдВрдХрди рд▓реЙрдЧрд┐рдВрдЧ рдШрдЯрдХрд╛рд╕рд╛рдареА рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рд╡рд░реНрдг рдЖрд╣реЗ. рдпрд╛рдордзреНрдпреЗ рд╕рд┐рдореНрдпреБрд▓реЗрд╢рдирдордзреНрдпреЗ рд╡рд╛рдкрд░рд▓реЗрд▓реНрдпрд╛ рд╕рд░реНрд╡ рдШрдЯрдХрд╛рдВрдордзреАрд▓ рд╕рд░реНрд╡ рдиреЛрдВрджреА рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЕрд╕рддреАрд▓. рдореА рдпреЗрдереЗ рдЖрдЙрдЯрдкреБрдЯ рдкреБрдирд░реБрддреНрдкрд╛рджрд┐рдд рдХрд░рдгрд╛рд░ рдирд╛рд╣реА (рд▓рд┐рд╣рд┐рдгреНрдпрд╛рдЪреНрдпрд╛ рд╡реЗрд│реА рддреЗ рдПрдХрд╛ рдЗрдХреЛ рдкреЕрдХреЗрдЯрд╕рд╛рдареА рдЖрдЙрдЯрдкреБрдЯрдЪреНрдпрд╛ 1265 рдУрд│реА рддрдпрд╛рд░ рдХрд░рддреЗ), рдкрд░рдВрддреБ рддреБрдореНрд╣реА рд╣реА рдорд╛рд╣рд┐рддреА рдлрд╛рдЗрд▓рд╡рд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░реВ рд╢рдХрддрд╛ рдЖрдгрд┐ рддреБрдордЪреНрдпрд╛ рдЖрд╡рдбрддреНрдпрд╛ рд╕рдВрдкрд╛рджрдХрд╛рдордзреНрдпреЗ рдкрд╛рд╣реВ рд╢рдХрддрд╛.

$ ./waf --run scratch/myfirst > log.out 2>&1

рдЬреЗрд╡реНрд╣рд╛ рдорд▓рд╛ рд╕рдорд╕реНрдпрд╛ рдпреЗрддреЗ рдЖрдгрд┐ рдЧреЛрд╖реНрдЯреА рдХреБрдареЗ рдЪреБрдХрд▓реНрдпрд╛ рдЖрд╣реЗрдд рдпрд╛рдЪреА рдорд▓рд╛ рдХрд▓реНрдкрдирд╛ рдирд╕рддреЗ рддреЗрд╡реНрд╣рд╛ рдореА рд▓реЙрдЧрд┐рдВрдЧрдЪреА рд╣реА рдЕрддреНрдпрдВрдд рд╢рдмреНрджрд╢рдГ рдЖрд╡реГрддреНрддреА рд╡реИрдпрдХреНрддрд┐рдХрд░рд┐рддреНрдпрд╛ рд╡рд╛рдкрд░рддреЛ. рдореА рдмреНрд░реЗрдХрдкреЙрдИрдВрдЯ рд╕реЗрдЯ рди рдХрд░рддрд╛ рдЖрдгрд┐ рдбреАрдмрдЧрд░рдордзреАрд▓ рдХреЛрдбрдЪреНрдпрд╛ рдорд╛рдзреНрдпрдорд╛рддреВрди рд╕реНрдЯреЗрдк рди рдХрд░рддрд╛ рдХреЛрдб рдПрдХреНрдЭрд┐рдХреНрдпреВрд╢рди рдЕрдЧрджреА рд╕рд╣рдЬрдкрдгреЗ рдлреЙрд▓реЛ рдХрд░реВ рд╢рдХрддреЛ. рдореА рдлрдХреНрдд рдорд╛рдЭреНрдпрд╛ рдЖрд╡рдбрддреНрдпрд╛ рд╕рдВрдкрд╛рджрдХрд╛рдд рдЖрдЙрдЯрдкреБрдЯ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реВ рд╢рдХрддреЛ рдЖрдгрд┐ рдорд▓рд╛ рдХрд╛рдп рдЕрдкреЗрдХреНрд╖рд┐рдд рдЖрд╣реЗ рддреЗ рд╢реЛрдзреВ рд╢рдХрддреЛ рдЖрдгрд┐ рдорд▓рд╛ рдЕрдкреЗрдХреНрд╖рд┐рдд рдирд╕рд▓реЗрд▓реЗ рдХрд╛рд╣реАрддрд░реА рдШрдбрддрд╛рдирд╛ рджрд┐рд╕рдд рдЖрд╣реЗ. рдПрдХрджрд╛ рдорд▓рд╛ рдХрд╛рдп рдЪреВрдХ рд╣реЛрдд рдЖрд╣реЗ рдпрд╛рдЪреА рд╕рд╛рдорд╛рдиреНрдп рдХрд▓реНрдкрдирд╛ рдЖрд▓реА рдХреА, рдореА рд╕рдорд╕реНрдпреЗрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдбреАрдмрдЧрд░рдордзреНрдпреЗ рдЙрдбреА рдорд╛рд░рддреЛ. рдЬреЗрд╡реНрд╣рд╛ рддреБрдордЪреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреВрд░реНрдгрдкрдгреЗ рдЕрдирдкреЗрдХреНрд╖рд┐рдд рдХрд╛рд╣реАрддрд░реА рдХрд░рддреЗ рддреЗрд╡реНрд╣рд╛ рдпрд╛ рдкреНрд░рдХрд╛рд░рдЪреЗ рдЖрдЙрдЯрдкреБрдЯ рд╡рд┐рд╢реЗрд╖рддрдГ рдЙрдкрдпреБрдХреНрдд рдард░реВ рд╢рдХрддреЗ. рдЬрд░ рддреБрдореНрд╣реА рдлрдХреНрдд рдбреАрдмрдЧрд░ рд╡рд╛рдкрд░рдд рдЕрд╕рд╛рд▓, рддрд░ рддреБрдореНрд╣реА рдкреВрд░реНрдгрдкрдгреЗ рдЯреНрд╡рд┐рд╕реНрдЯ рдЪреБрдХрд╡реВ рд╢рдХрддрд╛. рдиреЛрдВрджрдгреАрдореБрд│реЗ рдЕрд╢реА рд╡рд│рдгреЗ рд╕рд╣рдЬ рд▓рдХреНрд╖рд╛рдд рдпреЗрддрд╛рдд.

5.1.3 рддреБрдордЪреНрдпрд╛ рдХреЛрдбрдордзреНрдпреЗ рд▓реЙрдЧрд┐рдВрдЧ рдЬреЛрдбрдгреЗ

рдПрдХрд╛рдзрд┐рдХ рдореЕрдХреНрд░реЛрд╡рд░реВрди рд▓реЙрдЧ рдШрдЯрдХрд╛рд╡рд░ рдХреЙрд▓ рдХрд░реВрди рддреБрдореНрд╣реА рддреБрдордЪреНрдпрд╛ рд╕рд┐рдореНрдпреБрд▓реЗрд╢рдирдордзреНрдпреЗ рдирд╡реАрди рдиреЛрдВрджреА рдЬреЛрдбреВ рд╢рдХрддрд╛. рдЪрд▓рд╛ рддреЗ рдПрдХрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯрдордзреНрдпреЗ рдХрд░реВрдпрд╛ myfirst.cc, рдЬреА рдЖрдордЪреНрдпрд╛рдХрдбреЗ "рд╕реНрд╡рдЪреНрдЫ" рдирд┐рд░реНрджреЗрд╢рд┐рдХреЗрдд рдЖрд╣реЗ. рд▓рдХреНрд╖рд╛рдд рдареЗрд╡рд╛ рдХреА рдЖрдореНрд╣реА рдпрд╛ рдкрд░рд┐рд╕реНрдерд┐рддреАрдордзреНрдпреЗ рд▓реЙрдЧрд┐рдВрдЧ рдШрдЯрдХ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЗрд▓рд╛ рдЖрд╣реЗ:

NS_LOG_COMPONENT_DEFINE ("FirstScriptExample");

рддреБрдореНрд╣рд╛рд▓рд╛ рдорд╛рд╣рд┐рддреА рдЖрд╣реЗ рдХреА рддреБрдореНрд╣реА рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рд╕реНрддрд░рд╛рдВрд╡рд░ NS_LOG рдкрд░реНрдпрд╛рд╡рд░рдг рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рд╕реЗрдЯ рдХрд░реВрди рдпрд╛ рдШрдЯрдХрд╛рддреАрд▓ рд╕рд░реНрд╡ рд╕рдВрджреЗрд╢рд╛рдВрдЪреЗ рд▓реЙрдЧрд┐рдВрдЧ рд╕рдХреНрд╖рдо рдХрд░реВ рд╢рдХрддрд╛. рдЪрд▓рд╛ рдкреБрдвреЗ рдЬрд╛рдК рдЖрдгрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯрдордзреНрдпреЗ рдХрд╛рд╣реА рдиреЛрдВрджреА рдЬреЛрдбреВ. рд▓реЙрдЧрдордзреНрдпреЗ рдорд╛рд╣рд┐рддреА рд╕реНрддрд░ рд╕рдВрджреЗрд╢ рдЬреЛрдбрдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реЗрд▓рд╛ рдореЕрдХреНрд░реЛ NS_LOG_INFO рдЖрд╣реЗ. рдЪрд▓рд╛ рдПрдХ рд╕рдВрджреЗрд╢ рдЬреЛрдбреВрдпрд╛ (рдЖрдореНрд╣реА рдиреЛрдбреНрд╕ рддрдпрд╛рд░ рдХрд░рдгреЗ рд╕реБрд░реВ рдХрд░рдгреНрдпрд╛рдкреВрд░реНрд╡реА) рдЬреЛ рддреБрдореНрд╣рд╛рд▓рд╛ рд╕рд╛рдВрдЧреЗрд▓ рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ "рдЯреЛрдкреЛрд▓реЙрдЬреА рддрдпрд╛рд░ рдХрд░рдгреЗ" рдЯрдкреНрдкреНрдпрд╛рдд рдЖрд╣реЗ. рд╣реЗ рдЦрд╛рд▓реАрд▓ рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯрдордзреНрдпреЗ рдХреЗрд▓реЗ рдЖрд╣реЗ,
рдЙрдШрдбрд╛ scratch/myfirst.cc рддреБрдордЪреНрдпрд╛ рдЖрд╡рдбрддреНрдпрд╛ рд╕рдВрдкрд╛рджрдХрд╛рдд рдЖрдгрд┐ рдУрд│ рдЬреЛрдбрд╛,
NS_LOG_INFO ("Creating Topology");
рдУрд│реАрдВрдЪреНрдпрд╛ рдЕрдЧрджреА рдЖрдзреА,

NodeContainer nodes;
nodes.Create (2);

рдЖрддрд╛ рд╡рд╛рдкрд░реВрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрдХрд▓рд┐рдд рдХрд░рд╛ рд╡рд╛рдл, рдЖрдгрд┐ рдЖрдореНрд╣реА рдкреВрд░реНрд╡реА рд╕рдХреНрд╖рдо рдХреЗрд▓реЗрд▓рд╛ рд▓реЙрдЧрд┐рдВрдЧ рдкреНрд░рд╡рд╛рд╣ рдЕрдХреНрд╖рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА NS_LOG рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рд╕рд╛рдл рдХрд░рд╛:

$ ./waf
$ export NS_LOG=
╨в╨╡╨┐╨╡╤А╤М, ╨╡╤Б╨╗╨╕ ╨▓╤Л ╨╖╨░╨┐╤Г╤Б╤В╨╕╤В╨╡ ╤Б╨║╤А╨╕╨┐╤В,
$ ./waf --run scratch/myfirst

рддреБрдореНрд╣рд╛рд▓рд╛ рдирд╡реАрди рд╕рдВрджреЗрд╢ рджрд┐рд╕рдгрд╛рд░ рдирд╛рд╣реА рдХрд╛рд░рдг рд╕рдВрдмрдВрдзрд┐рдд рд▓реЙрдЧрд┐рдВрдЧ рдШрдЯрдХ (FirstScriptExample) рд╕рдХреНрд╖рдо рдХреЗрд▓реЗрд▓рд╛ рдирд╛рд╣реА. рддреБрдордЪрд╛ рд╕рдВрджреЗрд╢ рдкрд╛рд╣рдгреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣рд╛рд▓рд╛ рд▓реЙрдЧрд┐рдВрдЧ рдШрдЯрдХ рд╕рдХреНрд╖рдо рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдлрд░реНрд╕реНрдЯрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЙрджрд╛рд╣рд░рдг NS_LOG_INFO рдкреЗрдХреНрд╖рд╛ рдХрдореА рдирд╕рд▓реЗрд▓реНрдпрд╛ рдкрд╛рддрд│реАрд╕рд╣. рдЬрд░ рддреБрдореНрд╣рд╛рд▓рд╛ рд╣реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд▓реЙрдЧрд┐рдВрдЧ рдкрд╛рддрд│реА рдкрд╣рд╛рдпрдЪреА рдЕрд╕реЗрд▓, рддрд░ рддреБрдореНрд╣реА рддреЗ рдпрд╛рдкреНрд░рдорд╛рдгреЗ рд╕рдХреНрд╖рдо рдХрд░реВ рд╢рдХрддрд╛,

$ export NS_LOG=FirstScriptExample=info

рддреБрдореНрд╣реА рдЖрддреНрддрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд╛рд▓рд╡рд▓реНрдпрд╛рд╕, рддреБрдореНрд╣рд╛рд▓рд╛ тАЬCreating TopologyтАЭ рдЕрд╕рд╛ рдирд╡реАрди рд╕рдВрджреЗрд╢ рджрд┐рд╕реЗрд▓,

Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
'build' finished successfully (0.404s)
Creating Topology
Sent 1024 bytes to 10.1.1.2
Received 1024 bytes from 10.1.1.1
Received 1024 bytes from 10.1.1.2

5.2 рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╡рд┐рддрд░реНрдХ рд╡рд╛рдкрд░рдгреЗ

5.2.1 рдбреАрдлреЙрд▓реНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛ рдореВрд▓реНрдпреЗ рдУрд╡реНрд╣рд░рд░рд╛рдЗрдб рдХрд░рдгреЗ

ns-3 рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕рдЪреЗ рд╡рд░реНрддрди рд╕рдВрдкрд╛рджрд┐рдд рдХрд┐рдВрд╡рд╛ рддрдпрд╛рд░ рди рдХрд░рддрд╛ рдмрджрд▓рдгреНрдпрд╛рдЪрд╛ рджреБрд╕рд░рд╛ рдорд╛рд░реНрдЧ рдореНрд╣рдгрдЬреЗ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╡рд┐рддрд░реНрдХ рд╡рд╛рдкрд░рдгреЗ. рдЖрдореНрд╣реА рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╡рд┐рддрд░реНрдХ рдкрд╛рд░реНрд╕ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рдкрд░рд┐рдгрд╛рдорд╛рдВрд╡рд░ рдЖрдзрд╛рд░рд┐рдд рд╕реНрдерд╛рдирд┐рдХ рдЖрдгрд┐ рдЬрд╛рдЧрддрд┐рдХ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рддрдкрдгреЗ рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдПрдХ рдпрдВрддреНрд░рдгрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЛ.

рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯ рд╕рд┐рд╕реНрдЯрдо рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рдкрд╣рд┐рд▓реА рдкрд╛рдпрд░реА рдореНрд╣рдгрдЬреЗ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд╛рд░реНрд╕рд░ рдШреЛрд╖рд┐рдд рдХрд░рдгреЗ. рдЦрд╛рд▓реАрд▓ рдХреЛрдбрдкреНрд░рдорд╛рдгреЗ (рддреБрдордЪреНрдпрд╛ рдореБрдЦреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдордордзреНрдпреЗ) рд╣реЗ рдХрд░рдгреЗ рдЕрдЧрджреА рд╕реЛрдкреЗ рдЖрд╣реЗ,

int
main (int argc, char *argv[])
{
...
CommandLine cmd;
cmd.Parse (argc, argv);
...
}

рд╣реЗ рд╕рд╛рдзреЗ рджреЛрди-рдУрд│реАрдЪреЗ рд╕реНрдирд┐рдкреЗрдЯ рд╕реНрд╡рддрдГрдЪ рдЦреВрдк рдЙрдкрдпреБрдХреНрдд рдЖрд╣реЗ. рд╣реЗ ns-3 рдЧреНрд▓реЛрдмрд▓ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рдЖрдгрд┐ рд╡рд┐рд╢реЗрд╖рддрд╛ рдкреНрд░рдгрд╛рд▓реАрдЪреЗ рджрд░рд╡рд╛рдЬреЗ рдЙрдШрдбрддреЗ. рдореБрдЦреНрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрдВрдХреНрд╢рдирдЪреНрдпрд╛ рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛ рдХреЛрдбрдЪреНрдпрд╛ рджреЛрди рдУрд│реА рдЬреЛрдбреВ scratch/myfirst.cc. рдкреБрдвреЗ рдЬрд╛рдКрди, рдЖрдореНрд╣реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЛ рдЖрдгрд┐ рддреА рдЪрд╛рд▓рд╡рддреЛ, рд▓реЙрдиреНрдЪ рдЭрд╛рд▓реНрдпрд╛рд╡рд░ рдЖрдореНрд╣реА рдЦрд╛рд▓реАрд▓рдкреНрд░рдорд╛рдгреЗ рдорджрдд рд╡рд┐рдирдВрддреА рдХрд░рддреЛ,

$ ./waf --run "scratch/myfirst --PrintHelp"

рд╣рд╛ рдЖрджреЗрд╢ рд╡рд┐рдЪрд╛рд░реЗрд▓ рд╡рд╛рдл рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд╛рд▓рд╡рд╛ рд╕реНрдХреНрд░реЕрдЪ/рдорд╛рдпрдлрд░реНрд╕реНрдЯ рдЖрдгрд┐ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╡рд┐рддрд░реНрдХ рдкрд╛рд╕ рдХрд░рд╛ -рдореБрджреНрд░рд┐рдд рдорджрдд. рдпреБрдХреНрддрд┐рд╡рд╛рдж рдХреЛрдгрддреНрдпрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд╕рд╛рдареА рдЖрд╣реЗ рд╣реЗ рд╕реВрдЪрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЕрд╡рддрд░рдг рдЪрд┐рдиреНрд╣ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗрдд. рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд╛рд░реНрд╕рд░ рд╡рд┐рддрд░реНрдХ рд╢реЛрдзреЗрд▓ -рдореБрджреНрд░рд┐рдд рдорджрдд рдЖрдгрд┐ рдЙрддреНрддрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрд▓,

Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
'build' finished successfully (0.413s)
TcpL4Protocol:TcpStateMachine()
CommandLine:HandleArgument(): Handle arg name=PrintHelp value=
--PrintHelp: Print this help message.
--PrintGroups: Print the list of groups.
--PrintTypeIds: Print all TypeIds.
--PrintGroup=[group]: Print all TypeIds of group.
--PrintAttributes=[typeid]: Print all attributes of typeid.
--PrintGlobals: Print the list of globals.

рдЖрддрд╛ рдкрд░реНрдпрд╛рдп рдкрд╛рд╣реВ -рд╡рд┐рд╢реЗрд╖рддрд╛ рдЫрд╛рдкрдгреЗ. first.cc рд╕реНрдХреНрд░рд┐рдкреНрдЯрдЪрд╛ рдЕрднреНрдпрд╛рд╕ рдХрд░рддрд╛рдирд╛ рдЖрдореНрд╣реА ns-3 рд╡рд┐рд╢реЗрд╖рддрд╛ рдкреНрд░рдгрд╛рд▓реАрдЪрд╛ рдЙрд▓реНрд▓реЗрдЦ рдЖрдзреАрдЪ рдХреЗрд▓рд╛ рдЖрд╣реЗ. рдЖрдореНрд╣реА рдХреЛрдбрдЪреНрдпрд╛ рдЦрд╛рд▓реАрд▓ рдУрд│реА рдкрд╛рд╣рд┐рд▓реНрдпрд╛ рдЖрд╣реЗрдд,

PointToPointHelper pointToPoint;
pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));
pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms"));

рдЖрдгрд┐ рддреЗ рдореНрд╣рдгрд╛рд▓реЗ рдбреЗрдЯрд╛ рджрд░ рдкреНрд░рддреНрдпрдХреНрд╖рд╛рдд рдПрдХ рдЧреБрдгрдзрд░реНрдо рдЖрд╣реЗ PointToPointNetDevice. рд╡рд┐рд╢реЗрд╖рддрд╛ рдкрд╛рд╣рдгреНрдпрд╛рд╕рд╛рдареА рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯ рдкрд╛рд░реНрд╕рд░ рд╡рд╛рдкрд░реВ PointToPointNetDevice. рдорджрдд рдпрд╛рджреАрдордзреНрдпреЗ рдЖрдореНрд╣реА рдХрд╛рдп рдкреНрд░рджрд╛рди рдХреЗрд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ рддреЗ рд╕рд╛рдВрдЧрддреЗ TypeId. рд╣реЗ рддреНрдпрд╛ рд╡рд░реНрдЧрд╛рдЪреЗ рдирд╛рд╡ рдЖрд╣реЗ рдЬреНрдпрд╛рдордзреНрдпреЗ рд╕реНрд╡рд╛рд░рд╕реНрдпрд╛рдВрдЪреЗ рдЧреБрдгрдзрд░реНрдо рдЖрд╣реЗрдд. рдЖрдордЪреНрдпрд╛ рдмрд╛рдмрддреАрдд рддреЗ рд╣реЛрдИрд▓ ns3::PointToPointNetDevice. рдЪрд▓рд╛ рдкреБрдвреЗ рдЬрд╛рдКрдпрд╛, рдкреНрд░рд╡рд┐рд╖реНрдЯ рдХрд░реВрдпрд╛,

$ ./waf --run "scratch/myfirst --PrintAttributes=ns3::PointToPointNetDevice"

рд╕рд┐рд╕реНрдЯрдо рдпрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдЙрдкрдХрд░рдг рдкреНрд░рдХрд╛рд░рд╛рддреАрд▓ рд╕рд░реНрд╡ рдЧреБрдгрдзрд░реНрдо рдореБрджреНрд░рд┐рдд рдХрд░реЗрд▓. рддреБрдореНрд╣рд╛рд▓рд╛ рджрд┐рд╕реЗрд▓ рдХреА рд╕реВрдЪреАрддреАрд▓ рдЧреБрдгрдзрд░реНрдорд╛рдВрдкреИрдХреА рд╣реЗ рдЖрд╣реЗрдд,

--ns3::PointToPointNetDevice::DataRate=[32768bps]:
The default data rate for point to point links

рд╣реЗ рдбреАрдлреЙрд▓реНрдЯ рдореВрд▓реНрдп рдЖрд╣реЗ рдЬреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рддрдпрд╛рд░ рдХрд░рддрд╛рдирд╛ рд╕рд┐рд╕реНрдЯрдорджреНрд╡рд╛рд░реЗ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рдИрд▓ PointToPointNetDevice. рдЖрдореНрд╣реА рдкреЕрд░рд╛рдореАрдЯрд░ рд╡рд╛рдкрд░реВрди рд╣реЗ рдбреАрдлреЙрд▓реНрдЯ рдореВрд▓реНрдп рдУрд╡реНрд╣рд░рд░рд╛рдЗрдб рдХрд░реВ рд╡рд┐рд╢реЗрд╖рддрд╛ ╨▓ PointToPointHelper рдЙрдЪреНрдЪ. рдкреЙрдЗрдВрдЯ-рдЯреВ-рдкреЙрдЗрдВрдЯ рдбрд┐рд╡реНрд╣рд╛рдЗрд╕реЗрд╕ рдЖрдгрд┐ рдЪреЕрдиреЗрд▓рд╕рд╛рдареА рдбреАрдлреЙрд▓реНрдЯ рдореВрд▓реНрдпреЗ рд╡рд╛рдкрд░реВ. рд╣реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдореНрд╣реА рдХреЙрд▓ рд╣рдЯрд╡реВ SetDeviceAttribute ╨╕ SetChannelAttribute рдкрд╛рд╕реВрди myfirst.cc, рдЬреА рдЖрдордЪреНрдпрд╛рдХрдбреЗ рд╕реНрд╡рдЪреНрдЫ рдирд┐рд░реНрджреЗрд╢рд┐рдХреЗрдд рдЖрд╣реЗ.

рддреБрдордЪреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрддрд╛ рдлрдХреНрдд рдШреЛрд╖рд┐рдд рдХрд░рд╛рд╡реА PointToPointHelper рдЖрдгрд┐ рдЦрд╛рд▓реАрд▓ рдЙрджрд╛рд╣рд░рдгрд╛рдд рджрд╛рдЦрд╡рд▓реНрдпрд╛рдкреНрд░рдорд╛рдгреЗ рдХреЛрдгрддреЗрд╣реА рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдСрдкрд░реЗрд╢рди рдХрд░реВ рдирдХрд╛,

...
NodeContainer nodes;
nodes.Create (2);
PointToPointHelper pointToPoint;
NetDeviceContainer devices;
devices = pointToPoint.Install (nodes);
...

рдкреБрдвреЗ рдЬрд╛ рдЖрдгрд┐ рдПрдХ рдирд╡реАрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рддрдпрд╛рд░ рдХрд░рд╛ рд╡рд╛рдл (./waff) рдЖрдгрд┐ рдЪрд▓рд╛ рдкрд░рдд рдЬрд╛рдК рдЖрдгрд┐ UDP рдЗрдХреЛ рд╕рд░реНрд╡реНрд╣рд░ рдНрдкреНрд▓рд┐рдХреЗрд╢рдирдордзреАрд▓ рдХрд╛рд╣реА рдПрдВрдЯреНрд░реА рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХрд░реВ рдЖрдгрд┐ рд╡реЗрд│ рдЙрдкрд╕рд░реНрдЧ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХрд░реВ.

$ export 'NS_LOG=UdpEchoServerApplication=level_all|prefix_time'

рддреБрдореНрд╣реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд╛рд▓рд╡рд▓реНрдпрд╛рд╕ рддреБрдореНрд╣рд╛рд▓рд╛ рдЦрд╛рд▓реАрд▓ рдЖрдЙрдЯрдкреБрдЯ рджрд┐рд╕реЗрд▓:

Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
'build' finished successfully (0.405s)
0s UdpEchoServerApplication:UdpEchoServer()
1s UdpEchoServerApplication:StartApplication()
Sent 1024 bytes to 10.1.1.2
2.25732s Received 1024 bytes from 10.1.1.1
2.25732s Echoing packet
Received 1024 bytes from 10.1.1.2
10s UdpEchoServerApplication:StopApplication()
UdpEchoServerApplication:DoDispose()
UdpEchoServerApplication:~UdpEchoServer()

рдЖрдард╡рддреЗ рдХреА рдЖрдореНрд╣реА рд╢реЗрд╡рдЯрдЪреНрдпрд╛ рд╡реЗрд│реА рд╕рд┐рдореНрдпреБрд▓реЗрд╢рди рдЯрд╛рдЗрдо рдкрд╛рд╣рд┐рд▓рд╛ рд╣реЛрддрд╛, рдЬреНрдпрд╛ рдХреНрд╖рдгреА рдЗрдХреЛ рд╕рд░реНрд╡реНрд╣рд░рдиреЗ рдкреЕрдХреЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХреЗрд▓реЗ рд╣реЛрддреЗ, рддреЛ 2,00369 рд╕реЗрдХрдВрдж рд╣реЛрддрд╛.

2.00369s UdpEchoServerApplication:HandleRead(): Received 1024 bytes from 10.1.1.1

рдЖрддрд╛ рддреНрдпрд╛рд▓рд╛ 2.25732 рд╕реЗрдХрдВрджрд╛рдд рдкреЕрдХреЗрдЯ рдорд┐рд│рддреЗ. рдпрд╛рдЪреЗ рдХрд╛рд░рдг рдЕрд╕реЗ рдХреА рдЖрдореНрд╣реА PointToPointNetDevice рдбреЗрдЯрд╛ рджрд░ рдкрд╛рдЪ рдореЗрдЧрд╛рдмрд┐рдЯреНрд╕ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдж рд╡рд░реВрди рдбреАрдлреЙрд▓реНрдЯ рдореВрд▓реНрдпрд╛рд╡рд░ рд░реАрд╕реЗрдЯ рдХрд░рддреЛ, рдЬреЗ 32768 рдмрд┐рдЯреНрд╕ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдж рдЖрд╣реЗ. рдЬрд░ рдЖрдореНрд╣реА рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╡рд╛рдкрд░реВрди рдирд╡реАрди рдбреЗрдЯрд╛рд░реЗрдЯ рдмрджрд▓рдд рдЕрд╕реВ, рддрд░ рдЖрдореНрд╣реА рдЖрдордЪреНрдпрд╛ рд╕рд┐рдореНрдпреБрд▓реЗрд╢рдирд▓рд╛ рдкреБрдиреНрд╣рд╛ рдЧрддреА рджреЗрдК рд╢рдХрддреЛ. рд╣реЗрд▓реНрдк рдПрд▓рд┐рдореЗрдВрдЯрджреНрд╡рд╛рд░реЗ рдирд┐рд╣рд┐рдд рд╕реВрддреНрд░рд╛рдиреБрд╕рд╛рд░ рдЖрдореНрд╣реА рд╣реЗ рдЦрд╛рд▓реАрд▓рдкреНрд░рдорд╛рдгреЗ рдХрд░реВ:

$ ./waf --run "scratch/myfirst --ns3::PointToPointNetDevice::DataRate=5Mbps"

рд╣реЗ DataRate рд╡рд┐рд╢реЗрд╖рддрд╛ рддреНрдпрд╛рдЪреНрдпрд╛ рдбреАрдлреЙрд▓реНрдЯ рдореВрд▓реНрдпрд╛рд╡рд░ рдкрд╛рдЪ рдореЗрдЧрд╛рдмрд┐рдЯ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдж рдкрд░рдд рдХрд░реЗрд▓. рддреБрдореНрд╣рд╛рд▓рд╛ рдирд┐рдХрд╛рд▓рд╛рдиреЗ рдЖрд╢реНрдЪрд░реНрдп рд╡рд╛рдЯрддреЗ рдХрд╛? рдЕрд╕реЗ рджрд┐рд╕реВрди рдЖрд▓реЗ рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯрдЪреЗ рдореВрд│ рд╡рд░реНрддрди рдкрд░рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдореНрд╣рд╛рд▓рд╛ рдкреНрд░рдХрд╛рд╢рд╛рдЪреНрдпрд╛ рдЧрддреАрд╢реА рдЬреБрд│рдгреНрдпрд╛рд╕рд╛рдареА рдЪреЕрдиреЗрд▓ рд╡рд┐рд▓рдВрдм рд╕реЗрдЯ рдХрд░рдгреЗ рджреЗрдЦреАрд▓ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдЖрдореНрд╣реА рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕рд┐рд╕реНрдЯрдорд▓рд╛ рдЪреЕрдиреЗрд▓ рд╡рд┐рд╢реЗрд╖рддрд╛ рдореБрджреНрд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕ рд╕рд╛рдВрдЧреВ рд╢рдХрддреЛ, рдЬрд╕реЗ рдЖрдореНрд╣реА рдиреЗрдЯрд╡рд░реНрдХ рдбрд┐рд╡реНрд╣рд╛рдЗрд╕рд╕рд╛рдареА рдХреЗрд▓реЗ:

$ ./waf --run "scratch/myfirst --PrintAttributes=ns3::PointToPointChannel"

рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрдврд│реЗрд▓ рдХреА рдЪреЕрдиреЗрд▓ рд╡рд┐рд▓рдВрдм рд╡рд┐рд╢реЗрд╖рддрд╛ рдЦрд╛рд▓реАрд▓рдкреНрд░рдорд╛рдгреЗ рд╕реЗрдЯ рдХреЗрд▓реА рдЖрд╣реЗ:

--ns3::PointToPointChannel::Delay=[0ns]:
Transmission delay through the channel

рддреНрдпрд╛рдирдВрддрд░ рдЖрдкрдг рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕рд┐рд╕реНрдЯреАрдорджреНрд╡рд╛рд░реЗ рд╣реА рджреЛрдиреНрд╣реА рдбрд┐рдлреЙрд▓реНрдЯ рд╡реНрд╣реЕрд▓реНрдпреВ рд╕реЗрдЯ рдХрд░реВ рд╢рдХрддреЛ.

$ ./waf --run "scratch/myfirst
--ns3::PointToPointNetDevice::DataRate=5Mbps
--ns3::PointToPointChannel::Delay=2ms"

рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд рдЖрдореНрд╣реА рд╕реНрдХреНрд░рд┐рдкреНрдЯрдордзреНрдпреЗ рдбреЗрдЯрд╛ рджрд░ рдЖрдгрд┐ рд╡рд┐рд▓рдВрдм рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рд╕реЗрдЯ рдХреЗрд▓реНрдпрд╛рд╡рд░ рдЖрдореНрд╣рд╛рд▓рд╛ рдорд┐рд│рд╛рд▓реЗрд▓рд╛ рд╡реЗрд│ рдЖрдореНрд╣реА рдкреБрдирд░реНрд╕рдВрдЪрдпрд┐рдд рдХрд░рддреЛ:

Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
'build' finished successfully (0.417s)
0s UdpEchoServerApplication:UdpEchoServer()
1s UdpEchoServerApplication:StartApplication()
Sent 1024 bytes to 10.1.1.2
2.00369s Received 1024 bytes from 10.1.1.1
2.00369s Echoing packet
Received 1024 bytes from 10.1.1.2
10s UdpEchoServerApplication:StopApplication()
UdpEchoServerApplication:DoDispose()
UdpEchoServerApplication:~UdpEchoServer()

рд▓рдХреНрд╖рд╛рдд рдареЗрд╡рд╛ рдХреА 2,00369 рд╕реЗрдХрдВрджрд╛рдВрдирдВрддрд░ рдкреЕрдХреЗрдЯ рд╕рд░реНрд╡реНрд╣рд░рджреНрд╡рд╛рд░реЗ рдкреБрдиреНрд╣рд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдИрд▓. рд╕реНрдХреНрд░рд┐рдкреНрдЯрдордзреНрдпреЗ рд╡рд╛рдкрд░рд▓реЗрд▓реА рдХреЛрдгрддреАрд╣реА рд╡рд┐рд╢реЗрд╖рддрд╛ рдЖрдореНрд╣реА рдЕрд╢рд╛ рдкреНрд░рдХрд╛рд░реЗ рд╕реЗрдЯ рдХрд░реВ рд╢рдХрддреЛ. рд╡рд┐рд╢реЗрд╖рддрдГ, рдЖрдореНрд╣реА рдореЕрдХреНрд╕рдкреЕрдХреЗрдЯреНрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдПрдХ рдирд╕рд▓реЗрд▓реНрдпрд╛ рдореВрд▓реНрдпрд╛рдВрд╡рд░ рд╕реЗрдЯ рдХрд░реВ рд╢рдХрддреЛ UdpEchoClient.

рддреБрдореНрд╣реА рддреЗ рдХрд╕реЗ рд╡рд╛рдкрд░рд╛рд▓? рдПрдХрджрд╛ рдкреНрд░рдпрддреНрди рдХрд░. рд▓рдХреНрд╖рд╛рдд рдареЗрд╡рд╛ рдХреА рдЖрдкрдг рдЬреНрдпрд╛ рдард┐рдХрд╛рдгреА рдбреАрдлреЙрд▓реНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛ рдореВрд▓реНрдп рдУрд╡реНрд╣рд░рд░рд╛рдЗрдб рдХрд░рддреЛ рдЖрдгрд┐ рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рд╕реЗрдЯ рдХреЗрд▓реЗ рдЖрд╣реЗ рддреНрдпрд╛ рдард┐рдХрд╛рдгреА рдЯрд┐рдкреНрдкрдгреА рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ MaxPackets рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдордзреНрдпреЗ. рдордЧ рдЖрдкрдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреБрдиреНрд╣рд╛ рддрдпрд╛рд░ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдирд╡реАрди рдбреАрдлреЙрд▓реНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛ рдореВрд▓реНрдп рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдХреНрдпрд░рдЪрдирд╛ рдорджрдд рдорд┐рд│рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣реА рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рджреЗрдЦреАрд▓ рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛. рдПрдХрджрд╛ рддреБрдореНрд╣рд╛рд▓рд╛ рд╣реЗ рд╕рдордЬрд▓реНрдпрд╛рдирдВрддрд░, рддреБрдореНрд╣реА рдХрдорд╛рдВрдб рд▓рд╛рдЗрдирд╡рд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдкреЕрдХреЗрдЬреЗрд╕рдЪреА рд╕рдВрдЦреНрдпрд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░реВ рд╢рдХрддрд╛. рдЖрдореНрд╣реА рдЕрднреНрдпрд╛рд╕реВ рд▓реЛрдХ рдЕрд╕рд▓реНрдпрд╛рдореБрд│реЗ рдЖрдордЪреА рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЕрд╢реА рджрд┐рд╕рд▓реА рдкрд╛рд╣рд┐рдЬреЗ:

$ ./waf --run "scratch/myfirst
--ns3::PointToPointNetDevice::DataRate=5Mbps
--ns3::PointToPointChannel::Delay=2ms
--ns3::UdpEchoClient::MaxPackets=2"

рдпрд╛ рд╕рд░реНрд╡ рдЧреБрдгрд╛рдВрдЪреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХрд╕реЗ рдЬрд╛рдгреВрди рдШреНрдпрд╛рд╡реЗ рд╣рд╛ рдпрд╛ рдЯрдкреНрдкреНрдпрд╛рд╡рд░ рдЙрджреНрднрд╡рдгрд╛рд░рд╛ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рдкреНрд░рд╢реНрди рдЖрд╣реЗ. рдкреБрдиреНрд╣рд╛, рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕рд┐рд╕реНрдЯрдордордзреНрдпреЗ рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рд╕рд╛рдареА рдорджрдд рдХрд╛рд░реНрдп рдЖрд╣реЗ. рдЖрдореНрд╣реА рдорджрддреАрд╕рд╛рдареА рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╡рд┐рдЪрд╛рд░рд▓реНрдпрд╛рд╕, рдЖрдореНрд╣реА рд╣реЗ рдкрд╛рд╣рд┐рд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ:

$ ./waf --run "scratch/myfirst --PrintHelp"
myfirst [Program Arguments] [General Arguments]
General Arguments:
--PrintGlobals: Print the list of globals.
--PrintGroups: Print the list of groups.
--PrintGroup=[group]: Print all TypeIds of group.
--PrintTypeIds: Print all TypeIds.
--PrintAttributes=[typeid]: Print all attributes of typeid.
--PrintHelp: Print this help message.

рддреБрдореНрд╣реА "рдореБрджреНрд░рдг рдЧрдЯ" рдпреБрдХреНрддрд┐рд╡рд╛рдж рдирд┐рд╡рдбрд▓реНрдпрд╛рд╕, рддреБрдореНрд╣рд╛рд▓рд╛ рд╕рд░реНрд╡ рдиреЛрдВрджрдгреАрдХреГрдд рдЧрдЯрд╛рдВрдЪреА рд╕реВрдЪреА рджрд┐рд╕реЗрд▓ TypeId. рдЧрдЯрд╛рдВрдЪреА рдирд╛рд╡реЗ рд╕реНрддреНрд░реЛрдд рдирд┐рд░реНрджреЗрд╢рд┐рдХреЗрддреАрд▓ рдореЙрдбреНрдпреВрд▓реНрд╕рдЪреНрдпрд╛ рдирд╛рд╡рд╛рдВрд╢реА рд╕реБрд╕рдВрдЧрдд рдЖрд╣реЗрдд (рдХреЕрдкрд┐рдЯрд▓ рдХреЗрд▓реЗрд▓реЗ рдЕрд╕рд▓реЗ рддрд░реА). рд╕рд░реНрд╡ рдорд╛рд╣рд┐рддреА рдПрдХрд╛рдЪ рд╡реЗрд│реА рдореБрджреНрд░рд┐рдд рдХрд░рдгреЗ рдЦреВрдк рдореЛрдареЗ рдЕрд╕реЗрд▓, рдореНрд╣рдгреВрди рдЧрдЯрд╛рдиреБрд╕рд╛рд░ рдорд╛рд╣рд┐рддреА рдореБрджреНрд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЕрддрд┐рд░рд┐рдХреНрдд рдлрд┐рд▓реНрдЯрд░ рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗ. рддрд░, рдкреБрдиреНрд╣рд╛ рдкреЙрдЗрдВрдЯ-рдЯреВ-рдкреЙрдЗрдВрдЯ рдореЙрдбреНрдпреВрд▓рд╡рд░ рд▓рдХреНрд╖ рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдд рдЖрд╣реЗ:

./waf --run "scratch/myfirst --PrintGroup=PointToPoint"
TypeIds in group PointToPoint:
ns3::PointToPointChannel
ns3::PointToPointNetDevice
ns3::PointToPointRemoteChannel
ns3::PppHeader

рдпреЗрдереЗ рддреБрдореНрд╣реА рд╡рд┐рд╢реЗрд╖рддрд╛ рд▓реБрдХрдЕрдкрд╕рд╛рдареА рдЙрдкрд▓рдмреНрдз TypeId рдирд╛рд╡реЗ рд╢реЛрдзреВ рд╢рдХрддрд╛, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде рдордзреНрдпреЗ
--PrintAttributes = ns3 :: PointToPointChannelрд╡рд░ рджрд╛рдЦрд╡рд▓реНрдпрд╛рдкреНрд░рдорд╛рдгреЗ.

рдЧреБрдгрдзрд░реНрдорд╛рдВрдмрджреНрджрд▓ рдЬрд╛рдгреВрди рдШреЗрдгреНрдпрд╛рдЪрд╛ рджреБрд╕рд░рд╛ рдорд╛рд░реНрдЧ рдореНрд╣рдгрдЬреЗ рдбреЙрдХреНрд╕рд┐рдЬрди рдПрдирдПрд╕-3. рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░рдордзреНрдпреЗ рдиреЛрдВрджрдгреАрдХреГрдд рд╕рд░реНрд╡ рдЧреБрдгрдзрд░реНрдорд╛рдВрдЪреА рд╕реВрдЪреА рдЕрд╕рд▓реЗрд▓реЗ рдПрдХ рдкреГрд╖реНрда рдЖрд╣реЗ.

5.2.2 рддреБрдордЪреНрдпрд╛ рд╕реНрд╡рддрдГрдЪреНрдпрд╛ рдЖрдЬреНрдЮрд╛ рдХреЕрдкреНрдЪрд░ рдХрд░рдгреЗ

рддреБрдореНрд╣реА рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕рд┐рд╕реНрдЯрдорджреНрд╡рд╛рд░реЗ рддреБрдордЪреЗ рд╕реНрд╡рддрдГрдЪреЗ рд╣реБрдХ рджреЗрдЦреАрд▓ рдЬреЛрдбреВ рд╢рдХрддрд╛. рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд╛рд░реНрд╕рд░ рдкрджреНрдзрдд рд╡рд╛рдкрд░реВрди рд╣реЗ рдЕрдЧрджреА рд╕реЛрдкреНрдпрд╛ рдкрджреНрдзрддреАрдиреЗ рдХреЗрд▓реЗ рдЬрд╛рддреЗ AddValue.
рдпрд╛ рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрд╛рдЪрд╛ рд╡рд╛рдкрд░ рдкреВрд░реНрдгрдкрдгреЗ рд╡реЗрдЧрд│реНрдпрд╛ рдкреНрд░рдХрд╛рд░реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдкреЕрдХреЗрдЬреЗрд╕рдЪреА рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХрд░реВрдпрд╛. рдирд╛рд╡рд╛рдЪреЗ рд▓реЛрдХрд▓ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рдЬреЛрдбреВ nрдкреЕрдХреЗрдЯреНрд╕ рдлрдВрдХреНрд╢рди рдордзреНрдпреЗ рдореБрдЦреНрдп. рдЖрдордЪреНрдпрд╛ рдкреВрд░реНрд╡реАрдЪреНрдпрд╛ рдбреАрдлреЙрд▓реНрдЯ рд╡рд░реНрддрдирд╛рд╢реА рдЬреБрд│рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдореНрд╣реА рддреЗ рдПрдХрд╛ рд╡рд░ рд╕реЗрдЯ рдХрд░реВ. рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд╛рд░реНрд╕рд░рд▓рд╛ рд╣реЗ рдореВрд▓реНрдп рдмрджрд▓рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдореНрд╣рд╛рд▓рд╛ рд╣реЗ рдореВрд▓реНрдп рдкрд╛рд░реНрд╕рд░рдордзреНрдпреЗ рдХреЕрдкреНрдЪрд░ рдХрд░рд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓. рдЖрдореНрд╣реА рдХреЙрд▓ рдЬреЛрдбреВрди рд╣реЗ рдХрд░рддреЛ AddValue. рдЬрд╛ рдЖрдгрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрджрд▓рд╛ scratch/myfirst.cc рддрд░ рдЦрд╛рд▓реАрд▓ рдХреЛрдбрд╕рд╣ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА,

int
main (int argc, char *argv[])
{
uint32_t nPackets = 1;
CommandLine cmd;
cmd.AddValue("nPackets", "Number of packets to echo", nPackets);
cmd.Parse (argc, argv);
...

рд╕реНрдХреНрд░рд┐рдкреНрдЯрдордзреАрд▓ рдмрд┐рдВрджреВрдкрд░реНрдпрдВрдд рдЦрд╛рд▓реА рд╕реНрдХреНрд░реЛрд▓ рдХрд░рд╛ рдЬрд┐рдереЗ рдЖрдореНрд╣реА MaxPackets рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕реЗрдЯ рдХрд░рддреЛ рдЖрдгрд┐ рддреЗ рдмрджрд▓реВ рд╢рдХрддреЛ рдЬреЗрдгреЗрдХрд░реВрди рддреЗ рдЦрд╛рд▓реА рджрд░реНрд╢рд╡рд┐рд▓реНрдпрд╛рдкреНрд░рдорд╛рдгреЗ рд╕реНрдерд┐рд░ 1 рдРрд╡рдЬреА nPackets рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓рд╡рд░ рд╕реЗрдЯ рдХреЗрд▓реЗ рдЬрд╛рдИрд▓.

echoClient.SetAttribute ("MaxPackets", UintegerValue (nPackets));

рдЖрддрд╛ рддреБрдореНрд╣реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд╛рд▓рд╡рд▓реНрдпрд╛рд╕ рдЖрдгрд┐ -PrintHelp рд╡рд┐рддрд░реНрдХ рдкреБрд░рд╡рд▓реНрдпрд╛рд╕, рддреБрдореНрд╣рд╛рд▓рд╛ рдирд╡реАрди рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдпреБрдХреНрддрд┐рд╡рд╛рдж рджрд┐рд╕рд▓рд╛ рдкрд╛рд╣рд┐рдЬреЗ. рдорджрдд рдкреНрд░рджрд░реНрд╢рдирд╛рд╡рд░ рд╕реВрдЪреАрдмрджреНрдз. рдкреНрд░рд╡рд┐рд╖реНрдЯ рдХрд░рд╛,

$ ./waf --run "scratch/myfirst --PrintHelp"
Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
'build' finished successfully (0.403s)
--PrintHelp: Print this help message.
--PrintGroups: Print the list of groups.
--PrintTypeIds: Print all TypeIds.
--PrintGroup=[group]: Print all TypeIds of group.
--PrintAttributes=[typeid]: Print all attributes of typeid.
--PrintGlobals: Print the list of globals.
User Arguments:
--nPackets: Number of packets to echo

рдЬрд░ рддреБрдореНрд╣рд╛рд▓рд╛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ рдкреЕрдХреЗрдЯрдЪреА рд╕рдВрдЦреНрдпрд╛ рдмрджрд▓рд╛рдпрдЪреА рдЕрд╕реЗрд▓, рддрд░ рддреБрдореНрд╣реА рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯ - -nPackets рд╕реЗрдЯ рдХрд░реВрди рддрд╕реЗ рдХрд░реВ рд╢рдХрддрд╛.

$ ./waf --run "scratch/myfirst --nPackets=2"

рдЖрддрд╛ рдмрдШрд╛рдпрд▓рд╛ рд╣рд╡рдВ

Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
'build' finished successfully (0.404s)
0s UdpEchoServerApplication:UdpEchoServer()
1s UdpEchoServerApplication:StartApplication()
Sent 1024 bytes to 10.1.1.2
2.25732s Received 1024 bytes from 10.1.1.1
2.25732s Echoing packet
Received 1024 bytes from 10.1.1.2
Sent 1024 bytes to 10.1.1.2
3.25732s Received 1024 bytes from 10.1.1.1
3.25732s Echoing packet
Received 1024 bytes from 10.1.1.2
10s UdpEchoServerApplication:StopApplication()
UdpEchoServerApplication:DoDispose()
UdpEchoServerApplication:~UdpEchoServer()

рддреБрдореНрд╣реА рдЖрддрд╛ рджреЛрди рдкреЕрдХреЗрдЬреЗрд╕ рдкрд╛рдард╡рд▓реА рдЖрд╣реЗрдд. рддреЗрд╣реА рд╕реЛрдкреЗ, рдирд╛рд╣реА рдХрд╛?
рдЖрдкрдг рдкрд╛рд╣реВ рд╢рдХрддрд╛ рдХреА ns-3 рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдореНрд╣рдгреВрди, рдЖрдкрдг рдЬрд╛рдЧрддрд┐рдХ рдореВрд▓реНрдпреЗ рдЖрдгрд┐ рдЧреБрдгрдзрд░реНрдо рд╣рд╛рддрд╛рд│рдгреНрдпрд╛рд╕рд╛рдареА рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯ рд╕рд┐рд╕реНрдЯрдо рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛. рддреБрдореНрд╣реА рдореЙрдбреЗрд▓ рд▓реЗрдЦрдХ рдЕрд╕рд▓реНрдпрд╛рд╕, рддреБрдореНрд╣реА рддреБрдордЪреНрдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕рдордзреНрдпреЗ рдирд╡реАрди рд╡рд┐рд╢реЗрд╖рддрд╛ рдЬреЛрдбреВ рд╢рдХрддрд╛ рдЖрдгрд┐ рддреЗ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕рд┐рд╕реНрдЯрдорджреНрд╡рд╛рд░реЗ рддреБрдордЪреНрдпрд╛ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрджреНрд╡рд╛рд░реЗ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирд╕рд╛рдареА рдЖрдкреЛрдЖрдк рдЙрдкрд▓рдмреНрдз рд╣реЛрддреАрд▓. рддреБрдореНрд╣реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реЗрдЦрдХ рдЕрд╕рд▓реНрдпрд╛рд╕, рддреБрдореНрд╣реА рддреБрдордЪреНрдпрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯрдордзреНрдпреЗ рдирд╡реАрди рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ рдЬреЛрдбреВ рд╢рдХрддрд╛ рдЖрдгрд┐ рддреНрдпрд╛рдВрдирд╛ рддреБрдордЪреНрдпрд╛ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕рд┐рд╕реНрдЯрдордордзреНрдпреЗ рдЕрдЦрдВрдбрдкрдгреЗ рдкреНрд▓рдЧ рдХрд░реВ рд╢рдХрддрд╛.

5.3 рдЯреНрд░реЗрд╕рд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд╡рд╛рдкрд░рдгреЗ

рдореЙрдбреЗрд▓рд┐рдВрдЧрдЪрд╛ рд╕рдВрдкреВрд░реНрдг рдореБрджреНрджрд╛ рдкреБрдвреАрд▓ рдЕрднреНрдпрд╛рд╕рд╛рд╕рд╛рдареА рдЖрдЙрдЯрдкреБрдЯ рддрдпрд╛рд░ рдХрд░рдгреЗ рд╣рд╛ рдЖрд╣реЗ рдЖрдгрд┐ рдпрд╛рд╕рд╛рдареА ns-3 рдЯреНрд░реЗрд╕ рд╕рд┐рд╕реНрдЯрдо рд╣реА рдореБрдЦреНрдп рдпрдВрддреНрд░рдгрд╛ рдЖрд╣реЗ. ns-3 рд╣рд╛ C++ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЕрд╕рд▓реНрдпрд╛рдиреЗ, C++ рдкреНрд░реЛрдЧреНрд░реЕрдордордзреВрди рдЖрдЙрдЯрдкреБрдЯ рдирд┐рд░реНрдорд╛рдг рдХрд░рдгреНрдпрд╛рдЪреЗ рдорд╛рдирдХ рд╕рд╛рдзрди рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ:

#include <iostream>
...
int main ()
{
...
std::cout << "The value of x is " << x << std::endl;
...
}

рддреБрдореНрд╣реА рддреБрдордЪреНрдпрд╛ рд╕реЛрд▓реНрдпреВрд╢рдирдордзреНрдпреЗ рдереЛрдбреА рд░рдЪрдирд╛ рдЬреЛрдбрдгреНрдпрд╛рд╕рд╛рдареА рд▓реЙрдЧрд┐рдВрдЧ рдореЙрдбреНрдпреВрд▓ рджреЗрдЦреАрд▓ рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛. рдпрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдирд╛рдореБрд│реЗ рдЕрдиреЗрдХ рдЬреНрдЮрд╛рдд рд╕рдорд╕реНрдпрд╛ рдЙрджреНрднрд╡рд▓реНрдпрд╛ рдЖрд╣реЗрдд, рдЖрдгрд┐ рдореНрд╣рдгреВрди рдЖрдореНрд╣реА рдпрд╛ рд╕рдорд╕реНрдпрд╛рдВрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЗрд╡реНрд╣реЗрдВрдЯ рдЯреНрд░реЗрд╕рд┐рдВрдЧ рдЙрдкрдкреНрд░рдгрд╛рд▓реА рдкреНрд░рджрд╛рди рдХреЗрд▓реА рдЖрд╣реЗ.

ns-3 рдЯреНрд░реЗрд╕рд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдордЪреА рдореБрдЦреНрдп рдЙрджреНрджрд┐рд╖реНрдЯреЗ рдЖрд╣реЗрдд:

  • рдореВрд▓рднреВрдд рдХрд╛рд░реНрдпрд╛рдВрд╕рд╛рдареА, рдЯреНрд░реЗрд╕рд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдордиреЗ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рд▓рд╛ рд▓реЛрдХрдкреНрд░рд┐рдп рд╕реНрддреНрд░реЛрддрд╛рдВрд╕рд╛рдареА рдорд╛рдирдХ рдЯреНрд░реЗрд╕ рд╡реНрдпреБрддреНрдкрдиреНрди рдХрд░рдгреНрдпрд╛рдЪреА рдЖрдгрд┐ рдЯреНрд░реЗрд╕ рд╡реНрдпреБрддреНрдкрдиреНрди рдХрд░рдгрд╛рд░реА рд╡рд╕реНрддреВ рдирд┐рд╡рдбрдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджрд┐рд▓реА рдкрд╛рд╣рд┐рдЬреЗ;

  • рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рд╡рд╛рдкрд░рдХрд░реНрддреЗ рд╡реНрдпреБрддреНрдкрдиреНрди рдЖрдЙрдЯрдкреБрдЯ рд╕реНрд╡рд░реВрдк рдмрджрд▓рдгреНрдпрд╛рд╕рд╛рдареА рдХрд┐рдВрд╡рд╛ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдХреЛрд░рдордзреНрдпреЗ рдмрджрд▓ рди рдХрд░рддрд╛ рдирд╡реАрди рдЯреНрд░реЗрд╕ рд╕реНрд░реЛрдд рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЯреНрд░реЗрд╕рд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд╡рд╛рдврд╡рд┐рдгреНрдпрд╛рдд рд╕рдХреНрд╖рдо рдЕрд╕рд╛рд╡реЗрдд;

  • рдирд╡реАрди рдЯреНрд░реЗрд╕ рд╕реНрд░реЛрдд рдЖрдгрд┐ рд╕рд┐рдВрдХ рдЬреЛрдбрдгреНрдпрд╛рд╕рд╛рдареА рдкреНрд░рдЧрдд рд╡рд╛рдкрд░рдХрд░реНрддреЗ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдХреЛрд░ рд╕реБрдзрд╛рд░реВ рд╢рдХрддрд╛рдд. ns-3 рдЯреНрд░реЗрд╕рд┐рдВрдЧ рд╕рд┐рд╕реНрдЯреАрдо рд╕реНрд╡рддрдВрддреНрд░ рдЯреНрд░реЕрдХрд┐рдВрдЧ рд╕реНрддреНрд░реЛрдд рдЖрдгрд┐ рд░рд┐рд╕реАрд╡реНрд╣рд░реНрд╕рдЪреНрдпрд╛ рддрддреНрддреНрд╡рд╛рдВрд╡рд░ рддрд╕реЗрдЪ рдЧреНрд░рд╛рд╣рдХрд╛рдВрдирд╛ рд╕реНрддреНрд░реЛрдд рдЬреЛрдбрдгреНрдпрд╛рд╕рд╛рдареА рдПрдХ рдПрдХреАрдХреГрдд рдпрдВрддреНрд░рдгрд╛ рддрдпрд╛рд░ рдХреЗрд▓реА рдЖрд╣реЗ.

ns-3 рдЯреНрд░реЗрд╕рд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд╕реНрд╡рддрдВрддреНрд░ рдЯреНрд░реЗрд╕рд┐рдВрдЧ рд╕реНрддреНрд░реЛрдд рдЖрдгрд┐ рд░рд┐рд╕реАрд╡реНрд╣рд░реНрд╕рдЪреНрдпрд╛ рддрддреНрддреНрд╡рд╛рдВрд╡рд░ рддрд╕реЗрдЪ рд╕реНрддреНрд░реЛрддрд╛рдВрдирд╛ рд░рд┐рд╕реАрд╡реНрд╣рд░реНрд╕рд╢реА рдЬреЛрдбрдгреНрдпрд╛рд╕рд╛рдареА рдПрдХ рдПрдХреАрдХреГрдд рдпрдВрддреНрд░рдгрд╛ рддрдпрд╛рд░ рдХреЗрд▓реА рдЖрд╣реЗ. рдЯреНрд░реЗрд╕ рд╕реНрд░реЛрдд рд╣реА рдЕрд╢реА рд╡рд╕реНрддреВ рдЖрд╣реЗрдд рдЬреА рд╕рд┐рдореНрдпреБрд▓реЗрд╢рдирдордзреНрдпреЗ рдШрдбрдгрд╛рд▒реНрдпрд╛ рдШрдЯрдирд╛рдВрдЪреЗ рд╕рдВрдХреЗрдд рджреЗрдК рд╢рдХрддрд╛рдд рдЖрдгрд┐ рд╕реНрд╡рд╛рд░рд╕реНрдп рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдбреЗрдЯрд╛рдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдкреНрд░рджрд╛рди рдХрд░рддрд╛рдд. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдиреЗрдЯрд╡рд░реНрдХ рдбрд┐рд╡реНрд╣рд╛рдЗрд╕рд▓рд╛ рдкреЕрдХреЗрдЯ рдХреЗрд╡реНрд╣рд╛ рдкреНрд░рд╛рдкреНрдд рдЭрд╛рд▓реЗ рд╣реЗ рдЯреНрд░реЗрд╕ рд╕реНрддреНрд░реЛрдд рд╕реВрдЪрд┐рдд рдХрд░реВ рд╢рдХрддреЗ рдЖрдгрд┐ рдкреЕрдХреЗрдЯрдордзреАрд▓ рд╕рд╛рдордЧреНрд░реА рд╕реНрд╡рд╛рд░рд╕реНрдп рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдЯреНрд░реЗрд╕ рд░рд┐рд╕реАрд╡реНрд╣рд░реНрд╕рдирд╛ рдЙрдкрд▓рдмреНрдз рдХрд░реВрди рджреЗрдК рд╢рдХрддреЗ.

рд╕рд┐рдВрдХрджреНрд╡рд╛рд░реЗ рдкреНрд░рджрд╛рди рдХреЗрд▓реЗрд▓реНрдпрд╛ рдорд╛рд╣рд┐рддреАрд╕рд╣ рдкреНрд░рддреНрдпрдХреНрд╖рд╛рдд рдХрд╛рд╣реАрддрд░реА рдЙрдкрдпреБрдХреНрдд рдХрд░рдгрд╛рд▒реНрдпрд╛ рдХреЛрдбрдЪреНрдпрд╛ рдЗрддрд░ рднрд╛рдЧрд╛рдВрд╕рд╣ "рдЬреЛрдбрд▓реЗрд▓реЗ" рдирд╕рд▓реНрдпрд╛рд╕ рд╕реНрд╡рддрдГрдЪ рд╢реЛрдз рд╕реНрддреНрд░реЛрдд рдирд┐рд░реБрдкрдпреЛрдЧреА рдЖрд╣реЗрдд. рдЯреНрд░реЗрд╕рд░реНрд╕ рд╣реЗ рдЯреНрд░реЗрд╕ рд╕реНрддреНрд░реЛрддрд╛рдВрджреНрд╡рд╛рд░реЗ рдкреНрд░рджрд╛рди рдХреЗрд▓реЗрд▓реНрдпрд╛ рдШрдЯрдирд╛ рдЖрдгрд┐ рдбреЗрдЯрд╛рдЪреЗ рдЧреНрд░рд╛рд╣рдХ рдЖрд╣реЗрдд. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рддреБрдореНрд╣реА рдЯреНрд░реЗрд╕ рд╕рд┐рдВрдХ рддрдпрд╛рд░ рдХрд░реВ рд╢рдХрддрд╛ рдЬреЗ (рдорд╛рдЧреАрд▓ рдЙрджрд╛рд╣рд░рдгрд╛рдЪреНрдпрд╛ рдЯреНрд░реЗрд╕ рд╕реНрддреНрд░реЛрддрд╛рд╢реА рдЬреЛрдбрд▓реЗрд▓реЗ рдЕрд╕рддрд╛рдирд╛) рдкреНрд░рд╛рдкреНрдд рдЭрд╛рд▓реЗрд▓реНрдпрд╛ рдкреЕрдХреЗрдЯрдордзреАрд▓ рд╕реНрд╡рд╛рд░рд╕реНрдп рдЕрд╕рд▓реЗрд▓реЗ рднрд╛рдЧ рдореБрджреНрд░рд┐рдд рдХрд░реЗрд▓.

рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдХреЛрд░ рд╕рдВрдкрд╛рджрд┐рдд рдЖрдгрд┐ рдкреБрдиреНрд╣рд╛ рдХрдВрдкрд╛рдЗрд▓ рди рдХрд░рддрд╛ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдирд╛ рдирд╡реАрди рд╕рд┐рдВрдХ рдкреНрд░рдХрд╛рд░рд╛рдВрдирд╛ рд╡рд┐рджреНрдпрдорд╛рди рдЯреНрд░реЗрд╕ рд╕реНрддреНрд░реЛрддрд╛рдВрд╢реА рдЬреЛрдбрдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрдгреЗ рд╣реЗ рдпрд╛ рд╕реНрдкрд╖реНрдЯ рд╡рд┐рднрдХреНрддреАрдЪреЗ рддрд░реНрдХ рдЖрд╣реЗ. рдореНрд╣рдгреВрди рд╡рд░реАрд▓ рдЙрджрд╛рд╣рд░рдгрд╛рдд, рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рддреНрдпрд╛рдВрдЪреНрдпрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯрдордзреНрдпреЗ рдирд╡реАрди рдЯреНрд░реЗрд╕рд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реВ рд╢рдХрддреЛ рдЖрдгрд┐ рдХреЗрд╡рд│ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реВрди рд╕рд┐рдореНрдпреБрд▓реЗрд╢рди рдХреЛрд░рдордзреНрдпреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╡рд┐рджреНрдпрдорд╛рди рдЯреНрд░реЗрд╕ рд╕реНрддреНрд░реЛрддрд╛рд╢реА рдХрдиреЗрдХреНрдЯ рдХрд░реВ рд╢рдХрддреЛ.

рдпрд╛ рдЯреНрдпреБрдЯреЛрд░рд┐рдпрд▓рдордзреНрдпреЗ, рдЖрдореНрд╣реА рдХрд╛рд╣реА рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕реНрддреНрд░реЛрдд рдЖрдгрд┐ рд╕рд┐рдВрдХ рдкрд╛рд╣реВ рдЖрдгрд┐ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдЪреНрдпрд╛ рдХрдореАрддрдХрдореА рдкреНрд░рдпрддреНрдирд╛рдд рддреЗ рдХрд╕реЗ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд рддреЗ рджрд╛рдЦрд╡реВ. рдЯреНрд░реЗрд╕ рдиреЗрдорд╕реНрдкреЗрд╕ рд╡рд┐рд╕реНрддреГрдд рдХрд░рдгреЗ рдЖрдгрд┐ рдирд╡реАрди рдЯреНрд░реЗрд╕ рд╕реНрд░реЛрдд рддрдпрд╛рд░ рдХрд░рдгреЗ рдпрд╛рд╕рд╣ рдкреНрд░рдЧрдд рдЯреНрд░реЗрд╕ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирдЪреНрдпрд╛ рдорд╛рд╣рд┐рддреАрд╕рд╛рдареА ns-3 рдореЕрдиреНрдпреБрдЕрд▓ рдХрд┐рдВрд╡рд╛ рдХрд╕реЗ рдХрд░рд╛рдпрдЪреЗ рд╡рд┐рднрд╛рдЧ рдкрд╣рд╛.

5.3.1 ASCII рдЯреНрд░реЗрд╕рд┐рдВрдЧ

ns-3 рд╣реЗрд▓реНрдкрд░ рдлрдВрдХреНрд╢рдиреЕрд▓рд┐рдЯреА рдкреНрд░рджрд╛рди рдХрд░рддреЗ рдЬреЗ рд╕рд╛рдзреЗ рдкреЕрдХреЗрдЯ рдЯреНрд░реЗрд╕ рд╕реЗрдЯ рдХрд░рддрд╛рдирд╛ рддрдкрд╢реАрд▓рд╛рдВрд╕рд╣ рддреБрдореНрд╣рд╛рд▓рд╛ рдорджрдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рдЯреНрд░реЗрд╕рд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рджрд╛рди рдХрд░рддреЗ. рддреБрдореНрд╣реА рд╣реЗ рд╡реИрд╢рд┐рд╖реНрдЯреНрдп рд╕рдХреНрд╖рдо рдХреЗрд▓реНрдпрд╛рд╕, рддреБрдореНрд╣рд╛рд▓рд╛ ASCII рдлрд╛рдЗрд▓реНрд╕рдордзреНрдпреЗ рдЖрдЙрдЯрдкреБрдЯ рджрд┐рд╕реЗрд▓. ns-2 рдЖрдЙрдЯрдкреБрдЯрд╢реА рдкрд░рд┐рдЪрд┐рдд рдЕрд╕рд▓реЗрд▓реНрдпрд╛рдВрд╕рд╛рдареА, рдпрд╛ рдкреНрд░рдХрд╛рд░рдЪреЗ рдЯреНрд░реЗрд╕ рд╕рд╛рд░рдЦреЗ рдЖрд╣реЗ out.tr, рдЬреЗ рдЕрдиреЗрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯрджреНрд╡рд╛рд░реЗ рд╡реНрдпреБрддреНрдкрдиреНрди рдХреЗрд▓реЗ рдЬрд╛рддреЗ.

рдЪрд▓рд╛ рд╡реНрдпрд╡рд╕рд╛рдпрд╛рдд рдЙрддрд░реВ рдЖрдгрд┐ рдХрд╛рд╣реА ASCII рдЯреНрд░реЗрд╕рд┐рдВрдЧ рдкрд░рд┐рдгрд╛рдо рдЖрдордЪреНрдпрд╛ scratch/myfirst.cc рд╕реНрдХреНрд░рд┐рдкреНрдЯрдордзреНрдпреЗ рдЬреЛрдбреВ. рдХреЙрд▓рдЪреНрдпрд╛ рдЖрдзреА Simulator :: Run (), рдХреЛрдбрдЪреНрдпрд╛ рдЦрд╛рд▓реАрд▓ рдУрд│реА рдЬреЛрдбрд╛:
AsciiTraceHelper ascii;

pointToPoint.EnableAsciiAll (ascii.CreateFileStream ("myfirst.tr"));

рдЗрддрд░ рдЕрдиреЗрдХ ns-3 idioms рдкреНрд░рдорд╛рдгреЗ, рд╣рд╛ рдХреЛрдб ASCII рдЯреНрд░реЗрд╕ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╣реЗрд▓реНрдкрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рд╡рд╛рдкрд░рддреЛ. рджреБрд╕рд▒реНрдпрд╛ рдУрд│реАрдд рджреЛрди рдиреЗрд╕реНрдЯреЗрдб рдореЗрдердб рдХреЙрд▓реНрд╕ рдЖрд╣реЗрдд. "рдЖрдд" рдкрджреНрдзрдд рдлрд╛рдЗрд▓рд╕реНрдЯреНрд░реАрдо рддрдпрд╛рд░ рдХрд░рд╛() рд╕реНрдЯреЕрдХрд╡рд░ (рдСрдмреНрдЬреЗрдХреНрдЯрдЪреНрдпрд╛ рдирд╛рд╡рд╛рд╢рд┐рд╡рд╛рдп) рдлрд╛рдЗрд▓ рд╕реНрдЯреНрд░реАрдо рдСрдмреНрдЬреЗрдХреНрдЯ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдирд┐рдирд╛рд╡реА рдСрдмреНрдЬреЗрдХреНрдЯ рдЖрдпрдбрд┐рдУрдо рд╡рд╛рдкрд░рддреЗ рдЖрдгрд┐ рдХреЙрд▓ рдореЗрдердбрдордзреНрдпреЗ рдкрд╛рд╕ рдХрд░рддреЗ. рдЖрдореНрд╣реА рднрд╡рд┐рд╖реНрдпрд╛рдд рдпрд╛рдмрджреНрджрд▓ рдЕрдзрд┐рдХ рдЦреЛрд▓рд╛рдд рдЬрд╛рдК, рдкрд░рдВрддреБ рдпрд╛ рдЯрдкреНрдкреНрдпрд╛рд╡рд░ рддреБрдореНрд╣рд╛рд▓рд╛ рдлрдХреНрдд рд╣реЗ рдорд╛рд╣рд┐рдд рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдХреА рддреБрдореНрд╣реА рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рддрдпрд╛рд░ рдХрд░рдд рдЖрд╣рд╛рдд рдЬреА рдлрд╛рдЗрд▓рдЪреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ myfirst.tr рдЖрдгрд┐ ns-3 рд╡рд░ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХрд░рд╛. рдЖрдореНрд╣реА рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯрдЪреА рд╕рдВрдкреВрд░реНрдг рдЖрдпреБрд╖реНрдпрднрд░ рдХрд╛рд│рдЬреА рдШреЗрдгреНрдпрд╛рд╕рд╛рдареА ns-3 рд▓рд╛ рд╕реЛрдкрд╡рддреЛ, рдЬреНрдпрд╛ рджрд░рдореНрдпрд╛рди рддреЗ C++ рд╕реНрдЯреНрд░реАрдо рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЙрдкреА рдХрдиреНрд╕реНрдЯреНрд░рдХреНрдЯрд░рд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдЕрд▓реНрдк-рдЬреНрдЮрд╛рдд (рд╣реЗрддреВрдкреВрд░реНрд╡рдХ) рдорд░реНрдпрд╛рджреЗрдореБрд│реЗ рдЙрджреНрднрд╡рд▓реЗрд▓реНрдпрд╛ рд╕рдорд╕реНрдпрд╛рдВрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░рддреЗ.

рдмрд╛рд╣реНрдп рдХреЙрд▓ рд╕рдХреНрд╖рдоAsciiAll() рд╕рд╣рд╛рдпреНрдпрдХрд╛рд▓рд╛ рд╕рд╛рдВрдЧрддреЗ рдХреА рддреБрдореНрд╣реА рд╕рд░реНрд╡ рдкреЙрдЗрдВрдЯ-рдЯреВ-рдкреЙрдЗрдВрдЯ рдбрд┐рд╡реНрд╣рд╛рдЗрд╕ рдХрдиреЗрдХреНрд╢рдирд╕рд╛рдареА рддреБрдордЪреНрдпрд╛ рд╕рд┐рдореНрдпреБрд▓реЗрд╢рдирдордзреНрдпреЗ ASCII рдЯреНрд░реЗрд╕рд┐рдВрдЧ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХрд░реВ рдЗрдЪреНрдЫрд┐рдд рдЖрд╣рд╛рдд рдЖрдгрд┐ рддреБрдореНрд╣рд╛рд▓рд╛ ASCII рдлреЙрд░рдореЕрдЯрдордзреНрдпреЗ рдкреЕрдХреЗрдЯ рд╣рд╛рд▓рдЪрд╛рд▓реА рдорд╛рд╣рд┐рддреА рд░реЗрдХреЙрд░реНрдб рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА (рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реЗрд▓реЗ) рдЯреНрд░реЗрд╕ рд░рд┐рд╕реАрд╡реНрд╣рд░реНрд╕ рд╣рд╡реЗ рдЖрд╣реЗрдд.

ns-2 рд╢реА рдкрд░рд┐рдЪрд┐рдд рдЕрд╕рд▓реЗрд▓реНрдпрд╛рдВрд╕рд╛рдареА, рдЯреНрд░реЕрдХ рдХреЗрд▓реЗрд▓реЗ рдЗрд╡реНрд╣реЗрдВрдЯ рд╣реЗ рдЬреНрдЮрд╛рдд рдЯреНрд░реЗрд╕рдкреЙрдЗрдВрдЯреНрд╕рдЪреНрдпрд╛ рд╕рдорддреБрд▓реНрдп рдЖрд╣реЗрдд рдЬреЗ рдЗрд╡реНрд╣реЗрдВрдЯ "+", "-", "d" рдЖрдгрд┐ "r" рд▓реЙрдЧ рдХрд░рддрд╛рдд.
рдЖрддрд╛ рддреБрдореНрд╣реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рддрдпрд╛рд░ рдХрд░реВ рд╢рдХрддрд╛ рдЖрдгрд┐ рдХрдорд╛рдВрдб рд▓рд╛рдЗрдирд╡рд░реВрди рдЪрд╛рд▓рд╡реВ рд╢рдХрддрд╛:

$ ./waf --run scratch/myfirst

рдпрд╛рдЖрдзреА рдЕрдиреЗрдХрд╡реЗрд│рд╛ рдкреНрд░рдорд╛рдгреЗ, рддреБрдореНрд╣рд╛рд▓рд╛ Waf рдХрдбреВрди рдЕрдиреЗрдХ рд╕рдВрджреЗрд╢ рджрд┐рд╕рддреАрд▓ рдЖрдгрд┐ рдирдВрддрд░ рдЪрд╛рд▓реВ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдордордзреАрд▓ рдХрд╛рд╣реА рд╕рдВрджреЗрд╢рд╛рдВрд╕рд╣ "'рдмрд┐рд▓реНрдб' рдпрд╢рд╕реНрд╡реАрд░рд┐рддреНрдпрд╛ рдкреВрд░реНрдг рдЭрд╛рд▓реЗ".

рдЪрд╛рд▓реВ рдЕрд╕рддрд╛рдирд╛, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдирд╛рд╡рд╛рдЪреА рдлрд╛рдЗрд▓ рддрдпрд╛рд░ рдХрд░реЗрд▓ myfirst.tr. рдХрд╛рдорд╛рдЪреНрдпрд╛ рд╕реНрд╡рд░реВрдкрд╛рдореБрд│реЗ рд╡рд╛рдл, рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░ рдлрд╛рдЗрд▓ рд╕реНрдерд╛рдирд┐рдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХреЗрдд рдирд╛рд╣реА рддрд░ рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдЪреНрдпрд╛ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХреЗрдд рддрдпрд╛рд░ рдХреЗрд▓реА рдЬрд╛рддреЗ. рдЬрд░ рддреБрдореНрд╣рд╛рд▓рд╛ рдЯреНрд░реЗрд╕ рд╕реЗрд╡реНрд╣ рдХреЗрд▓реЗрд▓рд╛ рдорд╛рд░реНрдЧ рдмрджрд▓рд╛рдпрдЪрд╛ рдЕрд╕реЗрд▓, рддрд░ рддреБрдореНрд╣реА рддреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА Waf рдкреЕрд░рд╛рдореАрдЯрд░ рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛. --cwd. рдЖрдореНрд╣реА рд╣реЗ рдХреЗрд▓реЗ рдирд╛рд╣реА, рдореНрд╣рдгреВрди рддреБрдордЪреНрдпрд╛ рдЖрд╡рдбрддреНрдпрд╛ рд╕рдВрдкрд╛рджрдХрд╛рддреАрд▓ ASCII рдЯреНрд░реЗрд╕ рдлрд╛рдЗрд▓ myfirst.tr рдкрд╛рд╣рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрдордЪреНрдпрд╛ рднрд╛рдВрдбрд╛рд░рд╛рдЪреНрдпрд╛ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХреЗрд╡рд░ рдиреЗрд╡реНрд╣рд┐рдЧреЗрдЯ рдХрд░рд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓.

ASCII рдЯреНрд░реЗрд╕ рдкрд╛рд░реНрд╕ рдХрд░рдд рдЖрд╣реЗ

рддреЗрдереЗ рдмрд░реАрдЪ рдорд╛рд╣рд┐рддреА рдмрд▒реНрдпрд╛рдкреИрдХреА рджрд╛рдЯ рд╕реНрд╡рд░реВрдкрд╛рдд рдЖрд╣реЗ, рдкрд░рдВрддреБ рдкреНрд░рдердо рдЖрдкрдг рд▓рдХреНрд╖рд╛рдд рдШреЗрдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдХреА рдлрд╛рдЗрд▓рдордзреНрдпреЗ рд╡реИрдпрдХреНрддрд┐рдХ рдУрд│реА рдЖрд╣реЗрдд. рддреБрдореНрд╣реА рд╡реНрд╣реНрдпреВрдЗрдВрдЧ рд╡рд┐рдВрдбреЛ рд╡рд┐рд╕реНрддреГрдд рдХреЗрд▓реНрдпрд╛рд╕ рд╣реЗ рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рджреГрд╢реНрдпрдорд╛рди рд╣реЛрдИрд▓.

рдлрд╛рдЗрд▓рдордзреАрд▓ рдкреНрд░рддреНрдпреЗрдХ рдУрд│ рдЯреНрд░реЗрд╕ рдЗрд╡реНрд╣реЗрдВрдЯрд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдЖрд╣реЗ. рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд, рдЖрдореНрд╣реА рд╕рд┐рдореНрдпреБрд▓реЗрд╢рдирдордзреАрд▓ рдкреНрд░рддреНрдпреЗрдХ рдкреЙрдЗрдВрдЯ-рдЯреВ-рдкреЙрдЗрдВрдЯ рдиреЗрдЯрд╡рд░реНрдХ рдбрд┐рд╡реНрд╣рд╛рдЗрд╕рдордзреНрдпреЗ рдЙрдкрд╕реНрдерд┐рдд рдЯреНрд░рд╛рдиреНрд╕рдорд┐рд╢рди рд░рд╛рдВрдЧреЗрддреАрд▓ рдЗрд╡реНрд╣реЗрдВрдЯреНрд╕ рдЯреНрд░реЗрд╕ рдХрд░рддреЛ. рдЯреНрд░рд╛рдиреНрд╕рдорд┐рд╢рди рд░рд╛рдВрдЧ рд╣реА рд░рд╛рдВрдЧ рдЖрд╣реЗ рдЬреНрдпрд╛рддреВрди рдкреНрд░рддреНрдпреЗрдХ рдкреЕрдХреЗрдЯ рдкреЙрдЗрдВрдЯ-рдЯреВ-рдкреЙрдЗрдВрдЯ рд▓рд┐рдВрдХрд╕рд╛рдареА рдкрд╛рд╕ рд╣реЛрдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рд▓рдХреНрд╖рд╛рдд рдШреНрдпрд╛ рдХреА рдЯреНрд░реЗрд╕ рдлрд╛рдИрд▓рдордзреАрд▓ рдкреНрд░рддреНрдпреЗрдХ рдУрд│ рдПрдХрд╛ рд╡рд░реНрдгрд╛рдиреЗ рд╕реБрд░реВ рд╣реЛрддреЗ (рдЖрдгрд┐ рддреНрдпрд╛ рдирдВрддрд░ рдПрдХ рдЬрд╛рдЧрд╛ рдЕрд╕рддреЗ). рдпрд╛ рдЪрд┐рдиреНрд╣рд╛рдЪрд╛ рдкреБрдвреАрд▓ рдЕрд░реНрде рдЕрд╕реЗрд▓:

+: рдЙрдкрдХрд░рдг рд░рд╛рдВрдЧреЗрдд рд░рд╛рдВрдЧреЗрдд рдСрдкрд░реЗрд╢рди рдЭрд╛рд▓реЗ;
-: рдбрд┐рд╡реНрд╣рд╛рдЗрд╕ рд░рд╛рдВрдЧреЗрдд рдШрдЯрдХ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддреА рдСрдкрд░реЗрд╢рди рдЭрд╛рд▓реЗ;
d: рдкреЕрдХреЗрдЯ рдЯрд╛рдХрдгреНрдпрд╛рдд рдЖрд▓реЗ, рд╕рд╛рдорд╛рдиреНрдпрддрдГ рд░рд╛рдВрдЧ рднрд░рд▓реЗрд▓реА рдЕрд╕рд▓реНрдпрд╛рдореБрд│реЗ;
r: рдиреЗрдЯрд╡рд░реНрдХ рдЙрдкрдХрд░рдгрд╛рджреНрд╡рд╛рд░реЗ рдкреЕрдХреЗрдЯ рдкреНрд░рд╛рдкреНрдд рдЭрд╛рд▓реЗ.

рдЪрд▓рд╛ рдЯреНрд░реЗрд╕ рдлрд╛рдЗрд▓рдордзреАрд▓ рдкрд╣рд┐рд▓реНрдпрд╛ рдУрд│реАрдХрдбреЗ рдЬрд╡рд│реВрди рдкрд╛рд╣реВ. рдореА рддреЗ рднрд╛рдЧрд╛рдВрдордзреНрдпреЗ (рд╕реНрдкрд╖реНрдЯрддреЗрд╕рд╛рдареА рдЗрдВрдбреЗрдВрдЯреЗрд╢рдирд╕рд╣) рдЖрдгрд┐ рдбрд╛рд╡реАрдХрдбреАрд▓ рдУрд│ рдХреНрд░рдорд╛рдВрдХрд╛рдордзреНрдпреЗ рдЦрдВрдбрд┐рдд рдХрд░реЗрди:

0 +
1 2
2 /NodeList/0/DeviceList/0/$ns3::PointToPointNetDevice/TxQueue/Enqueue
3 ns3::PppHeader (
4   Point-to-Point Protocol: IP (0x0021))
6   ns3::Ipv4Header (
7     tos 0x0 ttl 64 id 0 protocol 17 offset 0 flags [none]
8     length: 1052 10.1.1.1 > 10.1.1.2)
9     ns3::UdpHeader (
10      length: 1032 49153 > 9)
11      Payload (size=1024)

рдпрд╛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдЯреНрд░реЗрд╕ рдЗрд╡реНрд╣реЗрдВрдЯрдЪрд╛ рдкрд╣рд┐рд▓рд╛ рд╡рд┐рднрд╛рдЧ (рдУрд│ 0) рдСрдкрд░реЗрд╢рди рдЖрд╣реЗ. рдЖрдордЪреНрдпрд╛рдХрдбреЗ рдпреЗрдереЗ + рдЪрд┐рдиреНрд╣ рдЖрд╣реЗ, рдЬреЗ рдкреНрд░рд╕рд╛рд░рдгрд╛рд╕рд╛рдареА рд░рд╛рдВрдЧреЗрдЪреНрдпрд╛ рдСрдкрд░реЗрд╢рдирд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдЖрд╣реЗ. рджреБрд╕рд░рд╛ рд╡рд┐рднрд╛рдЧ (рдУрд│ 1) рд╕рд┐рдореНрдпреБрд▓реЗрд╢рди рд╡реЗрд│ рдЖрд╣реЗ, рд╕реЗрдХрдВрджрд╛рдВрдордзреНрдпреЗ рд╡реНрдпрдХреНрдд рдХреЗрд▓рд╛ рдЬрд╛рддреЛ. рдЖрдореНрд╣реА рдХрд╛рдп рд╡рд┐рдЪрд╛рд░рд▓реЗ рддреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдЖрдард╡рдд рдЕрд╕реЗрд▓ UdpEchoClientApplication рджреЛрди рд╕реЗрдХрдВрджрд╛рдд рдкреЕрдХреЗрдЯ рдкрд╛рдард╡рдгреЗ рд╕реБрд░реВ рдХрд░рд╛. рдпреЗрдереЗ рдЖрдореНрд╣реА рдкреБрд╖реНрдЯреАрдХрд░рдг рдкрд╛рд╣рддреЛ рдХреА рд╣реЗ рдЦрд░реЛрдЦрд░ рдШрдбрдд рдЖрд╣реЗ.

рдЯреНрд░реЗрд╕ рдЙрджрд╛рд╣рд░рдгрд╛рдЪрд╛ рдкреБрдвреАрд▓ рд╡рд┐рднрд╛рдЧ (рдУрд│ 2 рд╡рд░реВрди) рдХреЛрдгрддреНрдпрд╛ рдЯреНрд░реЗрд╕ рд╕реНрддреНрд░реЛрддрд╛рдиреЗ рд╣рд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╡реНрдпреБрддреНрдкрдиреНрди рдХреЗрд▓рд╛ рд╣реЗ рджрд░реНрд╢рд╡рд┐рддреЗ (рдиреЗрдорд╕реНрдкреЗрд╕ рдЯреНрд░реЗрд╕ рджрд░реНрд╢рд╡рд┐рддреЗ). рддреБрдореНрд╣реА рдлрд╛рдИрд▓рд╕рд┐рд╕реНрдЯрдо рдиреЗрдорд╕реНрдкреЗрд╕рдкреНрд░рдорд╛рдгреЗ рдЯреНрд░реЗрд╕ рдиреЗрдорд╕реНрдкреЗрд╕рдЪрд╛ рд╡рд┐рдЪрд╛рд░ рдХрд░реВ рд╢рдХрддрд╛. рдирд╛рдорд╕реНрдерд╛рдирд╛рдЪреЗ рдореВрд│ рдЖрд╣реЗ рдиреЛрдбрд▓рд┐рд╕реНрдЯ. рд╣реЗ рдореБрдЦреНрдп ns-3 рдХреЛрдбрдордзреНрдпреЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрдВрдЯреЗрдирд░рд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдЖрд╣реЗ. рдпрд╛рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯрдордзреНрдпреЗ рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╕рд░реНрд╡ рдиреЛрдбреНрд╕ рдЖрд╣реЗрдд. рдЬреНрдпрд╛рдкреНрд░рдорд╛рдгреЗ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯреАрдордЪреНрдпрд╛ рдореБрд│рд╛рд╢реА рдбрд┐рд░реЗрдХреНрдЯрд░реА рдЕрд╕реВ рд╢рдХрддрд╛рдд, рдиреЛрдбрд▓рд┐рд╕реНрдЯ рдЖрдкрд▓реНрдпрд╛рдХрдбреЗ рдЕрдиреЗрдХ рдиреЛрдбреНрд╕ рдЕрд╕реВ рд╢рдХрддрд╛рдд. рддрд░ рдУрд│ /NodeList/0 рд╣реА NodeList рдордзреАрд▓ null node рдЪрд╛ рд╕рдВрджрд░реНрдн рджреЗрддреЗ, рдЬреНрдпрд╛рд▓рд╛ рдЖрдкрдг рд╕рд╣рд╕рд╛ "node 0" рдЕрд╕реЗ рд╕рдордЬрддреЛ. рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдбрдордзреНрдпреЗ рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ рдЙрдкрдХрд░рдгрд╛рдВрдЪреА рд╕реВрдЪреА рдЕрд╕рддреЗ. рд╣реА рдпрд╛рджреА рдиреЗрдорд╕реНрдкреЗрд╕рдЪреНрдпрд╛ рдкреБрдвреЗ рдЖрд╣реЗ. рдЖрдкрдг рдкрд╛рд╣реВ рд╢рдХрддрд╛ рдХреА рд╣рд╛ рдЯреНрд░реЗрд╕ рдЗрд╡реНрд╣реЗрдВрдЯ рдпреЗрддреЛ рдЙрдкрдХрд░рдгрд╕реВрдЪреА/0, рдЬреЗ рдиреЛрдбрдордзреНрдпреЗ рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗрд▓реЗ рд╢реВрдиреНрдп рдЙрдкрдХрд░рдг рдЖрд╣реЗ.

рдкреБрдвреАрд▓ рд╕рдмрд╕реНрдЯреНрд░рд┐рдВрдЧ, $ ns3 :: PointToPointNetDevice, рдХреЛрдгрддреЗ рдбрд┐рд╡реНрд╣рд╛рдЗрд╕ рд╢реВрдиреНрдп рд╕реНрдерд╛рдирд╛рд╡рд░ рдЖрд╣реЗ рддреЗ рд╕рд╛рдВрдЧрддреЗ: рдиреЛрдб рд╢реВрдиреНрдпрд╛рдЪреА рдбрд┐рд╡реНрд╣рд╛рдЗрд╕ рд╕реВрдЪреА. рд╕реНрдорд░рдг рдХрд░рд╛ рдХреА рдУрд│ 0 рдордзреНрдпреЗ рдЖрдврд│рд▓реЗрд▓реНрдпрд╛ + рдСрдкрд░реЗрд╢рдирдЪрд╛ рдЕрд░реНрде рдбрд┐рд╡реНрд╣рд╛рдЗрд╕рдЪреНрдпрд╛ рдЯреНрд░рд╛рдиреНрд╕рдорд┐рдЯ рд░рд╛рдВрдЧреЗрдд рдПрдХ рдШрдЯрдХ рдЬреЛрдбрд▓рд╛ рдЧреЗрд▓рд╛ рд╣реЛрддрд╛. рд╣реЗ "рдЯреНрд░реЕрдХ рдкрде" рдЪреНрдпрд╛ рд╢реЗрд╡рдЯрдЪреНрдпрд╛ рд╡рд┐рднрд╛рдЧрд╛рдВрдордзреНрдпреЗ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рд╣реЛрддреЗ: TxQueue/Enqueue.

рдЯреНрд░реЗрд╕рдордзреАрд▓ рдЙрд░реНрд╡рд░рд┐рдд рд╡рд┐рднрд╛рдЧ рдмрд▒реНрдпрд╛рдкреИрдХреА рдЕрдВрддрд░реНрдЬреНрдЮрд╛рдиреА рдЕрд╕рд╛рд╡реЗрдд. 3-4 рдУрд│реА рд╕реВрдЪрд┐рдд рдХрд░рддрд╛рдд рдХреА рдкреЕрдХреЗрдЯ рдкреЙрдЗрдВрдЯ-рдЯреВ-рдкреЙрдЗрдВрдЯ рдкреНрд░реЛрдЯреЛрдХреЙрд▓рдордзреНрдпреЗ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХреЗрд▓реЗ рдЖрд╣реЗ. рдУрд│реА 5-7 рджрд░реНрд╢рд╡рд┐рддреЗ рдХреА рдкреЕрдХреЗрдЯрдордзреНрдпреЗ IP4 рдЖрд╡реГрддреНрддреА рд╢реАрд░реНрд╖рд▓реЗрдЦ рдЖрд╣реЗ рдЖрдгрд┐ рддреЗ IP рдкрддреНрддреНрдпрд╛рд╡рд░ рдЙрджреНрднрд╡рд▓реЗ рдЖрд╣реЗ 10.1.1.1 рдЖрдгрд┐ рд╣реЗрддреВ рдЖрд╣реЗ 10.1.1.2. рдУрд│реА 8-9 рджрд░реНрд╢рд╡рд┐рддреЗ рдХреА рдпрд╛ рдкреЕрдХреЗрдЯрдордзреНрдпреЗ UDP рд╢реАрд░реНрд╖рд▓реЗрдЦ рдЖрд╣реЗ рдЖрдгрд┐ рд╢реЗрд╡рдЯреА 10 рд░реЗрд╖рд╛ рджрд░реНрд╢рд╡рд┐рддреЗ рдХреА рдкреЗрд▓реЛрдб рдЕрдкреЗрдХреНрд╖рд┐рдд 1024 рдмрд╛рдЗрдЯреНрд╕ рдЖрд╣реЗ.

рдЯреНрд░реЗрд╕ рдлрд╛рдЗрд▓рдордзреАрд▓ рдкреБрдвреАрд▓ рдУрд│ рджрд░реНрд╢рд╡рддреЗ рдХреА рд╕рдорд╛рди рдкреЕрдХреЗрдЯ рд╕рдорд╛рди рдиреЛрдбрд╡рд░реАрд▓ рдЯреНрд░рд╛рдиреНрд╕рдорд┐рд╢рди рд░рд╛рдВрдЧреЗрддреВрди рдЦреЗрдЪрд▓реЗ рдЧреЗрд▓реЗ рд╣реЛрддреЗ.

рдЯреНрд░реЗрд╕ рдлрд╛рдЗрд▓рдордзреАрд▓ рддрд┐рд╕рд░реА рдУрд│ рджрд░реНрд╢рд╡рддреЗ рдХреА рдЗрдХреЛ рд╕рд░реНрд╡реНрд╣рд░ рд╣реЛрд╕реНрдЯрд╡рд░реАрд▓ рдиреЗрдЯрд╡рд░реНрдХ рдЙрдкрдХрд░рдгрд╛рджреНрд╡рд╛рд░реЗ рдкреЕрдХреЗрдЯ рдкреНрд░рд╛рдкреНрдд рдЭрд╛рд▓реЗ рд╣реЛрддреЗ. рдореА рдЦрд╛рд▓реА рдЗрд╡реНрд╣реЗрдВрдЯрдЪреЗ рдкреБрдирд░реБрддреНрдкрд╛рджрди рдХреЗрд▓реЗ рдЖрд╣реЗ.

0 r
1 2.25732
2 /NodeList/1/DeviceList/0/$ns3::PointToPointNetDevice/MacRx
3   ns3::Ipv4Header (
4     tos 0x0 ttl 64 id 0 protocol 17 offset 0 flags [none]
5     length: 1052 10.1.1.1 > 10.1.1.2)
6     ns3::UdpHeader (
7       length: 1032 49153 > 9)
8       Payload (size=1024)

рд▓рдХреНрд╖рд╛рдд рдШреНрдпрд╛ рдХреА рдЯреНрд░реЗрд╕ рдСрдкрд░реЗрд╢рди рдЖрддрд╛ r рдЖрд╣реЗ рдЖрдгрд┐ рд╕рд┐рдореНрдпреБрд▓реЗрд╢рди рд╡реЗрд│ 2,25732 рд╕реЗрдХрдВрджрд╛рдВрдкрд░реНрдпрдВрдд рд╡рд╛рдврд╡рд▓рд╛ рдЧреЗрд▓рд╛ рдЖрд╣реЗ. рддреБрдореНрд╣реА рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХрд╛рд│рдЬреАрдкреВрд░реНрд╡рдХ рдлреЙрд▓реЛ рдХреЗрд▓реНрдпрд╛рд╕, рдпрд╛рдЪрд╛ рдЕрд░реНрде рддреБрдореНрд╣реА рдиреЗрдЯрд╡рд░реНрдХ рдбрд┐рд╡реНрд╣рд╛рдЗрд╕реЗрд╕рдЪрд╛ рдбреЗрдЯрд╛рд░реЗрдЯ рдЖрдгрд┐ рд▓рд┐рдВрдХ рд╡рд┐рд▓рдВрдм рддреНрдпрд╛рдВрдЪреНрдпрд╛ рдбреАрдлреЙрд▓реНрдЯ рдореВрд▓реНрдпрд╛рдВрд╡рд░ рд╕реЛрдбрд▓рд╛ рдЖрд╣реЗ. рдЖрдкрдг рдорд╛рдЧреАрд▓ рд╡рд┐рднрд╛рдЧрд╛рдд рдкрд╛рд╣рд┐рд▓реНрдпрд╛рдкреНрд░рдорд╛рдгреЗ рд╣рд╛ рдХрд╛рд│ рдкрд░рд┐рдЪрд┐рдд рдЕрд╕рд╛рд╡рд╛.

рдЯреНрд░реЗрд╕ рд╕реЛрд░реНрд╕ рдиреЗрдорд╕реНрдкреЗрд╕ рдПрдВрдЯреНрд░реА (рдУрд│ 2) рд╕реБрдзрд╛рд░рд┐рдд рдХреЗрд▓реА рдЧреЗрд▓реА рдЖрд╣реЗ рд╣реЗ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХреА рд╣рд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдиреЛрдб 1 (/рдиреЛрдбрд▓рд┐рд╕реНрдЯ/1) рдЖрдгрд┐ рдкреЕрдХреЗрдЯ рдЯреНрд░реЗрд╕ рд╕реНрддреНрд░реЛрддрд╛рджреНрд╡рд╛рд░реЗ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ (/рдореЕрдХрдЖрд░рдПрдХреНрд╕). рдлрд╛рдИрд▓рдордзреАрд▓ рдЙрд░реНрд╡рд░рд┐рдд рдЯреНрд░реЗрд╕ рдкрд╛рд╣реВрди рдЯреЛрдкреЛрд▓реЙрдЬреАрджреНрд╡рд╛рд░реЗ рдкреЕрдХреЗрдЯрдЪреНрдпрд╛ рд╣рд╛рд▓рдЪрд╛рд▓реАрдЪреЗ рдЕрдиреБрд╕рд░рдг рдХрд░рдгреЗ рдЖрдкрд▓реНрдпрд╛рд╕рд╛рдареА рд╕реЛрдкреЗ рдЕрд╕рд╛рд╡реЗ.

5.3.2 PCAP рдЯреНрд░реЗрд╕

ns-3 рдбрд┐рд╡реНрд╣рд╛рдЗрд╕ рд╣реЗрд▓реНрдкрд░рдЪрд╛ рд╡рд╛рдкрд░ .pcap рдлреЙрд░рдореЕрдЯрдордзреНрдпреЗ рдЯреНрд░реЗрд╕ рдлрд╛рдЗрд▓реНрд╕ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рджреЗрдЦреАрд▓ рдХреЗрд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ. рдкрд░рд┐рд╡рд░реНрдгреА рд╢рдмреНрдж pcap (рд╕рд╛рдорд╛рдиреНрдпрддрдГ рд▓реЛрдЕрд░рдХреЗрд╕рдордзреНрдпреЗ рд▓рд┐рд╣рд┐рд▓реЗрд▓реЗ) рдореНрд╣рдгрдЬреЗ рдкреЕрдХреЗрдЯ рдХреЕрдкреНрдЪрд░ рдЖрдгрд┐ рдкреНрд░рддреНрдпрдХреНрд╖рд╛рдд рдПрдХ API рдЖрд╣реЗ рдЬреНрдпрд╛рдордзреНрдпреЗ .pcap рдлрд╛рдЗрд▓ рд╕реНрд╡рд░реВрдк рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдгреЗ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗ. рд╣реЗ рд╕реНрд╡рд░реВрдк рд╡рд╛рдЪреВ рдЖрдгрд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реВ рд╢рдХрдгрд╛рд░рд╛ рд╕рд░реНрд╡рд╛рдд рд▓реЛрдХрдкреНрд░рд┐рдп рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЖрд╣реЗ рд╡рд╛рдпрд░рд╢рд╛рд░реНрдХ (рдкреВрд░реНрд╡реА рдореНрд╣рдгрддрд╛рдд рдИрдерд░реЗрд▓). рддрдерд╛рдкрд┐, рдЕрд╕реЗ рдЕрдиреЗрдХ рдЯреНрд░реЕрдлрд┐рдХ рдЯреНрд░реЗрд╕ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЖрд╣реЗрдд рдЬреЗ рд╣реЗ рдкреЕрдХреЗрдЯ рд╕реНрд╡рд░реВрдк рд╡рд╛рдкрд░рддрд╛рдд. рдЖрдореНрд╣реА рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдирд╛ pcap рдЯреНрд░реЗрд╕рдЪреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЙрдкрд▓рдмреНрдз рдЕрдиреЗрдХ рд╕рд╛рдзрдиреЗ рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддреЛ. рдпрд╛ рдЯреНрдпреБрдЯреЛрд░рд┐рдпрд▓рдордзреНрдпреЗ рдЖрдкрдг pcap рдЯреНрд░реЗрд╕ рд╡рд╛рдкрд░реВрди рдкрд╛рд╣рдгреНрдпрд╛рд╡рд░ рд▓рдХреНрд╖ рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реВ tcpdump.

pcap рдЯреНрд░реЗрд╕рд┐рдВрдЧ рд╕рдХреНрд╖рдо рдХрд░рдгреЗ рдХреЛрдбрдЪреНрдпрд╛ рдПрдХрд╛ рдУрд│реАрдиреЗ рдХреЗрд▓реЗ рдЬрд╛рддреЗ.

pointToPoint.EnablePcapAll ("myfirst");

рдЖрдореНрд╣реА рдиреБрдХрддрд╛рдЪ рдЬреЛрдбрд▓реЗрд▓реНрдпрд╛ ASCII рдЯреНрд░реЗрд╕ рдХреЛрдбрдирдВрддрд░ рдХреЛрдбрдЪреА рд╣реА рдУрд│ рдкреЗрд╕реНрдЯ рдХрд░рд╛ scratch/myfirst.cc. рд▓рдХреНрд╖рд╛рдд рдШреНрдпрд╛ рдХреА рдЖрдореНрд╣реА рдлрдХреНрдд "myfirst" рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд╛рд╕ рдХреЗрд▓реА рдЖрд╣реЗ, "myfirst.pcap" рдХрд┐рдВрд╡рд╛ рддрддреНрд╕рдо рдХрд╛рд╣реАрд╣реА рдирд╛рд╣реА. рдХрд╛рд░рдг рдкреЕрд░рд╛рдореАрдЯрд░ рд╣рд╛ рдЙрдкрд╕рд░реНрдЧ рдЖрд╣реЗ, рдкреВрд░реНрдг рдлрд╛рдЗрд▓рдирд╛рд╡ рдирд╛рд╣реА. рд╕рд┐рдореНрдпреБрд▓реЗрд╢рди рджрд░рдореНрдпрд╛рди, рд╕рд╣рд╛рдпреНрдпрдХ рдкреНрд░рддреНрдпрдХреНрд╖рд╛рдд рдкреНрд░рддреНрдпреЗрдХ рдкреЙрдЗрдВрдЯ-рдЯреВ-рдкреЙрдЗрдВрдЯ рдбрд┐рд╡реНрд╣рд╛рдЗрд╕рд╕рд╛рдареА рдЯреНрд░реЗрд╕ рдлрд╛рдЗрд▓ рддрдпрд╛рд░ рдХрд░реЗрд▓. рдЙрдкрд╕рд░реНрдЧ, рдиреЛрдб рдХреНрд░рдорд╛рдВрдХ, рдЙрдкрдХрд░рдг рдХреНрд░рдорд╛рдВрдХ рдЖрдгрд┐ рдкреНрд░рддреНрдпрдп рд╡рд╛рдкрд░реВрди рдлрд╛рдЗрд▓рдЪреА рдирд╛рд╡реЗ рддрдпрд╛рд░ рдХреЗрд▓реА рдЬрд╛рддреАрд▓.pcap┬╗.

рдЖрдордЪреНрдпрд╛ рдЙрджрд╛рд╣рд░рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯрд╕рд╛рдареА, рдЖрдореНрд╣реА рд╢реЗрд╡рдЯреА "рдирд╛рд╡рд╛рдЪреНрдпрд╛ рдлрд╛рдЗрд▓реНрд╕ рдкрд╛рд╣реВ.myfirst-0-0.pcap"рдЖрдгрд┐"myfirst-1-0.pcap", рдЬреЗ рдЕрдиреБрдХреНрд░рдореЗ рдиреЛрдб 0-рдбрд┐рд╡реНрд╣рд╛рдЗрд╕ 0 рдЖрдгрд┐ рдиреЛрдб 1-рдбрд┐рд╡реНрд╣рд╛рдЗрд╕ 0 рд╕рд╛рдареА pcap рдЯреНрд░реЗрд╕ рдЖрд╣реЗрдд. рдПрдХрджрд╛ рддреБрдореНрд╣реА pcap рдЯреНрд░реЗрд╕рд┐рдВрдЧ рд╕рдХреНрд╖рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХреЛрдбрдЪреА рдУрд│ рдЬреЛрдбрд▓реА рдХреА, рддреБрдореНрд╣реА рдиреЗрд╣рдореАрдЪреНрдпрд╛ рдкрджреНрдзрддреАрдиреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд╛рд▓рд╡реВ рд╢рдХрддрд╛:

$ ./waf --run scratch/myfirst

рддреБрдореНрд╣реА рддреБрдордЪреНрдпрд╛ рд╡рд┐рддрд░рдгрд╛рдЪреНрдпрд╛ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХреЗрдд рдкрд╛рд╣рд┐рд▓реНрдпрд╛рд╕, рддреБрдореНрд╣рд╛рд▓рд╛ рддреАрди рдлрд╛рдЗрд▓реНрд╕ рджрд┐рд╕рд▓реНрдпрд╛ рдкрд╛рд╣рд┐рдЬреЗрдд: рдПрдХ ASCII рдЯреНрд░реЗрд╕ рдлрд╛рдЗрд▓ myfirst.tr, рдЬреНрдпрд╛рдЪрд╛ рдЖрдореНрд╣реА рдкреВрд░реНрд╡реА рдЕрднреНрдпрд╛рд╕ рдХреЗрд▓рд╛ рдЖрд╣реЗ, рдлрд╛рдЗрд▓реНрд╕ myfirst-0-0.pcap ╨╕ myfirst-1-0.pcap - рдЖрдореНрд╣реА рдиреБрдХрддреНрдпрд╛рдЪ рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдирд╡реАрди pcap рдлрд╛рдЗрд▓реНрд╕.

tcpdump рд╕рд╣ рдЖрдЙрдЯрдкреБрдЯ рд╡рд╛рдЪрдгреЗ

рд╕рдзреНрдпрд╛, pcap рдлрд╛рдЗрд▓реНрд╕ рдкрд╛рд╣рдгреНрдпрд╛рдЪрд╛ рд╕рд░реНрд╡рд╛рдд рд╕реЛрдкрд╛ рдорд╛рд░реНрдЧ рдореНрд╣рдгрдЬреЗ tcpdump рд╡рд╛рдкрд░рдгреЗ.

$ tcpdump -nn -tt -r myfirst-0-0.pcap
reading from file myfirst-0-0.pcap, link-type PPP (PPP)
2.000000 IP 10.1.1.1.49153 > 10.1.1.2.9: UDP, length 1024
2.514648 IP 10.1.1.2.9 > 10.1.1.1.49153: UDP, length 1024
tcpdump -nn -tt -r myfirst-1-0.pcap
reading from file myfirst-1-0.pcap, link-type PPP (PPP)
2.257324 IP 10.1.1.1.49153 > 10.1.1.2.9: UDP, length 1024
2.257324 IP 10.1.1.2.9 > 10.1.1.1.49153: UDP, length 1024

рдбрдВрдк рдордзреНрдпреЗ myfirst-0-0.pcap (рдХреНрд▓рд╛рдпрдВрдЯ рдбрд┐рд╡реНрд╣рд╛рдЗрд╕) рд╕рд┐рдореНрдпреБрд▓реЗрд╢рдирдЪреНрдпрд╛ 2 рд╕реЗрдХрдВрджрд╛рдВрдирдВрддрд░ рдЗрдХреЛ рдкреЕрдХреЗрдЯ рдкрд╛рдард╡рд▓реЗрд▓реЗ рдЖрдкрдг рдкрд╛рд╣реВ рд╢рдХрддрд╛. рдЬрд░ рддреБрдореНрд╣реА рджреБрд╕рд░рд╛ рдбрдВрдк рдкрд╛рд╣рд┐рд▓рд╛ рддрд░ (myfirst-1-0.pcap), рддреБрдореНрд╣рд╛рд▓рд╛ рджрд┐рд╕реЗрд▓ рдХреА рдкреЕрдХреЗрдЯ 2,257324 рд╕реЗрдХрдВрджрд╛рдВрдиреА рдкреНрд░рд╛рдкреНрдд рдЭрд╛рд▓реЗ рдЖрд╣реЗ. рддреБрдореНрд╣рд╛рд▓рд╛ рджреБрд╕рд▒реНрдпрд╛ рдбрдВрдкрдордзреНрдпреЗ рджрд┐рд╕реЗрд▓ рдХреА рдкреЕрдХреЗрдЯ 2.257324 рд╕реЗрдХрдВрджрд╛рдд рдкрд░рдд рдХреЗрд▓реЗ рдЬрд╛рддреЗ рдЖрдгрд┐ рд╢реЗрд╡рдЯреА рдХреНрд▓рд╛рдпрдВрдЯрд▓рд╛ рдкрд╣рд┐рд▓реНрдпрд╛ рдбрдВрдкрдордзреНрдпреЗ 2.514648 рд╕реЗрдХрдВрджрд╛рдд рдкреЕрдХреЗрдЯ рдкрд░рдд рдорд┐рд│рд╛рд▓реЗ.

рд╡рд╛рдпрд░рд╢рд╛рд░реНрдХрд╕рд╣ рдЖрдЙрдЯрдкреБрдЯ рд╡рд╛рдЪрдгреЗ

рдЖрдкрдг рдкрд░рд┐рдЪрд┐рдд рдирд╕рд▓реНрдпрд╛рд╕ рд╡рд╛рдпрд░рд╢рд╛рд░реНрдХ, рдПрдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдЖрд╣реЗ рдЬрд┐рдереВрди рддреБрдореНрд╣реА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЖрдгрд┐ рджрд╕реНрддрдРрд╡рдЬ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реВ рд╢рдХрддрд╛: http://www.wireshark.org/. рд╡рд╛рдпрд░рд╢рд╛рд░реНрдХ рдПрдХ GUI рдЖрд╣реЗ рдЬреНрдпрд╛рдЪрд╛ рд╡рд╛рдкрд░ рдпрд╛ рдЯреНрд░реЗрд╕ рдлрд╛рдЗрд▓реНрд╕ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХреЗрд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ. рддреБрдордЪреНрдпрд╛рдХрдбреЗ рд╡рд╛рдпрд░рд╢рд╛рд░реНрдХ рдЕрд╕рд▓реНрдпрд╛рд╕, рддреБрдореНрд╣реА рдХреЛрдгрддреАрд╣реА рдЯреНрд░реЗрд╕ рдлрд╛рдЗрд▓ рдЙрдШрдбреВ рд╢рдХрддрд╛ рдЖрдгрд┐ рдкреЕрдХреЗрдЯ рд╕реНрдирд┐рдлрд░ рд╡рд╛рдкрд░реВрди рдкреЕрдХреЗрдЯреНрд╕ рдХреЕрдкреНрдЪрд░ рдХреЗрд▓реНрдпрд╛рдкреНрд░рдорд╛рдгреЗ рд╕рд╛рдордЧреНрд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реВ рд╢рдХрддрд╛.

рд╕реНрддреНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛