> For the complete documentation index, see [llms.txt](https://docs-epc.gitbook.io/ncs-documents/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs-epc.gitbook.io/ncs-documents/networking/overview.md).

# 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 %}
