Mobile Network/Transport Layers Chapter 10 Mobile Network/Transport Layers
ทบทวนเรื่อง Internet - TCP/IP และ OSI models
Mobile Network Layer เกี่ยวกับการ route packets จากต้นทางไปปลายทางใน network
ใช้ Mobile Computers บน Internet (TCP/IP) ไม่ได้ • Internet protocol ระบุปลายทางด้วย IP address เช่น 11.22.33.44 หมายถึง ผู้รับเกาะอยู่กับ subnet ที่มี network prefix คือ 11.22.33.44 • Router จะอ่าน destination IP address และ forward packet ไปทาง subnet นั้น โดยใช้ routing table ที่อยู่ภายใน router เพื่อประหยัดเนื้อที่เก็บจึงเก็บเฉพาะ prefix • ถ้าผู้ใช้เคลื่อนที่ หรือไปเกาะกับ subnet ใหม่ จะได้ IP address ใหม่ ทำให้รับส่งข้อมูลต่อเนื่องไม่ได้ (internet ไม่ได้ออกแบบมาให้ทำได้) ต้อง disconnect และ reconnect ใหม่
Quick and Dirty Solutions • Dynamic Host Configuration Protocol (DHCP) จ่าย IP address ให้ใหม่ • Dynamic Domain Name System (DDNS) ใช้ re-mapping between logical name vs. IP address • การ update ข้อมูล IP address และ logical name บนระบบ internet เปลี่ยนเร็วมากไม่ได้ ถ้าผู้ใช้เคลื่อนที่เร็วมาก หรือเปลี่ยนที่บ่อยๆ DHCP และ DDNS ก็ทำงานไม่ได้ • TCP layer สร้าง connection โดยระบุ IP address ต้นทางและปลายทาง เมื่อ IP address เปลี่ยน TCP จะทำงานต่อไม่ได้ ต้อง break connection และ establish connection ใหม่ (TCP ถูกออกแบบมาเช่นนี้) • อีกวิธีแก้ปัญหาคือ router จะเลือก best-fitting prefix เช่น prefix 129.13.42.xxx เป็น mobile IP ทั้งหมด พอ router เห็น prefix นี้ก็จะ forward ไปหา mobile IP นั้น (routing table ของ mobile IP จะเปลี่ยนแปลงได้บ่อยๆ) อย่างไรก็ตามวิธีนี้ไม่ scalable กับจำนวน mobile node ทั้งหมดใน internet และ router ถูกออกแบบมาให้ forward ได้เร็ว แต่ไม่ใช่ให้ update ได้เร็ว
Solution Requirements • Compatibility ทั้ง software และ hardware เดิมที่อยู่บน internet (TCP/IP) ต้องทำงานได้ปกติเหมือนเดิม • Transparency ต้อง invisible สำหรับ layer ข้างบน เช่น application ทำงาน (เขียนโปรแกรม) เหมือนกันไม่ว่าจะใช้ network later แบบธรรมดาหรือ mobile network layer อีกอย่าง layer ข้างบนไม่ควรรู้ว่าผู้ใช้เคลื่อนที่อยู่หรือไม่ หรืออยู่ที่ไหน • Scalability and efficiency เพราะ internet มีผู้ใช้จำนวนมาก ต้อง scalable และ efficient เพื่อไม่ให้ traffic บน internet เพิ่มขึ้นมากเกินไป • Security ต้องปลอดภัยด้วย เพราะ mobility เปิดช่องให้โจมตีได้ง่าย เช่น หลอกว่าผู้ใช้ย้ายมาที่ foreign network นี้ แล้วให้ forward packet ของผู้ใช้ไปให้
Entities and Terminology
Entities and Terminology • Mobile node (MN) ผู้ใช้ที่เคลื่อนที่ • Correspondent node (CN) ผู้ที่สื่อสารกับ MN • Home network คือ subnet ที่รวม IP address ของ MN (IP address ของ MN อยู่ใต้ subnet นี้) • Foreign network คือ subnet ที่ MN เคลื่อนที่ออกไป และไปเกาะอยู่ใต้ subnet นั้น • Foreign agent (FA) ให้บริการต่างๆ แก่ MN เพื่อให้เกิด mobility • Care-of address (COA) รับ packet แทน MN ทำได้ 2 แบบ COA เกาะอยู่กับ router ใช้ IP address ของ router COA เกาะอยู่กับ MN กรณีนี้ COA ต้องขอ IP address (ใช้ DHCP) ใน foreign network • Home agent (HA) ให้บริการต่างๆ แก่ MN เพื่อให้เกิด mobility ทําได้ 2 แบบ เกาะอยู่กับ router แบบนี้ต้องโปรแกรม router ใหม่ ใช้ router ธรรมดาไม่ได้ เป็น node หนึ่งใน home network แบบนี้เสียเวลาเพราะ packet ต้องวิ่งผ่าน router สองรอบ
IP Packet Delivery • CN ส่งข้อมูลไป home network (ใช้ IP address ของ MN) • HA บน router (ในกรณีที่แก้โปรแกรมบน router) จะดักจับ packet ไว้ แล้ว forward ไป foreign network • เมื่อ MN จะส่งข้อมูลกลับไปหา CN ก็ใช้ FA ให้ส่งให้โดยส่งจาก IP address ของ FA • ถ้า CN เคลื่อนที่ด้วย CA ก็ต้องทําแบบเดียวกับ MN • ไม่ค่อย efficient เท่าไหร่ packet บน internet จะเพิ่มขึ้น 2 เท่า
IPv6 Support for Mobility IP ที่เราใช้อยู่ปัจจุบันคือ IPv4 ซึ่งไม่ได้ออกแบบมาเพื่อ mobility ตอนที่คิด IPv4 ไม่ได้เผื่อไว้ว่า IP address จะเคลื่อนที่ได้ แต่ใน IPv6 ได้ออกแบบมาเพื่อแก้ปัญหาหลายอย่างของ IPv4 เช่น จำนวน IP address ไม่พอ (IPv6 เพื่อความยาว IP address จาก 32 บิตเป็น 64 บิต) และได้ออกแบบมาเพื่อแก้ปัญหา mobile IP ด้วย Built-in COA, Built-in auto-discovery of foreign network, no needs for add-ons แบบนี้ COA เกาะกับ MN (built-in) MN ส่ง current COA ไปให้ CN และ HA ได้ตรงๆ (IPv4 ต้องให้ FA ทำให้?) ใน IPv6 ไม่ต้องมี FA อีกแล้ว Soft hand-over MN สามารถบอก COAold ได้ว่าจะย้ายไป COAnew Packet ที่ส่งไปยัง COAold ว่าจะถูก forward ตามไปที่ COAnew CN และ MN มีความสามารถเพิ่มขึ้น ไม่ต้องพึ่งอุปกรณ์เสริมอื่นๆ IPv6 ยังไม่ได้แก้ปัญหา firewall ต้องใช้วิธีอื่นๆ เสริม เพื่อแก้ปัญหานี้ ถ้าอยากได้ mobile IP ในองค์กรก็ขยับไปใช้ IPv6 อุปกรณ์ต่างๆ บน IPv6 จะทำ mobile IP ได้เลย ไม่ต้องปรับแต่งหรือใช้อุปกรณ์เสริม แต่โลกภายนอกส่วนใหญ่ยังใช้ IPv4 อยู่ (มี router ที่เชื่อม IPv4 กับ IPv6)
IP Micro-Mobility Support เปลี่ยนที่อยู่เร็ว (short-term changes in host’s location) เมื่อ MN เข้าไปใน foreign network จะกำหนด COA ไว้ที่ gateway ของ foreign network นั้น เมื่อ MN เคลื่อนที่ไปภายใน foreign network (subnet) จะไม่เปลี่ยน COA คือใช้ COA เดิมที่ gateway ไปเรื่อยๆ จะได้ไม่ต้องอัพเดต COA กับ HA บ่อยๆ เพื่อลด traffic บนระบบ internet ข้างใน foreign network ทำ micro-mobility handover ได้ 3 วิธี ซึ่งมีข้อดีข้อเสียต่างๆ กัน วิธีแรก Cellular IP Routing table ถูกแก้ตาม packet สุดท้ายที่ส่งออกจาก MN1 Packet จาก MN2 ถูกส่งไปตามเส้นทางใหม่ แต่ก็ยังเหลือ packet ที่ส่งมาตามเส้นทางเก่าด้วย (เส้นประ) อุปกรณ์ MN1 ถูกออกแบบมาให้รับข้อมูลได้จาก 2 base stations (BS) โดยแก้ layer ข้างล่าง (ไม่ใช่อุปกรณ์ที่ใช้ตามมาตรฐานปกติ) เช่น องค์กร สถาบัน มหาวิทยาลัย
ให้รับข้อมูลได้จาก 2 base stations พร้อมๆ กัน อาจจะต้องแก้ทั้ง hardware และ software CIPGW = Cellular IP Gateway
ใจความสำคัญของ mobile IP คือ ต้องการเคลื่อนที่ไปบน internet โดยไม่เปลี่ยน IP address เพื่อให้ดูเหมือนว่ายังอยู่ใน home network ที่เดิม และให้ applications ทำงานต่อเนื่องไปได้โดยไม่ต้อง restart (reconnect) แล้ว applications อะไรที่ห้ามเปลี่ยน IP address • Application ที่ต้องทำงานได้ต่อเนื่อง เช่น Voice over IP (VoIP) เป็นต้น จะใช้โทรศัพท์มือถือก็ได้ แต่แบบนั้นเปลืองค่าโทร และต้องพึ่งระบบเครือข่ายของผู้ให้บริการ เช่น AIS, DTAC, TRUE • Application ที่ลิขสิทธิ์การใช้ซอฟต์แวร์ผูกอยู่กับ IP address เช่น บริการค้นข้อมูลวิจัย ต้องมาจาก IP จุฬาฯ เท่านั้น เพราะจุฬาฯ จ่ายค่าบริการเป็นรายปี • อุปกรณ์ทั้งหมดขององค์กรถูกกำหนด IP address ไว้ตายตัว IP address คือ identity ของอุปกรณ์นั้น เช่น อุปกรณ์ทั้งหมดภายในโรงพยาบาล รวมถึงเครื่องมือต่างๆ ในรถพยาบาล รถฉุกเฉิน เป็นต้น • ลองนึกถึงหมอที่เดินไปเดินมาในโรงพยาบาล และใช้ tablet เพื่อดาวน์โหลดข้อมูลประวัติคนไข้ เช่น ฟิล์ม x-ray เป็นต้น หรือคุยด้วยเสียงกับหมอ/พยาบาลคนอื่นๆ สถานการณ์แบบนี้เหมาะกับการใช้ mobile IP เพราะว่า applications เดิมๆ ที่ใช้กับ fixed IP จะทำงานได้ทันทีโดยไม่ต้องไปปรับแต่งหรือพัฒนา applications ใหม่
Applications of Mobile IP VPN (Virtual Private Network) VoIP (Voice over IP) อุปกรณ์/เครื่องมือวัดในโรงงาน/โรงพยาบาล เพื่อให้เคลื่อนย้ายไปที่ไหนก็ได้ และอ่านค่าจากเครื่องมือวัดได้โดยระบุ fixed IP address อุปกรณ์พวกนี้มักจะ passive คืออยู่เฉยๆ ไม่ค้นหา server เอง
เก่าแล้ว ตั้งแต่ปี 2005
Why are no problems today ? ใช้โทรศัพท์มือถือกันหมดแล้ว IP ของ mobile phone ไม่เปลี่ยน !!! ถ้ามี packets ส่งมาที่ cell1 ก็จะ forward ไปที่ cell2 (ใช้สาย)
Fixed IP sim http://www.value.in.th/simfixip.html
https://youtu.be/kVsiKiH4f4s
Mobile Transport Layer บทนี้ต่อจากบทที่แล้ว บทที่แล้วพยายามเพิ่ม mobility ลงไปใน internet โดยการไปแก้ network layer (IP) แต่ในบทนี้จะแก้ layer ที่สูงขึ้นมาคือ transport layer (TCP) ขอเรียกสั้นๆ ว่า TCP ตาม TCP/IP model, TCP สร้าง connection ขึ้นมาระหว่าง 2 applications (เสมือนว่ามี “สายสัญญาณ” เชื่อมอยู่ ทั้งที่จริงๆ แล้วเป็น packet-switched network) TCP มีหน้าที่ • รับประกัน in-order delivery หั่นข้อมูลขนาดใหญ่เป็น packet เล็กๆ แล้วส่งให้ IP layer ทำหน้าที่ route หาเส้นทางส่ง packet นี้ไปบน internet แต่ packet อาจจะไม่ได้วิ่งไปในทิศทางเดิมเสมอ แต่เปลี่ยนเส้นทางเนื่องจาก traffic ทำให้ packet ที่ส่งก่อนอาจจะไปถึงผู้รับทีหลัง packet ที่ส่งทีหลังไปถึงก่อนก็เป็นได้ ที่ TCP layer ของผู้รับมีหน้าเรียง packet ให้ถูกต้อง • Reliable transmission ทำ retransmission และ digestion control (ลด transmission rate ลงเมื่อ packet loss เพิ่มขึ้น) เพราะถ้า packet loss แสดงว่า internet มันส่ง packet ไม่ทัน router ก็โยน packet ทิ้ง (ไม่มี memory จะเก็บ) เกี่ยวกับการทำ connection oriented, การเรียง packet ให้ตามลำดับ, การ retransmit ถ้ามี packet loss
Traditional TCP: Congestion Control • TCP ถูกออกแบบมาสำหรับ fixed network กับ fixed end-systems • Congestion เกิดขึ้นบ่อยๆ ในระบบ internet เมื่อ packet buffer บน router เต็ม ทำให้ forward packet ไม่ทัน ทำให้ router ต้อง drop packet ทิ้ง ผู้รับจะ acknowledge เฉพาะ packet ที่ได้รับ • ผู้ส่งเห็นว่ามีบาง packet ไม่ได้รับ acknowledge กลับมา เดาว่าน่าจะเกิดจาก congestion ก็จะส่งใหม่ โดยลด transmission rate ลง อันนี้เรียกว่าออกแบบมาให้ network friendly
Traditional TCP: Slow Start • TCP ตอบสนอง congestion ด้วย “slow start” (congestion window = 1) • ผู้ส่งต้องคำนวณ size of congestion window อยู่เสมอ เริ่มต้นที่ส่ง 1 packet ต่อ congestion window ถ้าได้ acknowledge ครบก็จะ double เป็น 2 packet ต่อ congestion window โดยเพิ่มแบบ exponential ไปเรื่อยๆ จาก 1, 2, 4, 8, 16, 32 จนถึง threshold ค่านึงจึงหยุด และเพิ่มทีละ 1 แทน • เมื่อผู้ส่งรอ acknowledge จนหมดเวลา (เกิด congestion) ในกรณีนี้ผู้ส่งจะลด window size ลงมาครึ่งนึง แล้วค่อยๆ เพิ่มทีละ 1
Traditional TCP: Fast Retransmit / Fast Recovery • ในกรณีที่ได้ acknowledge ไม่ครบเกิด gap เช่น ได้ acknowledge ของ 1, 2, 4, 5 ขาด 3 อาจจะไม่ใช่เพราะ congestion แต่เกิดจาก transmission error, sender จะรีบส่ง packet นี้ใหม่ก่อนที่ timer จะหมดเวลาลง และสรุปว่าเป็น congestion • ต้องเกิด packet loss เป็นชุดติดกันยาวๆ เช่น 3, 4, 5, … หาย ถึงจะคิดว่าเป็น congestion แล้วส่งให้ช้าลง
Improvement 1: Indirect TCP (I-TCP) • สร้าง TCP แบบใหม่ขึ้นมาสำหรับ wireless network (TCP เดิมก็ทำงานแบบเดิมต่อไป) • ตัว foreign agent (FA) ทำหน้าที่เหมือน relay ที่เชื่อมระหว่าง TCP network กับ mobile host ปลายทางของ TCP มาจบที่ FA เสร็จแล้ว FA จะส่งข้อมูลต่อให้ mobile host เอง (ด้วยวิธีอะไรก็ได้ อาจจะไม่ใช่ TCP), mobile host ต้องส่ง acknowledge กลับมาให้ FA เมื่อได้รับข้อมูล แต่ไม่ใช่ ack ของ standard TCP (FA ส่ง ack ให้ source ตั้งแต่แรกที่ได้รับ packet แล้ว) • ขากลับส่งข้อมูลจาก mobile host, FA จะเป็นผู้รับ และตอบ ack จากนั้น FA จะส่งข้อมูลผ่าน TCP แบบปกติ • ข้อเสียของ I-TCP คือทำลาย end-to-end semantic ของ TCP ที่จริงผู้ส่งต้องการส่งให้ถึง mobile host แต่ได้รับ ack เมื่อส่งถึง FA ทำให้ไม่รู้ว่าจริงๆ แล้วส่งไปถึง mobile host หรือไม่
Improvement 2: Snooping TCP • ใช้ FA เพื่อ buffer ข้อมูลทั้งหมดที่วิ่งไป mobile host, FA มีหน้าที่ทำ fast retransmission โดยคอยฟังว่า mobile host ส่ง ack กลับมาในเวลาที่กำหนดหรือไม่ ถ้าไม่ก็จะส่ง packet ให้ mobile host อีกครั้ง
ข้อเสียของ snooping TCP คือ ถ้าคุณภาพของ wireless link ไม่ดี และ delay สูง time out ของ FA ก็เกือบๆ จะเท่า time out ของ correspondent host ดังนั้นใช้ snooping ไปก็ไม่ค่อยช่วยเท่าไหร่ อาจจะต้องดู characteristics ของ wireless network ก่อนว่าเหมาะกับ snooping หรือไม่ วัดความเข้าใจ แล้ว characteristics แบบไหนที่เหมาะกับ snooping TCP ? ขากลับจาก mobile host ไป correspondent host, FA จะ snoop ดู packet ที่วิ่งออกไป เช่น เห็น packet 1, 2, 4, 5 ขาด 3 ซึ่ง packet 3 อาจจะหายไปเพราะคุณภาพ wireless link ไม่ดี, FA จะส่ง negative ack เพื่อบอก mobile host ว่ามีบาง packet loss ให้รีบส่งใหม่ ทาง correspondent host จะได้ไม่รู้ว่ามี packet loss เดี๋ยวจะคิดว่าเป็น congestion แต่การใช้ negative ack แบบนี้ไม่ transparent ต้องแก้ mobile host ให้รู้จัก negative ack (ใช้ negative ack เพื่อบอกว่า packet loss เกิดจาก wireless link ไม่ดี ไม่ใช่เกิดจาก congestion ใน wired TCP) ถ้ามี end-to-end encryption จะใช้วิธีนี้ไม่ได้ TCP header อาจจะถูกเข้ารหัสได้ ดังนั้น snoop ขึ้นมาก็อ่านไม่รู้เรื่อง
Improvement 3: Mobile TCP • ปัญหาอีกอย่างของ wireless link คือมักจะ disconnected ไปเป็นเวลานานๆ เนื่องจากหลายสาเหตุ เช่น มีการรบกวนสูง เข้าไปอยู่ในที่อับสัญญาณ เข้าไปอยู่ใน interference zone เป็นต้น • TCP จะพยายามส่งใหม่โดยรอเป็นเวลา t ถ้าไม่สำเร็จอีกก็จะรอ 2t, 4t, 8t, 16t (double ไปเรื่อยๆ) และจะล้มเลิกความพยายามเมื่อครบ 12 ครั้ง ปัญหาคือ wireless link มักจะติดๆ ดับๆ ตอนที่ส่ง packet มา wireless link ดับ (disconnected) ผ่านไปเดี๋ยวเดียวก็ ติดใหม่ (connected) แต่ต้องรอนานมาก กว่าจะเกิด retransmission อีกครั้ง • ปัญหานี้ส่งผลเสียกับทั้ง I-TCP และ snooping TCP เมื่อ mobile host disconnected o I-TCP จะต้องใช้ memory ในการ buffer ข้อมูลเยอะมาก o Snooping TCP ก็ช่วยอะไรไม่ได้
M-TCP ทำงานคล้าย I-TCP อธิบายด้วยรูปเดียวกัน FA ไม่ cache / retransmit ข้อมูลให้ mobile host (assume ว่า wireless link ดี error rate ต่ำ wireless สมัยใหม่ก็น่าจะเป็นแบบนี้ แต่ยังมีปัญหาติดๆ ดับๆ) ถ้า packet loss บน wireless, correspondent host จะต้องส่งใหม่เอง วิธีนี้จะรักษา semantics ของ TCP FA คอยเฝ้าระวังว่าถ้า mobile host ไม่ ack มาในเวลาที่กำหนด จะบอก correspondent host ให้ใช้ window size = 0 (หยุด retransmit) เมื่อ FA สามารถ connect กับ mobile host ได้จะกำหนด window size ให้เป็นค่าเดิม (ไปที่ full speed เลย ไม่ต้องเริ่มจาก 1 ใหม่) ขากลับส่งจาก mobile host ใช้ modified TCP (หนังสือไม่อธิบายละเอียด) ไม่ได้ใช้ slow start เพราะถ้า wireless link มันติดๆ ดับๆ จะรีเซ็ต window size = 1 บ่อยๆ คงแก้ TCP ให้ resume window size เดิมเลย
สถานการณ์ปัจจุบันเป็นอย่างไร ? Wireless network ไม่ว่าจะเป็น Wireless LAN, Cellular Network (3G/4G) พัฒนาไปมาก ไม่ค่อยจะมีปัญหาเรื่อง error rate ที่สูงมาก หรือ disconnected บ่อยๆ อีกแล้ว ตัวอย่าง เช่น วัดได้ 1.5% packet loss, Mac Laptop, 802.11n สมัยนี้ติดตั้ง WiFi แล้วก็ดู packet loss ก่อน ว่าไม่สูงมาก ก็ไม่มีปัญหากับ TCP/IP ก็ไม่มีความจำเป็นที่ต้องไปแก้ปัญหาให้ TCP/IP บทความส่วนใหญ่เกี่ยวกับการแก้ปัญหาที่เกิดจาก wireless มักอยู่ประมาณปี 2005 แล้วก็ไม่ค่อยมีใครพูดถึงอีก อีกอย่างการแก้ไขปรับปรุง TCP/IP มักจะต้องไปแก้อุปกรณ์ เช่น router ซึ่งเป็นไปได้มาก ที่จะไปอัพเกรดอุปกรณ์ทั้งหมดในอินเทอร์เน็ต
ตัวอย่าง ใช้คำสั่ง ping /n 100 www.google.com ก็ไม่รู้ว่า loss ที่ wireless หรือ wired ที่จริงควรจะ ping WiFi router
บทความที่น่าสนใจ A Survey of TCP Optimizations for Wireless Channels (2006) http://www.cs.wustl.edu/~jain/cse574-06/ftp/wimax_tcp/index.html A method for reducing TCP latency due to consecutive packet losses in mobile networks http://ieeexplore.ieee.org/document/7737274 Optimising TCP for Cloud-Based Mobile Networks http://ieeexplore.ieee.org/document/7504390