| < draft-xing-alto-sdn-controller-aware-mptcp-mpquic-04.txt | draft-xing-alto-sdn-controller-aware-mptcp-mpquic-05.txt > | |||
|---|---|---|---|---|
| alto Z. Xing | alto Z. Xing | |||
| Internet-Draft H. Qi | Internet-Draft X. Di | |||
| Intended status: Informational X. Di | Intended status: Informational H. Qi | |||
| Expires: 28 October 2022 Changchun University of Science and Technology | Expires: 13 November 2022 Changchun University of Science and Technology | |||
| 26 April 2022 | 12 May 2022 | |||
| The SDN-based MPTCP-aware and MPQUIC-aware Transmission Control Model | The SDN-based MPTCP-aware and MPQUIC-aware Transmission Control Model | |||
| using ALTO | using ALTO | |||
| draft-xing-alto-sdn-controller-aware-mptcp-mpquic-04 | draft-xing-alto-sdn-controller-aware-mptcp-mpquic-05 | |||
| Abstract | Abstract | |||
| This document aims to study and implement MultiPath Transmission | This document aims to study and implement MultiPath Transmission | |||
| Control Protocol (MPTCP) and MultiPath Quick UDP Internet Connection | Control Protocol (MPTCP) and MultiPath Quick UDP Internet Connection | |||
| (MPQUIC) using application layer traffic optimization (ALTO) in | (MPQUIC) using application layer traffic optimization (ALTO) in | |||
| software defined network (SDN). In a software-defined network, ALTO | software defined network (SDN). In a software-defined network, ALTO | |||
| server collects network cost indicators (including link delay, number | server collects network cost indicators (including link delay, number | |||
| of paths, availability, network traffic, bandwidth and packet loss | of paths, availability, network traffic, bandwidth and packet loss | |||
| rate etc.), and the controller extracts MPTCP or MPQUIC packet header | rate etc.), and the controller extracts MPTCP or MPQUIC packet header | |||
| skipping to change at page 1, line 42 ¶ | skipping to change at page 1, line 42 ¶ | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on 28 October 2022. | This Internet-Draft will expire on 13 November 2022. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2022 IETF Trust and the persons identified as the | Copyright (c) 2022 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents (https://trustee.ietf.org/ | |||
| license-info) in effect on the date of publication of this document. | license-info) in effect on the date of publication of this document. | |||
| Please review these documents carefully, as they describe your rights | Please review these documents carefully, as they describe your rights | |||
| skipping to change at page 8, line 8 ¶ | skipping to change at page 8, line 8 ¶ | |||
| | | | | | | |||
| +---------------------v----------------------+ | | +---------------------v----------------------+ | | |||
| |Put forward and reverse flow rules to switch|----+ | |Put forward and reverse flow rules to switch|----+ | |||
| +--------------------------------------------+ | +--------------------------------------------+ | |||
| Figure 2 The flow chart of the SDN-based MPTCP-aware and MPQUIC-aware | Figure 2 The flow chart of the SDN-based MPTCP-aware and MPQUIC-aware | |||
| multi-path transmission control model using ALTO | multi-path transmission control model using ALTO | |||
| The flow chart of the SDN-based MPTCP-aware and MPQUIC-aware multi- | The flow chart of the SDN-based MPTCP-aware and MPQUIC-aware multi- | |||
| path transmission control model using ALTO is shown in Figure 2. The | path transmission control model using ALTO is shown in Figure 2. The | |||
| transmission control model is realized by the following steps: | transmission control model is realized by the following steps: | |||
| * Step 1. The SDN controller creates a mapping table flows for | * Step 1.ALTO server collects network cost indicators (including | |||
| link delay, number of paths, availability, network traffic, | ||||
| bandwidth and packet loss rate), which are recorded as: G (V, e), | ||||
| network topology g, V is the vertex and E is the edge. | ||||
| * Step 2. The SDN controller creates a mapping table flows for | ||||
| storing MPTCP or MPQUIC connection information, and each entry | storing MPTCP or MPQUIC connection information, and each entry | |||
| structure of the mapping table flows is <key:value>; wherein key | structure of the mapping table flows is <key:value>; wherein key | |||
| is the unique identifier of MPTCP or MPQUIC connection, When the | is the unique identifier of MPTCP or MPQUIC connection, When the | |||
| packet comes from MPTCP, key=T+token; and when the packet comes | packet comes from MPTCP, key=T+token; and when the packet comes | |||
| from MPQUIC, key=Q+CID (The letters T and Q are used to | from MPQUIC, key=Q+CID (The letters T and Q are used to | |||
| distinguish MPTCP and MPQUIC). value is a set of sub-stream meta- | distinguish MPTCP and MPQUIC). value is a set of sub-stream meta- | |||
| information, each item in the set is a sub-stream meta- | information, each item in the set is a sub-stream meta- | |||
| information; each sub-stream meta-information consists of source | information; each sub-stream meta-information consists of source | |||
| IP, destination IP, source port, destination port, MPTCP (or | IP, destination IP, source port, destination port, MPTCP (or | |||
| MPQUIC) sub-stream identifier and the path route composition. | MPQUIC) sub-stream identifier and the path route composition. | |||
| * Step 2. When the data packet p of a certain MPTCP or MPQUIC | * Step 3. When the data packet p of a certain MPTCP or MPQUIC | |||
| subflow reaches the first switch s1, the first switch s1 extracts | subflow reaches the first switch s1, the first switch s1 extracts | |||
| the header field of the data packet p, extracts the source IP, | the header field of the data packet p, extracts the source IP, | |||
| source port, destination IP and the destination port matches the | source port, destination IP and the destination port matches the | |||
| source IP, source port, destination IP and destination port of the | source IP, source port, destination IP and destination port of the | |||
| flow table in the first switch s1 respectively, and judges whether | flow table in the first switch s1 respectively, and judges whether | |||
| the matching is successful. If so, go to step 12; if not, then | the matching is successful. If so, go to step 13; if not, then | |||
| the first switch s1 encapsulates the data packet p and forwards it | the first switch s1 encapsulates the data packet p and forwards it | |||
| to the SDN controller, and at the same time adds the data packet p | to the SDN controller, and at the same time adds the data packet p | |||
| to the waiting queue. | to the waiting queue. | |||
| * Step 3. After receiving the data packet p, the SDN controller | * Step 4. After receiving the data packet p, the SDN controller | |||
| extracts the header field of the data packet p, extracts the | extracts the header field of the data packet p, extracts the | |||
| connection identifier of the data packet, and generates a key | connection identifier of the data packet, and generates a key | |||
| value, where when the data packet comes from MPTCP, key=T+token; | value, where when the data packet comes from MPTCP, key=T+token; | |||
| When the packet comes from MPQUIC, key=Q+CID. Then query whether | When the packet comes from MPQUIC, key=Q+CID. Then query whether | |||
| there is a key in the mapping table flows, if so, go to step 7, if | there is a key in the mapping table flows, if so, go to step 8, if | |||
| not, go to step 4. | not, go to step 5. | |||
| * Step 4. Extract the source IP, destination IP, source port, and | * Step 5. Extract the source IP, destination IP, source port, and | |||
| destination port of the data packet p and generate a key value, | destination port of the data packet p and generate a key value, | |||
| where when the data packet comes from MPTCP, key=T+token; and when | where when the data packet comes from MPTCP, key=T+token; and when | |||
| the data packet comes from MPQUIC, key=Q+CID . | the data packet comes from MPQUIC, key=Q+CID . | |||
| * Step 5. ALTO to get basic network information. The controller | * Step 6. ALTO to get basic network information. The controller | |||
| calculates the threshold T according to the global network state | calculates the threshold T according to the global network state | |||
| information (network topology, number of switches, etc.). Using | information (network topology, number of switches, etc.). Using | |||
| the depth-first traversal algorithm, find the available path set | the depth-first traversal algorithm, find the available path set | |||
| R={r_1,...,r_i,...,r_m } from all source nodes whose length does | R={r_1,...,r_i,...,r_m } from all source nodes whose length does | |||
| not exceed a certain threshold T to the destination node, r_i is | not exceed a certain threshold T to the destination node, r_i is | |||
| the i available path, in the available path set Select a shortest | the i available path, in the available path set Select a shortest | |||
| path r_i in R as the path route of the sub-flow, where | path r_i in R as the path route of the sub-flow, where | |||
| r_i=<s_(i,1),...,s_(i,j),...>, s_(i,j) represents the i available | r_i=<s_(i,1),...,s_(i,j),...>, s_(i,j) represents the i available | |||
| path The switch numbered j, where i belong to [1,m],j belong to | path The switch numbered j, where i belong to [1,m],j belong to | |||
| [1,T]. | [1,T]. | |||
| * Step 6. Use the MPTCP and MPQUIC connection identifiers as the | * Step 7. Use the MPTCP and MPQUIC connection identifiers as the | |||
| unique identifier key of the MPTCP and MPQUIC connections, where | unique identifier key of the MPTCP and MPQUIC connections, where | |||
| the key is the unique identifier of the MPTCP and MPQUIC | the key is the unique identifier of the MPTCP and MPQUIC | |||
| connections. When the data packet comes from MPTCP, key=T+token; | connections. When the data packet comes from MPTCP, key=T+token; | |||
| and the data packet comes from In MPQUIC, key=Q+CID. The source | and the data packet comes from In MPQUIC, key=Q+CID. The source | |||
| IP, source port, destination IP, destination port, MPTCP, MPQUIC | IP, source port, destination IP, destination port, MPTCP, MPQUIC | |||
| sub-flow identifier and path route of the data packet p are added | sub-flow identifier and path route of the data packet p are added | |||
| to the set value of sub-flow meta information as sub-flow meta- | to the set value of sub-flow meta information as sub-flow meta- | |||
| information, and then the <key:value> The form is saved to the | information, and then the <key:value> The form is saved to the | |||
| mapping table flows, and go to step 10. | mapping table flows, and go to step 11. | |||
| * Step 7. The SDN controller updates the flows table according to | * Step 8. The SDN controller updates the flows table according to | |||
| the global information of the network, and takes out the value | the global information of the network, and takes out the value | |||
| from the connection identifier, and then composes all paths in the | from the connection identifier, and then composes all paths in the | |||
| value into a set RL={r_1,r_2,...}. | value into a set RL={r_1,r_2,...}. | |||
| * Step 8. The SDN controller searches for a suitable disjoint path | * Step 9. The SDN controller searches for a suitable disjoint path | |||
| for the data packet p according to the method in Step 5, and sets | for the data packet p according to the method in Step 5, and sets | |||
| the found path as route=r_i, where r_i not belong to RL. | the found path as route=r_i, where r_i not belong to RL. | |||
| * Step 9. Extract the source IP, destination IP, source port, | * Step 10. Extract the source IP, destination IP, source port, | |||
| destination port, and MPTCP, MPQUIC sub-flow identifiers of the | destination port, and MPTCP, MPQUIC sub-flow identifiers of the | |||
| data packet p, and convert the source IP, source port, destination | data packet p, and convert the source IP, source port, destination | |||
| IP, destination port, MPTCP (or MPQUIC) sub-flow identifiers and | IP, destination port, MPTCP (or MPQUIC) sub-flow identifiers and | |||
| the path route is added to the value as sub-flow meta information. | the path route is added to the value as sub-flow meta information. | |||
| * Step 10. The SDN controller uses the source IP, source port, | * Step 11. The SDN controller uses the source IP, source port, | |||
| destination IP and destination port to issue the flow table to all | destination IP and destination port to issue the flow table to all | |||
| switches in the route route, and set the route | switches in the route route, and set the route | |||
| route=r_i=<s_(i,1),...,s_(i,j-1),s_(i.j),s_(i,j+1),...>, for the | route=r_i=<s_(i,1),...,s_(i,j-1),s_(i.j),s_(i,j+1),...>, for the | |||
| switch s_(i,j), the flow entry sent is the source IP, source port | switch s_(i,j), the flow entry sent is the source IP, source port | |||
| to the destination, the data packets of IP and destination port | to the destination, the data packets of IP and destination port | |||
| are forwarded to s_(i,j+1). | are forwarded to s_(i,j+1). | |||
| * Step 11. The controller sends the reverse flow table to all | * Step 12. The controller sends the reverse flow table to all | |||
| switches on the route route and sets the route | switches on the route route and sets the route | |||
| route=r_i=<s_(i,1),...,s_(i,j-1),s_(i,j),s_(i,j+1),...>, for the | route=r_i=<s_(i,1),...,s_(i,j-1),s_(i,j),s_(i,j+1),...>, for the | |||
| switch s_(i,j) ,the flow table entry sent is to forward the data | switch s_(i,j) ,the flow table entry sent is to forward the data | |||
| packets from the destination IP, destination port to source IP, | packets from the destination IP, destination port to source IP, | |||
| and source port to s_(i,j-1). | and source port to s_(i,j-1). | |||
| * Step 12. The switch already contains a flow entry for processing | * Step 13. The switch already contains a flow entry for processing | |||
| the data packet p, and forwards the data packet according to the | the data packet p, and forwards the data packet according to the | |||
| rules defined by the flow entry, and completes the processing of | rules defined by the flow entry, and completes the processing of | |||
| the data packet p. Step 2 is executed when the forwarding fails | the data packet p. Step 3 is executed when the forwarding fails | |||
| or the processing of other subsequent data packets returns. | or the processing of other subsequent data packets returns. | |||
| 7. Security Considerations | 7. Security Considerations | |||
| The transmission control model uses the default security mechanism of | The transmission control model uses the default security mechanism of | |||
| SDN\ALTO\MPTCP\MPQUIC in the network, and does not modify the default | SDN\ALTO\MPTCP\QUIC in the network, and does not modify the default | |||
| security mechanisms such as encryption and authentication models | security mechanisms such as encryption and authentication models | |||
| [RFC7426], [RFC7285], [RFC6824] and [RFC9000]. | [RFC7426], [RFC7285], [RFC6824] and [RFC9000]. | |||
| 8. IANA Considerations | 8. IANA Considerations | |||
| TBD. | TBD. | |||
| 9. Discussion | 9. Discussion | |||
| The SDN transmission control model proposed in this document can | The SDN transmission control model proposed in this document can | |||
| skipping to change at page 10, line 38 ¶ | skipping to change at page 10, line 45 ¶ | |||
| verify its comprehensive transmission performance, a fat-tree data | verify its comprehensive transmission performance, a fat-tree data | |||
| center network is designed. The transmission control method proposed | center network is designed. The transmission control method proposed | |||
| in this document improves the throughput by about 3 times compared to | in this document improves the throughput by about 3 times compared to | |||
| the default transmission control method. This model also supports | the default transmission control method. This model also supports | |||
| data transmission in multiple software-defined networks, and can also | data transmission in multiple software-defined networks, and can also | |||
| be applied to satellite networks, marine networks, etc. to transmit | be applied to satellite networks, marine networks, etc. to transmit | |||
| data. | data. | |||
| 10. Acknowledgments | 10. Acknowledgments | |||
| The authors thank many reviewers for their comments. | The authors thank all reviewers for their comments. | |||
| 11. References | 11. References | |||
| 11.1. Normative References | 11.1. Normative References | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| skipping to change at page 12, line 29 ¶ | skipping to change at page 12, line 40 ¶ | |||
| and Networking Conference (WCNC), 2019, pp. 1-6,", | and Networking Conference (WCNC), 2019, pp. 1-6,", | |||
| <https://doi.org/10.1109/WCNC.2019.8885585>. | <https://doi.org/10.1109/WCNC.2019.8885585>. | |||
| Authors' Addresses | Authors' Addresses | |||
| Ziyang Xing | Ziyang Xing | |||
| Changchun University of Science and Technology | Changchun University of Science and Technology | |||
| Changchun | Changchun | |||
| Email: more60@163.com | Email: more60@163.com | |||
| Hui Qi | Xiaoqiang Di | |||
| Changchun University of Science and Technology | Changchun University of Science and Technology | |||
| Changchun | Changchun | |||
| Email: qihui@cust.edu.cn | Email: dixiaoqiang@cust.edu.cn | |||
| Xiaoqiang Di | Hui Qi | |||
| Changchun University of Science and Technology | Changchun University of Science and Technology | |||
| Changchun | Changchun | |||
| Email: dixiaoqiang@cust.edu.cn | Email: qihui@cust.edu.cn | |||
| End of changes. 25 change blocks. | ||||
| 28 lines changed or deleted | 33 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||