{"id":2009,"date":"2007-09-02T23:33:26","date_gmt":"2007-09-02T14:33:26","guid":{"rendered":"http:\/\/pchero21.com\/?p=2009"},"modified":"2007-09-02T23:33:26","modified_gmt":"2007-09-02T14:33:26","slug":"implementing-a-new-manet-unicast-routing-protocol-in-ns2-version-0-2-%eb%b2%88%ec%97%ad%ed%8c%90-2","status":"publish","type":"post","link":"http:\/\/pchero21.com\/?p=2009","title":{"rendered":"Implementing a New Manet Unicast Routing Protocol in NS2 Version 0.2 \ubc88\uc5ed\ud310-2"},"content":{"rendered":"<p><strong>4.3.2 command()<\/strong><\/p>\n<p>\ucf54\ub4dc\uc758 \ub2e4\uc74c \uc870\uac01\uc740 \uc870\uae08 \ub354 \ubcf5\uc7a1\ud558\ub2e4. \uadf8\uac83\uc740 \uc6b0\ub9ac\uc758 \uc5d0\uc774\uc804\ud2b8\uac00 <strong>\uc5d0\uc774\uc804\ud2b8<\/strong> \ud074\ub798\uc2a4\ub85c\ubd80\ud130 \ubb3c\ub824\ubc1b\ub294 <em>command()<\/em> \ubc29\ubc95\uc758 \uad6c\ud604\uc73c\ub85c \uad6c\uc131\ub41c\ub2e4.<\/p>\n<p>protoname\/protoname.cc<\/p>\n<p>1: int<\/p>\n<p>2: Protoname::command(int argc, const char*const* argv) {<\/p>\n<p>3: if (argc == 2) {<\/p>\n<p>4: if (strcasecmp(argv[1], &#8220;start&#8221;) == 0) {<\/p>\n<p>5: pkt_timer_.resched(0.0);<\/p>\n<p>6: return TCL_OK;<\/p>\n<p>7: }<\/p>\n<p>8: else if (strcasecmp(argv[1], &#8220;print_rtable&#8221;) == 0) {<\/p>\n<p>9: if (logtarget_ != 0) {<\/p>\n<p>10: sprintf(logtarget_-&gt;pt_-&gt;buffer(), &#8220;P %f _%d_ Routing Table&#8221;,<\/p>\n<p>11: CURRENT_TIME,<\/p>\n<p>12: ra_addr());<\/p>\n<p>13: logtarget_-&gt;pt_-&gt;dump();<\/p>\n<p>14: rtable_.print(logtarget_);<\/p>\n<p>15: }<\/p>\n<p>16: else {<\/p>\n<p>17: fprintf(stdout, &#8220;%f _%d_ If you want to print this routing table &#8221;<\/p>\n<p>18: &#8220;you must create a trace file in your tcl script&#8221;,<\/p>\n<p>19: CURRENT_TIME,<\/p>\n<p>20: ra_addr());<\/p>\n<p>21: }<\/p>\n<p>22: return TCL_OK;<\/p>\n<p>23: }<\/p>\n<p>24: }<\/p>\n<p>25: else if (argc == 3) {<\/p>\n<p>26: \/\/ Obtains corresponding dmux to carry packets to upper layers<\/p>\n<p>27: if (strcmp(argv[1], &#8220;port-dmux&#8221;) == 0) {<\/p>\n<p>28: dmux_ = (PortClassifier*)TclObject::lookup(argv[2]);<\/p>\n<p>29: if (dmux_ == 0) {<\/p>\n<p>30: fprintf(stderr, &#8220;%s: %s lookup of %s failedn&#8221;,<\/p>\n<p>31: __FILE__,<\/p>\n<p>32: argv[1],<\/p>\n<p>33: argv[2]);<\/p>\n<p>34: return TCL_ERROR;<\/p>\n<p>35: }<\/p>\n<p>36: return TCL_OK;<\/p>\n<p>37: }<\/p>\n<p>38: \/\/ Obtains corresponding tracer<\/p>\n<p>39: else if (strcmp(argv[1], &#8220;log-target&#8221;) == 0 ||<\/p>\n<p>40: strcmp(argv[1], &#8220;tracetarget&#8221;) == 0) {<\/p>\n<p>41: logtarget_ = (Trace*)TclObject::lookup(argv[2]);<\/p>\n<p>42: if (logtarget_ == 0)<\/p>\n<p>43: return TCL_ERROR;<\/p>\n<p>44: return TCL_OK;<\/p>\n<p>45: }<\/p>\n<p>46: }<\/p>\n<p>47: \/\/ Pass the command to the base class<\/p>\n<p>48: return Agent::command(argc, argv);<\/p>\n<p>49: }<\/p>\n<p>argv[0]\uc740 \uc120\ud3ec\ub418\ub294 \ubc29\ubc95 (\ud56d\uc0c1 \u201ccmd&#8221;, 3\uc7a5 [2]\ub97c \ubcf4\ub77c)\uc758 \uc774\ub984\uc744 \ud3ec\ud568\ud558\uace0, argv[1]\uc740 \uc694\uccad\ub418\ub294 \ub3d9\uc791\uc774\uba70, argv[2..argc-1]\uc740 \ud1b5\uacfc\ub418\uc5c8\ub358 \uc778\uc218\ub4e4\uc758 \ub098\uba38\uc9c0\uc774\ub2e4. \uc774\ub7f0 \ud568\uc218 \ub0b4\uc5d0\uc11c \uc6b0\ub9ac\uac00 Tcl\ub85c\ubd80\ud130 \uc811\uadfc\ud558\uae30 \uc27d\uac8c \ub9cc\ub4e4\uae30\ub97c \uc6d0\ud558\ub294 \uc784\uc758\uc758 \ub2e4\ub978 \ub3d9\uc791\ubfd0\ub9cc \uc544\ub2c8\ub77c \uba87 \uac00\uc9c0 \uc758\ubb34\uc801\uc778 \ub3d9\uc791\ub4e4\uc744 \ucf54\ub4dc\ud574\uc57c \ud55c\ub2e4. \ud55c \uc608\ub85c\uc368 \uc6b0\ub9ac\ub294 \ub77c\uc6b0\ud305 \ud45c\uc758 \ub0b4\uc6a9\ub4e4\uc744 \ud2b8\ub808\uc774\uc2a4 \ud30c\uc77c\ub85c \ub364\ud504\ud558\ub294 print_rtable\ub85c \ubd88\ub9ac\ub294 \ub3d9\uc791\uc744 \ucf54\ub4dc\ud560 \uac83\uc774\ub2e4.<\/p>\n<p>\uc6b0\ub9ac\ub294 \ub124\uac00 \uadf8\uac83\ub4e4\uc744 \uc5b4\ub5bb\uac8c \ucc98\ub9ac\ud558\ub294 \uc9c0 \ubcfc \uc218 \uc788\ub3c4\ub85d, 2\uac1c \ub610\ub294 3\uac1c\uc758 \uc778\uc218\ub4e4\uc744 \uac00\uc9c4 \uacbd\uc6b0\ub4e4\uc5d0\uc11c\ub9cc \uc6b0\ub9ac\uc758 \ucf54\ub4dc\uc758 \ucd08\uc810\uc744 \ub9de\ucd98\ub2e4. \uac01\uac01\uc758 \uacbd\uc6b0\ub294 <em>TCL_OK<\/em> (\ub9cc\uc57d \ubaa8\ub4e0 \uac83\uc774 \uad1c\ucc2e\uc73c\uba74) \ub610\ub294 <em>TCL_ERROR<\/em> (\ub9cc\uc57d \uc784\uc758\uc758 \uc5d0\ub7ec\uac00 \ubc1c\uc0dd\ub418\uc5c8\ub2e4\uba74) \ub458 \uc911\uc758 \ud558\ub098\ub97c \ub418\ub3cc\ub824\uc8fc\uba74\uc11c \uadf8\uac83\uc758 \uc2e4\ud589\uc744 \ub05d\ub0b4\uc57c \ud55c\ub2e4.<\/p>\n<p>\uc904\ub4e4 4-7\uc740 \uc6b0\ub9ac\uac00 \ud56d\uc0c1 \uad6c\ud604\ud574\uc57c \ud558\ub294 \uc758\ubb34\uc801\uc778 \uba85\ub839\uc5b4\ub97c \uae30\uc220\ud55c\ub2e4: <em>start<\/em>. \uc774\ub7f0 \uba85\ub839\uc5b4\uc758 \uc608\uc0c1\ub418\ub294 \ud589\ub3d9\uc740 \uadf8\uac83\uc758 \uc2e4\ud589\uc744 \uc2dc\uc791\ud558\uae30 \uc704\ud55c \uc5d0\uc774\uc804\ud2b8\ub97c \uad6c\uc131\ud558\ub294 \uac83\uc774\ub2e4. \uc6b0\ub9ac\uc758 \uacbd\uc6b0\uc5d0\uc11c \uadf8\uac83\uc740 \uc790\uc2e0\uc758 \ud328\ud0b7 \uc804\uc1a1 \ud0c0\uc774\uba38\ub97c \uc2dc\uc791\ud55c\ub2e4. \uc6b0\ub9ac\ub294 \ub77c\uc6b0\ud305 \uc5d0\uc774\uc804\ud2b8\uac00 \uc790\uc2e0\uc758 \ub3d9\uc791\uc744 \uc2dc\uc791\ud558\uae30 \uc704\ud574\uc11c \uc218\ud589\ud574\uc57c \ud558\ub294 \ubaa8\ub4e0 \uc694\uad6c\ub418\ub294 \ud589\ub3d9\ub4e4\uc744 \uc5ec\uae30\uc5d0\uc11c \uad6c\ud604\ud574\uc57c \ud55c\ub2e4.<\/p>\n<p>\uc904\ub4e4 8-23\uc740 \uc6b0\ub9ac\uc758 print_rtable \uba85\ub839\uc5b4\ub97c \uad6c\ud604\ud55c\ub2e4. \uc6b0\ub9ac\ub294 <em>logtarget_<\/em>\uc774 \ucd08\uae30\ud654\ub418\ub294 \uc9c0\ub97c \uccab \ubc88\uc9f8\ub85c \uccb4\ud06c\ud55c\ub2e4. (\uc904 9) \uadf8\ub9ac\uace0 \ub098\uc11c \uc6b0\ub9ac\ub294 \uc904\ub4e4 10-13\uc5d0 \ubcf4\uc5ec\uc9c0\ub294 \uac83\ucc98\ub7fc \ud45c\ub97c \ud2b8\ub808\uc774\uc2a4 \ud30c\uc77c \uc548\uc73c\ub85c \ub364\ud504\ud55c\ub2e4. \ucf54\ub4dc\uc758 \uc774\ub7f0 \uc870\uac01\uc744 \uc774\ud574\ud558\uae30 \uc704\ud574\uc11c \ub124\uac00 <em>trace\/trace.h<\/em> \ud5e4\ub354 \ud30c\uc77c\uc744 \uc870\uc0ac\ud558\ub294 \uac83\uc740 \uc720\uc6a9\ud560 \uac83\uc774\ub2e4. \ud2b8\ub808\uc774\uc2a4 \ud074\ub798\uc2a4\uac00 \uc815\uc758\ub418\ub294 \uacf3\uc774 \uc788\ub2e4. \uadf8\uac83\uc740 <strong>BaseTrace<\/strong> \ud074\ub798\uc2a4\uc758 <em>pt_<\/em>\uc640 \uad00\uacc4\uac00 \uc788\ub2e4. \uc774\ub7f0 \ub9c8\uc9c0\ub9c9 \ud074\ub798\uc2a4\ub294 \ucd9c\ub825\uc774 \ubc84\ud37c\ub418\ub294 \ubcc0\uc218\ub97c \uc5bb\uae30 \uc704\ud574 \uc0ac\uc6a9\ub418\ub294 <em>buffer()<\/em>\uc640 \uadf8 \ubc84\ud37c\uc5d0\uc11c \ucd9c\ub825 \ud30c\uc77c\ub85c \uc3df\uc544\uc838 \ub098\uc624\uae30 \uc704\ud574 \uc0ac\uc6a9\ub418\ub294 <em>dump()<\/em> \ud568\uc218\ub4e4 \uac01\uac01 \uad6c\ud604\ud55c\ub2e4. \ub9c8\uc9c0\ub9c9\uc73c\ub85c, \uc904 14\ub294 \uc790\uc2e0 \uc18c\uc720\uc758 \ub0b4\uc6a9\uc744 \ud2b8\ub808\uc774\uc2a4 \ud30c\uc77c \uc548\uc5d0 \uc4f0\uae30 \uc704\ud55c \uc6b0\ub9ac\uc758 \ub77c\uc6b0\ud305 \ud45c\uc758 <em>print()<\/em> \ud568\uc218\ub97c \ud638\ucd9c\ud55c\ub2e4. \uc544\ub798\uc758 TCL \ucf54\ub4dc\ub294 \uc2dc\ubbac\ub808\uc774\uc158 \uc2a4\ud06c\ub9bd\ud2b8\ub85c\ubd80\ud130 \uc815\ud574\uc9c4 \uc2dc\uac04\uc5d0 <em>print_rtable<\/em> \ub3d9\uc791\uc744 \uc2e4\ud589\ud558\ub294 \ubc95\uc744 \ubcf4\uc5ec\uc900\ub2e4. <em>ns_<\/em>\ub294 <strong>\uc2dc\ubbac\ub808\uc774\ud130<\/strong>\uc758 \uc778\uc2a4\ud134\uc2a4\ub97c \ud3ec\ud568\ud558\uace0 <em>node_<\/em>\ub294 <em>ns_<\/em>\uc5d0 \uc758\ud574\uc11c \uc0dd\uc131\ub41c <strong>\ub178\ub4dc<\/strong>\uc784\uc744 \uac00\uc815\ud55c\ub2e4. \uc6b0\ub9ac\ub294 \uc778\uc218\ub85c\uc368 255\ub97c \ud1b5\uacfc\uc2dc\ud0a4\ub294 \uc911\uc778\ub370 \uc65c\ub0d0\ud558\uba74 \uc774\uac83\uc740 \ub77c\uc6b0\ud305 \uc5d0\uc774\uc804\ud2b8\uac00 \ubd80\ucc29\ub418\ub294 \ud3ec\ud2b8\uc758 \uc22b\uc790\uc774\uae30 \ub54c\ubb38\uc774\ub2e4.<\/p>\n<p>simulation.tcl<\/p>\n<p>1: $ns_ at 15.0 &#8220;[$node_ agent 255] print_rtable&#8221;<\/p>\n<p>\uad6c\ud604\ud558\uae30 \uc704\ud55c \ub610 \ub2e4\ub978 \uc758\ubb34\uc801\uc778 \uba85\ub839\uc5b4\ub294 port-dmux\uc774\ub2e4. \uadf8\uac83\uc758 \uad6c\ud604\uc740 \uc904\ub4e4 27-37\uc5d0\uc11c \uc81c\uacf5\ub41c\ub2e4. [2]\uc758 3\uc7a5\uc5d0\uc11c \uc124\uba85\ub418\ub294 \uac83\ucc98\ub7fc, NS\ub294 \uadf8\uac83\uc758 \uc774\ub984\uc774 \uc8fc\uc5b4\uc9c0\ub294 \uadf8\uac83\ub4e4 \uac01\uac01\uc5d0 \ube60\ub978 \uc811\uc18d\uc744 \uc81c\uacf5\ud558\uae30 \uc704\ud574\uc11c \ud574\uc2dc \ud45c \uc548\uc5d0 \ubaa8\ub4e0 \ucf64\ud30c\uc77c\ub41c \uc624\ube0c\uc81d\ud2b8 (C++ \uc624\ube0c\uc81d\ud2b8)\uc5d0 \ub300\ud55c \ucc38\uc870\ub97c \uc800\uc7a5\ud55c\ub2e4. \uc6b0\ub9ac\ub294 \uadf8\uac83\uc758 \uc774\ub984\uc774 \uc8fc\uc5b4\uc9c0\ub294 <em>\ud3ec\ud2b8\ubd84\ub958\uc790<\/em> \uc624\ube0c\uc81d\ud2b8\ub97c \ud68d\ub4dd\ud558\uae30 \uc704\ud574\uc11c \uc904 28\uc5d0\uc11c \uadf8 \ud3b8\uc758\ub97c \uc774\uc6a9\ud55c\ub2e4.<\/p>\n<p>\uc720\uc0ac\ud558\uac8c, \uadf8\uac83\uc758 \uc774\ub984\uc774 \uc8fc\uc5b4\uc9c0\ub294 <strong>\ud2b8\ub808\uc774\uc2a4<\/strong> \uc624\ube0c\uc81d\ud2b8\ub97c \ub2e8\uc21c\ud788 \ud68d\ub4dd\ud558\ub294 tracetarget (\uc6b0\ub9ac\ub294 \uac8c\ub2e4\uac00 \uadf8\uac83\uc774 <em>log-target<\/em>\uc73c\ub85c \ubd88\ub824\uc9c0\ub3c4\ub85d \ud5c8\ub77d\ud55c\ub2e4\ub294 \uac83\uc744 \uc8fc\ubaa9\ud574\ub77c)\uc774\ub77c \ubd88\ub9ac\ub294 \ub610 \ub2e4\ub978 \uc758\ubb34\uc801\uc778 \ub3d9\uc791\uc774 \uc788\ub2e4.<\/p>\n<p>\ub9cc\uc57d \uc6b0\ub9ac\uac00 \uc694\uccad\ub418\ub294 \uba85\ub839\uc5b4\ub97c \ucc98\ub9ac\ud558\ub294 \ubc95\uc744 \uc54c\uc9c0 \ubabb\ud55c\ub2e4\uba74, \uc6b0\ub9ac\uac00 \uc904 48\uc5d0\uc11c \uc2e4\ud589\ud55c \uac83\ucc98\ub7fc, \uc774\ub7f0 \ucc45\uc784\uc744 \uae30\ubc18 \ud074\ub798\uc2a4\uc5d0 \uc704\uc784\ud55c\ub2e4.<\/p>\n<p><strong>4.3.3 recv()<\/strong><\/p>\n<p>\ub2e4\uc74c \ud568\uc218\ub294 recv()\uc774\uace0 \uc6b0\ub9ac\uac00 \uc544\ub294 \uac83\ucc98\ub7fc \ub77c\uc6b0\ud305 \uc5d0\uc774\uc804\ud2b8\uac00 \ud328\ud0b7\uc744 \ubc1b\uc744 \ub54c\ub9c8\ub2e4 \uc5b8\uc81c\ub098 \uc120\ud3ec\ub41c\ub2e4. \ubaa8\ub4e0 <strong>\ud328\ud0b7<\/strong>\uc740 <em>common\/packet.h<\/em>\uc5d0\uc11c \uc815\uc758\ub41c <em>hdr_cmn<\/em>\uc774\ub77c \ubd88\ub9ac\ub294 \uacf5\ud1b5\uc758 \ud5e4\ub354\ub97c \uac00\uc9c4\ub2e4. \uc774\ub7f0 \ud5e4\ub354\uc5d0 \uc811\uc18d\ud558\uae30 \uc704\ud574\uc11c \uc6b0\ub9ac \uc18c\uc720\uc758 \ud328\ud0b7 \uc720\ud615\uc744 \uc704\ud574\uc11c \uc6b0\ub9ac\uac00 \uc804\uc5d0 \uc815\uc758\ud588\ub358 \uac83\uacfc \uac19\uc740 \ub9e4\ud06c\ub85c\uac00 \uc788\uace0, \uc6b0\ub9ac\ub294 \uadf8\uac83\uc744 \uc904 3\uc5d0\uc11c \uc0ac\uc6a9\ud55c\ub2e4. \uc904 4\ub294 \uac19\uc740 \uac83\uc744 \uc2e4\ud589\ud558\uc9c0\ub9cc <em>ip.h<\/em> \uc548\uc5d0 \uae30\uc220\ub41c, <em>hdr_ip<\/em>, IP \ud5e4\ub354\ub97c \uc5bb\uae30 \uc704\ud55c \uac83\uc774\ub2e4.<\/p>\n<p>1: void<\/p>\n<p>2: Protoname::recv(Packet* p, Handler* h) {<\/p>\n<p>3: struct hdr_cmn* ch = HDR_CMN(p);<\/p>\n<p>4: struct hdr_ip* ih = HDR_IP(p);<\/p>\n<p>5:<\/p>\n<p>6: if (ih-&gt;saddr() == ra_addr()) {<\/p>\n<p>7: \/\/ If there exists a loop, must drop the packet<\/p>\n<p>8: if (ch-&gt;num_forwards() &gt; 0) {<\/p>\n<p>9: drop(p, DROP_RTR_ROUTE_LOOP);<\/p>\n<p>10: return;<\/p>\n<p>11: }<\/p>\n<p>12: \/\/ else if this is a packet I am originating, must add IP header<\/p>\n<p>13: else if (ch-&gt;num_forwards() == 0)<\/p>\n<p>14: ch-&gt;size() += IP_HDR_LEN;<\/p>\n<p>15: }<\/p>\n<p>16:<\/p>\n<p>17: \/\/ If it is a protoname packet, must process it<\/p>\n<p>18: if (ch-&gt;ptype() == PT_PROTONAME)<\/p>\n<p>19: recv_protoname_pkt(p);<\/p>\n<p>20: \/\/ Otherwise, must forward the packet (unless TTL has reached zero)<\/p>\n<p>21: else {<\/p>\n<p>22: ih-&gt;ttl_&#8211;;<\/p>\n<p>23: if (ih-&gt;ttl_ == 0) {<\/p>\n<p>24: drop(p, DROP_RTR_TTL);<\/p>\n<p>25: return;<\/p>\n<p>26: }<\/p>\n<p>27: forward_data(p);<\/p>\n<p>28: }<\/p>\n<p>29: }<\/p>\n<p>\uc6b0\ub9ac\uac00 \ud574\uc57c \ud558\ub294 \uccab \ubc88\uc9f8 \uac83\uc740 \uc6b0\ub9ac\uac00 \uc6b0\ub9ac \uc790\uc2e0\uc5d0\uac8c \uc804\uc1a1\ud588\ub358 \ud328\ud0b7\uc744 \ubc1b\ub294 \uc911\uc774 \uc544\ub2d8\uc744 \uccb4\ud06c\ud558\ub294 \uac83\uc774\ub2e4. \ub9cc\uc57d \uadf8\uac83\uc774 \uadf8 \uacbd\uc6b0\ub77c\uba74, \uc6b0\ub9ac\uac00 \uc904\ub4e4 8-11\uc5d0\uc11c \uc2e4\ud589\ud55c \uac83\ucc98\ub7fc, \ud328\ud0b7\uc744 \ubc84\ub824\uc57c \ud558\uace0 \ub418\ub3cc\ub824 \ubcf4\ub0b4\uc57c \ud55c\ub2e4. \uac8c\ub2e4\uac00, \ub9cc\uc57d \uadf8 \ud328\ud0b7\uc774 (\ub178\ub4dc\uc758 \uc0c1\uc704 \ub808\uc774\uc5b4\ub4e4\uc5d0 \uc758\ud574\uc11c) \ub178\ub4dc \ub0b4\uc5d0\uc11c \ubc1c\uc0dd\ub418\uc5c8\ub2e4\uba74 \uc6b0\ub9ac\ub294 \ub77c\uc6b0\ud305 \ud504\ub85c\ud1a0\ucf5c\uc774 (\ubc14\uc774\ud2b8 \ub2e8\uc704\ub85c) \ub354\ud558\ub294 \uc911\uc778 \uadf8 \uc624\ubc84\ud5e4\ub4dc\ub97c \ud328\ud0b7\uc758 \uae38\uc774\uc5d0 \ub354\ud574\uc57c \ud55c\ub2e4. \uc904\ub4e4 13-14\uc5d0\uc11c \ubcf4\uc5ec\uc9c0\ub294 \uac83\ucc98\ub7fc, \uc6b0\ub9ac\ub294 <em>protoname<\/em>\uc774 IP \uc704\uc5d0\uc11c \ub3d9\uc791\ud55c\ub2e4\uace0 \uac00\uc815\ud55c\ub2e4.<\/p>\n<p>\ubc1b\uc544\ub4e4\uc5ec\uc9c4 \ud328\ud0b7\uc774 \uc720\ud615 PT_PROTONAME\uc77c \ub54c \uadf8\ub54c \uc6b0\ub9ac\ub294 \uadf8\uac83\uc744 \ucc98\ub9ac\ud558\uae30 \uc704\ud574\uc11c <em>recv_protoname_pkt()<\/em>\ub97c \ud638\ucd9c\ud560 \uac83\uc774\ub2e4. (\uc904\ub4e4 18-19) \ub9cc\uc57d TTL<a href=\"http:\/\/blog.naver.com\/PostUpdateForm.nhn?blogId=gunjunk&amp;cpage=1&amp;scode=0&amp;logNo=150019139296#_ftn3\" target=\"_blank\">[3]<\/a>\uc774 0\uc5d0 \ub3c4\ub2ec\ud558\uc9c0 \uc54a\uc558\ub2e4\uba74, \ub9cc\uc57d \uadf8\uac83\uc774 \ub370\uc774\ud130 \ud328\ud0b7\uc774\ub77c\uba74 \uadf8\ub54c \uc6b0\ub9ac\ub294 \uadf8\uac83\uc744 (\ub9cc\uc57d \uadf8\uac83\uc774 \ub2e4\ub978 \ub178\ub4dc\ub85c \uc608\uc815\ub41c \uac83\uc774\ub77c\uba74) \uc804\uc1a1\ud574\uc57c \ud558\uac70\ub098 (\ub9cc\uc57d \uadf8\uac83\uc774 \ube0c\ub85c\ub4dc\uce90\uc2a4\ud2b8 \ud328\ud0b7\uc774\uc5c8\uac70\ub098 \uc6b0\ub9ac \uc790\uc2e0\uc5d0\uac8c\ub85c \uc608\uc815\ub418\uc5c8\ub358 \uac83\uc774\ub77c\uba74) \uc0c1\uc704 \ub808\uc774\uc5b4\ub4e4\uc5d0\uac8c \uadf8\uac83\uc744 \uc804\ub2ec\ud558\uae30 \uc704\ud574\uc11c \uc804\uc1a1\ud574\uc57c \ud55c\ub2e4. \uc904\ub4e4 21-28\uc740 <em>forward_data()<\/em> \ud568\uc218\uc758 \uc0ac\uc6a9\ud558\ub294 \uac83\uc744 \ub2e8\uc9c0 \uae30\uc220\ud588\ub358 \uac83\uc744 \uc2e4\ud589\ud55c\ub2e4.<\/p>\n<p>\ub108\ub294 <em>drop()<\/em> \ud568\uc218\uac00 \ud328\ud0b7\uc744 \ubc84\ub9ac\uae30 \uc704\ud574\uc11c \uc0ac\uc6a9\ub41c\ub2e4\ub294 \uac83\uc744 \uae68\ub2ec\uc558\uc744 \uac83\uc774\ub2e4. \uadf8\uac83\uc758 \uc778\uc218\ub4e4\uc740 \ud328\ud0b7 \uc790\uccb4\ub85c \ud5a5\ud558\ub294 \ud3ec\uc778\ud130\uc774\uace0 \uadf8\uac83\uc744 \ubc84\ub9ac\uae30 \uc704\ud55c \uc774\uc720\ub97c \uc8fc\ub294 \uc0c1\uc218\uc774\ub2e4. \uc774\ub7f0 \uc0c1\uc218\ub4e4\uc774 \uc5ec\ub7ec \uac1c\uac00 \uc874\uc7ac\ud55c\ub2e4. \ub108\ub294 \ud30c\uc77c <em>trace\/cmu-trace.h<\/em>\uc5d0\uc11c \uadf8\uac83\ub4e4\uc744 \ubcfc \uc218 \uc788\ub2e4.<\/p>\n<p><strong>4.3.4 recv_protoname_pkt()<\/strong><\/p>\n<p>\ub77c\uc6b0\ud305 \uc5d0\uc774\uc804\ud2b8\uac00 protoname \ud328\ud0b7\uc744 \ubc1b\uc558\uace0, \uc120\ud3ec\ub418\uae30 \uc704\ud55c recv_protoname_pkt()\ub97c \ub9cc\ub4e4\uc5c8\ub2e4\uace0 \uac00\uc815\ud558\uc790. \uc774\ub7f0 \ud568\uc218\uc758 \uad6c\ud604\uc740 \uad6c\uccb4\uc801\uc778 \ud504\ub85c\ud1a0\ucf5c\uc5d0 \ub530\ub77c\uc11c \ub9ce\uc774 \ubcc0\ud560 \uac83\uc774\uc9c0\ub9cc, \uc6b0\ub9ac\ub294 \ub2e4\uc74c \uc608\uc81c\uc5d0\uc11c \uc77c\ubc18\uc801\uc778 \uc124\uacc4\ub97c \ubcfc \uc218 \uc788\ub2e4.<\/p>\n<p>\uc904\ub4e4 3-4\ub294 \ud3c9\uc18c\ub300\ub85c IP \ud5e4\ub354\uc640 <em>protoname<\/em> \ud328\ud0b7 \ud5e4\ub354\ub97c \uc5bb\ub294\ub2e4. \uadf8 \ud6c4\uc5d0 \uc6b0\ub9ac\ub294 \uc904\ub4e4 8-9\uc5d0\uc11c \uc18c\uc2a4\uc640 \ubaa9\uc801\uc9c0 \ud3ec\ud2b8\ub4e4\uc774 RT_PORT\uc784\uc744 \ud655\uc778\ud55c\ub2e4. \uc774 \uc0c1\uc218\ub294 common\/packet.h\uc548\uc5d0 \uc815\uc758\ub418\uace0 \uadf8\uac83\uc740 255\uc640 \uac19\ub2e4. \uc774 \ud3ec\ud2b8\ub294 \ub77c\uc6b0\ud305 \uc5d0\uc774\uc804\ud2b8\ub97c \ubd99\uc774\uae30 \uc704\ud574\uc11c \uc608\uc57d\ub41c\ub2e4.<\/p>\n<p>\uadf8 \ud6c4\uc5d0, protoname \ud328\ud0b7\uc740 \uc6b0\ub9ac\uc758 \ub77c\uc6b0\ud305 \ud504\ub85c\ud1a0\ucf5c\uc758 \uaddc\uaca9\uc5d0 \ub530\ub77c\uc11c \ucc98\ub9ac\ub418\uc5b4\uc57c \ud55c\ub2e4.<\/p>\n<p>\ub9c8\uc9c0\ub9c9\uc73c\ub85c \uc6b0\ub9ac\ub294 \uc904 14\uc5d0\uc11c \uc6b0\ub9ac\uac00 \uc2e4\ud589\ud55c \uac83\ucc98\ub7fc \uc790\uc6d0\ub4e4\uc744 \ud574\uc81c\ud574\uc57c \ud55c\ub2e4.<\/p>\n<p>1: void<\/p>\n<p>2: Protoname::recv_protoname_pkt(Packet* p) {<\/p>\n<p>3: struct hdr_ip* ih = HDR_IP(p);<\/p>\n<p>4: struct hdr_protoname_pkt* ph = HDR_PROTONAME_PKT(p);<\/p>\n<p>5:<\/p>\n<p>6: \/\/ All routing messages are sent from and to port RT_PORT,<\/p>\n<p>7: \/\/ so we check it.<\/p>\n<p>8: assert(ih-&gt;sport() == RT_PORT);<\/p>\n<p>9: assert(ih-&gt;dport() == RT_PORT);<\/p>\n<p>10:<\/p>\n<p>11: \/* &#8230; processing of protoname packet &#8230; *\/<\/p>\n<p>12:<\/p>\n<p>13: \/\/ Release resources<\/p>\n<p>14: Packet::free(p);<\/p>\n<p>15: }<\/p>\n<p><strong>4.3.5 send_protoname_pkt()<\/strong><\/p>\n<p>\uc6b0\ub9ac\ub294 4.2\uc808\uc5d0\uc11c \uc6b0\ub9ac\uc758 \ub9de\ucda4 \ud0c0\uc774\uba38\uac00 \uadf8\uac83\uc774 \ub9cc\ub8cc\uac00 \ub420 \ub54c\ub9c8\ub2e4 send_protoname_pkt() \ud568\uc218\ub97c \uc5b4\ub5bb\uac8c \ud638\ucd9c\ud558\ub294 \uc9c0\ub97c \ubcf4\uc558\ub2e4. \uc6b0\ub9ac\ub294 \uc544\ub798\uc5d0 \uc774\ub7f0 \ud568\uc218\uc758 \uacac\ubcf8 \uad6c\ud604\uc744 \ubcf4\uc5ec\uc900\ub2e4. \ubb3c\ub860 \uac01\uac01\uc758 \ud504\ub85c\ud1a0\ucf5c\uc740 \ubb34\uc5b8\uac00\ub97c \ub2e4\ub974\uac8c \uc694\uad6c\ud558\uace0 \uc774\uac83\uc740 \ub2e8\uc9c0 \uc608\uc81c\uc77c \ubfd0\uc774\ub2e4.<\/p>\n<p>protoname\/protoname.cc<\/p>\n<p>1: void<\/p>\n<p>2: Protoname::send_protoname_pkt() {<\/p>\n<p>3: Packet* p = allocpkt();<\/p>\n<p>4: struct hdr_cmn* ch = HDR_CMN(p);<\/p>\n<p>5: struct hdr_ip* ih = HDR_IP(p);<\/p>\n<p>6: struct hdr_protoname_pkt* ph = HDR_PROTONAME_PKT(p);<\/p>\n<p>7:<\/p>\n<p>8: ph-&gt;pkt_src() = ra_addr();<\/p>\n<p>9: ph-&gt;pkt_len() = 7;<\/p>\n<p>10: ph-&gt;pkt_seq_num() = seq_num_++;<\/p>\n<p>11:<\/p>\n<p>12: ch-&gt;ptype() = PT_PROTONAME;<\/p>\n<p>15<\/p>\n<p>13: ch-&gt;direction() = hdr_cmn::DOWN;<\/p>\n<p>14: ch-&gt;size() = IP_HDR_LEN + ph-&gt;pkt_len();<\/p>\n<p>15: ch-&gt;error() = 0;<\/p>\n<p>16: ch-&gt;next_hop() = IP_BROADCAST;<\/p>\n<p>17: ch-&gt;addr_type() = NS_AF_INET;<\/p>\n<p>18:<\/p>\n<p>19: ih-&gt;saddr() = ra_addr();<\/p>\n<p>20: ih-&gt;daddr() = IP_BROADCAST;<\/p>\n<p>21: ih-&gt;sport() = RT_PORT;<\/p>\n<p>22: ih-&gt;dport() = RT_PORT;<\/p>\n<p>23: ih-&gt;ttl() = IP_DEF_TTL;<\/p>\n<p>24:<\/p>\n<p>25: Scheduler::instance().schedule(target_, p, JITTER);<\/p>\n<p>26: }<\/p>\n<p>\ud328\ud0b7\uc744 \ubcf4\ub0b4\uae30 \uc704\ud574\uc11c \uc6b0\ub9ac\ub294 \uccab \ubc88\uc9f8 \uadf8\uac83\uc744 \ud560\ub2f9\ud560 \ud544\uc694\uac00 \uc788\ub2e4. \uc6b0\ub9ac\ub294 \uadf8\uac83\uc744 \uc704\ud574\uc11c <em>allocpkt()<\/em> \ud568\uc218\ub97c \uc0ac\uc6a9\ud55c\ub2e4. \uc774 \ud568\uc218\ub294 \ubaa8\ub4e0 <strong>\uc5d0\uc774\uc804\ud2b8<\/strong>\ub4e4\uc744 \uc704\ud574\uc11c \uc815\uc758\ub41c\ub2e4. \uadf8\ub9ac\uace0 \ub098\uc11c \uc6b0\ub9ac\ub294 \ud3c9\uc18c\ub300\ub85c \uacf5\ud1b5\uc758, IP\uc640 <em>protoname<\/em> \ud328\ud0b7 \ud5e4\ub354\ub4e4\uc744 \uc5bb\ub294\ub2e4. (\uc904\ub4e4 3-6) \uc6b0\ub9ac\uc758 \ubaa9\ud45c\ub294 \uc6b0\ub9ac\uac00 \uc6d0\ud558\ub294 \uac12\ub4e4\ub85c \ubaa8\ub4e0 \uc774\ub7f0 \ud5e4\ub354\ub4e4\uc744 \ucc44\uc6b0\ub294 \uac83\uc774\ub2e4.<\/p>\n<p><em>Protoname<\/em> \ud328\ud0b7 \ud5e4\ub354\ub294 \uc904\ub4e4 8-10\uc5d0\uc11c \ucc44\uc6cc\uc9c4\ub2e4. \uc6b0\ub9ac\uc758 \ub2e8\uc21c\ud55c \uc608\uc81c\uc5d0\uc11c \uc6b0\ub9ac\ub294 \ub2e8\uc9c0 \uc5d0\uc774\uc804\ud2b8\uc758 \uc18c\uc2a4 \uc8fc\uc18c, \uba54\uc2dc\uc9c0\uc758 (\ubc14\uc774\ud2b8 \ub2e8\uc704\ub85c) \uae38\uc774 \uadf8\ub9ac\uace0 \uc2dc\ud000\uc2a4 \ub118\ubc84\ub97c \ud544\uc694\ub85c \ud55c\ub2e4. \uc774\ub7f0 \ud544\ub4dc\ub4e4\uc740 <em>protoname<\/em>\uc758 \ud328\ud0b7 \uaddc\uaca9\uc5d0 \uc644\uc804\ud788 \uc758\uc874\uc801\uc774\ub2e4.<\/p>\n<p>NS\uc5d0\uc11c \uacf5\ud1b5\uc758 \ud5e4\ub354\ub294 \uc5ec\ub7ec \uac1c\uc758 \ud544\ub4dc\ub4e4\uc744 \uac00\uc9c4\ub2e4. \uc6b0\ub9ac\ub294 \uc6b0\ub9ac\uac00 \ud765\ubbf8\uac00 \uc788\ub294 \uadf8\ub7f0 \uac83\ub4e4\uc5d0\ub9cc \ucd08\uc810\uc744 \ub9de\ucd98\ub2e4. (\uc904\ub4e4 12-17) \uc6b0\ub9ac\ub294 \ud328\ud0b7 \uc720\ud615\uc744 protoname \ud328\ud0b7\uc73c\ub85c \uc124\uc815\ud560 \ud544\uc694\uac00 \uc788\ub2e4. (\uc904 12) \uc6b0\ub9ac\ub294 \uc904 13\uc5d0\uc11c \ud328\ud0b7 \ubc29\ud5a5\uc744 \ub610\ud55c \ud560\ub2f9\ud55c\ub2e4. \uc6b0\ub9ac\uac00 \ud328\ud0b7\uc744 \ubcf4\ub0b4\ub294 \uc911\uc774\uae30 \ub54c\ubb38\uc5d0, \uadf8\uac83\uc740 <em>hdr_cmn::DOWN<\/em> \uc0c1\uc218\uc5d0 \uc758\ud574\uc11c \uc758\ubbf8\ub418\ub294, \uc544\ub798\ub85c \uac00\ub294 \uc911\uc774\ub2e4. \ud328\ud0b7\uc758 \ud06c\uae30\ub294 \uc904 14\uc5d0\uc11c \uc8fc\uc5b4\uc9c4\ub2e4. \uadf8\uac83\uc740 \ubc14\uc774\ud2b8 \ub2e8\uc704\uc774\uace0 \uc774\uac83\uc740 NS2 \uacc4\uc0b0\ub4e4\uc744 \uc704\ud574 \uc0ac\uc6a9\ub418\ub294 \uac12\uc774\ub2e4. \uc6b0\ub9ac\uac00 \uc758\ub3c4\ud558\ub294 \uac83\uc740 \ub108\uc758 <strong>hdr_protoname_pkt<\/strong> struct\uc758 \uc2e4\uc81c \ud06c\uae30\ub294 \ubb38\uc81c\uac00 \ub418\uc9c0 \uc54a\ub294\ub2e4\ub294 \uac83\uc774\ub2e4. \uc804\ub2ec \ub51c\ub808\uc774\uc640 \uac19\uc740 \uac83\ub4e4\uc744 \uacc4\uc0b0\ud558\uae30 \uc704\ud574\uc11c NS2\ub294 \ub124\uac00 \uc5ec\uae30 \uc548\uc5d0 \ub123\ub294 \uac12\uc744 \uc0ac\uc6a9\ud560 \uac83\uc774\ub2e4. \uacf5\ud1b5\uc758 \ud5e4\ub354\uc640 \ud568\uaed8 \uacc4\uc18d\ud574\uc11c, \uc904 15\uc5d0\uc11c \uc6b0\ub9ac\ub294 \uc804\ub2ec\uc5d0\uc11c \uc5b4\ub5a4 \uc5d0\ub7ec\ub97c \uac16\uc9c0 \uc54a\ub294\ub2e4\uace0 \uacb0\uc815\ud55c\ub2e4. \uc904 16\uc740 \ud328\ud0b7\uc774 \ubcf4\ub0b4\uc838\uc57c \ud558\ub294 \ucabd\uc73c\ub85c \ub2e4\uc74c \ud649\uc744 \ud560\ub2f9\ud55c\ub2e4. \uc774\uac83\uc740 \ub9e4\uc6b0 \uc911\uc694\ud55c \ud544\ub4dc\uc774\uace0, \uc6b0\ub9ac\uc758 \ud504\ub85c\ud1a0\ucf5c\uc5d0\uc11c \uadf8\uac83\uc740 <em>IP_BROADCAST<\/em>\ub85c\uc368 \uc124\ub9bd\ub418\ub294\ub370 \uc65c\ub0d0\ud558\uba74 \uc6b0\ub9ac\ub294 \uadf8 \uc774\uc6c3\ud558\ub294 \ub178\ub4dc\ub4e4 \ubaa8\ub450\uac00 \uc774\ub7f0 \uc81c\uc5b4 \ud328\ud0b7\uc744 \ubc1b\uae30\ub97c \uc6d0\ud558\uae30 \ub54c\ubb38\uc774\ub2e4. \uadf8 \uc0c1\uc218\ub294 <em>common\/ip.h<\/em>\uc5d0\uc11c \uc815\uc758\ub418\uace0 \ub108\ub294 \ub2e4\ub978 \ub9e4\ud06c\ub85c\ub4e4\uc744 \uc704\ud574\uc11c \uac70\uae30\uc11c \uccb4\ud06c\ud560 \uc218 \uc788\ub2e4. \uc6b0\ub9ac\uac00 \ucc44\uc6b0\ub294 \uadf8 \ub9c8\uc9c0\ub9c9 \ud544\ub4dc\ub294 \uc8fc\uc18c \uc720\ud615\uc774\ub2e4. \uadf8\uac83\uc740 NS_AF_NONE, NS_AF_ILINK \ub610\ub294 NS_AF_INET\uc774 \ub420 \uc218 \uc788\ub2e4. (<em>common\/packet.h<\/em>\ub97c \ubcf4\ub77c) \uc6b0\ub9ac\ub294 NS_AF_INET\uc744 \uc120\ud0dd\ud558\ub294\ub370 \uc65c\ub0d0\ud558\uba74 \uc6b0\ub9ac\ub294 \uc778\ud130\ub137 \ud504\ub85c\ud1a0\ucf5c\uc744 \uad6c\ud604\ud558\ub294 \uc911\uc774\uae30 \ub54c\ubb38\uc774\ub2e4.<\/p>\n<p>\uc774\uc81c \uc6b0\ub9ac\ub294 IP \ud5e4\ub354\uc758 \uad6c\uc131\uc744 \uacc4\uc18d\ud55c\ub2e4. \uadf8\uac83\uc740 \uc904\ub4e4 19-23\uc5d0\uc11c \ubcfc \uc218 \uc788\ub294 \uac83\ucc98\ub7fc \ub9e4\uc6b0 \ub2e8\uc21c\ud558\ub2e4. <em>common\/ip.h<\/em>\uc5d0\uc11c \uc815\uc758\ub418\uace0 IP \ud328\ud0b7\ub4e4\uc744 \uc704\ud55c \ucd08\uae30 TTL \uac12\uc744 \uc758\ubbf8\ud558\ub294 <em>IP_DEF_TTL<\/em>\ub85c \ubd88\ub9ac\ub294 \uc0c8\ub85c\uc6b4 \uc0c1\uc218\uac00 \uc788\ub2e4. \uadf8 IP \ud5e4\ub354\ub294 IPv6 \uc2dc\ubbac\ub808\uc774\uc158\ub4e4\uc744 \uc704\ud574 \uc0ac\uc6a9\ub418\ub294 \ub2e4\ub978 \ud544\ub4dc\ub4e4\uc744 \uac00\uc9c0\uc9c0\ub9cc, \uc6b0\ub9ac\ub294 \uc6b0\ub9ac\uc758 \uc608\uc81c\ub97c \uc704\ud574\uc11c \uadf8\uac83\ub4e4\uc774 \ud544\uc694\ud558\uc9c0 \uc54a\ub2e4.<\/p>\n<p>\uc774\uc81c \uc6b0\ub9ac\ub294 \ud328\ud0b7\uc744 \ubcf4\ub0b4\ub294 \uac83\uc744 \ub2e8\uc9c0 \uacc4\uc18d\ud560 \uc218 \uc788\ub2e4. \ud328\ud0b7\ub4e4\uc740 \uc774\ubca4\ud2b8\ub4e4\uc774\uace0 ([2]\uc758 12\uc7a5\uc744 \ubcf4\ub77c) \uadf8\ub798\uc11c \uadf8\uac83\ub4e4\uc740 \uc2a4\ucf00\uc974\ub420 \ud544\uc694\uac00 \uc788\ub2e4. \uc0ac\uc2e4, \ud328\ud0b7\uc744 \ubcf4\ub0b4\ub294 \uac83\uc740 \uadf8\uac83\uc744 \uc815\ud574\uc9c4 \uc2dc\uac04\uc5d0\uc11c \uc2a4\ucf00\uc974\ud558\ub294 \uac83\uacfc \ub3d9\ub4f1\ud558\ub2e4. \uc904 25\ub294 \uba87 \uac1c\uc758 \uc9c0\ud130\ub97c \uc18c\uac1c\ud558\ub294 \ud328\ud0b7\uc744 \uc804\uc1a1\ud558\ub294 \ubc95\uc744 \ubcf4\uc5ec\uc900\ub2e4. \uadf8 <strong>\ud328\ud0b7<\/strong> \ud074\ub798\uc2a4\ub294 <strong>\ucee4\ub125\ud130<\/strong> \ud074\ub798\uc2a4\ub85c\ubd80\ud130 \ubb3c\ub824\ubc1b\ub294\ub370, \uc774\uac83\uc740 <em>target_<\/em>\uc73c\ub85c \ubd88\ub9ac\ub294 <strong>TclObject<\/strong>\uc640 \uad00\uacc4\uac00 \uc788\ub2e4. \uc774\uac83\uc740 \uadf8 \uc774\ubca4\ud2b8\ub97c \ucc98\ub9ac\ud560 \uac83\uc778 \ud578\ub4e4\ub7ec\uc774\uace0 \uc778\uc218\ub85c\uc368 <em>schedule()<\/em> \ud568\uc218\uc5d0\uac8c\ub85c \ud1b5\uacfc\ub41c\ub2e4.<\/p>\n<p><strong>4.3.6 reset_protoname_pkt_timer()<\/strong><\/p>\n<p>\uc6b0\ub9ac\uc758 \ud328\ud0b7 \uc804\uc1a1 \ud0c0\uc774\uba38\ub294 \uadf8\uac83 \uc790\uccb4\ub97c \ub2e4\uc2dc \uc2a4\ucf00\uc974\ud558\uae30 \uc704\ud55c \ub2e4\ub978 \ucf5c\ubc31 (4.2\uc808)\uc744 \uc218\ud589\ud55c\ub2e4. \uadf8\uac83\uc740 \ud568\uc218 <em>reset_protoname_pkt_timer()<\/em>\uc5d0\uc11c \uc2e4\ud589\ub41c\ub2e4. \uc6b0\ub9ac\ub294 <em>pkt_timer_<\/em>\uac00 5\ucd08 \ud6c4\uc5d0 \uae30\ud55c \ub9cc\ub8cc\uac00 \ub418\ub3c4\ub85d \ub2e4\uc2dc \uc2a4\ucf00\uc974\ub418\ub294, \ub2e4\uc74c \uc608\uc81c\uc5d0\uc11c \uadf8\uac83\uc744 \ubcf4\uc5ec\uc900\ub2e4.<\/p>\n<p>protoname\/protoname.cc<\/p>\n<p>1: void<\/p>\n<p>2: Protoname::reset_protoname_pkt_timer() {<\/p>\n<p>3: pkt_timer_.resched((double)5.0);<\/p>\n<p>4: }<\/p>\n<p><strong>4.3.7 forward_date()<\/strong><\/p>\n<p>\uc9c0\uae08\uae4c\uc9c0 \uc6b0\ub9ac\ub294 <em>protoname<\/em> \ud328\ud0b7\ub4e4\uc5d0 \uc8fc\ub85c \ucd08\uc810\uc744 \ub9de\ucdb0\uc654\uc9c0\ub9cc, \ub370\uc774\ud130 \ud328\ud0b7\ub4e4\uc744 \ub2e4\ub8f0 \uc2dc\uac04\uc774\ub2e4. <em>forward_data()<\/em> \ud568\uc218\ub294 \ud328\ud0b7\uc774 \uc0c1\uc704-\ub808\uc774\uc5b4 \uc5d0\uc774\uc804\ud2b8\ub4e4\uc5d0\uac8c \ubc30\ub2ec\ub418\uc5b4\uc57c \ud558\ub294\uc9c0 \ub610\ub294 \ub2e4\ub978 \ub178\ub4dc\uc5d0\uac8c \uc804\uc1a1\ub418\uc5b4\uc57c \ud558\ub294 \uc9c0\ub97c \uacb0\uc815\ud55c\ub2e4. \uc6b0\ub9ac\ub294 \uc904\ub4e4 6-10\uc5d0\uc11c \uccab \ubc88\uc9f8 \uacbd\uc6b0\ub97c \uccb4\ud06c\ud55c\ub2e4. \uadf8\uac83\uc774 \uc548\uc73c\ub85c \ub4e4\uc5b4\uc624\ub294 \ud328\ud0b7\uc774\uace0 \ubaa9\uc801\uc9c0 \uc8fc\uc18c\uac00 \ub178\ub4dc \uc790\uccb4\uc774\uac70\ub098 \ube0c\ub85c\ub4dc\uce90\uc2a4\ud2b8\ub77c\uba74, \uadf8\ub54c \uc6b0\ub9ac\ub294 \uc548\uc73c\ub85c \ub4e4\uc5b4\uc624\ub294 \ud328\ud0b7\uc744 \ubc1b\uc544\ub4e4\uc774\uae30 \uc704\ud574\uc11c (\ub9cc\uc57d \uc6b0\ub9ac\uac00 \uadf8\uac83\uc774 <strong>\ud3ec\ud2b8\ubd84\ub958\uc790<\/strong> \uc624\ube0c\uc81d\ud2b8\uc784\uc744 \uae30\uc5b5\ud55c\ub2e4\uba74) \ub178\ub4dc\uc758 <em>dmux_<\/em>\ub97c \uc0ac\uc6a9\ud55c\ub2e4.<\/p>\n<p>\ub9cc\uc57d \uadf8\ub807\uc9c0 \uc54a\uc73c\uba74, \uc6b0\ub9ac\ub294 \ud328\ud0b7\uc744 \uc804\uc1a1\ud574\uc57c \ud55c\ub2e4. \uc774\uac83\uc740 \uc6b0\ub9ac\uac00 \uc904\ub4e4 12-28\uc5d0\uc11c \uc2e4\ud589\ud55c \uac83\ucc98\ub7fc \uacf5\ud1b5\uc758 \ud5e4\ub354\ub97c \uc801\ub2f9\ud788 \uc124\uc815\ud568\uc73c\ub85c\uc368 \ub2ec\uc131\ub41c\ub2e4. \ub9cc\uc57d \uadf8 \ud328\ud0b7\uc774 \ube0c\ub85c\ub4dc\uce90\uc2a4\ud2b8 \ud328\ud0b7\uc774\ub77c\uba74, \uadf8\ub54c \ub2e4\uc74c \ud649\uc740 \uc801\uc808\ud788 \ucc44\uc6cc\uc9c8 \uac83\uc774\ub2e4. \ub9cc\uc57d \uc544\ub2c8\ub77c\uba74, \uc6b0\ub9ac\ub294 \ub2e4\uc74c \ud649\uc744 \uc54c\uc544\ub0b4\uae30 \uc704\ud574\uc11c \uc6b0\ub9ac\uc758 \ub77c\uc6b0\ud305 \ud45c\ub97c \uc0ac\uc6a9\ud55c\ub2e4. (\uc904 17) \uc6b0\ub9ac\uc758 \uad6c\ud604\uc740 \ubaa9\uc801\uc9c0 \uc8fc\uc18c\ub85c \ud5a5\ud558\ub294 \ub8e8\ud2b8\uac00 \uc5c6\uc744 \ub54c <em>IP_BROADCAST<\/em>\ub97c \ub418\ub3cc\ub824\uc900\ub2e4. \uadf8\ub7f0 \uacbd\uc6b0\uc5d0\uc11c \uc6b0\ub9ac\ub294 \ub514\ubc84\uadf8 \uba54\uc2dc\uc9c0\ub97c \ud504\ub9b0\ud2b8\ud558\uace0 (\uc904\ub4e4 19-22) \ud328\ud0b7\uc744 \ubc84\ub9b0\ub2e4. (\uc904 23) \ub9cc\uc57d \ubaa8\ub4e0 \uac83\uc774 \uad1c\ucc2e\ub2e4\uba74 \uadf8\ub54c \uc6b0\ub9ac\ub294 \uc904 29\uc5d0\uc11c \uc2e4\ud589\ud55c \uac83\ucc98\ub7fc \ud328\ud0b7\uc744 \uc804\uc1a1\ud560 \uac83\uc774\ub2e4.<\/p>\n<p>protoname\/protoname.cc<\/p>\n<p>1: void<\/p>\n<p>2: Protoname::forward_data(Packet* p) {<\/p>\n<p>3: struct hdr_cmn* ch = HDR_CMN(p);<\/p>\n<p>4: struct hdr_ip* ih = HDR_IP(p);<\/p>\n<p>5:<\/p>\n<p>6: if (ch-&gt;direction() == hdr_cmn::UP &amp;&amp;<\/p>\n<p>7: ((u_int32_t)ih-&gt;daddr() == IP_BROADCAST || ih-&gt;daddr() == ra_addr())) {<\/p>\n<p>8: dmux_-&gt;recv(p, 0.0);<\/p>\n<p>9: return;<\/p>\n<p>10: }<\/p>\n<p>11: else {<\/p>\n<p>12: ch-&gt;direction() = hdr_cmn::DOWN;<\/p>\n<p>13: ch-&gt;addr_type() = NS_AF_INET;<\/p>\n<p>14: if ((u_int32_t)ih-&gt;daddr() == IP_BROADCAST)<\/p>\n<p>15: ch-&gt;next_hop() = IP_BROADCAST;<\/p>\n<p>16: else {<\/p>\n<p>17: nsaddr_t next_hop = rtable_.lookup(ih-&gt;daddr());<\/p>\n<p>18: if (next_hop == IP_BROADCAST) {<\/p>\n<p>19: debug(&#8220;%f: Agent %d can not forward a packet destined to %dn&#8221;,<\/p>\n<p>20: CURRENT_TIME,<\/p>\n<p>21: ra_addr(),<\/p>\n<p>22: ih-&gt;daddr());<\/p>\n<p>23: drop(p, DROP_RTR_NO_ROUTE);<\/p>\n<p>24: return;<\/p>\n<p>25: }<\/p>\n<p>26: else<\/p>\n<p>27: ch-&gt;next_hop() = next_hop;<\/p>\n<p>28: }<\/p>\n<p>29: Scheduler::instance().schedule(target_, p, 0.0);<\/p>\n<p>30: }<\/p>\n<p>31: }<\/p>\n","protected":false},"excerpt":{"rendered":"<p>4.3.2 command() \ucf54\ub4dc\uc758 \ub2e4\uc74c \uc870\uac01\uc740 \uc870\uae08 \ub354 \ubcf5\uc7a1\ud558\ub2e4. \uadf8\uac83\uc740 \uc6b0\ub9ac\uc758 \uc5d0\uc774\uc804\ud2b8\uac00 \uc5d0\uc774\uc804\ud2b8 \ud074\ub798\uc2a4\ub85c\ubd80\ud130 \ubb3c\ub824\ubc1b\ub294 command() \ubc29\ubc95\uc758 \uad6c\ud604\uc73c\ub85c \uad6c\uc131\ub41c\ub2e4. protoname\/protoname.cc 1: int 2: Protoname::command(int argc, const char*const* argv) { 3: if (argc == 2) { 4: if (strcasecmp(argv[1], &#8220;start&#8221;) == 0) &hellip; <a href=\"http:\/\/pchero21.com\/?p=2009\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[30],"tags":[],"_links":{"self":[{"href":"http:\/\/pchero21.com\/index.php?rest_route=\/wp\/v2\/posts\/2009"}],"collection":[{"href":"http:\/\/pchero21.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/pchero21.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/pchero21.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/pchero21.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2009"}],"version-history":[{"count":0,"href":"http:\/\/pchero21.com\/index.php?rest_route=\/wp\/v2\/posts\/2009\/revisions"}],"wp:attachment":[{"href":"http:\/\/pchero21.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2009"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/pchero21.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2009"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/pchero21.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2009"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}