CARVIEW |
超個体型データセンターを目指したネットワークサービス間依存関係の自動追跡の構想 / A concept of superorganism tracing
情報処理学会 DICOMO2019@福島 https://tsys.jp/dicomo/2019/program/program_abst.html#6A-2
https://yuuk.io/papers/transtracer_dicomo2019.pdf
インターネットの利用者による多様な要求に応えるために,インターネットサービスを支えるシステムが大規模化かつ複雑化している.利用者とデータセンター間のネットワークの中間層を利用するエッジコンピューティングや小・中規模データセンターが地理的に分散する超個体型データセンターに向けて,今後はこれまで以上にシステムの規模と複雑性が高まっていく.その結果,システム管理者はシステムを構成するネットワークサービス同士の依存関係を把握することが難しくなるため,依存を自動で発見することが必要となる.しかし,依存を自動発見する先行手法は,システム管理者が把握できていない未知のネットワークサービスとの通信に対して,受動的にトラヒックを観測し,相関する活動を示すサービスを発見する.そのため,依存検出の偽陽性率が高いまたは依存関係の方向が識別できないという課題がある.そこで,本研究では,ネットワーク通信を終端する各ホスト上で確立されたトランスポート接続情報を網羅的に収集することにより,ネットワークサービス間の依存関係を自動で追跡可能な基盤を提案する.本提案により,未知のネットワークサービスであっても,OSがサポートするトランスポート接続を利用する限りは,依存を発見可能となる.また,接続を終端するホスト上にて,実際に発生したサービス間の接続を検出するために,偽陽性を削減できる.さらに,トランスポート接続の両端のプロセスを接続を要求する側と接続を待ち受ける側に分けることにより,前者が後者に依存すると判定できる.
Yuuki Tsubouchi (yuuk1)
More Decks by Yuuki Tsubouchi (yuuk1)
Other Decks in Research
Featured
Transcript
-
͘͞ΒΠϯλʔωοτ גࣜձࣾ (C) Copyright 1996-2019 SAKURA internet Inc ͘͞ΒΠϯλʔωοτ ݚڀॴ
ݸମܕσʔληϯλʔΛࢦͨ͠ ωοτϫʔΫαʔϏεؒґଘؔͷࣗಈͷߏ 2019/07/04 ݚڀһ ௶ ༎थ ௶༎थ*1, ݹխେ*2, দຊ྄հ*1 DICOMO2019γϯϙδϜ *1) ͘͞ΒΠϯλʔωοτ, *2) ͯͳ -
5 ݸମܕσʔληϯλʔ ɾதԝूݖͷΫϥυίϯϐϡʔςΟϯάͷΈͰղܾͰ͖ͳ͍ ɾར༻ऀͱσʔληϯλʔؒͷωοτϫʔΫԆ ɾখɾதنͷσʔληϯλʔখܕͷϥοΫ܈Λཧతʹࢄͤ͞Δ ɾࢄ֤ͨ͠σʔληϯλʔಠཱͯ͠ػೳ͠ͳ͕Βɼ૯ମͱͯ͠ ౷͞Ε͍ͯΔΑ͏ʹݟ͑Δݸମతͳσʔληϯλʔ[12]Λࢦ͢ ɾωοτϫʔΫαʔϏεґଘ͕ؔΑΓෳࡶԽ͠ɼγεςϜཧऀ͕ґ ଘؔͷશମΛৄࡉʹѲͰ͖ͳ͍͜ͱ͕લఏͱͳΔ ɾγεςϜͷґଘؔΛࣗಈతʹ͢Δඞཁ͕͋Δ
[12] দຊ྄հ, ௶༎थ, ٶԼ߶ี: ࢄܕσʔληϯλʔOSΛࢦͨ͠ϦΞΫςΟϒੑΛ࣋ͭίϯςφ࣮ߦج൫ٕज़ɼใॲཧֶձݚڀใࠂΠϯλʔωο τͱӡ༻ٕज़(IOT) ɼVol. 2019-IOT-44, No. 27, pp. 1–8 2019. -
6 1. ݸମܕσʔληϯλʔͰɼγεςϜཧऀ͕ωοτϫʔΫґଘؔ ΛѲͰ͖ͳ͍ ↪ ະͷωοτϫʔΫαʔϏεͱͷଓΛՄೳ 2. ݸମܕσʔληϯλʔͰɼσʔληϯλʔΛࢄͤ͞ΔͨΊɼத ԝूݖతߏΛͱΓͮΒ͍ ↪
ͨ݁͠ՌΛࢄͨ͠σʔληϯλʔ্ʹࢄஔՄೳ ݸମܕτϨʔγϯάͷཁ݅ ࠓճ1ͷཁ݅Λຬͨ͢ख๏ΛఏҊ͢Δ -
9 ɾ؍ଌࢤΞϓϩʔν: ֎෦͔ΒγεςϜͷมಈͷ૬ؔΛ؍ଌ͢Δ [7,8,9,10,20] ɾཏతͳґଘؔͷ͕Մೳ ɾհೖࢤΞϓϩʔν: ΞϓϦέʔγϣϯॲཧωο τϫʔΫ௨৴ͷؒ ʹܭଌΛઃఆ͠ɼॲཧͷҰ࿈ͷྲྀΕͷதͰܭଌΛ௨աͤ͞Δ [21,22,23,24,11,25,26]
ɾґଘΛݕग़͍ͯ͠Δ͜ͱ͔Βِཅੑ͕খ͍͞ ઌߦݚڀͷྨ [7] P Bahl, et.al.: Towards Highly Reliable Enterprise Network Services via Inference of Multi-Level Dependencies, ACM SIGCOMM Review, Vol. 37, No. 4, pp.13–24 2007. [8] X Chen, et.al.: Automating Network Application Dependency Discovery: Experiences, Limitations, and New Solutions, USENIX Symposium on OSDI, pp.117–130 2008. [9] P Lucian, etl.al.: Macroscope: End-Point Approach to Networked Application Dependency Discovery, CoNEXT, pp.229–240 2009. [10] A Natarajan, et.al.: NSDMiner: Automated Discovery of Network Service Dependencies, IEEE INFOCOM, pp. 2507–2515 2012. [11] A Zand, et.al.: Rippler: Delay Injection for Service Dependency Detection, IEEE INFOCOM, pp. 2157–2165 2014. [21] M Y Chen, et.al.: Pinpoint: Problem Determination in Large, Dynamic Internet Services, IEEE/IFIP International Conference on DSN, pp. 595–604 2002. [22] P Barham, et.al.: Magpie: Online Modelling and Performance-aware Systems, 17th Workshop on HotOS, pp. 85–90 2003. [23] R Fonseca, et.al.: X-Trace: A Pervasive Network Tracing Framework, USENIX Conference on NSDI, pp. 20–20 2007. [24] B H Sigelman, et.al.: Dapper, a Large-Scale Distributed Systems Tracing Infrastructure, Technical report, Google 2010. [25] J K Clawson: Service Dependency Analysis via TCP/UDP Port Tracing, Master’s thesis, Brigham Young University-Provo 2015. [26] W Li, Y Lemieux: Service Mesh: Challenges, State of the Art, and Future Research Opportunities, IEEE International Conference on SOSE, pp. 122–1225 2019. -
10 ɾ؍ଌࢤΞϓϩʔν ɾਫ਼: ِཅੑͱِӄੑ ɾਫ਼͕ѱ͍΄ͲɼมߋͷӨڹௐ͕ࠪඞཁͱͳΔ ɾґଘํ: ୭͕୭ʹґଘ͢Δͷ͔ͱ͍͏ґଘͷํΛࣝผͰ͖ͳ͍ ɾґଘํ͕Θ͔Βͳ͍ͱɼมߋͷӨڹൣғΛਖ਼͘͠༧Ͱ͖ͳ͍ ɾհೖࢤΞϓϩʔν ɾܭଌΦʔόʔϔου:
ΞϓϦέʔγϣϯͷॲཧʹհೖ͢ΔͨΊɼ Φʔόʔϔου͕ൃੜ ɾະͷωοτϫʔΫαʔϏεͷґଘΛ͢ΔͨΊʹཏੑ͕ ඞཁͱͳΓɼΦʔόʔϔουͷӨڹ͕େ͖͘ͳΓ͍͢ ઌߦݚڀͷ՝ -
12 ఏҊख๏ʹΑΔ՝ͷղܾ 1. ܭଌΦʔόʔϔου ΦʔόʔϔουͰ͋Δ؍ଌࢤΞϓϩʔνͱ͢Δ 2. ਫ਼: ِཅੑ TCP/UDPଓΛऴ͢Δϗετ্Ͱൃੜ͢ΔଓΛݕग़͢Δ 3.
ґଘํ ଓͷ྆ΛɼଓΛཁٻ͢ΔଆͱଓΛͪड͚Δଆʹ ະͷωοτϫʔΫαʔϏεͱͷґଘΛൃݟ͢ΔͨΊʹɼLinuxΧʔω ϧϥϯυͰཏతʹଓใΛൃݟͰ͖ΔTCP/UDPଓΛର -
13 ఏҊख๏ͷߏ Host 1 Host 2 Host N CMDB Tracer
Tracer Tracer Systems Administrator ɾϗετ্ʹTracerϓϩηεΛஔ ɾ֤Tracerϓϩηεऔಘͨ͠ଓใΛ CMDB(ଓใཧσʔλϕʔε)ʹอଘ ɾγεςϜཧऀCMDBʹΞΫηε͠ɼ ෳͷϗετʹ·͕ͨΓґଘؔΛऔಘ -
14 TCP/UDPͷଓใͷऩू Host Kernel Process Process Transport … Tracer Polling
ɾTracerϓϩηε͕LinuxΧʔωϧʹ͍߹Θ ͤɼTCP/UDPιέοτใΛϙʔϦϯάऔಘ ɾଓΛऴ͢ΔOSϓϩηεใ͋Θͤͯ औಘ ɾιέοτใ: /proc/net/tcpNetlink sock_diag ɾϓϩηεใ: /proc/<pid>/{stat,fd} . . . ॲཧʹհೖ͠ͳ͍ͨΊ Φʔόʔϔου -
15 TCP/UDPଓͷґଘͷํͷܾఆ Host Y Port N Process B CONNECT Host
X Port M Process A LISTEN ɾଓΛཁٻ͢ΔϗετYɼଓΛड͚͚ΔϗετXʹґଘ͢Δ ɾϗετY͔ΒΈͯѼઌϙʔτ͕LISTENϙʔτMͰ͋ΕɼHost Y ͔ΒଓΛཁٻ͍ͯ͠Δ͜ͱ͕Θ͔Δ ɾLISTENϙʔτɼϗετXͷOSʹ͍߹Θͤͯऔಘ͢Δ -
16 ɾͯ͢ͷଓใΛऩू͢ΔͱɼCMDBʹ֨ೲ͢Δσʔλྔ͕େ͖͘ ͳΔͨΊɼͳใΛݮ͢Δ ɾΤϑΣϝϥϧϙʔτ: Χʔωϧ͔ΒׂΓͯΒΕΔϥϯμϜͳૹ৴ݩ ϙʔτ ɾಛఆͷLISTENϙʔτෳͷΤϑΣϝϥϧϙʔτ͔Βଓ͞ΕΔ ɾ͜ΕΒͷଓΛू͠ɼ1ݸͷଓͱΈͳ͢ ΤϑΣϝϥϧϙʔτͷू Host
Port Service Port Port Host Port Service 1ݸͷଓ ͱͯ͠ू LISTEN ΤϑΣϝϥϧ -
19 ɾҙࣝ: ωοτϫʔΫαʔϏεͷґଘ͕ؔෳࡶԽ͢Δͱมߋ ͕Լ ɾత: ະͷωοτϫʔΫαʔϏεͱͷଓΛൃݟ͢ΔͨΊʹɼ LinuxΧʔωϧͷTCP/UDPଓΛ ɾ՝: ܭଌΦʔόʔϔουɼਫ਼ɼґଘํͷࣝผ ɾղܾ:
ɾܭଌΦʔόʔϔου: ؍ଌࢤΞϓϩʔνͷ࠾༻ ɾਫ਼: ِཅੑʹ͍ͭͯɼTCP/UDPଓͷऴϗετ্Ͱݕ ɾґଘํ: TCP/UDPଓͷ྆Λཁٻଆͱͪड͚ଆʹ ·ͱΊ -
20 ɾఏҊख๏ͷ࣮ͱධՁ ɾTranstracer※1 ͱ࣮ͯ͠த ɾِӄੑͷݮ ɾଓͷ։࢝࣌ͷΈհೖࢤΞϓϩʔνΛద༻ ɾίϯςφܕԾԽڥʹର͢Δख๏ͷద༻ ɾຊདྷଘࡏ͠ͳ͍ͣͷґଘΛൃݟͨ͠ͱ͖ͷҟৗݕ ɾͨ݁͠ՌΛࢄͨ͠σʔληϯλʔ্ʹࢄஔ ࠓޙͷల
※1 https://github.com/yuuki/transtracer