¸üÐÂʱ¼ä:2018Äê03ÔÂ30ÈÕ15ʱ37·Ö À´Ô´:ÀÖÓã²¥¿Í ä¯ÀÀ´ÎÊý:
Ò»¡¢ÍøÂçÒì³£µÄ·ÖÀà
ÔÚϵͳµÄÔËÐйý³ÌÖУ¬¿ÉÄÜ»áÓöµ½¸÷ÖÖ¸÷ÑùµÄÍøÂçÎÊÌ⣬ÆäÖÐÖ÷Òª¿ÉÄܳöÏÖµÄÎÊÌâÓÐÒÔϼ¸ÖÖ£º
1ÍøÂçÑÓ³Ù£ºµ±ÍøÂçÐÅÏ¢Á÷¹ý´óʱ£¬¿ÉÄܵ¼ÖÂÉ豸·´Ó¦»ºÂý£¬Ôì³ÉÊý¾Ý´«ÊäÑÓ³Ù£»
2ÍøÂ·µô°ü£ºÍøÂ·µô°üÊÇÔÚÊý¾Ý´«ÊäµÄ¹ý³ÌÖУ¬Êý¾Ý°üÓÉÓÚ¸÷ÖÖÔÒòÔÚÐŵÀÖжªÊ§µÄÏÖÏó£»
3ÍøÂç½ÚÁ÷£ºµ±Êý¾Ý´«ÊäÁ¿´ïµ½ÍøÂç´ø¿íÉÏÏÞʱ£¬Êý¾Ý°ü¿ÉÄܻᱻÉ豸À¹½ØÏÂÀ´ÔÚÖ®ºó·¢³ö£»
4ÍøÂçÖØ·¢£ºµ±ÍøÂç²»Îȶ¨ÊÇ¿ÉÄܻᵼÖ·¢ËͶËÅжÏÊý¾Ý°ü¶ªÊ§µ¼Ö²¿·ÖÊý¾Ý°üÖØ·¢£»
5Êý¾ÝÂÒÐò£ºµ±Êý¾Ý´«ÊäÓпÉÄܳöÏÖÊý¾Ý°üµ½´ï½ÓÊÕ¶Ëʱ¼ä²»Ò»Ö£¬µ¼ÖÂÊý¾Ý°üÂÒÐòÎÊÌ⣻
6Êý¾Ý´Û¸Ä£ºÊý¾Ý´«ÊäµÄ¹ý³ÌÖпÉÄܳöÏÖÊý¾Ý±»Á¬½Ó´Û¸ÄµÄÇé¿ö¡£
¶þ¡¢WindowsÏÂÍøÂçÒì³£µÄÄ£Äâ·½·¨
WindowsÏ¿ÉʹÓÃclumsyÀ´½øÐÐÍøÂçÒì³£µÄÄ£Äâ
clumsy Ê×Ïȸù¾ÝÓû§Ñ¡ÔñµÄ filter À´À¹½ØÖ¸¶¨µÄÍøÂçÊý¾Ý¡£ÔÚ filter ÖпÉÒÔÉ趨Äã¸ÐÐËȤµÄÐÒé(tcp/udp)£¬¶Ë¿ÚºÅ£¬ÊǽÓÊÕ»¹ÊÇ·¢³öµÄ¶Ë¿Ú¡£ÄãÒ²¿ÉÒÔͨ¹ý¼òµ¥µÄÂß¼Óï¾äÀ´½øÒ»²½ËõС·¶Î§¡£µ± clumsy ±»¼¤»îʱ£¬Ö»ÓзûºÏÕâЩ±ê×¼µÄÍøÂçÊý¾Ý»á±»½øÐд¦Àí£¬¶øÄã²»¸ÐÐËȤµÄÊý¾ÝÈÔÈ»»áÓÉϵͳÕý³£´«Êä¡£
µ±±» filter µÄÍøÂçÊý¾Ý°ü±»À¹½Øºó£¬Äã¿ÉÒÔÑ¡Ôñclumsy ÌṩµÄ¹¦ÄÜÀ´ÓÐÄ¿µÄÐԵĵ÷ÕûÍøÂçÇé¿ö£º
l ÑÓ³Ù(Lag)£¬°ÑÊý¾Ý°ü»º´æÒ»¶Îʱ¼äºóÔÙ·¢³ö£¬ÕâÑùÄܹ»Ä£ÄâÍøÂçÑÓ³ÙµÄ×´¿ö¡£
l µô°ü(Drop)£¬Ëæ»ú¶ªÆúһЩÊý¾Ý¡£
l ½ÚÁ÷(Throttle)£¬°ÑһС¶Îʱ¼äÄÚµÄÊý¾ÝÀ¹½ØÏÂÀ´ºóÔÙÔÚÖ®ºóµÄͬһʱ¼äһͬ·¢³öÈ¥¡£
l ÖØ·¢(Duplicate)£¬Ëæ»ú¸´ÖÆÒ»Ð©Êý¾Ý²¢ÓëÆä±¾Éíһͬ·¢ËÍ¡£
l ÂÒÐò(Out of order)£¬´òÂÒÊý¾Ý°ü·¢Ë͵Ä˳Ðò¡£
l ´Û¸Ä(Tamper)£¬Ëæ»úÐÞ¸ÄС²¿·ÖµÄ°ü¹üÄÚÈÝ¡£
ÔÚ²âÊÔʱ£¬¸Ã¹¤¾ßµÄfilteringʹÓÃĬÈϼ´¿É£¬PresetsÑ¡Ôñlocalhost ipv4 all£¬È»ºóÅäÖÃÏàÓ¦µÄ¹¦Äܵ¥»÷start°´Å¥£¬µÈ´ý°´Å¥±ä³ÉstopÒÔ¼°°´Å¥ÅԱ߳öÏÖСÂ̵ãʱ£¬¹¤¾ßÔòÆôÓóɹ¦¡£
ʹÓù¤¾ßÄ£ÄâÍøÂ·ÑÓʱ£¬ÍøÂçÑÓʱ3000ms

ʹÓù¤¾ßÄ£ÄâÍøÂçµô°ü£¬Ëæ»ú½«10%µÄÊý¾Ý°ü¶ªÆú

ʹÓù¤¾ßÄ£ÄâÍøÂç½ÚÁ÷£¬½«10%µÄÊý¾Ý½ÚÁ÷1000ms

ʹÓù¤¾ßÄ£ÄâÍøÂçÖØ·¢£¬½«10%µÄÊý¾Ý¼¯ÖØ·¢Á½´Î

ʹÓù¤¾ßÄ£ÄâÍøÂçÂÒÐò£¬½«10%µÄÊý¾ÝÂÒÐò

ʹÓù¤¾ßÄ£ÄâÍøÂç´Û¸Ä£¬´Û¸Ä10%µÄÊý¾Ý

²âÊԵĹý³ÌÖпÉÒÔ¼ì²éÒµÎñ´¦ÀíÊÇ·ñÕýÈ·£¬±ÈÈç¼ì²éÊý¾Ý¿âÊý¾ÝÊÇ·ñÕýÈ·£¬Êý¾Ý¿âÓëÎļþ¿âÊÇ·ñÒ»Ö£¬Îļþ¿âÊÇ·ñ³öÏֽ϶àµÄÀ¬»øÎļþ£¬À¬»øÎļþÊÇ·ñÓÐÇåÀí»úÖÆµÈ¡£
Èý¡¢LinuxϵÄÍøÂçÒ쳣ģÄâ·½·¨
netem ÊÇLinux 2.6 ¼°ÒÔÉÏÄں˰汾ÌṩµÄÒ»¸öÍøÂçÄ£Ä⹦ÄÜÄ£¿é¡£¸Ã¹¦ÄÜÄ£¿é¿ÉÒÔÓÃÀ´ÔÚÐÔÄÜÁ¼ºÃµÄ¾ÖÓòÍøÖÐ,Ä£Äâ³ö¸´ÔӵĻ¥ÁªÍø´«ÊäÐÔÄÜ,ÖîÈçµÍ´ø¿í¡¢´«ÊäÑÓ³Ù¡¢¶ª°üµÈµÈÇé¿ö¡£Ê¹Óà Linux 2.6 (»òÒÔÉÏ) °æ±¾Äں˵ĺܶ෢Ðаæ Linux ¶¼¿ªÆôÁ˸ÃÄں˹¦ÄÜ,±ÈÈç Fedora¡¢Ubuntu¡¢Redhat¡¢OpenSuse¡¢CentOS¡¢Debian µÈµÈ¡£ tc ÊÇLinuxϵͳÖеÄÒ»¸ö¹¤¾ß,È«ÃûΪ traffic control(Á÷Á¿¿ØÖÆ)¡£tc ¿ÉÒÔÓÃÀ´¿ØÖÆ netem µÄ¹¤×÷ģʽ,Ò²¾ÍÊÇ˵,Èç¹ûÏëʹÓà netem ,ÐèÒªÖÁÉÙÁ½¸öÌõ¼þ,Ò»¸öÊÇÄÚºËÖÐµÄ netem ¹¦Äܱ»°üº¬,ÁíÒ»¸öÊÇÒªÓÐ tc ¡£
Ä£ÄâÍøÂçÒì³£·½·¨£º
1¡¢Ê×ÏÈ²é¿´Íø¿¨£¬¿ÉʹÓÃifconfigÃüÁî²é¿´
[root@localhostnetwork-s]# ifconfig
eno16777736: flags=4163
inet 192.168.75.132 netmask 255.255.255.0 broadcast 192.168.75.255
inet6fe80::20c:29ff:fe7c:8d22 prefixlen 64 scopeid 0x20
ether 00:0c:29:7c:8d:22 txqueuelen 1000 (Ethernet)
RX packets 19535 bytes2592045 (2.4 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 31019 bytes38969412 (37.1 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ºì×Ö±íÃ÷µÄ¾ÍÊÇÍø¿¨µÄÉ豸ºÅ
2¡¢Ä£ÄâÍøÂçÒì³£¿Éͨ¹ýÒÔÏÂÃüÁÆäÖÐeth0¿É¸ù¾Ý×Ô¼ºµÄÍø¿¨É豸ºÅ½øÐÐÌæ»»£º
1)ÍøÂçÑÓ³Ù
tc qdisc add dev eth0 rootnetem delay 100ms
¸ÃÃüÁ eth0 Íø¿¨µÄ´«ÊäÉèÖÃΪÑÓ³Ù 100 ºÁÃë·¢ËÍ¡£
Ä£Äâ¸üÕæÊµµÄÇé¿ö£¬ÑÓ³ÙÖµ¿ÉÄÜ»áÓÐÒ»¶¨µÄ²¨¶¯ÐÔ£¬¿ÉÒÔʹÓÃÒÔÏÂÃüÁîÀ´Ä£Äâ
Tc qdisc add dev eth0 root netem delay 100ms 10ms
¸ÃÃüÁ eth0 Íø¿¨µÄ´«ÊäÉèÖÃΪÑÓ³Ù 100ms ± 10ms (90 ~ 110 ms Ö®¼äµÄÈÎÒâÖµ)·¢ËÍ
2)ÍøÂ綪°ü
tc qdisc add dev eth0 root netem loss 1%
¸ÃÃüÁ eth0 Íø¿¨µÄ´«ÊäÉèÖÃÎªËæ»ú¶ªµô 1% µÄÊý¾Ý°ü¡£
3)Êý¾Ý°üÖØ¸´
tc qdisc add dev eth0 root netem duplicate 1%
¸ÃÃüÁ eth0 Íø¿¨µÄ´«ÊäÉèÖÃÎªËæ»ú²úÉú 1% µÄÖØ¸´Êý¾Ý°ü ¡£
4)Êý¾Ý°üËð»µ
tc qdisc add dev eth0 root netem corrupt 0.2%
¸ÃÃüÁ eth0 Íø¿¨µÄ´«ÊäÉèÖÃÎªËæ»ú²úÉú 0.2% µÄË𻵵ÄÊý¾Ý°ü ¡£
5)Êý¾Ý°üÂÒÐò
tc qdisc change dev eth0 root netem delay 10ms reorder 25% 50%
¸ÃÃüÁ eth0 Íø¿¨µÄ´«ÊäÉèÖÃΪ:ÓÐ 25% µÄÊý¾Ý°ü(50%Ïà¹Ø)»á±»Á¢¼´·¢ËÍ,ÆäËûµÄÑÓ³Ù10 Ãë¡£
²é¿´ÒѾÅäÖõÄÍøÂçÌõ¼þ
tc qdisc show dev eth0
Èç¹ûÐèҪɾ³ýÒÑÅäÖõÄÌõ¼þ£¬Ôò½«ÒÔÉÏÃüÁîÖеÄadd¸ü¸ÄΪdel¼´¿É¡£
±¾ÎİæÈ¨¹éÀÖÓã²¥¿ÍÈí¼þ²âÊÔѧԺËùÓУ¬»¶Ó×ªÔØ£¬×ªÔØÇë×¢Ã÷×÷Õß³ö´¦¡£Ð»Ð»£¡
×÷ÕߣºÀÖÓã²¥¿ÍÈí¼þ²âÊÔÅàѵѧԺ
Ê×·¢£ºhttp://test.itcast.cn/
±±¾©Ð£Çø