

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Amazon EC2 拓撲如何運作
<a name="how-ec2-instance-topology-works"></a>

 AWS 網路以圖層階層排列。EC2 執行個體會連接至第三層或第三層以下的網路，具體取決於執行個體類型。執行個體的拓撲由一組節點描述，網路的每一層都有一個節點。[DescribeInstanceTopology](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstanceTopology.html) 或 [DescribeCapacityReservationTopology](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeCapacityReservationTopology.html) API 回應中的節點集可提供網路階層的由上而下檢視，並將底部節點連接到執行個體。

**注意**  
有些執行個體類型在代表網路 4 層的節點集中包含 4 個網路節點，而其他則包含代表網路 3 層的 3 個網路節點。如需支援的執行個體類型，請參閱 [執行個體類型](ec2-instance-topology-prerequisites.md#inst-net-topology-prereqs-instance-types)。  
根據容量保留的類型，可能只會看到 1、2 或 3 個網路節點。

下圖的視覺化表示法有助於了解 EC2 拓撲。網路節點識別為 **NN1** – **NN7**。數字 **i**、**ii** 和 **iii** 在此範例中代表不同的網路層。數字 **1**、**2**、**3** 和 **4** 可標識 EC2 執行個體。執行個體連接到底層中的節點，在下列範例中以 **iii** 標識。可有多個執行個體連接到同一個節點。

![\[執行個體拓撲的圖形表示。\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/images/instance-topology.png)


在此範例中：
+ 圖中的執行個體 1 連接到第 iii 層中的網路節點 4 (NN4)。NN4 連接到第 ii 層中的網路節點 2 (NN2)，NN2 連接到第 i 層中的網路節點 1 (NN1)，也就是此範例中的網路階層頂端。網路節點集由 NN1、NN2 和 NN4 組成，以上層到底層的階層表示。
+ 執行個體 2 也連接至網路節點 4 (NN4)。執行個體 1 和執行個體 2 有共同的網路節點集：NN1、NN2 和 NN4。
+ 執行個體 3 連接至網路節點 5 (NN5)。NN5 連接到 NN2，而 NN2 連接到 NN1。執行個體 3 的網路節點集為 NN1、NN2 和 NN5。
+ 執行個體 4 連接至網路節點 6 (NN6)。其網路節點集為 NN1、NN3 和 NN6。

考量執行個體 1、2 和 3 的鄰近性時，執行個體 1 和 2 彼此更接近，因為兩者連接到相同的網路節點 (NN4)，而執行個體 3 連接至不同的網路節點 (NN5) 因此較遠。

考量此圖中所有執行個體的鄰近性時，比起與執行個體 4 之間的距離，執行個體 1、2 和 3 彼此的距離更接近，因為這幾個執行個體的網路節點集中都有 NN2。

一般而言，如果連接到任何兩個執行個體的網路節點相同，這兩個執行個體實際位置彼此相近，就像執行個體 1 和 2 的情況一樣。此外，網路節點之間的躍點數越少，執行個體彼此之間的距離就越接近。例如，執行個體 1 和 3 到共同網路節點 (NN2) 的躍點，少於與執行個體 4 的共同網路節點 (NN1) 之間的躍點，因此它們之間的距離比執行個體 4 更近。

在此範例中，沒有在網路節點 7 (NN7) 下執行的執行個體，因此 API 輸出不會包含 NN7。

## 如何解譯 DescribeInstanceTopology 輸出
<a name="how-to-interpret-the-output"></a>

可以使用 [DescribeInstanceTopology](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstanceTopology.html) API 來描述執行個體拓撲。API 的輸出提供執行個體基礎網路拓撲的階層式檢視。

下列輸出範例對應上圖中四個執行個體的網路拓撲資訊。為了說明本範例，輸出範例中會包含註解。

輸出中的以下資訊非常重要：
+ `NetworkNodes` 說明單個執行個體的網路節點集。
+ 在每個網路節點集中，網路節點會以由上至下的階層順序列出。
+ 連接至執行個體的網路節點是清單中的最後一個網路節點 (底層)。
+ 若要找出哪些執行個體彼此靠近，請先在底層中尋找一般網路節點。如果底層沒有共同網路節點，請往上層尋找共同網路節點。

在下列範例中，輸出`i-1111111111example`和`i-2222222222example`位於與此範例中的其他執行個體相較之間最接近的位置，因為它們在底層`nn-4444444444example`中具有共同的網路節點。

**注意**  
回應包含 3 個或更多網路節點。如需每個支援執行個體類型之回應中網路節點數量的資訊，請參閱 [執行個體類型](ec2-instance-topology-prerequisites.md#inst-net-topology-prereqs-instance-types)。

```
{
    "Instances": [
        {
            "InstanceId": "i-1111111111example",  //Corresponds to instance 1
            "InstanceType": "p4d.24xlarge",
            "GroupName": "ML-group",
            "NetworkNodes": [
                "nn-1111111111example",           //Corresponds to NN1 in layer i
                "nn-2222222222example",           //Corresponds to NN2 in layer ii
                "nn-4444444444example"            //Corresponds to NN4 in layer iii - bottom layer, connected to the instance
            ],
            "CapacityBlockId": "null",
            "ZoneId": "usw2-az2",
            "AvailabilityZone": "us-west-2a"
        },
        {
            "InstanceId": "i-2222222222example",  //Corresponds to instance 2
            "InstanceType": "p4d.24xlarge",
            "NetworkNodes": [
                "nn-1111111111example",           //Corresponds to NN1 - layer i
                "nn-2222222222example",           //Corresponds to NN2 - layer ii
                "nn-4444444444example"            //Corresponds to NN4 - layer iii - connected to instance
            ],
            "CapacityBlockId": "null",
            "ZoneId": "usw2-az2",
            "AvailabilityZone": "us-west-2a"
        },
        {
            "InstanceId": "i-3333333333example",  //Corresponds to instance 3
            "InstanceType": "trn1.32xlarge",
            "NetworkNodes": [
                "nn-1111111111example",           //Corresponds to NN1 - layer i
                "nn-2222222222example",           //Corresponds to NN2 - layer ii
                "nn-5555555555example"            //Corresponds to NN5 - layer iii - connected to instance
            ],
            "CapacityBlockId": "null",
            "ZoneId": "usw2-az2",
            "AvailabilityZone": "us-west-2a"            
        },
        {
            "InstanceId": "i-444444444example",  //Corresponds to instance 4
            "InstanceType": "trn1.2xlarge",
            "NetworkNodes": [
                "nn-1111111111example",          //Corresponds to NN1 - layer i
                "nn-3333333333example",          //Corresponds to NN3 - layer ii
                "nn-6666666666example"           //Corresponds to NN6 - layer iii - connected to instance
            ],
            "CapacityBlockId": "null",
            "ZoneId": "usw2-az2",
            "AvailabilityZone": "us-west-2a"          
        }
    ],
    "NextToken": "SomeEncryptedToken"
}
```

## 如何解譯 DescribeCapacityReservationTopology 輸出
<a name="how-to-interpret-the-describecapacityreservationtopology-output"></a>

可以使用 [DescribeCapacityReservationTopology](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeCapacityReservationTopology.html) API 來描述容量保留拓撲。輸出提供預留容量的基礎網路拓撲的階層式檢視。

下列輸出範例對應上圖中的網路拓撲資訊。為了說明本範例，輸出範例中會包含註解。

輸出中的以下資訊非常重要：
+ `NetworkNodes` 說明單一容量保留的網路節點集。
+ 在每個網路節點集中，網路節點會以由上至下的階層順序列出。
+ 連接至容量保留的網路節點是清單中的最後一個網路節點 (底層)。
+ 若要判斷容量保留是否會彼此接近，請先在輸出中的底層找到共同的網路節點。如果底層沒有共同網路節點，請往上層尋找共同網路節點。

在下列範例輸出中，`cr-1111111111example` 位於 `nn-2222222222example`，而 `cr-2222222222example` 位於 `nn-3333333333example`。由於容量保留位於 `layer ii` 中的不同網路節點上，因此從一個容量保留中的執行個體到另一個容量保留中的執行個體的通訊效率將會降低。

**注意**  
回應包含 1、2 或 3 個網路節點，具體取決於容量保留的類型。

```
{
    "CapacityReservations": [
        {
            "CapacityReservationId": "cr-1111111111example",
            "CapacityBlockId": "null",
            "State": "active",
            "InstanceType": "p4d.24xlarge",
            "NetworkNodes": [
                "nn-1111111111example",      //Corresponds to NN1 - layer i
                "nn-2222222222example"       //Corresponds to NN2 - layer ii
                // Visibility of additional nodes requires an instance launch and 
                // the DescribeInstanceTopology API
            ],
            "AvailabilityZone": "us-west-2a"
        },
        {
            "CapacityReservationId": "cr-2222222222example",
            "CapacityBlockId": "null",
            "State": "active",
            "InstanceType": "trn1.2xlarge",
            "NetworkNodes": [
                "nn-1111111111example",      //Corresponds to NN1 - layer i
                "nn-3333333333example"       //Corresponds to NN3 - layer ii
                // Visibility of additional nodes requires an instance launch and 
                // the DescribeInstanceTopology API
            ],
            "AvailabilityZone": "us-west-2a"
        }
    ],
    "NextToken": "SomeEncryptedToken"
}
```

## DescribeInstanceTopology 和 DescribeCapacityReservationTopology 之間的差異
<a name="differences-between-describing-instance-topology-and-capacity-reservation-topology"></a>

下表比較 DescribeInstanceTopology 和 DescribeCapacityReservationTopology API 之間的主要差異：


| 比較項目 | DescribeInstanceTopology | DescribeCapacityReservationTopology | 
| --- | --- | --- | 
| 使用階段 | 啟動後 (執行模式) | 啟動前 (規劃和管理模式) | 
| 主要用途 | 在執行中的執行個體上最佳化工作負載 |  執行個體啟動前的容量規劃和容量保留管理 (合併、分割、指派)  | 
| 網路節點數量 |  顯示執行中執行個體的所有節點。如果執行個體位於容量保留中，則首批節點將符合對應的容量保留拓撲，後面跟著要連線至執行個體的其他節點。  |  顯示部分節點集合，這些節點會根據容量保留狀態 (`pending` 或 `active`) 和類型而有所不同。\$1  | 
| State |  執行個體必須處於 `running` 狀態  |  容量保留必須處於 `pending` 或 `active` 狀態  | 
| 使用案例 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/how-ec2-instance-topology-works.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/how-ec2-instance-topology-works.html)  | 

\$1 對於 Ultraservers 的容量區塊，描述 `active` 容量保留或其執行中執行個體的拓撲時，網路節點集相同。