Ksphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextEnglish}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget/virt/ne_overviewmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget$/translations/zh_TW/virt/ne_overviewmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget$/translations/it_IT/virt/ne_overviewmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget$/translations/ja_JP/virt/ne_overviewmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget$/translations/ko_KR/virt/ne_overviewmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget$/translations/sp_SP/virt/ne_overviewmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageChinese (Simplified)uh1h hh _documenthsourceNlineNubhcomment)}(h SPDX-License-Identifier: GPL-2.0h]h SPDX-License-Identifier: GPL-2.0}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhhQ/var/lib/git/docbuild/linux/Documentation/translations/zh_CN/virt/ne_overview.rsthKubhnote)}(hX{此文件的目的是为让中文读者更容易阅读和理解,而不是作为一个分支。 因此, 如果您对此文件有任何意见或更新,请先尝试更新原始英文文件。 如果您发现本文档与原始文件有任何不同或者有翻译问题,请发建议或者补丁给 该文件的译者,或者请求中文文档维护者和审阅者的帮助。h]h paragraph)}(hX{此文件的目的是为让中文读者更容易阅读和理解,而不是作为一个分支。 因此, 如果您对此文件有任何意见或更新,请先尝试更新原始英文文件。 如果您发现本文档与原始文件有任何不同或者有翻译问题,请发建议或者补丁给 该文件的译者,或者请求中文文档维护者和审阅者的帮助。h]hX{此文件的目的是为让中文读者更容易阅读和理解,而不是作为一个分支。 因此, 如果您对此文件有任何意见或更新,请先尝试更新原始英文文件。 如果您发现本文档与原始文件有任何不同或者有翻译问题,请发建议或者补丁给 该文件的译者,或者请求中文文档维护者和审阅者的帮助。}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hh5Documentation/translations/zh_CN/disclaimer-zh_CN.rsthKhhubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubh field_list)}(hhh](hfield)}(hhh](h field_name)}(hOriginalh]hOriginal}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhKubh field_body)}(h#Documentation/virt/ne_overview.rst h]h)}(h"Documentation/virt/ne_overview.rsth]h"Documentation/virt/ne_overview.rst}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhubah}(h]h ]h"]h$]h&]uh1hhhubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hhh](h)}(h翻译h]h翻译}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhKubh)}(h-司延腾 Yanteng Si h]h)}(h,司延腾 Yanteng Si h](h司延腾 Yanteng Si <}(hj hhhNhNubh reference)}(hsiyanteng@loongson.cnh]hsiyanteng@loongson.cn}(hj*hhhNhNubah}(h]h ]h"]h$]h&]refurimailto:siyanteng@loongson.cnuh1j(hj ubh>}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhj ubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hhh](h)}(h校译h]h校译}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hhjPhhhKubh)}(h&时奎亮 Alex Shi h]h)}(h%时奎亮 Alex Shi h](h时奎亮 Alex Shi <}(hjehhhNhNubj))}(halexs@kernel.orgh]halexs@kernel.org}(hjmhhhNhNubah}(h]h ]h"]h$]h&]refurimailto:alexs@kernel.orguh1j(hjeubh>}(hjehhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK hjaubah}(h]h ]h"]h$]h&]uh1hhjPubeh}(h]h ]h"]h$]h&]uh1hhhhK hhhhubeh}(h]h ]h"]h$]h&]uh1hhhhhhhhKubhtarget)}(h.. _cn_virt_ne_overview:h]h}(h]h ]h"]h$]h&]refidcn-virt-ne-overviewuh1jhKhhhhhhubhsection)}(hhh](htitle)}(hNitro Enclavesh]hNitro Enclaves}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhhhhhKubj)}(hhh](j)}(h概述h]h概述}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhhhhhKubh)}(hNitro Enclaves(NE)是亚马逊弹性计算云(EC2)的一项新功能,允许客户在EC2实 例中划分出孤立的计算环境[1]。h]hNitro Enclaves(NE)是亚马逊弹性计算云(EC2)的一项新功能,允许客户在EC2实 例中划分出孤立的计算环境[1]。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(h例如,一个处理敏感数据并在虚拟机中运行的应用程序,可以与在同一虚拟机中运行的 其他应用程序分开。然后,这个应用程序在一个独立于主虚拟机的虚拟机中运行,即 enclave。h]h例如,一个处理敏感数据并在虚拟机中运行的应用程序,可以与在同一虚拟机中运行的 其他应用程序分开。然后,这个应用程序在一个独立于主虚拟机的虚拟机中运行,即 enclave。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hX8一个enclave与催生它的虚拟机一起运行。这种设置符合低延迟应用的需要。为enclave 分配的资源,如内存和CPU,是从主虚拟机中分割出来的。每个enclave都被映射到一 个运行在主虚拟机中的进程,该进程通过一个ioctl接口与NE驱动进行通信。h]hX8一个enclave与催生它的虚拟机一起运行。这种设置符合低延迟应用的需要。为enclave 分配的资源,如内存和CPU,是从主虚拟机中分割出来的。每个enclave都被映射到一 个运行在主虚拟机中的进程,该进程通过一个ioctl接口与NE驱动进行通信。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(h-在这个意义上,有两个组成部分。h]h-在这个意义上,有两个组成部分。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK"hjhhubh)}(h1. 一个enclave抽象进程——一个运行在主虚拟机客体中的用户空间进程,它使用NE驱动 提供的ioctl接口来生成一个enclave虚拟机(这就是下面的2)。h]h1. 一个enclave抽象进程——一个运行在主虚拟机客体中的用户空间进程,它使用NE驱动 提供的ioctl接口来生成一个enclave虚拟机(这就是下面的2)。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK$hjhhubh)}(hm有一个NE模拟的PCI设备暴露给主虚拟机。这个新的PCI设备的驱动被包含在NE驱动中。h]hm有一个NE模拟的PCI设备暴露给主虚拟机。这个新的PCI设备的驱动被包含在NE驱动中。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK'hjhhubh)}(hX3ioctl逻辑被映射到PCI设备命令,例如,NE_START_ENCLAVE ioctl映射到一个enclave 启动PCI命令。然后,PCI设备命令被翻译成在管理程序方面采取的行动;也就是在运 行主虚拟机的主机上运行的Nitro管理程序。Nitro管理程序是基于KVM核心技术的。h]hX3ioctl逻辑被映射到PCI设备命令,例如,NE_START_ENCLAVE ioctl映射到一个enclave 启动PCI命令。然后,PCI设备命令被翻译成在管理程序方面采取的行动;也就是在运 行主虚拟机的主机上运行的Nitro管理程序。Nitro管理程序是基于KVM核心技术的。}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK)hjhhubh)}(h2. enclave本身——一个运行在与催生它的主虚拟机相同的主机上的虚拟机。内存和CPU 从主虚拟机中分割出来,专门用于enclave虚拟机。enclave没有连接持久性存储。h]h2. enclave本身——一个运行在与催生它的主虚拟机相同的主机上的虚拟机。内存和CPU 从主虚拟机中分割出来,专门用于enclave虚拟机。enclave没有连接持久性存储。}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK-hjhhubh)}(hXC从主虚拟机中分割出来并给enclave的内存区域需要对齐2 MiB/1 GiB物理连续的内存 区域(或这个大小的倍数,如8 MiB)。该内存可以通过使用hugetlbfs从用户空间分 配[2][3]。一个enclave的内存大小需要至少64 MiB。enclave内存和CPU需要来自同 一个NUMA节点。h]hXC从主虚拟机中分割出来并给enclave的内存区域需要对齐2 MiB/1 GiB物理连续的内存 区域(或这个大小的倍数,如8 MiB)。该内存可以通过使用hugetlbfs从用户空间分 配[2][3]。一个enclave的内存大小需要至少64 MiB。enclave内存和CPU需要来自同 一个NUMA节点。}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK0hjhhubh)}(h一个enclave在专用的核心上运行。CPU 0及其同级别的CPU需要保持对主虚拟机的可用 性。CPU池必须由具有管理能力的用户为NE目的进行设置。关于CPU池的格式,请看内核 文档[4]中的cpu list部分。h]h一个enclave在专用的核心上运行。CPU 0及其同级别的CPU需要保持对主虚拟机的可用 性。CPU池必须由具有管理能力的用户为NE目的进行设置。关于CPU池的格式,请看内核 文档[4]中的cpu list部分。}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK5hjhhubh)}(hXenclave通过本地通信通道与主虚拟机进行通信,使用virtio-vsock[5]。主虚拟机有 virtio-pci vsock模拟设备,而飞地虚拟机有virtio-mmio vsock模拟设备。vsock 设备使用eventfd作为信令。enclave虚拟机看到通常的接口——本地APIC和IOAPIC——从 virtio-vsock设备获得中断。virtio-mmio设备被放置在典型的4 GiB以下的内存中。h]hXenclave通过本地通信通道与主虚拟机进行通信,使用virtio-vsock[5]。主虚拟机有 virtio-pci vsock模拟设备,而飞地虚拟机有virtio-mmio vsock模拟设备。vsock 设备使用eventfd作为信令。enclave虚拟机看到通常的接口——本地APIC和IOAPIC——从 virtio-vsock设备获得中断。virtio-mmio设备被放置在典型的4 GiB以下的内存中。}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK9hjhhubh)}(h在enclave中运行的应用程序需要和将在enclave虚拟机中运行的操作系统(如内核、 ramdisk、init)一起被打包到enclave镜像中。enclave虚拟机有自己的内核并遵循标 准的Linux启动协议[6]。h]h在enclave中运行的应用程序需要和将在enclave虚拟机中运行的操作系统(如内核、 ramdisk、init)一起被打包到enclave镜像中。enclave虚拟机有自己的内核并遵循标 准的Linux启动协议[6]。}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK>hjhhubh)}(h内核bzImage、内核命令行、ramdisk(s)是enclave镜像格式(EIF)的一部分;另外 还有一个EIF头,包括元数据,如magic number、eif版本、镜像大小和CRC。h]h内核bzImage、内核命令行、ramdisk(s)是enclave镜像格式(EIF)的一部分;另外 还有一个EIF头,包括元数据,如magic number、eif版本、镜像大小和CRC。}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKBhjhhubh)}(h哈希值是为整个enclave镜像(EIF)、内核和ramdisk(s)计算的。例如,这被用来检 查在enclave虚拟机中加载的enclave镜像是否是打算运行的那个。h]h哈希值是为整个enclave镜像(EIF)、内核和ramdisk(s)计算的。例如,这被用来检 查在enclave虚拟机中加载的enclave镜像是否是打算运行的那个。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKEhjhhubh)}(h这些加密测量包括在由Nitro超级管理器成的签名证明文件中,并进一步用来证明enclave 的身份;KMS是NE集成的服务的一个例子,它检查证明文件。h]h这些加密测量包括在由Nitro超级管理器成的签名证明文件中,并进一步用来证明enclave 的身份;KMS是NE集成的服务的一个例子,它检查证明文件。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKHhjhhubh)}(hX)enclave镜像(EIF)被加载到enclave内存中,偏移量为8 MiB。enclave中的初始进程 连接到主虚拟机的vsock CID和一个预定义的端口--9000,以发送一个心跳值--0xb7。这 个机制用于在主虚拟机中检查enclave是否已经启动。主虚拟机的CID是3。h]hX)enclave镜像(EIF)被加载到enclave内存中,偏移量为8 MiB。enclave中的初始进程 连接到主虚拟机的vsock CID和一个预定义的端口--9000,以发送一个心跳值--0xb7。这 个机制用于在主虚拟机中检查enclave是否已经启动。主虚拟机的CID是3。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKKhjhhubh)}(hX如果enclave虚拟机崩溃或优雅地退出,NE驱动会收到一个中断事件。这个事件会通过轮询 通知机制进一步发送到运行在主虚拟机中的用户空间enclave进程。然后,用户空间enclave 进程就可以退出了。h]hX如果enclave虚拟机崩溃或优雅地退出,NE驱动会收到一个中断事件。这个事件会通过轮询 通知机制进一步发送到运行在主虚拟机中的用户空间enclave进程。然后,用户空间enclave 进程就可以退出了。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKOhjhhubh)}(hXb[1] https://aws.amazon.com/ec2/nitro/nitro-enclaves/ [2] https://www.kernel.org/doc/html/latest/admin-guide/mm/hugetlbpage.html [3] https://lwn.net/Articles/807108/ [4] https://www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html [5] https://man7.org/linux/man-pages/man7/vsock.7.html [6] https://www.kernel.org/doc/html/latest/x86/boot.htmlh](h[1] }(hjhhhNhNubj))}(h0https://aws.amazon.com/ec2/nitro/nitro-enclaves/h]h0https://aws.amazon.com/ec2/nitro/nitro-enclaves/}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurijuh1j(hjubh [2] }(hjhhhNhNubj))}(hFhttps://www.kernel.org/doc/html/latest/admin-guide/mm/hugetlbpage.htmlh]hFhttps://www.kernel.org/doc/html/latest/admin-guide/mm/hugetlbpage.html}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurijuh1j(hjubh [3] }(hjhhhNhNubj))}(h https://lwn.net/Articles/807108/h]h https://lwn.net/Articles/807108/}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurijuh1j(hjubh [4] }(hjhhhNhNubj))}(hIhttps://www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.htmlh]hIhttps://www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurijuh1j(hjubh [5] }(hjhhhNhNubj))}(h2https://man7.org/linux/man-pages/man7/vsock.7.htmlh]h2https://man7.org/linux/man-pages/man7/vsock.7.html}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurijuh1j(hjubh [6] }(hjhhhNhNubj))}(h4https://www.kernel.org/doc/html/latest/x86/boot.htmlh]h4https://www.kernel.org/doc/html/latest/x86/boot.html}(hj"hhhNhNubah}(h]h ]h"]h$]h&]refurij$uh1j(hjubeh}(h]h ]h"]h$]h&]uh1hhhhKShjhhubeh}(h]id1ah ]h"]概述ah$]h&]uh1jhjhhhhhKubeh}(h](nitro-enclavesjeh ]h"](nitro enclavescn_virt_ne_overvieweh$]h&]uh1jhhhhhhhKexpect_referenced_by_name}jEjsexpect_referenced_by_id}jjsubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(jN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjoerror_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}j]jasnameids}(jEjjDjAj<j9u nametypes}(jEjDj<uh}(jjjAjj9ju footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}j}KsRparse_messages]transform_messages]hsystem_message)}(hhh]h)}(hhh]h9Hyperlink target "cn-virt-ne-overview" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]levelKtypeINFOsourcehlineKuh1juba transformerN include_log]5Documentation/translations/zh_CN/virt/ne_overview.rst(NNNNta decorationNhhub.