pppoe的工作原理

    技术2025-09-29  53

    Appendix A.  Examples of Session Credit Flows   Session Credit Flow with the default 64-byte credit unit.   Server                    Client   ====================================================================   <------------PADI--------------    Initiate    ------------PADO-------------->   Offer   <------------PADR--------------    Credits TLV:                                      FCN represents the initial                                      Client credit grant to the                                      Server in 64-byte units.                                      BCN is set to 0.    ------------PADS-------------->   Credits TLV:                                      FCN represents the initial                                      Server credit grant to the                                      Client in 64-byte units.                                      BCN represents an echo of                                      initial Client credits.   <==============================>   Data w/ optional in-band                                      Credits TLV   <------------PADG--------------    Credits TLV: (out-of-band)                                      FCN represents an incremental                                      Client credit grant to the                                      Server, in 64-byte units.                                      BCN represents the remaining                                      Server credits that were granted                                      to the Client, in 64-byte units.    ------------PADC-------------->   Credits TLV: (out-of-band)                                      FCN represents an incremental                                      Server credit grant to the                                      Client, in 64-byte units.                                      BCN represents the remaining                                      Client credits that were granted                                      to the Server, in 64-byte units.   <==============================>   Data w/ optional in-band Credits                                      TLV   <------------PADT-------------->   Terminate参见 rfc

    pppoe协议的工作流程包括发现(PPPoE discovery)和会话(PPP session)两个阶段

     

    pppoe帧格式 首部长为6个字节

    The Ethernet payload for PPPoE is as follows:                        1                   2                   3    0  1  2  3 4  5  6 7 8 9  0 1  2 3 4  5  6  7 8 9  0 1  2 3  4 5  6 7  8 9  0 1   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |  VER     | TYPE     |      CODE           |          SESSION_ID                          |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |            LENGTH                               |           payload             ~   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+pppoe有效载荷(payload)包括0或多个tags,一个tag是一个TLV(type-length-vlaue)结构

    定义如下                        1                   2                   3    0  1  2  3 4 5  6  7  8 9 0 1  2 3  4  5  6 7 8 9  0 1  2 3 4  5  6 7  8 9  0 1   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |          TAG_TYPE                              |        TAG_LENGTH                          |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |          TAG_VALUE ...                                        ~   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  TAG_TYPE 为16位 网络字节顺序(network byte order).

      TAG_LENGTH is a sixteen bit field.  It is an unsigned number in network byte order, indicating the length in octets of the TAG_VALUE. 

     

    pppoe discovery

    由于pppoe的典型的客户-服务器模型,服务提供商建立主机与服务器的单一物理连接

    包括以下4个步骤

    1> Client to server: Initiation (PADI)

    PPPoE Active Discovery Initiation

     

    A PADI packet:                           1                   2                   3       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+      |                         0xffffffff                            |      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+      |           0xffff              |        Host_mac_addr          |      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+      |                    Host_mac_addr (cont)                       |      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+      |    ETHER_TYPE = 0x8863        | v = 1 | t = 1 |  CODE = 0x09  |      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+      |     SESSION_ID = 0x0000       |      LENGTH = 0x0004          |      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+      |      TAG_TYPE = 0x0101        |    TAG_LENGTH = 0x0000        |      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

     

    2>Server to client: Offer (PADO)

    PPPoE Active Discovery Offer

     

    A PADO packet:                           1                   2                   3       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+      |                         Host_mac_addr                         |      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+      |      Host_mac_addr (cont)     | Access_Concentrator_mac_addr  |      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+      |             Access_Concentrator_mac_addr (cont)               |      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+      |    ETHER_TYPE = 0x8863        | v = 1 | t = 1 |  CODE = 0x07  |      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+      |     SESSION_ID = 0x0000       |      LENGTH = 0x0020          |      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+      |      TAG_TYPE = 0x0101        |    TAG_LENGTH = 0x0000        |      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+      |      TAG_TYPE = 0x0102        |    TAG_LENGTH = 0x0018        |      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+      |     0x47      |     0x6f      |     0x20      |     0x52      |      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+      |     0x65      |     0x64      |     0x42      |     0x61      |      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+      |     0x63      |     0x6b      |     0x20      |     0x2d      |      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+      |     0x20      |     0x65      |     0x73      |     0x68      |      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+      |     0x73      |     0x68      |     0x65      |     0x73      |      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+      |     0x68      |     0x6f      |     0x6f      |     0x74      |      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

     

    3>Client to server: Request (PADR)

    PPPoE Active Discovery Request

     

    4>Server to client: Session-confirmation (PADS)

     

    最新回复(0)