เมื่อคืนวันที่ 4 ต.ค. ได้เกิดเหตุ facebook และบริการในเครืออย่าง Instagram, facebook messenger หรือ WhatsApp ล่มครั้งใหญ่เกือบ 7 ชั่วโมง แม้ตอนนี้เฟซบุ๊กจะยังไม่ได้แถลงอย่างเป็นทางการออกมาว่าเกิดอะไรขึ้น แต่ผู้เชี่ยวชาญด้านเครือข่ายชี้ว่าสาเหตุเกิดจาก Border Gateway Protocol (BGP) ทำงานผิดพลาด จนเครือข่ายหาทางเข้า DNS ที่แปลงชื่อโดเมนเป็น IP ไม่เจอ จึงเหมือนป้ายบอกทางเข้าอาณาจักรเฟซบุ๊กหายไปจากโลกอินเทอร์เน็ต แล้ว BGP และ DNS คืออะไร เราจะแบไต๋ให้ฟังกัน
รู้จัก DNS และ BGP
ทุกครั้งเมื่อเราพิมพ์คำว่า facebook.com หรือมีการเข้าถึง facebook จากแอปต่างๆ ชื่อโดเมน facebook.com จะถูกเปลี่ยนเป็นเลข IP Address เช่น 69.63.176.13 เพื่อให้เครือข่ายสามารถค้นหาเซิร์ฟเวอร์ของเฟซบุ๊กและเข้าถึงบริการได้ ซึ่งการแปลงชื่อโดเมนเป็น IP Address นี้เป็นหน้าที่ของ Domain Name System หรือ DNS ครับ
ในระบบ DNS ตัวเซิร์ฟเวอร์ที่ใช้แปลงชื่อจะเรียกว่า Name Server โดยจะมี 2 ประเภทย่อยคือ
- Authoritative Name Server หรือเซิร์ฟเวอร์หลักที่เป็นตัวชี้ IP ของโดเมนนั้นๆ
- Recursive Name Server / Recursive Resolver หรือเซิร์ฟเวอร์รองที่อยู่ตาม ISP หรือที่ Google และ CloudFlare ซึ่งเป็นเหมือนทางผ่าน ถ้าโดเมนไหนไม่อยู่ในอำนาจของเซิร์ฟเวอร์ตัวนี้ ก็ต้องกลับไปถามที่ข้อ 1
เมื่อเรารู้ที่อยู่ของสิ่งต่างๆ ในอินเทอร์เน็ตผ่าน DNS แล้ว สิ่งต่อไปที่จำเป็นคือป้ายบอกทาง เพราะโลกอินเทอร์เน็ตอันน่ามหัศจรรย์เกิดจากเครือข่ายเล็กๆ จำนวนมากที่เชื่อมต่อกัน เราเรียกเครือข่ายย่อยของอินเทอร์เน็ตนี้ว่า autonomous systems (AS) ซึ่งการที่เข้าจะเข้าเว็บสักเว็บหนึ่งได้ต้องผ่าน AS จำนวนมากเพื่อเชื่อมเส้นทางให้ถึงกัน แต่เพราะอินเทอร์เน็ตก็ออกแบบให้ใช้งานได้แม้บางเส้นทางจะถูกตัดไป ทำให้เรามีเส้นทางจำนวนมากเพื่อไปถึงปลายทางเดียวกัน และหน้าที่บอกทางบนโลกอินเทอร์เน็ตว่าต้องผ่าน AS ไหนบ้างถึงจะเร็วที่สุดนั้นเป็นของ Border Gateway Protocol หรือ BGP แผนที่แห่งโลกอินเทอร์เน็ต
BGP มีปัญหา ชี้ไปหา DNS ของเฟซบุ๊กไม่ได้
สาเหตุของเฟซบุ๊กล่มครั้งนี้แม้ว่าบริษัทยังไม่ได้แถลงอย่างเป็นทางการว่าเกิดจากอะไร แต่หลักฐานต่างๆ ชี้ว่า BGP ทำงานผิดพลาดจนไม่สามารถชี้เส้นทางไปยัง DNS nameserver ของเฟซบุ๊กได้ ทำให้ผู้ใช้ทั่วโลกไม่สามารถหาทางเข้าอาณาจักรเฟซบุ๊กเจอ น่าจะเกิดจากการตั้งค่า BGP ของเฟซบุ๊กผิดพลาดจนระบบล่มไปเกือบ 7 ชั่วโมง
อัปเดต: บล็อก facebook Engineering ได้เขียนถึงสาเหตุที่ระบบล่มในครั้งนี้ว่ามีการคอนฟิกเราเตอร์ตัวหลักใน Data Center ผิดพลาด ทำให้บริการของเฟซบุ๊กไม่สามารถเข้าถึงได้ และการล่มครั้งนี้ส่งผลกระทบกับเครื่องมือภายในด้วย ทำให้การแก้ปัญหาทำได้ล่าช้ากว่าปกติ ซึ่งเฟซบุ๊กยืนยันว่าไม่มีข้อมูลใดเสียหายหรือถูกแฮกจากเหตุการณ์นี้
ซึ่งถ้าวิเคราะห์ข้อมูลนี้ คือมีการคอนฟิก Authoritative Name Server ผิดพลาด ทำให้เราเตอร์ในเฟซบุ๊กไปถอนเส้นทาง (withdraw route) ออกจากออกจากอินเทอร์เน็ตแทน ซึ่ง Recursive Name Server ที่ ISP ก็มีข้อมูลเส้นทางเก็บไว้ในแคชเป็นช่วงเวลาสั้นๆ พอติดต่อ DNS หลักไม่ได้ ทำให้ชี้ IP ไม่ได้ในที่สุด
ในอดีต BGP ก็เคยทำเน็ตล่มมาหลายครั้ง
แต่ก่อนการทำงานของ BGP นั้นใช้ระบบความเชื่อใจ เครือข่าย AS ต่างๆ จะอัปเดตเส้นระหว่างกันตลอดเพื่อรายงานเส้นทางเชื่อมต่อใหม่ และปิดเส้นทางที่มีปัญหา แต่เคยมีเหตุการณ์อินเทอร์เน็ตล่มครั้งใหญ่ในปี 2004 เมื่อ TTNet ผู้ให้บริการอินเทอร์เน็ตของตุรกีประกาศเส้นทาง BGP ผิดพลาด และเส้นทางนี้ก็กระจายผ่าน AS ไปเรื่อยๆ ทำให้อินเทอร์เน็ตโลกมีปัญหาไปเป็นวัน
และในปี 2008 ผู้ให้บริการอินเทอร์เน็ตในปากีสถานก็พยายามใช้ BGP บล็อกการเข้าถึง YouTube แต่เส้นทางที่ผิดพลาดนี้ก็กระจายอยู่ภายนอก ทำให้เข้า Youtube ไม่ได้ไปหลายชั่วโมง
ตั้งแต่นั้นเป็นต้นมาการอัปเดตเส้นทางจึงมีการตรวจสอบให้มั่นใจก่อนการนำไปใช้จริง ทำให้ปัญหาอินเทอร์เน็ตล่มจาก BGP ลดลงไป
อ้างอิง: Wired, Cloudflare
พิสูจน์อักษร : สุชยา เกษจำรัส