ã¢ããªã·ãã¯ã¢ããªã±ãŒã·ã§ã³ãããã€ã¯ããµãŒãã¹ã¢ãŒããã¯ãã£ãžã®ç§»è¡ããã»ã¹ã§ã¯ãæ°ããåé¡ã«çŽé¢ããŠããŸãã
ã¢ããªã·ãã¯ã¢ããªã±ãŒã·ã§ã³ã§ã¯ãéåžžãã·ã¹ãã ã®ã©ã®éšåã§ãšã©ãŒãçºçããããå€æããã®ã¯éåžžã«ç°¡åã§ãã ã»ãšãã©ã®å Žåãåé¡ã¯ã¢ããªã¹èªäœã®ã³ãŒããŸãã¯ããŒã¿ããŒã¹ã«ãããŸãã ãããããã€ã¯ããµãŒãã¹ã¢ãŒããã¯ãã£ã®åé¡ãæ¢ãå§ãããšãããã¹ãŠãããã»ã©æçœã§ã¯ãããŸããã æ°çŸã®ãã€ã¯ããµãŒãã¹ãããªã¯ãšã¹ããéžæããã«ã¯ããªã¯ãšã¹ããæåããæåŸãŸã§é²ãã ãã¹å
šäœãèŠã€ããå¿
èŠããããŸãã ããã«ããããã®å€ãã«ã¯ç¬èªã®ãªããžããªããããããã«ããè«çãšã©ãŒãçºçããããããã©ãŒãã³ã¹ããã©ãŒã«ããã¬ã©ã³ã¹ã®åé¡ãçºçãããããå¯èœæ§ããããŸãã
é·ãéãç§ã¯ãã®ãããªåé¡ã«å¯ŸåŠããã®ã«åœ¹ç«ã€ããŒã«ãæ¢ããŠããŸããïŒHabréã§ããã«ã€ããŠæžããïŒ 1ã2 ïŒããæçµçã«ç§ã¯ç§èªèº«ã®ãªãŒãã³ãœãŒã¹ãœãªã¥ãŒã·ã§ã³ãäœããŸããã ãã®èšäºã§ã¯ããµãŒãã¹ã¡ãã·ã¥ã¢ãââããŒãã®å©ç¹ã«ã€ããŠèª¬æãããã®å®è£
ã®ããã®æ°ããããŒã«ãå
±æããŠããŸãã
åæ£ãã¬ãŒã¹ã¯ãåæ£ã·ã¹ãã ã§ãšã©ãŒãèŠã€ããåé¡ã®äžè¬çãªè§£æ±ºçã§ãã ããããã·ã¹ãã ããããã¯ãŒã¯ã€ã³ã¿ã©ã¯ã·ã§ã³ã«é¢ããæ
å ±ãåéããããã®ãã®ãããªã¢ãããŒãããŸã å®è£
ããŠããªãå ŽåããŸãã¯ããã«æªãããšã«ãã·ã¹ãã ã®äžéšã§æ¢ã«æ£åžžã«åäœããäžéšã§ã¯å€ããµãŒãã¹ã«è¿œå ãããŠããªããããããã§ãªãå Žåã¯ã©ãã§ããããïŒ åé¡ã®æ£ç¢ºãªæ ¹æ¬åå ãç¹å®ããã«ã¯ãã·ã¹ãã ã§äœãèµ·ãã£ãŠããã®ããå®å
šã«ææ¡ããå¿
èŠããããŸãã ã©ã®ãã€ã¯ããµãŒãã¹ãäž»èŠãªããžãã¹ã¯ãªãã£ã«ã«ãã¹ã«é¢äžããŠããããç解ããããšãç¹ã«éèŠã§ãã
ããã§ã¯ããµãŒãã¹ã¡ãã·ã¥ã¢ãââããŒããç§ãã¡ã®å©ãã«ãªããŸããããã¯ããµãŒãã¹èªäœãè¡ãããšãããäœãã¬ãã«ã§ãããã¯ãŒã¯æ
å ±ãåéããããã®ãã¹ãŠã®æ©æ¢°ãåŠçããŸãã ãã®ã¢ãããŒãã«ããããã¹ãŠã®ãã©ãã£ãã¯ãååãããã®å Žã§åæããããšãã§ããŸãã ããã«ãããã«ã€ããŠã®ã¢ããªã±ãŒã·ã§ã³ã¯äœãç¥ããªãã¯ãã§ãã
ãµãŒãã¹ã¡ãã·ã¥ã¢ãââããŒã
ãµãŒãã¹ã¡ãã·ã¥ã¢ãââããŒãã®äž»ãªã¢ã€ãã¢ã¯ããããã¯ãŒã¯äžã«å¥ã®ã€ã³ãã©ã¹ãã©ã¯ãã£ã¬ã€ã€ãŒãè¿œå ããããšã§ããããã«ããããµãŒãã¹éã®ããåãã§ããããããšãã§ããããã«ãªããŸãã ã»ãšãã©ã®å®è£
ã¯æ¬¡ã®ããã«æ©èœããŸããééãããã·ãåããè¿œå ã®ãµã€ãã«ãŒã³ã³ãããåãã€ã¯ããµãŒãã¹ã«è¿œå ããããã¹ãŠã®çä¿¡ããã³çºä¿¡ãµãŒãã¹ãã©ãã£ãã¯ãééããŸãã ããã¯ãã¯ã©ã€ã¢ã³ããã©ã³ã·ã³ã°ãå®è¡ããã»ãã¥ãªãã£ããªã·ãŒãé©çšãããªã¯ãšã¹ãã®æ°ã«å¶éãå°å
¥ããæ¬çªç°å¢ã§ã®ãµãŒãã¹ã®çžäºäœçšã«é¢ããéèŠãªæ
å ±ãåéã§ããå Žæã§ãã
解決ç
ãã®ã¢ãããŒãã«ã¯ãã§ã«ããã€ãã®å®è£
ããããŸãïŒ Istioãšãªã³ã«ãŒd2 ã ããã«äœ¿ããå€ãã®æ©èœãæäŸããŸãã ãããåæã«ããªãœãŒã¹ã«ã¯å€§ããªãªãŒããŒããããããããŸãã ããã«ããã®ãããªã·ã¹ãã ãæ©èœããã¯ã©ã¹ã¿ãŒã倧ããã»ã©ãæ°ããã€ã³ãã©ã¹ãã©ã¯ãã£ãç¶æããããã«ããå€ãã®ãªãœãŒã¹ãå¿
èŠã«ãªããŸãã Avitoã§ã¯ãæ°åã®ãµãŒãã¹ã€ã³ã¹ã¿ã³ã¹ã§kubernetesã¯ã©ã¹ã¿ãŒãéçšããŠããŸãïŒãã®æ°ã¯æ¥éã«å¢ãç¶ããŠããŸãïŒã çŸåšã®å®è£
ã§ã¯ãIstioã¯ãµãŒãã¹ã€ã³ã¹ã¿ã³ã¹ããšã«æ倧300Mbã®RAMãæ¶è²»ããŸãã å€æ°ã®æ©èœããããããééçãã©ã³ã·ã³ã°ã¯ãµãŒãã¹ã®åèšå¿çæéã«ã圱é¿ããŸãïŒæ倧10ããªç§ïŒã
æçµçã«ãä»å¿
èŠãªæ©èœãæ£ç¢ºã«èª¿ã¹ããã®ãããªãœãªã¥ãŒã·ã§ã³ãå®è£
ãå§ããäž»ãªçç±ã¯ãã·ã¹ãã å
šäœããééçã«ãã¬ãŒã¹æ
å ±ãåéã§ããããšã ãšå€æããŸããã ãŸãããµãŒãã¹ã®çžäºäœçšãå¶åŸ¡ãããµãŒãã¹éã§è»¢éãããããããŒã䜿çšããŠããŸããŸãªæäœãè¡ããããšèããŸããã
æçµçã«ã Netrameshã決å®ããŸãã ã
ããã©ã¡ãã·ã¥
Netrameshã¯ãã·ã¹ãã å
ã®ãµãŒãã¹ã®æ°ã«é¢ä¿ãªããç¡éã®ã¹ã±ãŒã©ããªãã£ãåãã軜éã®ãµãŒãã¹ã¡ãã·ã¥ãœãªã¥ãŒã·ã§ã³ã§ãã
æ°ãããœãªã¥ãŒã·ã§ã³ã®äž»ãªç®æšã¯ããªãœãŒã¹ã®ããããªãªãŒããŒããããšé«ãããã©ãŒãã³ã¹ã§ãã äž»ãªæ©èœã®ãã¡ãããã«ãã¬ãŒã¹ã¹ãã³ãJaegerã·ã¹ãã ã«ééçã«éä¿¡ã§ããããã«ããããšèããŸããã
çŸåšãã»ãšãã©ã®ã¯ã©ãŠããœãªã¥ãŒã·ã§ã³ã¯Golangã«å®è£
ãããŠããŸãã ãããŠããã¡ãããããã«ã¯çç±ããããŸãã I / Oãšéåæã§åäœããå¿
èŠã«å¿ããŠã«ãŒãã«ã«åãããŠæ¡åŒµããGolangãããã¯ãŒã¯ã¢ããªã±ãŒã·ã§ã³ãäœæããããšã¯ã䟿å©ã§éåžžã«ç°¡åã§ãã ãŸãããããéåžžã«éèŠã§ãããããã©ãŒãã³ã¹ã¯ãã®åé¡ã解決ããã®ã«ååã§ãã ãããã£ãŠãGolangãéžæããŸããã
æ§èœ
ç§ãã¡ã¯æ倧éã®ããã©ãŒãã³ã¹ãéæããããšã«æ³šåããŠããŸãã ãµãŒãã¹ã®åã€ã³ã¹ã¿ã³ã¹ã®é£ã«å±éããããœãªã¥ãŒã·ã§ã³ã®å ŽåãRAMãšããã»ããµæéã®ããããªæ¶è²»ãå¿
èŠã§ãã ãããŠããã¡ãããå¿çé
延ãå°ããããå¿
èŠããããŸãã
çµæãäœã§ãããèŠãŠã¿ãŸãããã
RAM
Netrameshã¯ããã©ãã£ãã¯ãªãã§æ倧10Mbãæ¶è²»ããã€ã³ã¹ã¿ã³ã¹ãããæ倧10,000 RPSã®è² è·ã§æ倧50Mbãæ¶è²»ããŸãã
Istio envoyãããã·ã¯ãæ°åã®ã€ã³ã¹ã¿ã³ã¹ãæã€ã¯ã©ã¹ã¿ãŒã§åžžã«çŽ300Mbãæ¶è²»ããŸãã ããã«ãããã¯ã©ã¹ã¿ãŒå
šäœã«æ¡åŒµããããšã¯ã§ããŸããã
Netrameshã䜿çšãããšãã¡ã¢ãªæ¶è²»ã10åã®1以äžã«ãªããŸããã
CPU
CPU䜿çšçã¯ãè² è·ãããã£ãŠãæ¯èŒççãããªããŸãã ããã¯ããµã€ãã«ãŒãžã®åäœæéãããã®ãªã¯ãšã¹ãæ°ã«äŸåããŸãã ããŒã¯æã®1ç§ããã3000ãªã¯ãšã¹ãã®å€ïŒ
ãã1ã€ã®éèŠãªãã€ã³ãããããŸããNetramesh-ã³ã³ãããŒã«ãã¬ãŒã³ãšè² è·ã®ãªããœãªã¥ãŒã·ã§ã³ã¯CPUæéãæ¶è²»ããŸããã Istioã䜿çšãããšããµã€ãã«ãŒã¯åžžã«ãµãŒãã¹ãšã³ããã€ã³ããæŽæ°ããŸãã ãã®çµæãè² è·ã®ãªããã®ãããªç»åãèŠãããšãã§ããŸãã
ãµãŒãã¹éã®éä¿¡ã«ã¯HTTP / 1ã䜿çšããŸãã ç¹äœ¿ãä»ããŠãããã·ããå Žåã®Istioã®å¿çæéã®å¢å ã¯æ倧5ã10ããªç§ã§ãããã¯1ããªç§ã§å¿çããæºåãã§ããŠãããµãŒãã¹ã§ã¯éåžžã«å€ããªããŸãã Netrameshã§ã¯ããã®æéã¯0.5ã2ããªç§ã«ççž®ãããŸããã
æ¡åŒµæ§
åãããã·ãæ¶è²»ãããªãœãŒã¹ã®éãå°ãªããããåãµãŒãã¹ã®é£ã«é
眮ã§ããŸãã Netrameshã¯ãåãµã€ãã«ãŒã®æãããåçŽã«ç¶æããããã«ãã³ã³ãããŒã«ãã¬ãŒã³ã³ã³ããŒãã³ããªãã§æå³çã«äœæãããŸããã å€ãã®å ŽåããµãŒãã¹ã¡ãã·ã¥ãœãªã¥ãŒã·ã§ã³ã§ã¯ãã³ã³ãããŒã«ãã¬ãŒã³ããµãŒãã¹ãã£ã¹ã«ããªæ
å ±ãåãµã€ãã«ãŒã«é
ä¿¡ããŸãã ããã«å ããŠãã¿ã€ã ã¢ãŠãããã©ã³ã¹èšå®ã«é¢ããæ
å ±ããããŸãã ããã«ãããå€ãã®äŸ¿å©ãªããšãã§ããŸãããæ®å¿µãªããããµã€ãã«ãŒã®ãµã€ãºã倧ãããªããŸãã
ãµãŒãã¹çºèŠ
Netrameshã¯ããµãŒãã¹æ€åºã®ããã®è¿œå ã¡ã«ããºã ãè¿œå ããŸããã ãã¹ãŠã®ãã©ãã£ãã¯ã¯ãnetraãµã€ãã«ãŒãä»ããŠééçã«ãããã·ãããŸãã
Netrameshã¯ãHTTP / 1ã¢ããªã±ãŒã·ã§ã³ãããã³ã«ããµããŒãããŠããŸãã ããŒãã®æ§æå¯èœãªãªã¹ãã¯ãããã決å®ããããã«äœ¿çšãããŸãã éåžžãã·ã¹ãã ã«ã¯HTTPã§éä¿¡ããããŒããããã€ããããŸãã ããšãã°ããµãŒãã¹ãšå€éšãªã¯ãšã¹ãã®ããåãã«ã¯80ã8890ã8080ã䜿çšããŸããããã®å Žåã¯NETRA_HTTP_PORTS
ç°å¢NETRA_HTTP_PORTS
ã䜿çšããŠèšå®ã§ãNETRA_HTTP_PORTS
ã
KubernetesããªãŒã±ã¹ãã©ãšããŠäœ¿çšãããµãŒãã¹éã®ã¯ã©ã¹ã¿å
çžäºäœçšã®ããã«ãã®ãµãŒãã¹ãšã³ãã£ãã£ã®ã¡ã«ããºã ã䜿çšããå Žåãã¡ã«ããºã ã¯ãŸã£ããåããŸãŸã§ãã æåã«ããã€ã¯ããµãŒãã¹ã¯kube-dnsã䜿çšããŠãµãŒãã¹IPã¢ãã¬ã¹ãååŸããããã«æ°ããæ¥ç¶ãéããŸãã ãã®æ¥ç¶ã¯æåã«ããŒã«ã«ã®netra-sidecarãšç¢ºç«ããããã¹ãŠã®TCPãã±ããã¯æåã«netraã«å°çããŸãã 次ã«ãnetra-sidecarã¯å
ã®å®å
ãšã®æ¥ç¶ã確ç«ããŸãã ããŒãã®ãããIPã®NATã¯ãnetraã䜿çšããªãå ŽåãšãŸã£ããåããŸãŸã§ãã
åæ£ãã¬ãŒã¹ãšã³ã³ããã¹ãã¹ã¯ããŒã«
Netrameshã¯ãHTTPçžäºäœçšã«é¢ãããã¬ãŒã¹ã¹ãã³ãéä¿¡ããããã«å¿
èŠãªæ©èœãæäŸããŸãã Netra-sidecarã¯ãHTTPãããã³ã«ã解æããèŠæ±ã®é
延ã枬å®ããHTTPããããŒããå¿
èŠãªæ
å ±ãååŸããŸãã æçµçã«ãåäžã®Jaegerã·ã¹ãã ã§ãã¹ãŠã®ãã¬ãŒã¹ãååŸããŸãã 埮調æŽã®ããã«ãå
¬åŒã®jaeger goã©ã€ãã©ãªãæäŸããç°å¢å€æ°ã䜿çšããããšãã§ããŸã ã
ããããåé¡ããããŸãã ãµãŒãã¹ãç¹å¥ãªuberããããŒãçæããŠè»¢éãããŸã§ãæ¥ç¶ããããã¬ãŒã¹ã¹ãã³ã¯ã·ã¹ãã ã«è¡šç€ºãããŸããã ãããŠããããåé¡ã®åå ãè¿
éã«èŠã€ããããã«å¿
èŠãªãã®ã§ãã ããã§ããNetrameshã«ã¯è§£æ±ºçããããŸãã ãããã·ã¯HTTPããããŒãèªã¿åããuberãã¬ãŒã¹IDããªãå Žåã¯çæããŸãã ãŸããNetrameshã¯ãµã€ãã«ãŒã«çä¿¡ããã³çºä¿¡ãªã¯ãšã¹ãã«é¢ããæ
å ±ãä¿åããçºä¿¡ãªã¯ãšã¹ãã®å¿
èŠãªããããŒãå
å®ãããããšã§ããããæ¯èŒããŸãã ãµãŒãã¹ã§è¡ãå¿
èŠãããã®ã¯ã NETRA_HTTP_REQUEST_ID_HEADER_NAME
ç°å¢NETRA_HTTP_REQUEST_ID_HEADER_NAME
ã䜿çšããŠæ§æã§ããX-Request-Id
ããããŒã1ã€ã ãã¹ããŒããããšNETRA_HTTP_REQUEST_ID_HEADER_NAME
ã Netrameshã®ã³ã³ããã¹ãã®ãµã€ãºãå¶åŸ¡ããããã«ã次ã®ç°å¢å€æ°ãèšå®ã§ããŸãNETRA_TRACING_CONTEXT_EXPIRATION_MILLISECONDS
ïŒã³ã³ããã¹ããä¿åãããæéïŒããã³NETRA_TRACING_CONTEXT_CLEANUP_INTERVAL
ïŒã³ã³ããã¹ãã¯ãªãŒãã³ã°ã®åšæïŒã
ã·ã¹ãã å
ã®ããã€ãã®ãã¹ãç¹å¥ãªã»ãã·ã§ã³ããŒã«ãŒã§ããŒã¯ããããšã§çµã¿åãããããšãã§ããŸãã Netraã§ã¯ã HTTP_HEADER_TAG_MAP
ãèšå®ããŠãHTTPããããŒãé©åãªãã¬ãŒã¹ã¹ãã³ã¿ã°ã«HTTP_HEADER_TAG_MAP
ã§ããŸãã ããã¯ããã¹ãã«ç¹ã«åœ¹ç«ã¡ãŸãã æ©èœãã¹ãã«åæ Œãããšã察å¿ããã»ãã·ã§ã³ããŒã«ãããã£ã«ã¿ãªã³ã°ã«ãã£ãŠãã·ã¹ãã ã®ã©ã®éšåã圱é¿ãåãããã確èªã§ããŸãã
ãªã¯ãšã¹ãã®ãœãŒã¹ã®æ±ºå®
èŠæ±ãã©ãããæ¥ãããå€æããã«ã¯ãé¢æ°ã䜿çšããŠããœãŒã¹ã«ããããŒãèªåçã«è¿œå ããŸãã ç°å¢å€æ°NETRA_HTTP_X_SOURCE_HEADER_NAME
ã䜿çšããŠãèªåçã«èšå®ãããããããŒã®ååãæå®ã§ããŸãã NETRA_HTTP_X_SOURCE_VALUE
ã䜿çšããŠããã¹ãŠã®çºä¿¡èŠæ±ã«å¯ŸããŠX-SourceããããŒãèšå®ããå€ãèšå®ã§ããŸãã
ããã«ããããããã¯ãŒã¯å
šäœã§åäžã«ãã®äŸ¿å©ãªããããŒãé
åžã§ããŸãã ãã®åŸããã§ã«ãµãŒãã¹ã§äœ¿çšããŠããã°ãšã¡ããªãã¯ã«è¿œå ã§ããŸãã
Netrameshãã©ãã£ãã¯ãšå
éšã«ãŒãã£ã³ã°
Netrameshã¯2ã€ã®äž»èŠã³ã³ããŒãã³ãã§æ§æãããŠããŸãã æåã®netra-initã¯ããã©ãã£ãã¯ãååããããã®ãããã¯ãŒã¯ã«ãŒã«ãèšå®ããŸãã iptablesãªãã€ã¬ã¯ãã«ãŒã«ã䜿çšããŠãNetrameshã®2çªç®ã®äž»èŠã³ã³ããŒãã³ãã§ãããµã€ãã«ãŒã®ãã©ãã£ãã¯ã®ãã¹ãŠãŸãã¯äžéšãã€ã³ã¿ãŒã»ããããŸãã çä¿¡ããã³çºä¿¡TCPã»ãã·ã§ã³ã«å¯ŸããŠã€ã³ã¿ãŒã»ããããããŒããæ§æã§ããŸãïŒ INBOUND_INTERCEPT_PORTS, OUTBOUND_INTERCEPT_PORTS
ã
ãã®ããŒã«ã«ã¯èå³æ·±ãæ©èœããããŸã-確ççã«ãŒãã£ã³ã°ã§ãã ãã¬ãŒã¹ã¹ãã³ã®åéå°çšã«Netrameshã䜿çšããå Žåãå®çšŒåç°å¢ã§ã¯ãå€æ°NETRA_INBOUND_PROBABILITY
ããã³NETRA_OUTBOUND_PROBABILITY
ïŒ0ãã1ïŒã䜿çšããŠãªãœãŒã¹ãç¯çŽãã確ççã«ãŒãã£ã³ã°ãæå¹ã«ã§ããŸãã ããã©ã«ãå€ã¯1ã§ãïŒãã¹ãŠã®ãã©ãã£ãã¯ãã€ã³ã¿ãŒã»ãããããŸãïŒã
ã€ã³ã¿ãŒã»ããã«æåãããšãnetraãµã€ãã«ãŒã¯æ°ããæ¥ç¶ãåãå
¥ãã SO_ORIGINAL_DST
ãœã±ãããªãã·ã§ã³ã䜿çšããŠå
ã®å®å
ãååŸããŸãã 次ã«ãNetraã¯å
ã®IPã¢ãã¬ã¹ãžã®æ°ããæ¥ç¶ãéããåœäºè
éã®åæ¹åTCPéä¿¡ã確ç«ããééãããã¹ãŠã®ãã©ãã£ãã¯ããªãã¹ã³ããŸãã ããŒããHTTPãšããŠå®çŸ©ãããŠããå ŽåãNetraã¯ããã解æããŠã«ãŒãã£ã³ã°ããããšããŸãã HTTP解æã倱æããå ŽåãNetraã¯TCPã«ãã©ãŒã«ããã¯ãããã€ããééçã«ãããã·ããŸãã
äŸåé¢ä¿ã°ã©ãã®äœæ
Jaegerã§å€ãã®ãã¬ãŒã¹æ
å ±ãåãåã£ãåŸãã·ã¹ãã å
ã®çžäºäœçšã®å®å
šãªã°ã©ããååŸããããšæããŸãã ããããã·ã¹ãã ã«ååãªè² è·ããããã1æ¥ã§æ°ååã®ãã¬ãŒã¹ã¹ãã³ãèç©ãããå Žåããããã®éèšãè¡ãããšã¯ããã»ã©ç°¡åãªäœæ¥ã§ã¯ãããŸããã ãããè¡ãå
¬åŒã®æ¹æ³ããããŸãïŒ spark-dependencies ã ãã ããå®å
šãªã°ã©ããäœæããéå»24æéã«ããã£ãŠããŒã¿ã»ããå
šäœãJaegerãã匷å¶çã«ããŠã³ããŒãããã«ã¯æ°æéããããŸãã
Elasticsearchã䜿çšããŠãã¬ãŒã¹ã¹ãã³ãä¿åããå ŽåãElasticsearchã®æ©èœã䜿çšããŠæ°åã§åãã°ã©ããäœæããGolangã®ã·ã³ãã«ãªãŠãŒãã£ãªãã£ã䜿çšã§ããŸãã
Netrameshã®äœ¿çšæ¹æ³
Netraã¯ããªãŒã±ã¹ãã¬ãŒã¿ãŒãå®è¡ããŠãããµãŒãã¹ã«ç°¡åã«è¿œå ã§ããŸãã ããã«äŸãèŠãããšãã§ããŸã ã
çŸæç¹ã§ã¯ãNetraã«ã¯ãµã€ãã«ãŒããµãŒãã¹ã«èªåçã«å±éããæ©èœã¯ãããŸããããå®è£
ã®èšç»ããããŸãã
æªæ¥ã®ããã©ã¡ãã·ã¥
Netrameshã®äž»ãªç®æšã¯ãæå°éã®ãªãœãŒã¹ã³ã¹ããšé«ãããã©ãŒãã³ã¹ãå®çŸãããµãŒãã¹éã®çžäºäœçšã芳å¯ããã³å¶åŸ¡ããããã®äž»ãªæ©äŒãæäŸããããšã§ãã
å°æ¥ãNetrameshã¯HTTP以å€ã®ã¢ããªã±ãŒã·ã§ã³ã¬ãã«ã®ãããã³ã«ã®ãµããŒããåãåããŸãã è¿ãå°æ¥ãL7ã«ãŒãã£ã³ã°ã®å¯èœæ§ããããŸãã
åæ§ã®åé¡ãçºçããå Žåã¯Netrameshã䜿çšãã質åãææ¡ããå¯ããã ããã