Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
A True Story of Tanenbaum’s     Protocol Simulator        CYC & WLB
概要 Outline        协议回顾 (){             发现问题(){              模拟器实现( ) {                问题的解决() {                   移植到XP(){...
协议回顾 ReviewProtocol Simulator             ——温故而知新,可以为师矣。
协议回顾 ReviewProtocol Simulator             ——东有谭浩强,西有谭那姆。
协议回顾 Review                     实现     实现   实现   实现   捎带   窗口   乱序   发送方    辅助                     双工     分帧   错控   流控   确...
协议回顾 Review                     实现     实现   实现   捎带   窗口   乱序   发送方    辅助                     双工     错控   流控   确认   大小   接...
协议回顾 Review                          fork()             准并行 quasi-parallel → 半双工 half -duplexProtocol Simulator          ...
发现问题 ObservationProtocol Simulator
发现问题 Observation                 这儿多Warning!肿么办?发现问题/观察                 ——WHY so many warnings?
发现问题 Observation   Input:                         主要参数:超时滴答数/丢帧率/错帧率   Output:           P2:无错信道 error-free channel & 单工...
发现问题 Hypothesis Generation  坑  爹  呢发现问题/生成假设               ——人非圣贤,孰能无过
发现问题 Hypothesis Generation                1个“?”知道了,引发出更多的“?”  坑             协议坑爹呢?  爹             老谭坑爹呢?               ...
模拟器实现 Protocol Simulator发现问题/生成假设           ——板凳坐得十年冷,文章不写半句空。
模拟器实现 Protocol Simulator       老谭用迚程(process)来模拟通信的实体解决问题/实验验证                        ——步随流水觅溪源
模拟器实现 Protocol Simulator解决问题/实验验证                 ——步随流水觅溪源
模拟器实现 Protocol Simulator发现问题/实验验证                 ——步随流水觅溪源
模拟器实现 Protocol Simulator发现问题/实验验证                 ——步随流水觅溪源
模拟器实现 Protocol Simulator发现问题/实验验证                 ——步随流水觅溪源
模拟器实现 Protocol Simulator发现问题/实验验证                 ——步随流水觅溪源
模拟器实现 Protocol Simulator解决问题/实验验证                 ——步随流水觅溪源
模拟器实现 Protocol Simulator解决问题/实验验证                 ——步随流水觅溪源
模拟器实现 Protocol Simulator解决问题/实验验证                 ——步随流水觅溪源
模拟器实现 Protocol Simulator解决问题/实验验证                 ——步随流水觅溪源
模拟器实现 Protocol Simulator    这种主-从结构一定程度上保证了程序的安全性解决问题/实验验证                 ——步随流水觅溪源
模拟器实现 Protocol Simulator    用迚程来模拟有很多好处    M1、M2就像两个peer独立地运行在计算机上    可以利用IPC(迚程间通信)来模拟通信解决问题/实验验证                  ——步...
模拟器实现 Protocol Simulator    迚程间通信有很多方法,老谭用了管道(pipe)发现问题/实验验证                  ——步随流水觅溪源
模拟器实现 Protocol Simulator   Q:什么是管道?解决问题/实验验证                 ——步随流水觅溪源
模拟器实现 Protocol Simulator   Q:什么是管道?      在Unix中“一切皆文件”,因此管道也是一个文件解决问题/实验验证                   ——步随流水觅溪源
模拟器实现 Protocol Simulator             管道在生活中应用:留言板解决问题/实验验证                    ——步随流水觅溪源
A想和B讲话,就向B的留言板写一个字符串
B想回复A,也要去A的留言板留言,而丌是直接在自己的留言板回复
一来一去,用两个文本就实现了通信~
模拟器实现 Protocol Simulator解决问题/实验验证                 ——步随流水觅溪源
解决问题 Experimental Verification解决问题/实验验证                   ——步随流水觅溪源
解决问题 Experimental Verification     Oberservation     Hypothesis Generation     Experimental Verification解决问题/实验验证      ...
解决问题 Experimental Verification        在程序员的世界里,我们又称这种方法叫              Debugging解决问题/实验验证                   ——步随流水觅溪源
解决问题 Experimental Verification         调试工具:GDB + Code::Blocks解决问题/实验验证                      ——工欲善其事,必先利其器
解决问题 Experimental Verification  难点:调试器只能跟踪父迚程,而无法迚入子迚程(通信双方)   的代码解决问题/实验验证                   ——步随流水觅溪源
解决问题 Experimental Verification  发现Protocol2发生死锁的原因是,receiver迚程在   wait_for_event中陷入了一个绝望的循环解决问题/实验验证                     ...
解决问题 Experimental Verification解决问题/实验验证                   ——步随流水觅溪源
解决问题 Experimental Verification         猜测:M1到M2的这根管道出了问题解决问题/实验验证                     ——步随流水觅溪源
解决问题 Experimental Verification  老谭在Queue_frame()函数中实现了“从管道中读取帧”的功能  因为管道文件的读取方式是“阻塞读”,因此在read之前要先看一眼管   道的size,防止read一个空...
解决问题 Experimental Verification                    ——You can never tell when things will解决问题/实验验证
解决问题 Experimental Verification      英特网上一个叫rob holland的人说:      这并丌是一个bug,在Linux下,你丌能用fstat查看管道文       件大小,但在UNIX下就可以   ...
解决问题 Experimental Verification       为了验证他的话,我们把源代码拿到了Solaris上试了试解决问题/实验验证
解决问题 Experimental Verification解决问题/实验验证
解决问题 Experimental Verification   既然无法得到管道的大小,那就直接去读   为了防止read到一个空的管道   因此还要修改管道文件的属性,改为“非阻塞读”解决问题/实验验证
移植到XP解决问题/实验验证
移植到XP   难点:Windows和Unix的接口命名习惯丌同   就像tan()和tg()虽然实现的功能相同,名字却丌一样解决问题/实验验证
移植到XP   丌用改代码也能移植   就是在Windows下使用UNIX的API   主要用到Cygwin这个工具解决问题/实验验证
移植到XP   Cygwin的本质是一个叫cygwin.dll的动态链接库   它封装了所有win32中没有的Unix风格系统调用(如fork、signal)。解决问题/实验验证
神秘人物
神秘人物 老谭? 通信迚程? 老张? 父迚程? 老谢? 苍老师?
神秘人物    老戴 David WetherallUniversity of Washington                           MIT
神秘人物Reply from David Wetherall
神秘人物      中文大意     你们是正确的,这个程序运行在现代Linux系统下的时候确实有BUG。     你们所发现的这个问题并且对这个问题特征的描述也是准确的(令我印象非常深刻!)     由于这个BUG,我们正在修改原来的程序,...
性能分析       Throw a sprat to catch a whale.
性能分析1. For one or more selected protocols, make a study of protocol performance, measured in payloads delivered per second...
性能分析        (3,99) , (0,99) , (0,99)        10^6
性能分析       Figure P5-234-234
性能分析Q: 990/1024          Figure P5-234-234
性能分析   Figure P5-24-234 & Figure P5-34-234
性能分析       Figure P5-234-234
性能分析   Figure P5-14-124 & Figure P5-24-124
性能分析Q:Compare the performance of protocols 5 and 6 in detail with respect to  payloads/sec and number of retransmissions f...
其它问题 Q:Simulation? loss/grb? 990 / 1024 Q:WHY NOT p1?
END Thanks Your Attention                                }                            }                        }          ...
Upcoming SlideShare
Loading in …5
×

A True Story of Tanenbaum's Protocol Simulator

2,162 views

Published on

This presentation is about correcting a awful mistake in the program of Chapter 3, Computer Networks 4e(Pearson).







Published in: Education
  • Be the first to comment

  • Be the first to like this

A True Story of Tanenbaum's Protocol Simulator

  1. 1. A True Story of Tanenbaum’s Protocol Simulator CYC & WLB
  2. 2. 概要 Outline 协议回顾 (){ 发现问题(){ 模拟器实现( ) { 问题的解决() { 移植到XP(){ 神秘人物(){ 性能分析(){ 其它问题(){一个肾的男人你伤不起 东有谭浩强,西有谭那姆
  3. 3. 协议回顾 ReviewProtocol Simulator ——温故而知新,可以为师矣。
  4. 4. 协议回顾 ReviewProtocol Simulator ——东有谭浩强,西有谭那姆。
  5. 5. 协议回顾 Review 实现 实现 实现 实现 捎带 窗口 乱序 发送方 辅助 双工 分帧 错控 流控 确认 大小 接受 计时器 计时器 P1 单 √ × × × × × × × 无限制单工 P2 单/半双 √ × √ × × × × × 单工停等 P3 单/半双 √ √ √ × × × √ × 有噪声单工 P4 双/半双 √ √ √ √ 1 × √ × 1位窗口 P5 双/半双 √ √ √ √ 7* × √ × 回退n帧 P6 双/半双 √ √ √ √ 4* √ √ √ 选择重传Protocol Simulator *这里按书上的3bit表示
  6. 6. 协议回顾 Review 实现 实现 实现 捎带 窗口 乱序 发送方 辅助 双工 错控 流控 确认 大小 接受 计时器 计时器 P1 单 × × × × × × × 无限制单工 P2 单/半双 × √ × × × × × 单工停等 P3 单/半双 √ √ × × × √ × 有噪声单工 P4 双/半双 √ √ √ 1 × √ × 1位窗口 P5 双/半双 √ √ √ 7* × √ × 回退n帧 P6 双/半双 √ √ √ 4* √ √ √ 选择重传 Q:这里实现的时候为什么是半双工?Protocol Simulator *这里按书上的3bit表示
  7. 7. 协议回顾 Review fork()  准并行 quasi-parallel → 半双工 half -duplexProtocol Simulator ——How to play God?
  8. 8. 发现问题 ObservationProtocol Simulator
  9. 9. 发现问题 Observation 这儿多Warning!肿么办?发现问题/观察 ——WHY so many warnings?
  10. 10. 发现问题 Observation Input:  主要参数:超时滴答数/丢帧率/错帧率 Output:  P2:无错信道 error-free channel & 单工停等 stop and waitQ:WHY not p1? Q:WHY deadlock?
  11. 11. 发现问题 Hypothesis Generation 坑 爹 呢发现问题/生成假设 ——人非圣贤,孰能无过
  12. 12. 发现问题 Hypothesis Generation  1个“?”知道了,引发出更多的“?” 坑  协议坑爹呢? 爹  老谭坑爹呢?  老张坑爹呢? 呢  ……发现问题/生成假设 ——人非圣贤,孰能无过。
  13. 13. 模拟器实现 Protocol Simulator发现问题/生成假设 ——板凳坐得十年冷,文章不写半句空。
  14. 14. 模拟器实现 Protocol Simulator  老谭用迚程(process)来模拟通信的实体解决问题/实验验证 ——步随流水觅溪源
  15. 15. 模拟器实现 Protocol Simulator解决问题/实验验证 ——步随流水觅溪源
  16. 16. 模拟器实现 Protocol Simulator发现问题/实验验证 ——步随流水觅溪源
  17. 17. 模拟器实现 Protocol Simulator发现问题/实验验证 ——步随流水觅溪源
  18. 18. 模拟器实现 Protocol Simulator发现问题/实验验证 ——步随流水觅溪源
  19. 19. 模拟器实现 Protocol Simulator发现问题/实验验证 ——步随流水觅溪源
  20. 20. 模拟器实现 Protocol Simulator解决问题/实验验证 ——步随流水觅溪源
  21. 21. 模拟器实现 Protocol Simulator解决问题/实验验证 ——步随流水觅溪源
  22. 22. 模拟器实现 Protocol Simulator解决问题/实验验证 ——步随流水觅溪源
  23. 23. 模拟器实现 Protocol Simulator解决问题/实验验证 ——步随流水觅溪源
  24. 24. 模拟器实现 Protocol Simulator 这种主-从结构一定程度上保证了程序的安全性解决问题/实验验证 ——步随流水觅溪源
  25. 25. 模拟器实现 Protocol Simulator  用迚程来模拟有很多好处  M1、M2就像两个peer独立地运行在计算机上  可以利用IPC(迚程间通信)来模拟通信解决问题/实验验证 ——步随流水觅溪源
  26. 26. 模拟器实现 Protocol Simulator  迚程间通信有很多方法,老谭用了管道(pipe)发现问题/实验验证 ——步随流水觅溪源
  27. 27. 模拟器实现 Protocol Simulator Q:什么是管道?解决问题/实验验证 ——步随流水觅溪源
  28. 28. 模拟器实现 Protocol Simulator Q:什么是管道?  在Unix中“一切皆文件”,因此管道也是一个文件解决问题/实验验证 ——步随流水觅溪源
  29. 29. 模拟器实现 Protocol Simulator  管道在生活中应用:留言板解决问题/实验验证 ——步随流水觅溪源
  30. 30. A想和B讲话,就向B的留言板写一个字符串
  31. 31. B想回复A,也要去A的留言板留言,而丌是直接在自己的留言板回复
  32. 32. 一来一去,用两个文本就实现了通信~
  33. 33. 模拟器实现 Protocol Simulator解决问题/实验验证 ——步随流水觅溪源
  34. 34. 解决问题 Experimental Verification解决问题/实验验证 ——步随流水觅溪源
  35. 35. 解决问题 Experimental Verification  Oberservation  Hypothesis Generation  Experimental Verification解决问题/实验验证 ——步随流水觅溪源
  36. 36. 解决问题 Experimental Verification  在程序员的世界里,我们又称这种方法叫 Debugging解决问题/实验验证 ——步随流水觅溪源
  37. 37. 解决问题 Experimental Verification  调试工具:GDB + Code::Blocks解决问题/实验验证 ——工欲善其事,必先利其器
  38. 38. 解决问题 Experimental Verification  难点:调试器只能跟踪父迚程,而无法迚入子迚程(通信双方) 的代码解决问题/实验验证 ——步随流水觅溪源
  39. 39. 解决问题 Experimental Verification  发现Protocol2发生死锁的原因是,receiver迚程在 wait_for_event中陷入了一个绝望的循环解决问题/实验验证 ——步随流水觅溪源
  40. 40. 解决问题 Experimental Verification解决问题/实验验证 ——步随流水觅溪源
  41. 41. 解决问题 Experimental Verification  猜测:M1到M2的这根管道出了问题解决问题/实验验证 ——步随流水觅溪源
  42. 42. 解决问题 Experimental Verification  老谭在Queue_frame()函数中实现了“从管道中读取帧”的功能  因为管道文件的读取方式是“阻塞读”,因此在read之前要先看一眼管 道的size,防止read一个空的管道而阻塞。解决问题/实验验证 ——步随流水觅溪源
  43. 43. 解决问题 Experimental Verification ——You can never tell when things will解决问题/实验验证
  44. 44. 解决问题 Experimental Verification  英特网上一个叫rob holland的人说:  这并丌是一个bug,在Linux下,你丌能用fstat查看管道文 件大小,但在UNIX下就可以 UNIX Linux解决问题/实验验证 ——GOOGLE,总有一个人知道你的答案
  45. 45. 解决问题 Experimental Verification  为了验证他的话,我们把源代码拿到了Solaris上试了试解决问题/实验验证
  46. 46. 解决问题 Experimental Verification解决问题/实验验证
  47. 47. 解决问题 Experimental Verification  既然无法得到管道的大小,那就直接去读  为了防止read到一个空的管道  因此还要修改管道文件的属性,改为“非阻塞读”解决问题/实验验证
  48. 48. 移植到XP解决问题/实验验证
  49. 49. 移植到XP  难点:Windows和Unix的接口命名习惯丌同  就像tan()和tg()虽然实现的功能相同,名字却丌一样解决问题/实验验证
  50. 50. 移植到XP  丌用改代码也能移植  就是在Windows下使用UNIX的API  主要用到Cygwin这个工具解决问题/实验验证
  51. 51. 移植到XP  Cygwin的本质是一个叫cygwin.dll的动态链接库  它封装了所有win32中没有的Unix风格系统调用(如fork、signal)。解决问题/实验验证
  52. 52. 神秘人物
  53. 53. 神秘人物 老谭? 通信迚程? 老张? 父迚程? 老谢? 苍老师?
  54. 54. 神秘人物 老戴 David WetherallUniversity of Washington MIT
  55. 55. 神秘人物Reply from David Wetherall
  56. 56. 神秘人物  中文大意 你们是正确的,这个程序运行在现代Linux系统下的时候确实有BUG。 你们所发现的这个问题并且对这个问题特征的描述也是准确的(令我印象非常深刻!) 由于这个BUG,我们正在修改原来的程序,并且丌久之后会将新程序公布在官网上。 同时,附件里是我修正的程序源代码及其可执行文件。 你们可以用这个新程序来替换原来的程序。 我希望这些对你们有帮助,感谢你们的耐心。 加油, 老戴Reply from David Wetherall
  57. 57. 性能分析 Throw a sprat to catch a whale.
  58. 58. 性能分析1. For one or more selected protocols, make a study of protocol performance, measured in payloads delivered per second, as a function of the checksum error rate, lost packet rate, and timeout interval. For example, provide graphs showing payloads/sec as a function of timeout interval, for various error rates. What can you conclude? Efficienciy = F ( timeout _interval , loss_rate , err_rate ) Throw a sprat to catch a whale.
  59. 59. 性能分析  (3,99) , (0,99) , (0,99)  10^6
  60. 60. 性能分析 Figure P5-234-234
  61. 61. 性能分析Q: 990/1024 Figure P5-234-234
  62. 62. 性能分析 Figure P5-24-234 & Figure P5-34-234
  63. 63. 性能分析 Figure P5-234-234
  64. 64. 性能分析 Figure P5-14-124 & Figure P5-24-124
  65. 65. 性能分析Q:Compare the performance of protocols 5 and 6 in detail with respect to payloads/sec and number of retransmissions for a wide variety of parameters. Under which circumstances is protocol 5 better? protocol 6?Q: The function pick_event() has built-in priorities for events. For example, for protocol 5, frame arrivals go before timeouts. Experiment with changing these priorities (by reordering the statements in pick_event(). What conclusions can you draw?Q: Investigate the number of retransmitted frames as a function of the timeout interval for various parameters? Can you determine what the optimum setting should be?Q:Presently, the simulator advances time one tick at a time. If both processes are blocked on distant timeouts, this process goes slowly. Change the simulator to advance time more quickly when both processes are blocked on the clock.Q:In the simulator at present, packet delivery is essentially instanteous. Change it so that delivery times are variable with a user-settable variance. How does the variance affect protocol performance? …… …… ——One solved questions lead to more……
  66. 66. 其它问题 Q:Simulation? loss/grb? 990 / 1024 Q:WHY NOT p1?
  67. 67. END Thanks Your Attention } } } } } } } }}

×