วัน: 1 พฤษภาคม 2007

Router: Routing TableRouter: Routing Table

ในโลกของระบบเครือข่ายคอมพิวเตอร์ (Networking) Router คืออุปกรณ์ที่ทำหน้าที่เป็นจุดตัดสินใจในการส่งผ่านข้อมูลระหว่างโครงข่ายย่อย (Subnets) ต่างๆ หัวใจสำคัญของการตัดสินใจนี้คือสิ่งที่เรียกว่า **Routing Table** หรือตารางการหาเส้นทาง

สำหรับ System Specialist หรือ Network Architect การทำความเข้าใจกลไกของ Routing Table จึงเป็นสิ่งสำคัญอย่างยิ่ง และในมุมมองของการออกแบบระบบฐานข้อมูลที่ซับซ้อนอย่าง PostgreSQL เราสามารถจำลองและทำความเข้าใจหลักการทำงานของตารางนี้ได้ โดยมองว่า Routing Table คือชุดของกฎ (Ruleset) ที่กำหนดว่าข้อมูลที่เข้ามาจะต้องถูกส่งต่อไปยังที่ใด

หลักการทำงานของ Routing Table ในมุมมองของ PostgreSQL

Routing Table ทำหน้าที่เหมือน Index ขนาดยักษ์ที่บรรจุรายการของเครือข่ายปลายทางทั้งหมดที่เราสามารถเข้าถึงได้ เมื่อแพ็กเก็ตข้อมูล (Packet) เข้ามายัง Router ระบบจะต้องทำการค้นหาเส้นทางที่เหมาะสมที่สุด (Best Match) โดยใช้กฎที่เรียกว่า **Longest Prefix Match** เสมอ

ในทางเทคนิคของ PostgreSQL การค้นหาเส้นทางนี้คือการ Query ข้อมูลที่ตรงกับเงื่อนไขความเฉพาะเจาะจงของ IP Address ปลายทางมากที่สุด ซึ่งหมายถึงการจับคู่ Bit (Binary Bits) ที่ยาวนานที่สุดให้แม่นยำที่สุด ไม่ใช่แค่ดูว่า Address นั้นอยู่ในช่วงใดช่วงหนึ่งเท่านั้น

การจำลองการค้นหาเส้นทางด้วย SQL

เราสามารถจำลองการค้นหาเส้นทางโดยใช้เงื่อนไข WHERE ที่ซับซ้อนเพื่อเปรียบเทียบ IP ปลายทางกับ Network ID และ Subnet Mask ดังตัวอย่างต่อไปนี้:

SQL

-- สมมติว่าเรามีตาราง routes และมี IP ปลายทาง (target_ip) เข้ามา</code>
SELECT 
    next_hop_gateway, 
    destination_network 
FROM 
    network_routes 
WHERE 
    (target_ip & subnet_mask) = (destination_network & subnet_mask) 
ORDER BY 
    subnet_mask DESC 
LIMIT 1;

คำสั่งนี้จำลองการหาเส้นทางที่ ‘เฉพาะเจาะจงที่สุด’ (Longest Match) โดยการจัดเรียงตามความยาวของ Subnet Mask และเลือกรายการแรก

องค์ประกอบของ Route Entry (Schema Design)

แต่ละรายการ (Entry) ใน Routing Table ประกอบด้วยองค์ประกอบหลักที่ต้องถูกจัดเก็บในฐานข้อมูล (Schema) ซึ่งเราสามารถออกแบบเป็นตารางใน PostgreSQL ได้ดังนี้:

  • Destination Network: คือ Network ID (เช่น ‘192.168.1.0’) เป็นตัวระบุวงแหวนหลักของเครือข่าย
  • Subnet Mask: คือตัวกำหนดขอบเขต (เช่น ‘255.255.255.0’) ใช้ในการ Masking เพื่อระบุว่า Bits ใดที่ต้องสนใจในการตัดสินใจเส้นทาง
  • Next Hop/Gateway: คือ IP Address หรือ Interface ที่ระบุว่าแพ็กเก็ตจะต้องถูกส่งต่อไปยังอุปกรณ์ใด

การสร้างตาราง Routing Table ใน PostgreSQL

เราสามารถสร้างโครงสร้างตารางเพื่อเก็บข้อมูลเส้นทางเหล่านี้ได้โดยใช้คำสั่ง DDL (Data Definition Language) ของ PostgreSQL:

SQL

CREATE TABLE network_routes (
    route_id SERIAL PRIMARY KEY,
    destination_network VARCHAR(15) NOT NULL,
    subnet_mask VARCHAR(15) NOT NULL,
    next_hop_gateway VARCHAR(15) NOT NULL,
    metric INTEGER DEFAULT 10 -- ใช้สำหรับกำหนดความสำคัญของเส้นทาง
);

-- ตัวอย่างการใส่ข้อมูลเส้นทาง (Insertion)
INSERT INTO network_routes (destination_network, subnet_mask, next_hop_gateway) VALUES 
('10.0.0.0', '255.0.0.0', '192.168.1.1');

บทสรุป

การทำความเข้าใจ Routing Table ไม่ได้จำกัดอยู่แค่ในอุปกรณ์ Router เท่านั้น แต่ยังสามารถนำมาประยุกต์ใช้ในการออกแบบ Schema และ Logic การ Query ในระบบฐานข้อมูลที่ต้องมีการตัดสินใจตามเงื่อนไขที่ซับซ้อนได้ด้วย การใช้ PostgreSQL ช่วยให้เราสามารถจำลองกระบวนการ Longest Prefix Match ได้อย่างมีประสิทธิภาพ ทำให้เราสามารถสร้างระบบที่สามารถค้นหา ‘เส้นทาง’ หรือ ‘ข้อมูลที่ถูกต้องที่สุด’ ได้อย่างแม่นยำและเป็นระบบ