• Taehee Yoo's avatar
    amt: add data plane of amt interface · cbc21dc1
    Taehee Yoo authored
    Before forwarding multicast traffic, the amt interface establishes between
    gateway and relay. In order to establish, amt defined some message type
    and those message flow looks like the below.
    
                          Gateway                  Relay
                          -------                  -----
                             :        Request        :
                         [1] |           N           |
                             |---------------------->|
                             |    Membership Query   | [2]
                             |    N,MAC,gADDR,gPORT  |
                             |<======================|
                         [3] |   Membership Update   |
                             |   ({G:INCLUDE({S})})  |
                             |======================>|
                             |                       |
        ---------------------:-----------------------:---------------------
       |                     |                       |                     |
       |                     |    *Multicast Data    |  *IP Packet(S,G)    |
       |                     |      gADDR,gPORT      |<-----------------() |
       |    *IP Packet(S,G)  |<======================|                     |
       | ()<-----------------|                       |                     |
       |                     |                       |                     |
        ---------------------:-----------------------:---------------------
                             ~                       ~
                             ~        Request        ~
                         [4] |           N'          |
                             |---------------------->|
                             |   Membership Query    | [5]
                             | N',MAC',gADDR',gPORT' |
                             |<======================|
                         [6] |                       |
                             |       Teardown        |
                             |   N,MAC,gADDR,gPORT   |
                             |---------------------->|
                             |                       | [7]
                             |   Membership Update   |
                             |  ({G:INCLUDE({S})})   |
                             |======================>|
                             |                       |
        ---------------------:-----------------------:---------------------
       |                     |                       |                     |
       |                     |    *Multicast Data    |  *IP Packet(S,G)    |
       |                     |     gADDR',gPORT'     |<-----------------() |
       |    *IP Packet (S,G) |<======================|                     |
       | ()<-----------------|                       |                     |
       |                     |                       |                     |
        ---------------------:-----------------------:---------------------
                             |                       |
                             :                       :
    
    1. Discovery
     - Sent by Gateway to Relay
     - To find Relay unique ip address
    2. Advertisement
     - Sent by Relay to Gateway
     - Contains the unique IP address
    3. Request
     - Sent by Gateway to Relay
     - Solicit to receive 'Query' message.
    4. Query
     - Sent by Relay to Gateway
     - Contains General Query message.
    5. Update
     - Sent by  Gateway to Relay
     - Contains report message.
    6. Multicast Data
     - Sent by Relay to Gateway
     - encapsulated multicast traffic.
    7. Teardown
     - Not supported at this time.
    
    Except for the Teardown message, it supports all messages.
    
    In the next patch, IGMP/MLD logic will be added.
    Signed-off-by: default avatarTaehee Yoo <ap420073@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    cbc21dc1
amt.c 42.4 KB