Sunday, October 4, 2009

ප්‍රජාතන්ත්‍ර විරෝධී Linux



GNU/Linux කොච්චර හොඳ Operating System එකක් වුනත් පරිගණක ජාල වල සම්පත් භාවිතයේදීනම් හැසිරෙන්නේ ප්‍රජාතන්ත්‍ර විරෝධී විදිහට. ඒකට හේතුව තමයි Linux වල භාවිතා කරන TCP ප්‍රභේදය.

TCP කියන සර්ව නාමය පාවිච්චි කළාට TCP වල විවිධ ප්‍රභේද තියෙනවා. දැනට විවිධ TCP ප්‍රභේද 800කට වැඩි සංඛ්‍යාවක් හඳුනාගෙන තියෙන බවයි අන්තර්ජාලකරණය පිළිබඳ සාහිත්‍යයේ සඳහන් වෙන්නෙ. මේවා අතරින් මෑත කාලයේදී Linux වල පෙරනිමියෙන්(by default) භාවිතා වෙන්නෙ BIC (Kernel version 2.6.8 සිට 2.6.18 දක්වා) හා CUBIC (Kernel version 2.6.19 සිට ඉහළට) කියන TCP ප්‍රභේද දෙක.

TCP දත්ත ප්‍රවාහ දෙකක් (එකම ප්‍රභේදයේ හෝ වෙනස් ප්‍රභේද වල) එකම ජාල සම්බන්ධතාවය හරහා දත්ත යවද්දි සිදුවිය යුත්තේ ජාල සම්බන්ධතාවයේ කලාප පළල (Bandwidth එක)  50% - 50% ලෙස හෝ ඊට ආසන්න ලෙස  දෙකට බෙදාගෙන පාවිච්චි කිරීම (50% - 50 % කියන සර්ව සාධාරණ බෙදිල්ල ප්‍රයෝගිකව ලබාගත නොහැකියි) . හැබැයි මෙ බෙදා හදා ගැනිල්ලෙදි BIC TCP බොහොම අසාධාරණ විදිහට කලාප පළලෙන් ඉතා ඉහළ ප්‍රතිශතයක්  අත්පත් කර ගන්නවා. BIC තරමටම  අසාධාරණ නොවුනත් CUBIC TCP ත් අනෙකුත් ප්‍රධාන TCP වර්ග සමග තරඟ කරද්දී අත්පත් කරගන්න  කලාප පළල 50% ට වඩා වැඩියි . පහළ තියෙන පින්තූරය බලන්න.

විවිධ TCP වර්ග වල සාපේක්ෂ කලාප පළල අත්පත්කර ගැනීම්
(Figure taken from Reference no 1)

අසාධාරණ විදිහට කලාප පළල උදුරා ගන්නවා මදිවට BIC & CUBIC තවත් කට්ට කෛරාටික වැඩක් කරනවා. 

ජාලයේ තියෙන්නෙ එක  TCP ප්‍රවාහයක්(Stream) විතරයිනම්  ඒක ජාල සම්බන්ධතාවයේ සම්පූර්ණ කලාප පළලම පාවිච්චියට ගත්තාට කමක් නැහැ (100% ම නෙවෙයි ). හැබැයි එහෙම පාවිච්චි කර කර ඉඳිද්දි තවත් TCP ප්‍රවාහයක් ඒ ජාලය තුළම පටන් ගත්තොත් අර කලින් එක එයාගේ කලාප පළල භාවිතය හැකි ඉක්මනින් තිබුනායින් 1/2කට අඩු කරලා අලුත් කෙනාටත් ඉඩකඩ ලබා දිය යුතුයි. මේකට කියන්නේ අභිසරණය (Convergence) කියලා.

BIC, CUBIC දෙකම මේ අභිසරණයේදී ඉතාම ප්‍රමාදයි. බෑ බෑ කිය කියා හෙමීට හෙමීට තමයි අභිසරණය වෙන්නෙ. එහෙම වෙලත් 50% ට නෙවෙයි අන්තිමටම අභිසරණය වෙන්නෙ. ඉතින් එහෙම වෙනකොට පෙරහැරේ වැඩි හරියක් ගිහිලා ඉවරයි කියලා අමුතුවෙන් කියන්න ඕනෙ නැහැනෙ.  ඉතින් ජාලයේ BIC, CUBIC  වර්ග වල TCP සම්බන්ධතාවයක් කලින් පටන් අරන් තිබුණොත් දෙවෙනියට එන අසරණයාට හුලං. දෙවෙනියට එන කෙනාත් BIC, CUBIC වර්ගයේම වුනත් එයාටත් ඒ සැළකිල්ලම  තමයි.  හැබැයි දෙවෙනියා වෙනත් වර්ගයක කෙනෙක්නම් තත්වය වඩාත් දරුණුයි. අපායට ගියත් කලිං යන්න කියන්නෙ ඕකනෙ!!! 

Linux වල BIC & CUBIC වල තත්වෙ ඔහොම වෙද්දි Microsoft එකේ බිල් මාමාගේ TCP එක තමයි දැනට තියෙන හොඳම සහ වඩාත්ම ප්‍රජාතන්ත්‍රවාදී TCP වර්ගය විදිහට පිළිගැනෙන්නේ. බිල් මාමගෙ TCP එකේ නම CTCP (Compound TCP). [ බිල් මාමගෙයි කියල කිවුවට ඒකෙ නිෂ්පාදන ගෞරවය ලැබිය යුත්තේ Microsoft සමාගමේ ආසියානු පර්යේෂණ කණ්ඩායමට ].  මේ CTCP කියන එක පළවෙනියටම Windows Vista වලදි පෙරනිමියෙන් හඳුන්වා දුන්නා. දැන්නම් XP වගේ බිල් මාමගෙ පරණ පෙට්ටි වලටත් CTCP පැලැස්තර (patches) ඇවිත් තියෙන්නෙ. 

Linux වල කරන්න වැඩ ඕනෙ තරම්නෙ. ඒක හින්දා ප්‍රජාතන්ත්‍රවාදී වෙන්න කැමති ඕනෙම කෙනෙකුට Linux වලදිත් CTCP පාවිච්චි කරන්න පුළුවන්. හැබැයි CTCP එක බිල් මාමගෙ හින්දා වල CTCP පෙරනිමියෙන් හඳුන්වා දෙන්නනම් ලැජ්ජයි වගේ ඇති.

ඔබ ප්‍රජාතන්ත්‍ර විරෝධීනම් අන්තර්ජාලයට දත්ත මුදා හරිද්දී(uploading)  Linux පාවිච්චි කරන්න . ඔබ ප්‍රජාතන්ත්‍රවාදයට ගරු කරන Linux පරිශීලකයෙක්නම් බිල් මාමගෙ CTCP එක ගැන පොඩ්ඩක් සළකලා බලන්න. මමනම්  දාගෙන ඉන්නෙ BIC. මම ඉතින් අධිරාජයනෙ ;-). මම ප්‍රජාතන්ත්‍රවාදී වෙන්නෙ අහවල් එකකටද ? 

වැඩි දුර විස්තර දැන ගන්න කැමති අය පල්ලෙහායින් References  යටතේ දාල තියෙන  පර්යේෂණ පත්‍රිකා අරගෙන කියවන්න.

References 

[1] .  Kashif Munir, Michael Welzl and Dragana Damjanovic -   "Linux beats Windows or the Worrying Evolution of TCP in Common Operating Systems"  {download link}

[2].  Stephen Hemminger - "TCP testing – Preventing global Internet warming" {download link}

[ 04 - Oct - 2009 ]

19 comments:

ශාකුන්තල said...

Linux beats Windows! කොයි තරම් ප්‍රජාතන්ත්‍ර විරෝධී වුණත් ඒක එළ. :D

අවංකවම කිව්වොත් කිසිම දෙයක් තේරුණේ නෑ... පත්‍රිකා දෙක බාගත්තා... කියවලා තේරුම් අරං කමෙන්ට් එකක් දාන්නම්. :)

http://heim.ifi.uio.no/michawe/research/publications/pfldnet2007.pdf

http://www.linuxconf.eu/2007/papers/Hemminger.pdf

Chanaka Aruna Munasinghe said...

@ ශාකුන්තල

ඔහ්ග් තේරුනේ නැහැයි කිවුව්වා. මම හිතන්නෙ නිදිමතේ ඉන්න වෙලාවෙ කියවපු හින්දා වෙන්න ඇති.

මම පුළුවන්ම තරම් සරලව ලියන්න හැදුවෙ. Linux වල TCP එක Network Bandwidth වැඩිපුර ප්‍රමාණයක් ගන්නවා. ඒකයි මේ පෝස්ට් එකේ සංක්ෂිප්ත අදහස

ඔන්න මම පත්‍රිකා දෙක download කරන links දෙක පෝස්ට් එකේ දැම්මා. දැන් කියවන්න කැමති අයට ඒවා හොයන්න කරදර වෙන්න ඕනෙ නැහැ.

Anonymous said...

අපි හිතුවෙ මකරා දන්නෙ පූසො ගැන විතරයි කියල. බලාගෙන යනකොට පෙන්ගුයින්ලා ගැනත් යමක් කමක් දන්නවා වගේ.

මේ ලිපිය හොඳයි. කලින් අහල නොතිබ්බ ගොඩක් දේවල් දැන ගත්තා. අපිත් ටික කාලයක් Networking ඉගෙන ගන්නවා. ඒත් TCP වර්ග ගොඩක් තියෙනවා කියන කතාව ඇහුවෙ අදමයි.

ඔය BIC TCP Windows වලට දා ගන්න බැරිද? මොකද අපි බිල් මාමට කඩේ යන කට්ටිය

ශාකුන්තල said...

@Anonymous,
මකරා පෙන්ගුයින් ගැන ගොඩක් දේ දන්නවා; හිටි ගමන් මගේ බ්ලොග් එක පැත්තෙත් ඇවිත් ඌණපූරණ කරල යනවා. :)

said...

අපොයි මටනම් මෙලෝ මඤ්ඤමක් තේරුනේ නැහැ. අද මාතෘකාව බොහෝම බරපතල වැඩී.
මොනා හරි කරලා ජංජාලෙට සම්බන්ඳ වෙනවනම් මට නම් ඒ මදෑ

පහන් said...

බොරු කියන්නේ මොකටද එච්චර තේරුනේ නෑ. ‍මට තේරුණ විදිහට ඔය ලිනක්ස් වල TCP කෙරුවාවෙන් අසාධාරණේ වෙන්නෙ network එකේ ප්‍රජාතන්ත්‍රවාදී මැෂින් වලට. මම හරිද? වැරදි නම් තරහා නැතුව තව පොඩ්ඩක් පැහැදිලි කරනවද?

chanux said...

සිංහල ශබ්දකෝෂයක් නැතුව ව්ඩේ දෙල්. :D

මට පෙනුන දෙයක් තමයි කට්ටියම කොහොම කොහොම හරි සම්මතයන්ගෙන් ඈත වෙච්‍ච බව. IETF එක තියෙන්නෙ කොස් කොටන්නද කියල හිතෙනවා. එහෙම නැත්තම් IETF එක කාලෙ තාලෙට හරියන සම්මතයන් නිර්මාණය නොකරන නිසාද එක එක අය එක එක පැන්සියේ තාක්ශණය භාවිත කරන්නෙ?

Chanaka Aruna Munasinghe said...

@ Anonymous

මම කාලෙක ඉඳන් හුරතලේට පෙන්ගුයින්ලා ඇති කරනවා. ඒක හින්දා මම පෙන්ගුයින්ලා ගැනත් යමක් කමක් දන්නවා.

Networking වලදි මුලින්ම TCP ගැන උගන්නද්දි TCP Reno වගේ සරල එකක් පාවිච්චි කරලා තමයි මූලික සිද්ධාන්ත උගන්නන්නෙ. BIC,CUBIC & CTCP එහෙම ටිකක් Complex . ඒවා ගැන තාක්ෂණික විස්තර ගැන දැන්මම නොතේරෙන්න පුළුවන්. ඒත් එහෙම දේවලුත් තියෙනවා කියලා දැනගෙන ඉන්න එක හොඳයි.

TCP වර්ග ගැන කියනවානම් දැනට පාවිච්චි වෙන/වුණු ප්‍රධාන ධාරාවේ වර්ග ගැන දළ විස්තරයක් මෙතන තියෙනවා

Wikipedia

Window වලට BIC TCP දාගන්න බැහැ. බිල් මාමට කොච්චර කඩේ ගියත් එයා ඔයාලට Windows Source Codes නම් දෙන එකක් නැහැ.
------------------------
@ ශාකුන්තල

ස්තුතියි. දිගටම බ්ලොග් එක ලියන්න. මමත් දන්න දේවල් Comments හැටියට ඉදිරිපත් කරන්නම්

Chanaka Aruna Munasinghe said...

@ ම

ඔව් ඔව් ටිකක් බරපතල වැඩියි කියලා මටත් හිතෙනවා දැන්. ඊලඟ දවසෙ සිම්පල් ප්ලෑන් එකකට යන්නම්කො මේ සංකීර්ණ ප්ලෑන් වලින් අයින් වෙලා.
----------------------------
@ පහන්

හෆොයි , ඔයාටත් තේරුණේ නැද්ද. ඒ කියන්නෙ වැඩේ දෙල්ම තමයි chanux කියලා තියෙනවා වගේ.

Linux මැෂින් එකකුයි Windows මැෂින් එකකුයි එකම 10Mbps Physical link එකකින් ජාලයට සම්බන්ද වෙලා තියෙනවා කියලා හිතන්නකො. ඒ මැෂින් දෙකම එකම වෙලේ වැඩ කරනකොට Bandwith එක බෙදා ගන්නෙ 5Mbps/5Mbps නෙවෙයි. Linux මැෂින් එකට Bandwidth වැඩිපුර ගන්නවා.

එක වෙලාවකදි වැඩ කරන්නෙ එක මැෂින් එකයිනම් එයා 10Mbps ම පාවිච්චි කර කර ඉන්නවා. ඔය අතරෙ අනිත් මැෂින් එකටත් link එක ඕනෙ වුනොත් කලින් කෙනා එයාගේ bandwidth භාවිතය හැකි ඉක්මනින් 5Mbps වලට අඩු කර ගන්න ඕනෙ. ඒත් Linux වලින් Bandwidth එක කලින් එක අල්ලාගෙන හිටියොත් එයා bandwidth utilisation එක අඩු කරන්නෙ හෙමින් හෙමින්. කලින් link bandwidth එක අල්ලගෙන හිටියෙ windows නම් එයා ඉක්මනට Linux ටත් ඉඩ දෙනවා. එහෙම ඉඩ දීපු ගමන් Linux කරන වැඩේ 5Mbps වලට වඩා අල්ලා ගන්නවා

දැන් තේරුණාද ළමයට අසාධාරණේ?
----------------------------
@ chanux

ඔව් අප්පා. තාක්ෂණික දේවල් සිංහලෙන් ලියන්න් තියෙන ලොකු බාධාවක් ශබ්දකෝෂය.

මේ ප්‍රශ්නයට කියන්නේ "Global Internet Warming" කියලා.
IETF එකෙන් කාලෙට ගැලපෙන සම්මතයක් නිර්මාණය නොකරපු එක තමයි මේ ප්‍රශ්නයට ප්‍රධානම හේතුව. 1, 10 Gbps වගේ Highspeed links වලට TCP Reno & TCP New Reno හරියන්නේ නැති බව තේරුම් ගන්න IETF කට්ටියට ගොඩාක් කල් ගියා.ඉතින් IETF එකෙන් හදලා දෙනකම් බලන් ඉන්න බැරි හින්දයි කට්ටිය එක එක complex ප්ලෑන්s වලට මාරු වුනේ. හැබැයි ඉස්සරහට ආපහු මේ ප්‍රශ්නෙ හරියයි. IETF එක වැඩට බැහැලයි ඉන්නෙ

පහන් said...

ස්තුතියි පැහැදිලි කිරීමට. ඒත් ලිනක්ස් පාවිච්චි කරන එකාට වාසියිනෙ ;). හැබැයි ඉතිං වැඩේ කැතයි.

Chanaka Aruna Munasinghe said...

@ පහන්

ඒක තමයි මේවා දැනගෙන ලිනක්ස් වැඩි වැඩියෙන් පාවිච්චි කරන්න කියන්නෙ. වැඩේනම් කැතයි තමයි ඉතින්

SPJ Perera said...

I don't think it's that complex. I find this article very informative. Keep it up, Dragon Lord!

Chanaka Aruna Munasinghe said...

@ Piyal Aiya

Thank you VM !!!

බුද්ධික said...

මගේ රව්ටරේ ත් 2 වැනියාට අසාධාරණ කරනවා,මුලින් කෙනාටමයි දෙන්නෙ,ඒකත් මේ නිසා වෙන්න පුලුවන්ද?router firmwire එකනම් gpl,මොනවත් කරන්න ගිහින් කෙලවෙයි ද දන්නෑ?

http://www.usr.com/support/gpl/USR9107_release.1.4.tar.gz

Chanaka Aruna Munasinghe said...

@බුද්ධික

වෙන්න පුළුවන්. රවුටර් එකේ TCP Tuning Options තියෙනවාද බලන්න.

budhajeewa said...

කොහොමද දැනට භාවිතා කරන TCP එක වෙනස් කරගන්නේ?

BIC හා CUBIC අතර මාරු වෙන්නේ කොහොමද?

Chanaka Aruna Munasinghe said...

@ budhajeewa

දැනට පාවිච්චි කරන TCP එක මාරු කරන්න ක්‍රම දෙකක් තියෙනවා.

1. Kernel එක Recompile කරන්න ඕනෙ configurations වෙනස් කරලා. BIC , CUBIC අතර මාරු වෙන්න ඕනෙනම් මේ ක්‍රමේ හොඳයි. අලුත් Kernel versiob වල default එන්නෙ CUBIC . කැමතිනම් BIC වලට යන්න පුළුවන්. ඒත් BIC වලට වඩා CUBIC හොඳයි.

2. එහෙම නැත්තන් වෙනම Module එකක් විදිහට දා ගන්නත් පුළුවන් . CTCP දාගෙන ප්‍රජාතන්ත්‍රවාදී වෙනවනම් මේ ක්‍රමේ හොඳයි

budhajeewa said...

@Chanaka Aruna Munasinghe:
මට නං ඕන වෙලා තියෙන්නෙ ඒකාධිපති වෙන්න.

Chanaka Aruna Munasinghe said...

@ Everyone

Read this thread to see how this can be exploted in bit torrent

http://groups.google.com/group/linuxkatha/browse_thread/thread/9495be1b6280e790?pli=1

Post a Comment

සිංහල, English , Singලිෂ් කැමති භාෂාවකින් නරක වචන නැතිව ඕනෙ දෙයක් ලියන්න.

** අදහස් දක්වලා ඉවර වෙලා 'Subscribe by email' උඩ click කරන්නත් අමතක කරන්න එපා :D