美文网首页
ppp代码解读

ppp代码解读

作者: 玲玲总总 | 来源:发表于2019-02-20 11:50 被阅读0次

    1.相关rfc

    rfc1661

    2.pppd

    2.1.数据结构

    protocols,所在文件main.c中初始化,记录ppp数据链路层的协议列表。

    2.2.状态机

    有这几种动作和触发状态变迁的事件:

      Events                                  Actions

      Up  = lower layer is Up                tlu = This-Layer-Up

      Down = lower layer is Down              tld = This-Layer-Down

      Open = administrative Open              tls = This-Layer-Started

      Close= administrative Close              tlf = This-Layer-Finished

      TO+  = Timeout with counter > 0          irc = Initialize-Restart-Count

      TO-  = Timeout with counter expired      zrc = Zero-Restart-Count

      RCR+ = Receive-Configure-Request (Good)  scr = Send-Configure-Request

      RCR- = Receive-Configure-Request (Bad)

      RCA  = Receive-Configure-Ack            sca = Send-Configure-Ack

      RCN  = Receive-Configure-Nak/Rej        scn = Send-Configure-Nak/Rej

      RTR  = Receive-Terminate-Request        str = Send-Terminate-Request

      RTA  = Receive-Terminate-Ack            sta = Send-Terminate-Ack

      RUC  = Receive-Unknown-Code              scj = Send-Code-Reject

      RXJ+ = Receive-Code-Reject (permitted)

          or Receive-Protocol-Reject

      RXJ- = Receive-Code-Reject (catastrophic)

          or Receive-Protocol-Reject

      RXR  = Receive-Echo-Request              ser = Send-Echo-Reply

          or Receive-Echo-Reply

          or Receive-Discard-Request

    每个协议的状态机如下:

          | State

          |    0        1        2        3        4        5

    Events| Initial  Starting  Closed    Stopped  Closing  Stopping

    ------+-----------------------------------------------------------

    Up  |    2    irc,scr/6    -        -        -        -

    Down |    -        -        0      tls/1      0        1

    Open |  tls/1      1    irc,scr/6    3r        5r        5r

    Close|    0      tlf/0      2        2        4        4

          |

      TO+ |    -        -        -        -      str/4    str/5

      TO- |    -        -        -        -      tlf/2    tlf/3

          |

    RCR+ |    -        -      sta/2 irc,scr,sca/8  4        5

    RCR- |    -        -      sta/2 irc,scr,scn/6  4        5

    RCA  |    -        -      sta/2    sta/3      4        5

    RCN  |    -        -      sta/2    sta/3      4        5

          |

    RTR  |    -        -      sta/2    sta/3    sta/4    sta/5

    RTA  |    -        -        2        3      tlf/2    tlf/3

          |

    RUC  |    -        -      scj/2    scj/3    scj/4    scj/5

    RXJ+ |    -        -        2        3        4        5

    RXJ- |    -        -      tlf/2    tlf/3    tlf/2    tlf/3

          |

    RXR  |    -        -        2        3        4        5

          | State

          |    6        7        8          9

    Events| Req-Sent  Ack-Rcvd  Ack-Sent    Opened

    ------+-----------------------------------------

    Up  |    -        -        -          -

    Down |    1        1        1        tld/1

    Open |    6        7        8          9r

    Close|irc,str/4 irc,str/4 irc,str/4 tld,irc,str/4

          |

      TO+ |  scr/6    scr/6    scr/8        -

      TO- |  tlf/3p    tlf/3p    tlf/3p        -

          |

    RCR+ |  sca/8  sca,tlu/9  sca/8  tld,scr,sca/8

    RCR- |  scn/6    scn/7    scn/6  tld,scr,scn/6

    RCA  |  irc/7    scr/6x  irc,tlu/9  tld,scr/6x

    RCN  |irc,scr/6  scr/6x  irc,scr/8  tld,scr/6x

          |

    RTR  |  sta/6    sta/6    sta/6  tld,zrc,sta/5

    RTA  |    6        6        8      tld,scr/6

          |

    RUC  |  scj/6    scj/7    scj/8      scj/9

    RXJ+ |    6        6        8          9

    RXJ- |  tlf/3    tlf/3    tlf/3  tld,irc,str/5

          |

    RXR  |    6        7        8        ser/9

    2.3.plugin

    2.4.疑问

    1)PPPD进程运行过程中呈Dead状态

    有时在linux上使用ps看,PPPD进程状态是‘D’。释放ppp设备时没有清理干净,下一次再创建 socket时失败,让进程进入到'D'。

    2)pppd中创建了几个套接字,分别用于什么作用;

    3)删除这些套接字,删除成功的条件是什么;

    4)在进程退出时,什么时候会退出失败;

    5)如果失败了,进程是什么状态;

    备注.ppp源代码下载路径

    https://fossies.org/linux/misc/ppp-2.4.7.tar.gz/ppp-2.4.7/pppd/pppd.8

    3.ppp kernel

    channel

                                        ppp_xmit_process ->__ppp_xmit_process -> ppp_send_frame

    ppp_channel_push - >__ppp_channel_push->

    http://blog.sina.com.cn/s/blog_a44094ea0102wx3x.html

    相关文章

      网友评论

          本文标题:ppp代码解读

          本文链接:https://www.haomeiwen.com/subject/rijxyqtx.html