ความรู้เรื่อง IPv6

ไอพีเวอร์ชันที่ 6 (IPv6) ถูกพัฒนาขึ้นมาด้วยจุดประสงค์หลักในการแก้ปัญหาการขาดแคลนจำนวนหมายเลขไอพี ซึ่งกำหนดโดยมาตรฐานไอพีเวอร์ชันที่ 4 ซึ่งในมาตรฐานของเวอร์ชัน 6 นี้จะใช้ระบบ 128 บิตในการระบุหมายเลยไอพี
IPv6 (Internet Protocol version 6) เป็นเวอร์ชันล่าสุดของ Internet Protocol และได้รวมผลิตภัณฑ์ที่สนับสนุน IP มาเป็นส่วนหนึ่งด้วย รวมถึงระบบปฏิบัติการหลัก IPv6 ได้รับการเรียกว่า “IPng” (IP Next Generation) โดยปกติ IPv6 เป็นกลุ่มของข้อกำหนดจาก Internet Engineering Task Force (IETF) โดย IPv6 ได้รับการออกแบบให้ปฏิรูปกลุ่มของการปรับปรุง IP เวอร์ชัน 4 โดย host ของเครือข่ายและ node แบบ intermediate ซึ่ง IPv4 หรือ IPv6 สามารถดูแลแพ็คเกตของ IP เวอร์ชันอื่น ผู้ใช้และผู้ให้บริการสามารถปรับรุ่นเป็น IPv6 โดยอิสระ การปรับปรุงที่ชัดเจนของ IPv6 คือความยาวของ IP address เปลี่ยนจาก 32 เป็น 128 การขยายดังกล่าวเพื่อรองรับการขยายของอินเตอร์เน็ต และเพื่อหลีกเลี่ยงการขาดแคลนของตำแหน่งเครือข่ายIP v6 ได้กำหนดกฎในการระบุตำแหน่งเป็น 3 ประเภทคือ unicast (host เดี่ยวไปยัง host เดี่ยวอื่น ๆ) anycast (host เดี่ยวไปยัง host หลายตัวที่ใกล้ที่สุด) multicast (host เดี่ยวไปยัง host หลายตัว) ส่วนเพิ่มที่พิเศษของ IPv6 คือ- ตัวเลือกในการระบุส่วนขยายของส่วนหัว ได้รับการตรวจสอบเฉพาะจุดหมาย ดังนั้นความเร็วของระบบเครือข่ายสูงขึ้น – ตำแหน่ง anycast ทำให้มีความเป็นไปได้ของการส่งข้อความไปยังหลาย ๆ gateway ที่ใกล้ที่สุดด้วยแนวคิดว่าให้บุคคลใด ๆ บริหารการส่งแพ็คเกตไปยังบุคคลอื่น anycast สามารถใช้ในการปรับปรุงตาราง routing ตลอดเส้นทาง – แพ็คเกตได้รับการระบุให้มีการไหลชนิดพิเศษได้ ทำให้แพ็คเกตที่เป็นส่วนของมัลติมีเดียที่ต้องการ นำเสนอแบบ real time สามารถมีคุณภาพการให้บริการที่สูง – ส่วนหัวของ IPv6 รวมถึงส่วนขยายยินยอมให้แพ็คเกตระบุกลไกแหล่งต้นทาง สำหรับการรวมข้อมูล และรักษาความลับ
IETF ใช้เวลากว่าสามปีในการพัฒนาจนได้โพรโตคอล IPng (IP Next Generation) โดยมีความเป็นมาโดยสังเขปดังนี้
ช่วงปลายปี 1992 มีการยื่นข้อเสนอในการพัฒนาโพรโตคอลดังกล่าวทั้งหมด 4 ฉบับ อันได้แก่ CNAT, IP Encaps, Nimrod และSimple CLNP ต่อมาในเดือนธันวาคมปี 1992 มีการส่งข้อเสนอเพิ่มอีก 3 ฉบับคือ The P Internet Protocol (PIP), The SimpleInternet Protocol (SIP) และ TP/IX หลังจากนั้นฤดูใบไม้ผลิในปี 1992 ข้อเสนอที่ชื่อว่า Simple CLNP ได้เปลี่ยนชื่อมาเป็น TCPand UDP with Bigger Addresses (TUBA) และ IP Encaps เปลี่ยนเป็น IP Address Encapsulation (IPAE)
ในปี 1993 IPAE ได้รวมเข้ากับ SIP โดยยังคงใช้ชื่อว่า SIP ซึ่งต่อมากลุ่มนี้ได้รวมกับกลุ่ม PIP กลายเป็นคณะทำงานที่เรียกตัวเองว่า Simple Internet Protocol Plus (SIPP) โดยในเวลาเดียวกันนั้นกลุ่มคณะทำงาน TP/IX ได้เปลี่ยนชื่อใหม่เป็น CommonArchitecture for the Internet (CATNIP)กล่าวได้ว่า ณ เวลานั้น มีข้อเสนอ 3 ชุดที่ถูกนำมาทำการคัดเลือกตามเกณฑ์ที่กำหนดไว้ในเอกสาร RFC1726 อันได้แก่ CATNIP

TUBA และ SIPP
1. CATNIP (Common Architecture for Next Generation Internet Protocol) ได้ทำการสร้างความเป็นสามัญระหว่าง Internet (IPv4, TCP, UDP), OSI (CLNP, TP4, CLTP) และโพรโตคอล Novell (IPX, SPX)
2. TUBA (TCP and UDP with Bigger Addresses) ได้แทนที่เน็ตเวิร์คเลเยอร์ด้วย ISO’s CNLP ซึ่งประกอบไปด้วยชุดหมายเลขแอดเดรสที่มีขนาดใหญ่กว่าในขณะที่ TCP/UDP สามารถใช้งานได้โดยไม่ต้องทำการปรับปรุง ทั้งยังทำงานร่วมกับ IDRP,IS-IS และ ES-IS ได้
3. SIPP (Simple Internet Protocol Plus) ได้นำคุณลักษณะบางอย่างใน IPv4 ที่คิดว่าไม่เหมาะสมออก และทำการปรับปรุงส่วนหัวของโพรโตคอลเสียใหม่ให้มีประสิทธิภาพมากยิ่งขึ้น และทำการเพิ่มขนาดของแอดเดรสจากเดิม 32 บิตเป็น 64 บิต (ซึ่งต่อมาได้พัฒนาเป็นรุ่น 128 บิต ในเดือนกรกฎาคม 1994 กุล่มผู้บริหารโครงการ IPng Area (คณะทำงานที่ถูกแต่งตั้งโดย Internet Engineering Task Force
IETF ในปี 1993 เพื่อทำหน้าที่ในการประเมินเลือกสรรข้อเสนอ IPng ได้สรุปผลการประเมินทั้งสามข้อเสนอรวมถึงคำแนะนำ และแนวทางในการพัฒนา IPv6 อย่างเป็นทางการไว้ในเอกสาร RFC 1752 โดยมีประเด็นสำคัญดังนี้
– นโยบายการแบ่งสรรหมายเลขไอพีแอดเดรส (รุ่นที่ 4) ที่ใช้ในขณะนั้นสามารถใช้งานต่อไปได้แล้ว
– ไม่มีความจำเป็นที่จะต้องเรียกคืนชุดหมายเลขไอพีรุ่นที่ 4 ที่มีการใช้ประโยชน์ต่ำกว่าเกณฑ์กลับคืนมา
– ไม่มีความจำเป็นจะต้องทำการเปลี่ยนแปลงชุดหมายเลขไอพี (Renumber) ที่ถูกใช้งานอยู่ในอินเทอร์เน็ตเสียใหม่
– ให้ใช้หลักการแบ่งสรรหมายเลขไอพีคลาส A ที่เหลืออยู่แบบ CIDR
– ข้อกำหนด “Simple Internet Protocol Plus (SIPP) Spec. (128 bit ver)” จะถูกเลือกให้เป็นต้นแบบพื้นฐานสำหรับการพัฒนา
IPng
– คณะทำงาน IPng ถูกก่อตั้งขึ้นโดย Steve Deering และ Ross Callon
– คณะทำงาน Address autoconfiguration ถูกก่อตั้งและนำทีมโดย Dave Katz ร่วมกับ Sue Thomson
– คณะทำงาน IPng Transition ถูกก่อตั้งและนำทีมโดย Bob Gilligan
– จะต้องมีการพัฒนาการใช้งานแอดเดรสของ non-IPv6 ในสภาพแวดล้อมของ IPv6 และในทางกลับกันการใช้งานไอพีแอดเดรส
IPv6 ภายใต้สภาพแวดล้อมของ non-IPv6
-โครงการ IPng Area จะสิ้นสุดลงเมื่อมีการเสนอมาตรฐานสำหรับโพโตคอลดังกล่าวออกมาในปลายปี 1994
– ให้มีการพัฒนา Informational RFCs ที่บรรยายถึงคุณลักษณะเฉพาะของ IPng APIs
– ต้องสนับสนุน Authentication header และ algorithm อย่างเฉพาะเจาะจง
– ต้องสนับสนุน Privacy header และ algorithm อย่างเฉพาะเจาะจง
– ต้องมีการพัฒนาโครงร่างของระบบ Firewall สำหรับ IPngและในช่วงกลางปี 1994 เช่นกัน IPng ได้รับการกำหนดหมายเลขรุ่นโดยหน่วยงาน Internet Assigned Numbers Authority(IANA) ให้เป็นรุ่นที่ 6 อันเป็นที่มาของ IPv6ต่อมาเอกสาร RFC1752 ชุดนี้ได้ถูกยอมรับและดำเนินการต่อโดยคณะทำงานภายใต้ IETF ที่ชื่อว่า Internet EngineeringSteering Group (IESG) ในที่สุด
IPv6 คือ
IPv6 ย่อมาจาก “Internet Protocol Version 6” ซึ่งจะเป็น Internet protocol รุ่นต่อไป ออกแบบและคิดค้นโดย IETF เพื่อที่จะนำมาใช้แทน Internet Protocol รุ่นปัจจุบันคือ IP Version 4 (“IPv4”)ปัจจุบันนี้ส่วนใหญ่ เราจะใช้ IPv4 ที่มีอายุเกือบ 20 ปีแล้ว และเริ่มจะมีปัญหาคือ IPv4 addresses กำลังใกล้จะหมด เนื่องจากมีเครื่องคอมพิวเตอร์ใหม่ ๆ ที่ต้องการจะต่อกับ Internet เพิ่มขึ้นทุกวันIPv6 จึงถูกคิดขึ้นมาเพื่อแก้ไขปัญหาที่เกิดใน IPv4 เช่น เพิ่มจำนวน IP address ที่ใกล้จะหมด และได้เพิ่มความสามารถ บางอย่างให้ดีขึ้นกว่า IPv4 ด้วย เช่นความสามารถในด้าน routing และ network autoconfigurationIPv6 ถูกกำหนดให้แทนที่ IPv4 แบบค่อยเป็นค่อยไป คือช่วงระหว่างการเปลี่ยนจาก IPv4 เป็น IPv6 คงใช้เวลาหลายปี จะต้องให้ IP ทั้งสองเวอร์ชั่นทำงานร่วมกันได้ เครื่องไหนเปลี่ยนเป็น IPv6 แล้วก็ต้องให้ IPv4 เข้าใช้บริการได้IPv4 addresses ก่อนIPv4 ที่เราใช้กันอยู่ในปัจจุบัน เช่น 192.168.1.1 หรือ 203.97.45.200 มาจากเลขฐานสอง(มีเลข 1 กับเลข 0 เท่านั้น) จำนวน 32 บิท
ตัวอย่าง 110000001010100000000001000000001
ถ้าเป็น IP แบบนี้ IP เดียว คงจะพอจำได้ แต่เวลาอ้างถึง IP คงจะบอกกัน หนึ่ง หนึ่ง ศูนย์ ศูนย์………. เป็นที่ลำบาก ทั้งคนบอกและคนฟัง เพื่อให้สื่อถึงกันได้ง่ายขึ้น จึงใช้วิธีเปลี่ยนเป็นเลขฐานสิบ ที่เราคุ้นเคย แต่ถ้าเปลี่ยนทีเดียวทั้ง 32 บิท เป็นเลขฐานสิบแล้ว ก็ยังเป็นจำนวนสูงมาก ยากที่จะจดจำเช่นกัน จึงใช้แบ่งเลขฐานสอง 32 บิทที่ว่าเป็นช่วง ๆ ช่วงละ 8 บิท 4 ช่วง จากนั้นก็แปลงเลขฐานสอง 8 บิทเป็นเลขฐานสิบแต่ละช่วงคั่นด้วย “.” ตัวอย่าง เช่น
ตัวอย่าง 11000000 10101000 00000001 000000001 = 192.168.1.1
สำหรับท่านที่ไม่เคยเรียนวิธีการแปลงฐานเลข อาจจะงง ได้เลข 192.168.1.1 มาอย่างไร มาดูวิธีการแปลงฐานเลข กันสักหน่อยดีไหม สูตรการแปลงฐานเลข (จำไม่ได้เหมือนกัน นึก ๆ เอา ถ้าผิดขออภัย)
N*B(x-1)
เมื่อ N คือจำนวนเลขที่เราเห็น 0 หรือ 1 สำหรับเลขฐานสอง ถ้าเป็นฐานอื่น ก็จะมีเลชมากกว่านี้ เช่น ฐานแปด ก็จะมีเลข 0 – 7
B คือฐานเลข ในที่นี้ เท่ากับ 2 เพราะเป็นฐานสอง ถ้าฐานแปด B ก็จะเท่ากับแปด
X เป็นหลักที่เลข N อยู่
11000000 = 1*27 + 1*26 + 0*25+ 0*24 + 0*23 + 0*22 + 0*21 + 0*20
= 128 + 64 + 0 + 0 + 0 + 0 + 0 + 0
= 192
10101000 = 1*27 + 0*26 + 1*25+ 0*24 + 1*23 + 0*22 + 0*21 + 0*20
= 128 + 0 + 32 + 0 + 8 + 0 + 0 + 0
= 168
00000001 = 0*27 + 0*26 + 0*25+ 0*24 + 0*23 + 0*22 + 0*21 + 1*20
= 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1
= 1
พอ ว่าเรื่องการแปลงฐานเลข ทำให้นึกได้ เมื่อก่อนนี้ ไม่เข้าใจเลย เช่น เวลา Network admin ให้มาว่า เน็ตเวอร์กคุณคือ 203.46.246.64/28 นะ เราก็พอรู้ว่า /28 น่ะคือ netmask แล้วมันคือ netmask เท่าไร หาได้อย่างไร ตอนหลังจึงทราบว่า 28 มาจาก mask ตัวเลข 1 ไป 28 บิท(ของ 32 บิท) ที่เหลือเป็น 0 หมด เขียนเป็นเลขฐานสอง 8 บิท 4 ชุดได้ว่า
11111111 11111111 11111111 11110000 พอรู็ว่าเป็นแบบนี้ ก็แปลงเป็นฐานสิบจากวิธีการข้างบนได้ว่า 255.255.255.240
IPv6 addresses
IPv6 ประกอบด้วยเลขฐานสอง จำนวน 128 บิท ถ้าจะคิดว่า จะเป็น IPs ต่าง ๆ กันได้กี่ IPs ก็หาได้จาก 2^128-1: 340282366920938463463374607431768211455คงเป็นไปไม่ได้ ที่ใครจะจำ 128 บิท IPs ได้ ถึงแม้จะแปลงเป็นเลขฐานสิบแล้วก็ตาม เพราะเป็นเลขถึง 39 หลัก ดังนั้นผู้ค้นคิด จึงตัดสินใจใช้เลขฐาน 16 แทน เพราะ 4 บิทของเลขฐานสอง แปลงเป็นเลขฐาน 16 ได้ 1 หลักพอดี คือ 0-9 จากนั้นก็ใช้ a-f แทน 10-15 (ถ้าใครไม่รู้จักเลขฐาน 16 ก็คือหนึ่งหลักมีเลขเริ่มต้นจาก 0 1 2 3 4 5 6 7 8 9 a b c d e f) ดังนั้นเลข ip ก็จะเป็นเลขฐาน 16 จำนวน 32 หลัก (128/4)
fffffffffffffffffffffffffffffff
ซึ่งก็ยังจำและเขียนยากอยู่ดี หรือว่าเขียน ตกไปหนึ่งตัว ก็จะทำให้ผิดความจริงไปได้ เพื่อให้สังเกตุเห็นได้ง่าย ผู้ค้นคิดจึงกำหนดให้ใช้ “:” ขั้น แต่ละ 16 บิท(ฐานสอง) หรือ 4 หลักของเลขฐาน 16 ได้ผลเป็น ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
ตัวอย่าง IPv6 address
3ffe:ffff:0100:f101:0210:a4ff:fee3:9566
เลข 0 ที่นำหน้า ของแต่ละ 16 บิท สามารถละไว้(ไม่ต้องเขียน)ได้
3ffe:ffff:0100:f101:0210:a4ff:fee3:9566 -> 3ffe:ffff:100:f101:210:a4ff:fee3:9566
ใน แต่ละ 16 บิทบล็อค ถ้ามีแต่เลข 0 สามารถแทนด้วย “::” แต่ห้ามเขียนแบบนี้ “:::” 3ffe:ffff:100:f101:0:0:0:1 -> 3ffe:ffff:100:f101::1
การลดรูปมากที่สุดก็คือlocalhost address
0000:0000:0000:0000:0000:0000:0000:0001 -> ::1
IPv4 แล้วทำไมถึงเป็น IPv6 ทำไมไม่เป็น IPv5
4 บิทแรกของ IP header จะถูกกันไว้เป็นตัวบอกเวอร์ชั่นของ IP ดังนั้นเวอร์ชั่นของ IP ที่จะเป็นได้คือ 0 – 15
– 4 ถูกนำมาใช้แล้ว สำหรับ IPv4 ในปัจจุบัน
– 5 สำรองไว้ใช้สำหรับ Stream Protocol (STP, RFC 1819 / Internet Stream Protocol Version 2) ซึ่งจริง ๆ แล้วก็ยังไม่ได้นำมาใช้งาน ดังนั้นเลขที่เหลือตัวต่อไปก็คือ 6 ด้วยเหตุนี้ จึงเป็น IPv6
ทำไม IPv6 จึงใช้ถึง 128 บิท มากเหลือเกิน ?ตอนออกแบบ IPv4 ผู้คนก็พากันคิดว่า 32 บิทนะพอแล้ว พอใช้งานแน่ ๆ ถ้าเราดูกันจริง ๆ แล้ว 32 บิทน่ะก็พอใช้งานจนถึงปัจจุบัน และก็คงพอใช้งานไปอีกสัก 2-3 ปีข้างหน้า แต่จะไม่พอใช้งาน ในอนาคตอันใกล้นี้ เพราะต่อไปข้างหน้า อุปกรณ์หลาย ๆ ชนิด จะต้องใช้ IP กันแล้ว เช่น โทรศัพท์มือถือ, รถยนต์ รวมทั้งอุปกรณ์ electronics ในรถ, เตาอบ, ตู้เย็น ฯลฯดังนั้น ผู้ออกแบบจึงเลือก 128 บิท บิทมากกว่าเดิม 4 เท่า และมี IP มากกว่า IPv4 เดิม 2^96 IPsแต่ IPs ที่ใช้งานได้จริง จะน้อยกว่าจำนวนที่เห็น (2^128) เพราะการกำหนด address จะใช้แค่ 64 บิท ส่วนอีก 64 บิทที่เหลือ จะกำหนดเป็น routing ดังนั้น 128 บิทนี่ก็มีโอกาสจะไม่พอใช้ในวันข้างหน้า แต่หวังว่าจะไม่ใช่เร็ว ๆ นี้Address Typeเช่นเดียวกับ IPv4, IPv6 address ก็แบ่งออกเป็นส่วน network และ host โดยใช้ subnet masks.IPv6 จะแบ่ง 64 bits แรกเป็น network part และ 64 bits หลังเป็น host part Addresses without a special prefix
IPv6 address ที่ไม่มีส่วนกำหนด network มีสองชนิดคือ
Localhost address
เป็น address ที่ใช้สำหรับ loopback interface, ถ้าเป็น IPv4 ก็คือ “127.0.0.1” แต่ถ้าเป็น IPv6 localhost address จะเขียนแบบนี้ 0000:0000:0000:0000:0000:0000:0000:0001 หรือเขียนแบบย่อจะได้ ::1Packets ที่มี source หรือ destination เป็น address นี้ จะไม่มีทางออกจากเครื่องที่ส่งไปยังเครื่องอื่น ๆ ได้Unspecified address คือ address ที่หมายถึง “any” หรือ “0.0.0.0” ใน IPv4 สำหรับ IPv6 เขียนเป็น0000:0000:0000:0000:0000:0000:0000:0000 หรือเขียนแบบย่อ :: address นี้ ส่วนมากเราจะเห็นหรือใช้ใน socket binding (to any IPv6 address) หรือใน routing tables. Note: unspecified address ไม่สามารถใช้เป็น destination address ได้Network part หรือเรียกอีกอย่างหนึ่งว่า prefixเรามาดู prefix ชนิดต่าง ๆ กันดีกว่า ว่ามีอะไรกันบ้าง ในปัจจุบัน (อาจจะมีเพิ่มขึ้นอีกในอนาคต)

ที่มา : http://sakon-pin.blogspot.com/2009/11/ipv6-internet-protocol-version-6_04.html