MPP5 PPPoE рд╕рд░реНрд╡рд░ рдкрд░ рд▓реЛрдб рд╕рдВрддреБрд▓рди

рддреЛ рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдХрдЪреНрдЪреЗ рдбреЗрдЯрд╛ рд╕реЗред
FreeBSD + MPD5 (PPPoE) рдкрд░ рдЖрдзрд╛рд░рд┐рдд 4 NAS рд╕рд░реНрд╡рд░реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ ISP рд╣реИ рдФрд░ рд╕рд░реНрд╡рд░ рдкрд░ рд▓реЛрдб рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рд╣реИред
рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рд╕рд░реНрд╡рд░ рд▓реЛрдб BEFORE рд╕рд╛рдорд╛рдиреНрдпреАрдХрд░рдг рдХреЗ рдЧреНрд░рд╛рдл рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:


рдПрдХ рднрдпрд╛рдирдХ рдмрд┐рдЦрд░рд╛рд╡ рддреБрд░рдВрдд рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ (рднреВрд░реЗ рдФрд░ рдиреАрд▓реЗ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ)ред
рдЗрди рд╕рд░реНрд╡рд░реЛрдВ рдХрд╛ рд╕рдорд╛рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди (ALMOST рдЕрдиреНрдп NAS рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕рдорд╛рди рд╣реИ, UPD_1 рджреЗрдЦреЗрдВ), рд╕рдорд╛рди рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдФрд░ рд╕рдорд╛рди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ (рдФрд░ рд╕рдорд╛рди рдиреЗрдЯрд╡рд░реНрдХ рдХрдиреЗрдХреНрд╢рди)ред рд▓реЗрдХрд┐рди рд╢реЗрдбреНрдпреВрд▓ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдЕрднреА рднреА рджреВрд╕рд░реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдмреЗрдХрд╛рд░ рд╣реИред
рдиреНрдпрд╛рдп рдмрд╣рд╛рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЖрдпреЛрдЬрди рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рд╕рд╛рдорд╛рдиреНрдпреАрдХрд░рдг рддрдХрдиреАрдХ


рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ, рд╣рдо рдЯреЗрд▓рдиреЗрдЯ рдПрдХреНрд╕реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдордкреАрдбреА 5 рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВрдЧреЗ рдФрд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдПрдирдПрдПрд╕ рдпрд╛ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХреНрд╕реЗрд╕ рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХрддрдо-рдмрдЪреНрдЪреЗ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд░реЗрдВрдЧреЗред
рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рд░реНрд╡рд░ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ - рд╣рдо рдЕрдзрд┐рдХрддрдо-рдмрдЪреНрдЪреЗ = 10000 рд╕реЗрдЯ рдХрд░реЗрдВрдЧреЗред
рд╣рдо рдПрд▓реНрдЧреЛрд░рд┐рдердо рджреНрд╡рд╛рд░рд╛ рдмрд╛рдж рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ NAS рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рднреА рдкрдврд╝реЗрдВрдЧреЗред

рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо


рд╕рдмрд╕реЗ рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж рдЦрдВрдбред рдпрд╣рд╛рдВ рдореИрдВ рдЕрдкрдирд╛ рдирд┐рд╖реНрдХрд░реНрд╖ рджреВрдВрдЧрд╛ рдЬреЛ рдХрд┐ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА, рдХреГрдкрдпрд╛ рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдЕрдкрдиреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрдВред рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрдирдкреБрдЯ рдореЗрдВ NAS рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ:
nases = [ ('VPN2',('192.168.X.Y','5001','username','password',600)), ('VPN3',('192.168.X.Y1','5001','username','password',300)), ('VPN4',('192.168.X.Y2','5001','username','password',600)), ('VPN5',('192.168.X.Y3','5001','username','password',200)) ] 
рдЬрд╣рд╛рдВ рдХреНрд░рдорд╢рдГ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВ:
рд╕рд░реНрд╡рд░ рдХрд╛ рдирд╛рдо, рдкрддрд╛, рдкреЛрд░реНрдЯ, рдПрдордкреАрдбреА рдкреНрд░рд╢рд╛рд╕рдХ рдХрд╛ рдирд╛рдо, рдкрд╛рд╕рд╡рд░реНрдб, рд╕рд╛рдорд╛рдиреНрдпреАрдХрд░рдг рдХрд╛рд░рдХ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рд╕рдорд╛рдирд╛рдВрддрд░ рд╕рддреНрд░реЛрдВ рдХреА рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ рд╣реИ рдЬреЛ рд╕рд░реНрд╡рд░ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ)

рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рд╕рд╛рд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
  1. рд╣рдо рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╕рднреА рд╕рд░реНрд╡рд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдпрджрд┐ рдПрдХ рдпрд╛ рдХрдИ рд╕рд░реНрд╡рд░ рдЧрд┐рд░ рдЧрдП рд╣реИрдВ - рд╣рдо рджреВрд╕рд░реЛрдВ рдХреЗ рдЕрдиреБрдкрд╛рдд рдореЗрдВ рдЙрдирдХреЗ рдЧреБрдгрд╛рдВрдХ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╡рд┐рддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ)
  2. рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдЖрдЗрдЯрдо рдХреА рдкреВрд░реНрдгрддрд╛ рдХреЗ рдкреНрд░рддрд┐рд╢рдд рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рдЦрд╛рддрд╛ рд╕рдВрдЦреНрдпрд╛ 1 рдореЗрдВ рд▓реЗрддреЗ рд╣реИрдВ
  3. рдкреНрд░рддрд┐рд╢рдд рдкреВрд░реНрдгрддрд╛ рдХреЗ рдЕрд╡рд░реЛрд╣реА рдХреНрд░рдо рдореЗрдВ рд╕реВрдЪреА рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░реЗрдВред
  4. рдПрди рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЖрдмрд╛рджреА рд╡рд╛рд▓реЗ рд╕рд░реНрд╡рд░ рдХреЛ рдмрдВрдж рдХрд░реЗрдВ рдФрд░ рдмрд╛рдХреА рдХреЛ рдЙрдкрд▓рдмреНрдз рдХрд░реЗрдВред


рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд┐рдВрджреБрдУрдВ рдкрд░:
1. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ:
 def getUserCount(anas): (nas,params) = anas (host,port,user,pwd,koeff) = params try: client = telnetlib.Telnet(host,port) client.read_until("Username:") client.write(user+'\n') client.read_until("Password:") client.write(pwd+'\n') client.read_until("[]") client.write("sh mem \n") res = int(client.read_until("BUND").split('\n')[3].split()[1]) dummy = client.read_until("[]") client.write("sh global \n") limit=int(client.read_until("Global options").split("\n")[10].split()[2]) client.close() return (nas,(res,limit),params) except: return (nas,(0,0),params) ress = map(getUserCount,nases) 


2. рд╣рдо рд╕рднреА рд╕рд░реНрд╡рд░реЛрдВ рдХреЗ рдЧреБрдгрд╛рдВрдХ рдХрд╛ рдпреЛрдЧ рдорд╛рдирддреЗ рд╣реИрдВред
 naskcount = reduce(lambda total,nas: total+nas[1][4],nases,0) 


3. рд╣рдо c.1 рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рд╕реВрдЪреА рд╕реЗ рдСрдирд▓рд╛рдЗрди рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдпреЛрдЧ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ:
 naswcount = reduce(lambda total,nas: total+(((nas[1][0] != 0) and nas[2][4]) or 0),ress,0) 


4. рдЙрди рдЧреБрдгрдХреЛрдВ рдХреЗ рдЧреБрдгрд╛рдВрдХ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдирдП рдЧреБрдгрд╛рдВрдХ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ рдЬреЛ рдЧрд┐рд░ рд╕рдХрддреЗ рд╣реИрдВ ( new_koeff = koeff * (nascount / naswcount) ):
 def corKoeff(nas): (nas,(klk,limit),params) = nas (host,port,user,pwd,koeff) = params koeff = koeff * ((klk != 0 ) and (float(naskcount)/float(naswcount)) or 0) params = (host,port,user,pwd,int(round(koeff,0))) return (nas,(klk,limit),params) ress1 = map(corKoeff,ress) 


5. рд╕рд░реНрд╡рд░ рдЕрдзрд┐рднреЛрдЧ рдХреЗ рдкреНрд░рддрд┐рд╢рдд рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВ ( рдкреНрд░рддрд┐рд╢рдд = 100% * klk / koeff ) рдФрд░ рд╕реЙрд░реНрдЯ рдХрд░реЗрдВ:
 def calcMaxUser(nas): (nas,(klk,limit),params) = nas (host,port,user,pwd,koeff) = params return (nas,klk,(koeff !=0 and float(100*klk)/float(koeff)) or 0,params) ress2 = map(calcMaxUser,ress1) ress2.sort(lambda x,y: cmp(x[2],y[2])) 


рдЕрдм рд╣рдо "рдЕрдкрдиреЗ рдХрд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдлрд┐рдВрдЯ" рдмрдирд╛рддреЗ рд╣реИрдВ (рд╣рдо 2 рдХрдо рд▓реЛрдб рд╡рд╛рд▓реЗ рдХрд╛рд░рдХреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рднреА рд╕рд░реНрд╡рд░реЛрдВ рдХреЗ рд▓рд┐рдП -1 рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ (рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ "рд╕рд╛рдВрд╕реНрдХреГрддрд┐рдХ" рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдП):
 for i in range(-1,-len(ress2)+1,-1): (nas,klk,koeff,params) = ress2[i] koeff = -1 ress2[i] = (nas,klk,koeff,params) 


рдЙрд╕рдХреЗ рдмрд╛рдж, ress2 рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдм рдХреБрдЫ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдореЗрдВ mpd рдореЗрдВ рдЕрдзрд┐рдХрддрдо-рдмрдЪреНрдЪреЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рд╕рд░реНрд╡рд░реЛрдВ рдХреЗ рд▓рд┐рдП -1 рдЪрд┐рд╣реНрдирд┐рдд рд╣рдордиреЗ рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ 10,000 рддрдХ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рд╣реИ, рдФрд░ рдЕрдиреНрдп рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╡рд░реНрддрдорд╛рди рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ - 10% (рд╕рд┐рд░реНрдл рдЧреБрдгрд╛рдВрдХ рд╕рд┐рд░ рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЬреБрдбрд╝реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╡рд░реНрддрдорд╛рди рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛ):
 def setMax(nas): (nas,klk,koeff,params) = nas (host,port,user,pwd,kkx) = params if koeff != -1: klk = 10000 else: klk = round(klk * float(100-down_koeff)/float(100)) try: client = telnetlib.Telnet(host,port) client.read_until("Username:") client.write(user+'\n') client.read_until("Password:") client.write(pwd+'\n') client.read_until("[]") client.write("set global max-children %d\n" % klk) client.close() return (nas,"max set to %d" % klk) except: return (nas,"Error setting max-children %d" % klk) 


рдкрд░рд┐рдгрд╛рдо


рдирддреАрдЬрддрди, рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХреНрд░реЛрди рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХрд╛ рд╕рд╛рдорд╛рдиреНрдпреАрдХрд░рдг рдорд┐рд▓рд╛

рдмреНрд▓реВ-рдмреНрд░рд╛рдЙрди рд▓рдЧрднрдЧ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдЬрд╛рддреЗ рд╣реИрдВред рдХреНрдпрд╛ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдирд╛ рдЬрд░реВрд░реА рдерд╛

рдкреБрдирд╢реНрдЪ
рдЕрдЬрдЧрд░ рдореЗрдВ рдЯреЗрд▓рдиреЗрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдореБрджреНрджреЛрдВ рдкрд░: рдпрд╣рд╛рдБ
mpd5 рдкреИрд░рд╛рдореАрдЯрд░ (рд░реВрд╕реА рдореЗрдВ): рдпрд╣рд╛рдВ
R.R.S.

рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рдбрдореА = client.read_until ("[]") рдХреЗ рд▓рд┐рдП рдЯреЗрд▓рдиреЗрдЯ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ "рдкрдврд╝рдирд╛" рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рди рднреВрд▓реЗрдВ, рдЕрдиреНрдпрдерд╛ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдкрд░рд┐рдгрд╛рдо рд╣реЛрдВрдЧреЗ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрдорд╛рдВрдб рдЬреЛ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдП рдереЗ)

UPD: рдирд╛рдо рдХреЛ рдФрд░ рдмрджрд▓ рджрд┐рдпрд╛ (рдзрдиреНрдпрд╡рд╛рдж obramko ) рдпрд╣ рдерд╛: " MPD5 рд╡реАрдкреАрдПрди рд╕рд░реНрд╡рд░ рдкрд░ рд▓реЛрдб рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╛рдЙрдВрдб-рд░реЙрдмрд┐рди "
рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рд╕реЗ UPD_1: " рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж " NAS-s рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг:
рднреВрд░реЗ рд░рдВрдЧ:
FreeBSD 8.2-RELEASE-p1 #1: Fri May 13 22:55:37 EEST 2011
CPU: Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz (3363.89-MHz K8-class CPU)
Origin = "GenuineIntel" Id = 0x106e5 Family = 6 Model = 1e Stepping = 5 Features=0xbfebfbff <FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,DTS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE > Features2=0x98e3fd <SSE3,DTES64,MON,DS_CPL,VMX,SMX,EST,TM2,SSSE3,CX16,xTPR,PDCM,SSE4.1,SSE4.2,POPCNT >
AMD Features=0x28100800 <SYSCALL,NX,RDTSCP,LM>
AMD Features2=0x1<LAHF>
TSC: P-state invariant
real memory = 2147483648 (2048 MB)
avail memory = 2041532416 (1946 MB)



рдиреАрд▓реЗ рд░рдВрдЧ:
FreeBSD 8.2-RELEASE-p1 #1: Fri May 13 22:55:37 EEST 2011
Timecounter "i8254" frequency 1193182 Hz quality 0
CPU: Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz (2664.79-MHz K8-class CPU)
Origin = "GenuineIntel" Id = 0x106a5 Family = 6 Model = 1a Stepping = 5 Features=0xbfebfbff < FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,DTS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE >
Features2=0x98e3bd < SSE3,DTES64,MON,DS_CPL,VMX,EST,TM2,SSSE3,CX16,xTPR,PDCM,SSE4.1,SSE4.2,POPCNT >
AMD Features=0x28100800 <SYSCALL,NX,RDTSCP,LM >
AMD Features2=0x17<LAHF>
TSC: P-state invariant
real memory = 4294967296 (4096 MB)
avail memory = 4106272768 (3916 MB)


рджреЛрдиреЛрдВ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдПрд▓рдПрдЬреАрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ 2 рдИрдПрдордПрд╕ рдкрд░ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рджреБрдирд┐рдпрд╛ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рддреА рд╣реИред
рдЕрдВрддрд░ CPU рдФрд░ RAM рдореЗрдВ рд╣реИред
рдореИрдВ рд╕рд░реНрд╡рд░реЛрдВ рдХреА рджреБрд░реНрднрд╛рд╡рдирд╛ рдХреЛ рднреНрд░рд╛рдордХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЛрдЧреЛрдВ рд╕реЗ рдорд╛рдлреА рдорд╛рдБрдЧрддрд╛ рд╣реВрдБред BUT рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рд╡реЗ рдЙрдкрд░реЛрдХреНрдд рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╕рдорд╛рди рд╕рдВрдЦреНрдпрд╛ рд░рдЦрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдЗрд╕ рдиреЛрдЯ рдХреЛ рдЙрдкрдпреЛрдЧреА рдорд╛рдирддрд╛ рд╣реВрдВ рдФрд░ рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рддрддреНрдкрд░ рд╣реВрдВред

рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рд╕реЗ UPD_2 : рд╡реЗ рдХрд╛рд░рдг рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рд╣рдореЗрдВ рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ред
рдпрд╣ рд╕рд┐рд░реНрдл рдЗрддрдирд╛ рд╣реБрдЖ рдХрд┐ рдЬреНрдпрд╛рджрд╛рддрд░ рдЧреНрд░рд╛рд╣рдХ рд╕реБрдмрд╣ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рд╢рд╛рдо 6-7 рдмрдЬреЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
рд╕рд╛рдорд╛рдиреНрдпреАрдХрд░рдг рдХреЗ рдмрд┐рдирд╛, "рдмреНрд▓реВ" рдПрдирдПрдПрд╕ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХрдиреЗрдХреНрд╢рди рд▓реЗрддрд╛ рд╣реИред рдФрд░ рдЖрдо рддреМрд░ рдкрд░ рдЪреЛрдЯреА рддрдХ рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдФрд░ 6-7 рдШрдВрдЯреЛрдВ рдХреЗ рдмрд╛рдж рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЧреНрд░рд╛рд╣рдХ 15-20 Mbit рдкрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рдЗрд╕реЗ рдирд╣реАрдВ рдЦрдбрд╝рд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╣рд░ 2 рд╕рдкреНрддрд╛рд╣ рдореЗрдВ рд▓рдЧрднрдЧ рдПрдХ рдмрд╛рд░ рдЖрддрдВрдХрд┐рдд рдХрд░рддрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдпреАрдХрд░рдг рдХреА рдпрд╣ рд╡рд┐рдзрд┐ рдЧреНрд░рд╛рд╣рдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдШрдВрдЯреЗ X рд╕реЗ рдкрд╣рд▓реЗ рднреА рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдЧреБрдгрд╛рдВрдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕реНрдХреИрдЯрд░ рдХрд░рддреА рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рдЕрдзрд┐рдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╕рдВрдЪрд╛рд░ рдкреНрд░рджрд╛рди рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рджреЛ рдШрдВрдЯреЗ рдХреА рдиреАрдВрдж рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

Source: https://habr.com/ru/post/In126237/


All Articles