# Overview

Network คือสิ่งที่ทำให้ Compute Instance หรือ VM ต่างๆ สามารถติดต่อสื่อสารกันได้ โดยแบ่งออกเป็น use case ได้ประมาณ 3 cases เช่น

<figure><img src="/files/vTCJUxJ96OcDCnD9nIzv" alt=""><figcaption></figcaption></figure>

1. ระหว่าง Compute Instance สำหรับระบบขนาดใหญ่ที่จะต้องมีการแบ่งง่ายต่างๆ ออกเป็น Compute Instance ย่อย เพื่อให้ง่ายต่อการจัดการ จะติดต่อกันผ่าน network ภายใน ที่เรียกว่า **VPC (Virtual Private Cloud) Network** โดยจะระบุคู่สื่อสารได้จาก IP address ภายใน VPC Network ที่เรียกว่า **Internal IP**\
   จากตัวอย่างนี้การสื่อสารภายใน VPC Network เช่น Compute Instance A จะสื่อสารกับ Compute Instance B สามารถทำได้โดยผ่านแค่ VPC Network A เท่านั้น
2. ในระบบที่ใหญ่มากๆ นอกจากแบ่ง Compute Instance ออกมาทำงานต่างๆ แล้ว ยังสามารถ group Compute Instance เข้าด้วยกัน เพื่อจัดการความปลอดภัยในระดับที่ต่างกัน โดยแยก group ตาม VPC Network และใช้ **VPC** **Router** ในการเชื่อมต่อ เพื่อให้สามารถสื่อสารข้าม group กันได้ โดยสิ่งที่เชื่อม VPC Router กับแต่ละ VPC Network เข้าด้วยกันก็คือ **Router Interface**\
   จากตัวอย่างนี้ การสื่อสารกันข้าม group เช่น Compute Instance A จะสื่อสารกับ Compute Instance D จะต้องผ่าน VPC Network A, ผ่าน VPC Router และผ่าน VPC Network B
3. การติดต่อระหว่างผู้ใช้งาน และระบบ เช่น การให้บริการ website หรือ application จะต้องเป็นการสื่อสารผ่าน internet ที่จำเป็นจะต้องมีที่อยู่สำหรับการติดต่อ ซึ่งก็คือ **External IP**\
   จากตัวอย่างนี้ การที่ user จะสื่อสารกับ Compute Instance A ได้ จะต้องรู้ External IP ที่ติดตั้งไว้กับ Compute Instance A ก่อน และจะถูกแปลโดย NAT (Network Address Transition) เพื่อเข้าหา Compute Instance A ผ่าน VPC Network

## Networkig Components

องค์ประกอบของ Networking ประกอบไปด้วย

1. VPC Networks: หรือที่อาจเรียกได้อีกอย่างว่าเป็น internal network ที่ใช้เชื่อมต่อ resource ที่เป็นหน่วยประมวลผลต่างๆ (เช่น Compute Instance, Load Balancer และ Database Instance) ที่อยู่ภายใน VPC Network เดียวกัน ให้สามารถสื่อสารกันได้
   1. Subnet: เป็น resource ที่ระบุขอบเขตของ VPC Network ว่าจะมีขนาดเท่าไหร่ รองรับ internal IP อะไรบ้าง ปัจจุบันใน NIPA Cloud เราจะมี VPC network ต่อ Subnet เป็น 1 ต่อ 1 จึงทำให้การเรียก VPC Network จะเป็นการหมายถึงทั้ง VPC Network และ Subnet ไปด้วยกัน\
      โดยจะระบุ ขนาดและชุด internal IP ของ VPC Network โดยใช้ CIDR (Classless Inter-Domain Routing)
   2. Port: ในบางบริบทจะเรียกว่า interface คือส่วนที่ต่อกับ resource เพื่อให้ resource เข้าถึง VPC Network ได้ โดยจะเป็นตัวระบุที่อยู่ (internal IP address) สำหรับให้ resource อื่นต่อเข้ามา
2. VPC Routers: การจะใช้งาน VPC Router เพื่อเชื่อมต่อ VPC Network เข้าหากันได้ แต่ละ VPC Network จะต้องมี Router Interface เชื่อมอยู่บน Router เดียวกัน
   1. Router Interface: port ของ VPC Network ที่เชื่อมมาหา Router
3. External Network: VPC Network ที่ shared กันทั้ง NCS เพื่อเป็นทางออกสู่ internet
   1. External IPs: เป็นจะถูก bind เข้ากับ Port ของ resource ที่เป็นหน่วยประมวลผลต่างๆ (เช่น Compute Instance, Load Balancer และ Database Instance) เพื่อใช้เป็นที่อยู่บน internet ออกสู่ internet

อ่านเพิ่มเติมเกี่ยวกับ [Networking](https://nipa.cloud/products/nipa-cloud-iaas/nipa-space/network-security)

## Recommendations

{% content-ref url="/pages/m7YrXq3p99dOPFjFpeOL" %}
[VPC Network](/ncs-documents/networking/vpc-network.md)
{% endcontent-ref %}

{% content-ref url="/pages/IWOWbA8obl7JFhvHOxpx" %}
[Security Group](/ncs-documents/networking/security-group.md)
{% endcontent-ref %}

{% content-ref url="/pages/MsbI4GQcgbjbJq2oIzzi" %}
[External IP](/ncs-documents/networking/external-ip.md)
{% endcontent-ref %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs-epc.gitbook.io/ncs-documents/networking/overview.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
