| < draft-irtf-nwcrg-nwc-ccn-reqs-06.txt | draft-irtf-nwcrg-nwc-ccn-reqs-07.txt > | |||
|---|---|---|---|---|
| Network Coding Research Group K. Matsuzono | Network Coding Research Group K. Matsuzono | |||
| Internet-Draft H. Asaeda | Internet-Draft H. Asaeda | |||
| Intended status: Informational NICT | Intended status: Informational NICT | |||
| Expires: January 28, 2022 C. Westphal | Expires: April 27, 2022 C. Westphal | |||
| Huawei | Huawei | |||
| July 27, 2021 | October 24, 2021 | |||
| Network Coding for Content-Centric Networking / Named Data Networking: | Network Coding for Content-Centric Networking / Named Data Networking: | |||
| Considerations and Challenges | Considerations and Challenges | |||
| draft-irtf-nwcrg-nwc-ccn-reqs-06 | draft-irtf-nwcrg-nwc-ccn-reqs-07 | |||
| Abstract | Abstract | |||
| This document describes the current research outcomes in Network | This document describes the current research outcomes in Network | |||
| Coding (NC) for Content-Centric Networking (CCNx) / Named Data | Coding (NC) for Content-Centric Networking (CCNx) / Named Data | |||
| Networking (NDN), and clarifies the technical considerations and | Networking (NDN), and clarifies the technical considerations and | |||
| potential challenges for applying NC in CCNx/NDN. This document is | potential challenges for applying NC in CCNx/NDN. This document is | |||
| the product of the Coding for Efficient Network Communications | the product of the Coding for Efficient Network Communications | |||
| Research Group (NWCRG) and the Information-Centric Networking | Research Group (NWCRG) and the Information-Centric Networking | |||
| Research Group (ICNRG). | Research Group (ICNRG). | |||
| skipping to change at page 1, line 39 ¶ | skipping to change at page 1, line 39 ¶ | |||
| 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 January 28, 2022. | This Internet-Draft will expire on April 27, 2022. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2021 IETF Trust and the persons identified as the | Copyright (c) 2021 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 | Provisions Relating to IETF Documents | |||
| (https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| skipping to change at page 2, line 16 ¶ | skipping to change at page 2, line 16 ¶ | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 2.1. Definitions related to NC . . . . . . . . . . . . . . . . 4 | 2.1. Definitions related to NC . . . . . . . . . . . . . . . . 4 | |||
| 2.2. Definitions related to CCNx/NDN . . . . . . . . . . . . . 6 | 2.2. Definitions related to CCNx/NDN . . . . . . . . . . . . . 6 | |||
| 3. CCNx/NDN Basics . . . . . . . . . . . . . . . . . . . . . . . 7 | 3. CCNx/NDN Basics . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 4. NC Basics . . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 4. NC Basics . . . . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 5. Advantages of NC and CCNx/NDN . . . . . . . . . . . . . . . . 9 | 5. Advantages of NC and CCNx/NDN . . . . . . . . . . . . . . . . 8 | |||
| 6. Technical Considerations . . . . . . . . . . . . . . . . . . 10 | 6. Technical Considerations . . . . . . . . . . . . . . . . . . 9 | |||
| 6.1. Content Naming . . . . . . . . . . . . . . . . . . . . . 10 | 6.1. Content Naming . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 6.2. Transport . . . . . . . . . . . . . . . . . . . . . . . . 11 | 6.2. Transport . . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
| 6.2.1. Scope of NC . . . . . . . . . . . . . . . . . . . . . 11 | 6.2.1. Scope of NC . . . . . . . . . . . . . . . . . . . . . 11 | |||
| 6.2.2. Consumer Operation . . . . . . . . . . . . . . . . . 12 | 6.2.2. Consumer Operation . . . . . . . . . . . . . . . . . 11 | |||
| 6.2.3. Router Operation . . . . . . . . . . . . . . . . . . 12 | 6.2.3. Forwarder Operation . . . . . . . . . . . . . . . . . 12 | |||
| 6.2.4. Publisher Operation . . . . . . . . . . . . . . . . . 13 | 6.2.4. Producer Operation . . . . . . . . . . . . . . . . . 13 | |||
| 6.2.5. Backward Compatibility . . . . . . . . . . . . . . . 14 | 6.2.5. Backward Compatibility . . . . . . . . . . . . . . . 14 | |||
| 6.3. In-network Caching . . . . . . . . . . . . . . . . . . . 14 | 6.3. In-network Caching . . . . . . . . . . . . . . . . . . . 14 | |||
| 6.4. Seamless Consumer Mobility . . . . . . . . . . . . . . . 14 | 6.4. Seamless Consumer Mobility . . . . . . . . . . . . . . . 15 | |||
| 7. Challenges . . . . . . . . . . . . . . . . . . . . . . . . . 15 | 7. Challenges . . . . . . . . . . . . . . . . . . . . . . . . . 15 | |||
| 7.1. Adoption of Convolutional Coding . . . . . . . . . . . . 15 | 7.1. Adoption of Convolutional Coding . . . . . . . . . . . . 15 | |||
| 7.2. Rate and Congestion Control . . . . . . . . . . . . . . . 16 | 7.2. Rate and Congestion Control . . . . . . . . . . . . . . . 16 | |||
| 7.3. Security . . . . . . . . . . . . . . . . . . . . . . . . 16 | 7.3. Security . . . . . . . . . . . . . . . . . . . . . . . . 16 | |||
| 7.4. Routing Scalability . . . . . . . . . . . . . . . . . . . 17 | 7.4. Routing Scalability . . . . . . . . . . . . . . . . . . . 17 | |||
| 8. Security Considerations . . . . . . . . . . . . . . . . . . . 18 | 8. Security Considerations . . . . . . . . . . . . . . . . . . . 17 | |||
| 9. Informative References . . . . . . . . . . . . . . . . . . . 19 | 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 19 | |||
| 10. Informative References . . . . . . . . . . . . . . . . . . . 19 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 22 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 22 | |||
| 1. Introduction | 1. Introduction | |||
| Information-Centric Networking (ICN) in general, and Content-Centric | Information-Centric Networking (ICN) in general, and Content-Centric | |||
| Networking (CCNx) [16] or Named Data Networking (NDN) [18] in | Networking (CCNx) [16] or Named Data Networking (NDN) [19] in | |||
| particular, have emerged as a novel communication paradigm advocating | particular, have emerged as a novel communication paradigm advocating | |||
| the retrieval of data based on their names. This paradigm pushes | the retrieval of data based on their names. This paradigm pushes | |||
| content awareness into the network layer. It is expected to enable | content awareness into the network layer. It is expected to enable | |||
| consumers to obtain the content they desire in a straightforward and | consumers to obtain the content they desire in a straightforward and | |||
| efficient manner from the heterogenous networks they may be connected | efficient manner from the heterogenous networks they may be connected | |||
| to. The CCNx/NDN architecture has introduced innovative ideas and | to. The CCNx/NDN architecture has introduced innovative ideas and | |||
| has stimulated research in a variety of areas, such as in-network | has stimulated research in a variety of areas, such as in-network | |||
| caching, name-based routing, multipath transport, content security. | caching, name-based routing, multipath transport, content security. | |||
| One key benefit of requesting content by name is that it eliminates | One key benefit of requesting content by name is that it eliminates | |||
| the requirement of establishing a session between the client and a | the requirement of establishing a session between the client and a | |||
| specific server, and the content can thereby be retrieved from | specific server, and the content can thereby be retrieved from | |||
| multiple sources. | multiple sources. | |||
| In parallel, there has been a growing interest in both academia and | In parallel, there has been a growing interest in both academia and | |||
| industry for better understanding the fundamental aspects of Network | industry for better understanding the fundamental aspects of Network | |||
| Coding (NC) toward enhancing key system-performance metrics such as | Coding (NC) toward enhancing key system performance metrics such as | |||
| data throughput, robustness and reduction in the required number of | data throughput, robustness and reduction in the required number of | |||
| transmissions through connected networks, and point-to-multipoint | transmissions through connected networks, and redundant transmission | |||
| connections. NC is a technique that is typically used for encoding | on broadcast or point-to-multipoint connections. NC is a technique | |||
| packets for recovering lost source packets at the receiver, and for | that is typically used for encoding packets to recover from lost | |||
| effectively obtaining the desired information in a fully distributed | source packets at the receiver, and for effectively obtaining the | |||
| manner. In addition, NC can be used for security enhancements [2] | desired information in a fully distributed manner. In addition, NC | |||
| [3] [4] [5]. | can be used for security enhancements [2] [3] [4] [5]. | |||
| From the perspective of the NC transport mechanism, NC can be | From the perspective of the NC transport mechanism, NC can be divided | |||
| categorized into two major categories: coherent NC, and non-coherent | into two major categories: coherent NC, and non-coherent NC [39]. In | |||
| NC [37]. In coherent NC, the source and destination nodes know the | coherent NC, the source and destination nodes know the exact network | |||
| exact network topology and the coding operations at intermediate | topology and the coding operations at intermediate nodes. When | |||
| nodes. When multiple consumers are attempting to receive the same | multiple consumers are attempting to receive the same content such as | |||
| content such as live video streaming, coherent NC could enable | live video streaming, coherent NC could enable optimal throughput by | |||
| optimal throughput sending the content flow over the constructed | sending the content flow over the constructed optimal multicast trees | |||
| optimal multicast trees [31]. However, it requires a fully | [33]. However, it requires a fully adjustable and specific routing | |||
| adjustable and specific routing mechanism, and a large computational | mechanism, and a large computational capacity for central | |||
| capacity for central coordination. In the case of non-coherent NC, | coordination. In the case of non-coherent NC, that often comprises | |||
| that often comprises the use of Random Linear Coding (RLC), it is not | the use of Random Linear Coding (RLC), it is not necessary to know | |||
| necessary to know the network topology nor the intermediate coding | the network topology nor the intermediate coding operations [34]. As | |||
| operations [32]. As non-coherent NC works in a completely | non-coherent NC works in a completely independent and decentralized | |||
| independent and decentralized manner, this approach is more feasible | manner, this approach is more feasible especially in the large-scale | |||
| especially in the large-scale use cases. | use cases. | |||
| NC combines multiple packets together with parts of the same content, | NC combines multiple packets together with parts of the same content, | |||
| and may do this at the source or at other nodes in the network. | and may do this at the source or at other nodes in the network. | |||
| Network coded packets are not connected to a specific server, as they | Network coded packets are not associated with a specific server, as | |||
| may have been combined within the network. As NC is focused on what | they may have been combined within the network. As NC is focused on | |||
| information should be encoded in a network packet instead of the | what information should be encoded in a network packet instead of the | |||
| specific host at which it has been generated, it is in line with the | specific host at which it has been generated, it is in line with the | |||
| CCNx/NDN core networking layer. NC has already been implemented for | architecture of the CCNx/NDN core networking layer. NC has already | |||
| information/content dissemination [6] [7] [8]. Montpetit, et al., | been implemented for information/content dissemination [6] [7] [8]. | |||
| first suggested that NC techniques be exploited to enhance key system | Montpetit, et al., first suggested that NC techniques be exploited to | |||
| performances in ICN [9]. NC provides CCNx/NDN with the highly | enhance key aspects of system performance in ICN [9]. NC provides | |||
| beneficial potential of effectively disseminating information in a | CCNx/NDN with the highly beneficial potential of effectively | |||
| completely independent and decentralized manner. | disseminating information in a completely topology independent and | |||
| decentralized manner. | ||||
| In this document, we consider how NC can be applied to the CCNx/NDN | In this document, we consider how NC can be applied to the CCNx/NDN | |||
| architecture and describe the technical considerations and potential | architecture and describe the technical considerations and potential | |||
| challenges for making CCNx/NDN-based communications better using the | challenges for making CCNx/NDN-based communications better using the | |||
| NC technology. It should be noted that the presentation of specific | NC technology. It should be noted that the presentation of specific | |||
| solutions (e.g., NC optimization methods) for enhancing CCNx/NDN | solutions (e.g., NC optimization methods) for enhancing CCNx/NDN | |||
| performance metrics by exploiting NC is outside the scope of this | performance metrics by exploiting NC is outside the scope of this | |||
| document. | document. | |||
| This document represents the collaborative work and consensus of the | This document represents the collaborative work and consensus of the | |||
| Coding for Efficient Network Communications Research Group (NWCRG) | Coding for Efficient Network Communications Research Group (NWCRG) | |||
| and the Information-Centric Networking Research Group (ICNRG). It is | and the Information-Centric Networking Research Group (ICNRG). It is | |||
| not an IETF product and is not a standard. | not an IETF product and is not a standard. | |||
| 2. Terminology | 2. Terminology | |||
| This section provides the terminology definitions related to NC and | This section provides the terms related to NC and CCNx/NDN used in | |||
| CCNx/NDN used in this document. | this document. | |||
| 2.1. Definitions related to NC | 2.1. Definitions related to NC | |||
| The terminologies regarding NC used in this document are defined as | The terms regarding NC used in this document are defined as follows. | |||
| follows. These are aligned with RFCs produced by the FEC Framework | These are aligned with RFCs produced by the FEC Framework (FECFRAME) | |||
| (FECFRAME) IETF Working Groups as well as IRTF Coding for Efficient | IETF Working Groups as well as IRTF Coding for Efficient Network | |||
| Network Communications Research Group (NWCRG)[21]. | Communications Research Group (NWCRG)[22]. | |||
| The definitions of the general terminologies used are as follows: | ||||
| o Source Packet: A packet originating from the source that | o Source Packet: A packet originating from the source that | |||
| contributes to one or more source symbols. The source symbol is a | contributes to one or more source symbols. The source symbol is a | |||
| unit of data originating from the source that is used as input to | unit of data originating from the source that is used as input to | |||
| encoding operations. For instance, a real-time transport protocol | encoding operations. For instance, a real-time transport protocol | |||
| (RTP) packet as a whole can constitute a source symbol. In other | (RTP) packet as a whole can constitute a source symbol. In other | |||
| situations (e.g., to address variable size packets), a single RTP | situations (e.g., to address variable size packets), a single RTP | |||
| packet may contribute to various source symbols. | packet may contribute to various source symbols. | |||
| o Coded Packet, or Repair Packet: A packet containing one or more | o Coded Packet, or Repair Packet: A packet containing one or more | |||
| skipping to change at page 5, line 5 ¶ | skipping to change at page 5, line 5 ¶ | |||
| rank of the linear system (also called degrees of freedom) at a | rank of the linear system (also called degrees of freedom) at a | |||
| receiver. | receiver. | |||
| o Encoding versus Re-coding versus Decoding: Encoding is an | o Encoding versus Re-coding versus Decoding: Encoding is an | |||
| operation that takes source symbols as input and produces encoding | operation that takes source symbols as input and produces encoding | |||
| symbols (source or coded symbols) as output. Re-coding is an | symbols (source or coded symbols) as output. Re-coding is an | |||
| operation that takes encoding symbols as input and produces | operation that takes encoding symbols as input and produces | |||
| encoding symbols as output. Decoding is an operation takes | encoding symbols as output. Decoding is an operation takes | |||
| encoding symbols as input and produces source symbols as output. | encoding symbols as input and produces source symbols as output. | |||
| The terminology definitions regarding coding types are as follows: | The terms regarding coding types are defined as follows: | |||
| o Random Linear Coding (RLC): Particular case of linear coding using | o Random Linear Coding (RLC): A particular form of linear coding | |||
| a set of random coding coefficients. Linear coding linearly | using a set of random coding coefficients. Linear coding linearly | |||
| combines a set of input source and/or coded symbols using a given | combines a set of input source and/or coded symbols using a given | |||
| set of coefficients and resulting in a coded symbol. Many linear | set of coefficients and resulting in a coded symbol. Many linear | |||
| codes exist that differ from the way coding coefficients are drawn | codes exist that differ from the way coding coefficients are drawn | |||
| from a finite field of a given size. | from a finite field of a given size. | |||
| o Block Coding: Coding technique wherein the input flow(s) must be | o Block Coding: A coding technique wherein the input flow(s) must be | |||
| first segmented into a sequence of blocks; encoding and decoding | first segmented into a sequence of blocks; encoding and decoding | |||
| are performed independently on a per-block basis. | are performed independently on a per-block basis. | |||
| o Sliding Window Coding or Convolutional Coding: General class of | o Sliding Window Coding or Convolutional Coding: A general class of | |||
| coding techniques that rely on a sliding encoding window. | coding techniques that rely on a sliding encoding window. | |||
| Encoding window is a set of source (and coded in the case of re- | Encoding window is a set of source (and coded in the case of re- | |||
| coding) symbols used as input to the coding operations. The set | coding) symbols used as input to the coding operations. The set | |||
| of symbols change over time, as the encoding window slides over | of symbols change over time, as the encoding window slides over | |||
| the input flow(s). This is an alternative solution to block | the input flow(s). This is an alternative solution to block | |||
| coding. | coding. | |||
| o Fixed or Elastic Sliding Window Coding: Coding technique that | o Fixed or Elastic Sliding Window Coding: A coding technique that | |||
| generates coded symbol(s) on the fly, from the set of source | generates coded symbol(s) on the fly, from the set of source | |||
| symbols present in the sliding encoding window at that time, | symbols present in the sliding encoding window at that time, | |||
| usually by using linear coding. The sliding window may be either | usually by using linear coding. The sliding window may be either | |||
| of fixed size or of variable size over the time (also known as | of fixed size or of variable size over the time (also known as | |||
| "Elastic Sliding Window"). For instance, the size may depend on | "Elastic Sliding Window"). For instance, the size may depend on | |||
| acknowledgments sent by the receiver(s) for a particular source | acknowledgments sent by the receiver(s) for a particular source | |||
| symbol or source packet (received, decoded, or decodable). | symbol or source packet (received, decoded, or decodable). | |||
| The terminology definitions regarding low-level coding aspects are as | The terms regarding low-level coding aspects are defined as follows: | |||
| follows: | ||||
| o Rank of the Linear System or Degrees of Freedom: At a receiver, | o Rank of the Linear System or Degrees of Freedom: At a receiver, | |||
| the number of linearly independent equations of the linear system. | the number of linearly independent equations of the linear system. | |||
| It is also known as "Degrees of Freedom". The system may be of | It is also known as "Degrees of Freedom". The system may be of | |||
| "full rank," wherein decoding is possible, or "partial rank", | "full rank," wherein decoding is possible, or "partial rank", | |||
| wherein only partial decoding is possible. | wherein only partial decoding is possible. | |||
| o Generation, or Block: With block codes, the set of source symbols | o Generation, or Block: With block codes, the set of source symbols | |||
| of the input flow(s) that are logically grouped into a block, | of the input flow(s) that are logically grouped into a block, | |||
| before doing encoding. | before doing encoding. | |||
| skipping to change at page 6, line 19 ¶ | skipping to change at page 6, line 19 ¶ | |||
| o Coding Coefficient: With linear coding, this is a coefficient in a | o Coding Coefficient: With linear coding, this is a coefficient in a | |||
| certain finite field. This coefficient may be chosen in different | certain finite field. This coefficient may be chosen in different | |||
| ways: for instance, randomly, in a predefined table, or using a | ways: for instance, randomly, in a predefined table, or using a | |||
| predefined algorithm plus a seed. | predefined algorithm plus a seed. | |||
| o Coding Vector: A set of coding coefficients used to generate a | o Coding Vector: A set of coding coefficients used to generate a | |||
| certain coded symbol through linear coding. | certain coded symbol through linear coding. | |||
| o Finite Field: Finite fields, used in linear codes, have the | o Finite Field: Finite fields, used in linear codes, have the | |||
| desired property of having all elements (except zero) invertible | desired property of having all elements (except zero) invertible | |||
| for + and * and all operations over any elements do not result in | for + and * and no operation over any elements can result in an | |||
| an overflow or underflow. Examples of finite fields are prime | overflow or underflow. Examples of finite fields are prime fields | |||
| fields {0..p^m-1}, where p is prime. Most used fields use p=2 and | {0..p^m-1}, where p is prime. Most used fields use p=2 and are | |||
| are called binary extension fields {0..2^m-1}, where m often | called binary extension fields {0..2^m-1}, where m often equals 1, | |||
| equals 1, 4 or 8 for practical reasons. | 4 or 8 for practical reasons. | |||
| o Finite Field size: The number of elements in a finite field. For | o Finite Field size: The number of elements in a finite field. For | |||
| example the binary extension field {0..2^m-1} has size q=2^m. | example the binary extension field {0..2^m-1} has size q=2^m. | |||
| 2.2. Definitions related to CCNx/NDN | 2.2. Definitions related to CCNx/NDN | |||
| The terminologies regarding CCNx/NDN used in this document are | The terminologies regarding CCNx/NDN used in this document are | |||
| defined below. They are consistent with the RFCs produced by the | defined in RFC8793 [17] produced by ICNRG. They are consistent with | |||
| Information-Centric Networking (ICNRG) IRTF Working Group[1] [17]. | the relevant documents ([1][18]). | |||
| o Interest: A message requesting a content object with a matching | ||||
| name and other optional selectors for selecting from multiple | ||||
| objects having the same name prefix. | ||||
| o Content Object: A unit of content data delivered through the CCNx/ | ||||
| NDN network. | ||||
| o Consumer: A node requesting a name (i.e., content). It initiates | ||||
| the name-based communication by sending an interest packet. | ||||
| o Publisher: A node that provides content. It originally creates or | ||||
| owns a content. | ||||
| o Router: An intermediate node between the consumer and producer | ||||
| that facilitates the name-based communication by forwarding | ||||
| interest and data packets. | ||||
| o Forwarding Information Base (FIB): A lookup table in a content | ||||
| router containing the name prefix and corresponding destination | ||||
| interface for forwarding the interest packets. | ||||
| o Pending Interest Table (PIT): A lookup table populated by the | ||||
| interest packets containing the name prefix of the requested data, | ||||
| and the outgoing interface used to forward the received data | ||||
| packets. | ||||
| o Content Store (CS): A storage space for a router to cache content | ||||
| objects. | ||||
| 3. CCNx/NDN Basics | 3. CCNx/NDN Basics | |||
| We briefly explain the key concepts of CCNx/NDN. Both protocols are | We briefly explain the key concepts of CCNx/NDN. Both protocols are | |||
| similar in principle, and also different in terms of some | similar in principle, but differ in some architecture and protocol | |||
| implementation choices. | choices. | |||
| In a CCNx network, there are two types of packets at the network | In a CCNx network, there are two types of packets at the network | |||
| level: interest and data. The consumer requests a content object by | level: interest and data packet (defined in Section 3.4 of [17]). | |||
| sending an interest that carries the name of the data. One | The term of content object, which means a unit of content data, is an | |||
| difference to note here between CCNx and NDN is that in CCNx [17], | alias to data packet [17]. The ICN consumer (defined in Section 3.2 | |||
| the interest is required to carry a full name, while in NDN [19], it | of [17]) requests a content object by sending an interest that | |||
| may carry a name prefix (and receive in return any data with a name | carries the name of the data. One difference to note here between | |||
| matching this prefix). | CCNx and NDN is that in CCNx [18], the interest is required to carry | |||
| a full name, while in NDN [20], it may carry a name prefix (and | ||||
| receive in return any data with a name matching this prefix). | ||||
| Once a router receives an interest, it performs a series of lookups: | Once an ICN forwarder (defined in Section 3.2 of [17]) receives an | |||
| first it checks if it has a copy of the requested content object | interest, it performs a series of lookups: first it checks if it has | |||
| available in the Content Store (CS). If it does, it returns the | a copy of the requested content object available in the Content Store | |||
| (CS) (defined in Section 3.3 of [17]). If it does, it returns the | ||||
| data, and the transaction is considered to have been successfully | data, and the transaction is considered to have been successfully | |||
| completed. | completed. | |||
| If it does not have a copy of the requested content object in the CS, | If it does not have a copy of the requested content object in the CS, | |||
| it performs a lookup of the PIT to check if there is already an | it performs a lookup of the Pending Interest Table (PIT) (defined in | |||
| outgoing interest for the same content object. If there is no such | Section 3.3 of [17]) to check if there is already an outgoing | |||
| interest, then it creates an entry in the PIT that lists the name | interest for the same content object. If there is no such interest, | |||
| included in the interest, and the interfaces from which it received | then it creates an entry in the PIT that lists the name included in | |||
| the interest. This is later used to send the content object back, as | the interest, and the interfaces from which it received the interest. | |||
| interest packets do not carry a source field that identifies the | This is later used to send the content object back, as interest | |||
| consumer. If there is already a PIT entry for this name, it is | packets do not carry a source field that identifies the consumer. If | |||
| updated with the incoming interface of this new interest, and the | there is already a PIT entry for this name, it is updated with the | |||
| interest is discarded. | incoming interface of this new interest, and the interest is | |||
| discarded. | ||||
| After the PIT lookup, the interest undergoes a FIB lookup for | After the PIT lookup, the interest undergoes a Forwarding Information | |||
| selecting an outgoing interface. The FIB lists name prefixes and | Base (FIB) (defined in Section 3.3 of [17]) lookup for selecting an | |||
| their corresponding forwarding interfaces in order to send the | outgoing interface. The FIB lists name prefixes and their | |||
| interface towards a router that possesses a copy of the requested | corresponding forwarding interfaces in order to send the interest | |||
| data. | towards a forwarder that possesses a copy of the requested data. | |||
| Once a copy of the data is retrieved, it is sent back to the | Once a copy of the data is retrieved, it is sent back to the | |||
| consumer(s) using the trail of PIT entries; routers remove the PIT | consumer(s) using the trail of PIT entries; forwarders remove the PIT | |||
| state every time that an interest is satisfied, and may store the | state every time that an interest is satisfied, and may store the | |||
| data in their CS. | data in their CS. | |||
| Data packets carry some information for validating the data, and in | Data packets carry some information for validating the data, and in | |||
| particular, that the data is indeed that which corresponds to the | particular, that the data is indeed that which corresponds to the | |||
| name. This is necessary because authentication of the object is | name. This is necessary because authentication of the object is | |||
| crucial in CCNx/NDN. However, this step is optional at routers in | crucial in CCNx/NDN. However, this step is optional at forwarders in | |||
| order to speed up the processing. | order to speed up the processing. | |||
| The key aspect of CCNx/NDN is that the consumer of the content does | The key aspect of CCNx/NDN is that the consumer of the content does | |||
| not establish a session with a specific server. Indeed, the router | not establish a session with a specific server. Indeed, the | |||
| or publisher that returns the content object is not aware of the | forwarder or producer (defined in Section 3.2 of [17]) that returns | |||
| network location of the consumer and the consumer is not aware of the | the content object is not aware of the network location of the | |||
| network location of the node that provides the content. This, in | consumer and the consumer is not aware of the network location of the | |||
| theory, allows the interests to follow different paths within a | node that provides the content. This, in theory, allows the | |||
| network or even to be sent over completely different networks. | interests to follow different paths within a network or even to be | |||
| sent over completely different networks. | ||||
| 4. NC Basics | 4. NC Basics | |||
| While the forwarding node simply relays received data packets in | While the forwarding node simply relays received data packets in | |||
| conventional IP communication networks, NC allows the node to combine | conventional IP communication networks, NC allows the node to combine | |||
| some data packets that are already received into one or several | some data packets that are already received into one or several | |||
| output packets to be sent. In this section, we simply describe the | output packets to be sent. In this section, we simply describe the | |||
| basic operations of NC. Herein, we focus on RLC in a block coding | basic operations of NC. Herein, we focus on RLC in a block coding | |||
| manner that is well known as a major coding technique. | manner that is well known as a major coding technique. | |||
| For simplicity, let us consider an example case of end-to-end coding | For simplicity, let us consider an example case of end-to-end coding | |||
| wherein a publisher and consumer perform encoding and decoding for a | wherein a producer and consumer respectively perform encoding and | |||
| content. This end-to-end coding is regarded as a special case of NC. | decoding for a content object. This end-to-end coding is regarded as | |||
| The publisher splits the content into several blocks called | a special case of NC. The producer splits the content into several | |||
| generations. Encoding and decoding are performed independently on a | blocks called generations. Encoding and decoding are performed | |||
| per-block (per-generation) basis. Let us assume that each generation | independently on a per-block (per-generation) basis. Let us assume | |||
| consists of K original source packets of the same size. When the | that each generation consists of K original source packets of the | |||
| packets do not have the same size, zero padding is added. In order | same size. When the packets do not have the same size, zero padding | |||
| to generate one coded packet within a certain generation, the | is added. In order to generate one coded packet within a certain | |||
| publisher linearly combines K of the original source packets, where | generation, the producer linearly combines K of the original source | |||
| additions and multiplications are performed using a coding vector | packets, where additions and multiplications are performed using a | |||
| consisting of K coding coefficients that are randomly selected in a | coding vector consisting of K coding coefficients that are randomly | |||
| certain finite field. The publisher may send some or all of the | selected in a certain finite field. The producer may respond to | |||
| source packets as well as coded packets in the content flow (called | interests to send the corresponding source packets and coded packets | |||
| systematic coding), where the coded packets (also called repair | in the content flow (called systematic coding), where the coded | |||
| packets) are typically used for repairing lost source packets. | packets (also called repair packets) are typically used for repairing | |||
| lost source packets. | ||||
| Coded packets can also be used for performing encoding. If the | Coded packets can also be used for performing encoding. If the | |||
| forwarding nodes know each coding vector and generation identifier of | forwarding nodes know each coding vector and generation identifier of | |||
| the received coded packets, they may perform an encoding operation | the received coded packets, they may perform an encoding operation | |||
| (called re-coding), which is the most prominent operation in NC. | (called re-coding), which is the most distinctie feature of NC | |||
| compared to other coding techniques. | ||||
| At the consumer, decoding is performed by solving a set of linear | At the consumer, decoding is performed by solving a set of linear | |||
| equations that are represented by the coding vectors of the received | equations that are represented by the coding vectors of the received | |||
| coded packets within a certain generation. In order to obtain all | coded packets within a certain generation. In order to obtain all | |||
| the source packets, the consumer requires K linearly independent | the source packets, the consumer requires K linearly independent | |||
| equations. In other words, the consumer must receive at least K | equations. In other words, the consumer must receive at least K | |||
| linearly independent data packets (called innovative packets). As | linearly independent data packets (called innovative packets). As | |||
| receiving a linearly dependent data packet is not useful for | receiving a linearly dependent data packet is not useful for | |||
| decoding, re-coding should generate and provide innovative packets. | decoding, re-coding should generate and provide innovative packets. | |||
| One of major benefits of RLC is that even for a small-sized finite | One of major benefits of RLC is that even for a small-sized finite | |||
| field (e.g., q=2^8), the probability of generating linearly dependent | field (e.g., q=2^8), the probability of generating linearly dependent | |||
| packets is negligible [31]. | packets is negligible [33]. | |||
| 5. Advantages of NC and CCNx/NDN | 5. Advantages of NC and CCNx/NDN | |||
| NC and CCNx/NDN can contribute to effective large-scale content/ | Combining NC and CCNx/NDN can contribute to effective large-scale | |||
| information dissemination. They both provide similar benefits such | content/information dissemination. They individually provide similar | |||
| as throughput/capacity gain and robustness enhancement. The | benefits such as throughput/capacity gain and robustness enhancement. | |||
| difference between their approaches is that, the former considers | The difference between their approaches is that, the former considers | |||
| content flow as algebraic information that is to be combined [20], | content flow as algebraic information that is to be combined [21], | |||
| while the latter focuses on the content/information itself at the | while the latter focuses on the content/information itself at the | |||
| networking layer. Because these approaches are complementary and | networking layer. Because these approaches are complementary and | |||
| their combination would be advantageous, it is natural to combine | their combination would be advantageous, it is natural to combine | |||
| them. | them. | |||
| The name-based communication in CCNx/NDN enables consumers to obtain | The name-based communication in CCNx/NDN enables consumers to obtain | |||
| requested content objects without establishing and maintaining | requested content objects without establishing and maintaining end- | |||
| continuous end-to-end communication channels between nodes. This | to-end communication channels between nodes. This feature | |||
| feature facilitates the exploitation of the in-network cache and | facilitates the exploitation of the in-network cache and multipath/ | |||
| multipath/multisource retrieval and also supports consumer mobility | multisource retrieval and also supports consumer mobility without the | |||
| without the need for updating the location information/identifier | need for updating the location information/identifier during handover | |||
| during handover [16]. Furthermore, the name-based communication | [16]. Furthermore, the name-based communication intrinsically | |||
| intrinsically supports multicast communication because identical | supports multicast communication because identical interests are | |||
| interests are aggregated at the routers. | aggregated at the forwarders. | |||
| CCNx/NDN does not provide reliable and robust content dissemination | NC can enable the CCNx/NDN transport system to effectively distribute | |||
| by default. However, NC can enable the CCNx/NDN transport system to | and cache the data associated with multipath data retrieval [9]. | |||
| effectively distribute and cache the data associated with multipath | Exploiting multipath data retrieval and in-network caching with NC | |||
| data retrieval [9]. Furthermore, NC can contribute to improving both | contributes to not only improving the cache hit rate but also | |||
| the caching performance and cache privacy that CCNx/NDN newly | expanding the anonymity set of each consumer (the set of potential | |||
| introduces at the networking layer [29]. Others also have introduced | routers that can serve a given consumer) [31]. The expansion makes | |||
| some use cases of the application of NC in CCNx/NDN, such as the | it difficult for adversaries to infer the content consumed by others, | |||
| cases of content dissemination with in-network caching [10] [13] | and thus contributes to improving cache privacy. Others also have | |||
| [14], seamless consumer mobility [11] [35], and low-latency low-loss | introduced some use cases of the application of NC in CCNx/NDN, such | |||
| video streaming [15]. In this context, it is well worth considering | as the cases of content dissemination with in-network caching [10] | |||
| NC integration in CCNx/NDN. | [13] [14], seamless consumer mobility [11] [37], and low-latency low- | |||
| loss video streaming [15]. In this context, it is well worth | ||||
| considering NC integration in CCNx/NDN. | ||||
| 6. Technical Considerations | 6. Technical Considerations | |||
| This section presents the considerations for CCNx/NDN with NC in | This section presents the considerations for CCNx/NDN with NC in | |||
| terms of network architecture and protocol. This document focuses on | terms of network architecture and protocol. This document focuses on | |||
| NC in a block coding manner. | NC when employed in a block coding manner. | |||
| 6.1. Content Naming | 6.1. Content Naming | |||
| Naming content objects is as important for CCNx/NDN as naming hosts | Naming content objects is as important for CCNx/NDN as naming hosts | |||
| is in the current-day Internet [23]. In this section, two possible | is in the current-day Internet [25]. In this section, two possible | |||
| naming schemes are presented. | naming schemes are presented. | |||
| Each coded packet may have a unique name as content objects (original | Each coded packet may have a unique name as content objects (original | |||
| source packets) has in CCNx/NDN, as PIT/CS operations typically | source packets) has in CCNx/NDN, as PIT/CS operations typically | |||
| require a unique name for identifying the coded packet. As a method | require a unique name for identifying the coded packet. As a method | |||
| of naming a coded packet, the coding vector and the identifier of the | of naming a coded packet, the coding vector and the identifier of the | |||
| generation (also called block) can be used as a part of the content | generation (also called block) can be used as a part of the content | |||
| object name. As in [10], when the generation ID is "g-id", | object name. As in [10], when the generation ID is "g-id", | |||
| generation size is 4, and coding vector is (1,0,0,0), the name could | generation size is 4, and coding vector is (1,0,0,0), the name could | |||
| be /CCNx.com/video-A/g-id/1000. Some other identifiers and/or | be /CCNx.com/video-A/g-id/1000. Some other identifiers and/or | |||
| parameters related to the encoding scheme can also be used as the | parameters related to the encoding scheme can also be used as name | |||
| name components. For instance, the encoding ID specifying the coding | components. For instance, the encoding ID specifying the coding | |||
| scheme may be used with "enc-id" such as /CCNx.com/video-A/enc-id/ | scheme may be used with "enc-id" such as /CCNx.com/video-A/enc-id/ | |||
| g-id/1000, as defined in the FEC Framework (FECFRAME) [25]. This | g-id/1000, as defined in the FEC Framework (FECFRAME) [27]. This | |||
| naming scheme is simple and can support the delivery of coded packets | naming scheme is simple and can support the delivery of coded packets | |||
| with exactly the same operations in the PIT/CS as those for the | with exactly the same operations in the PIT/CS as those for the | |||
| content objects. | content objects. | |||
| If a content-naming schema such as the one presented above is used, | If a content-naming schema such as the one presented above is used, | |||
| an interest requesting a coded packet may have the full name | an interest requesting a coded packet may have the full name | |||
| including a generation id and coding vector (/CCNx.com/video-A/ | including a generation id and coding vector (/CCNx.com/video-A/ | |||
| g-id/1000) or only the name prefix including only a generation id | g-id/1000) or only the name prefix including only a generation id | |||
| (/CCNx.com/video-A/g-id). In the former case, exact name matching to | (/CCNx.com/video-A/g-id). In the former case, exact name matching to | |||
| the PIT is simply performed at data forwarders (as in CCNx). The | the PIT is simply performed at data forwarders (as in CCNx). The | |||
| consumer is enabled to specify and retrieval an innovative packet | consumer is enabled to specify and retrieve an innovative packet | |||
| necessary for the consumer. This could shift the generation of the | necessary for the consumer to decode successfully. This could shift | |||
| coding vector from the data forwarder onto the consumer. | the generation of the coding vector from the data forwarder onto the | |||
| consumer. | ||||
| In the latter case, partial name matching is required at the data | In the latter case, partial name matching is required at the data | |||
| forwarders (as in the case of NDN). As the interest with only the | forwarders (as in the case of NDN). As the interest with only the | |||
| prefix name matches any coded packet with the generation ID, the | prefix name matches any coded packet with the generation ID, the | |||
| consumer could immediately obtain an coded packet from a nearby CS | consumer could immediately obtain an coded packet from a nearby CS | |||
| (in-network cache) without knowing the coding vectors of the cached | (in-network cache) without knowing the coding vectors of the cached | |||
| coded packets in advance. In the case wherein coded packets in | coded packets in advance. In the case wherein coded packets in | |||
| transit are modified by in-network re-coding performed at routers, | transit are modified by in-network re-coding performed at forwarders, | |||
| the consumer could also receive the modified coded packets. However, | the consumer could also receive the modified coded packets. However, | |||
| in contrast to the former case, the consumer may fail to obtain | in contrast to the former case, the consumer may fail to obtain | |||
| sufficient degrees of freedom (see Section 6.2.3). To address this | sufficient degrees of freedom (see Section 6.2.3). To address this | |||
| issue, a new TLV type of interest message may be required for | issue, a new TLV type in an interest message may be required for | |||
| specifying further coding information in order to limit the coded | specifying further coding information in order to limit the coded | |||
| packets to be received. For instance, this is enabled by specifying | packets to be received. For instance, this is enabled by specifying | |||
| the coding vectors of innovative packets for the consumer (also | the coding vectors of innovative packets for the consumer (also | |||
| called decoding matrix) as in [9]. This extension may incur an | called decoding matrix) as in [9]. This extension may incur an | |||
| interest packet of significantly increased size, and it may thus be | interest packet of significantly increased size, and it may thus be | |||
| useful to use compression techniques for coding vectors [26] [27]. | useful to use compression techniques for coding vectors [28] [29]. | |||
| Without such coding information provided by the interest, the | Without such coding information provided by the interest, the | |||
| forwarder would be required to maintain some records regarding the | forwarder would be required to maintain some records regarding the | |||
| interest packets that were satisfied previously (See Section 6.2.3). | interest packets that were satisfied previously (See Section 6.2.3). | |||
| A coded packet may have a name that indicates that it is a coded | A coded packet may have a name that indicates that it is a coded | |||
| packet, and move the coding information into a metadata field in the | packet, and move the coding information into a metadata field in the | |||
| payload (i.e., the name includes the data type, source or coded | payload (i.e., the name includes the data type, source or coded | |||
| packet). This would not be beneficial for applications or services | packet). This would not be beneficial for applications or services | |||
| that may not need to understand the packet payload. Owing to the | that may not need to understand the packet payload. Owing to the | |||
| possibility that multiple coded packets may have the same name, some | possibility that multiple coded packets may have the same name, some | |||
| mechanism is required for the consumer to obtain innovative packets. | mechanism is required for the consumer to obtain innovative packets. | |||
| As described in Section 6.3, a mechanism for managing the multiple | As described in Section 6.3, a mechanism for managing the multiple | |||
| innovative packets in the CS would also be required. In addition, | innovative packets in the CS would also be required. In addition, | |||
| extra computational overhead would be incurred when the payload is | extra computational overhead would be incurred when the payload is | |||
| being encrypted. | being encrypted. | |||
| 6.2. Transport | 6.2. Transport | |||
| The pull-based request--response feature of CCNx/NDN is a fundamental | The pull-based request-response feature of CCNx/NDN is a fundamental | |||
| principle of its transport layer; one interest retrieves at most one | principle of its transport layer; one interest retrieves at most one | |||
| data packet. It is believed that it is important that this rule not | data packet. This property prevents consumer or forwarder to inject | |||
| be violated, as it would open denial-of -service (Dos) attacks, and | large amounts of unrequested data into the network. It is believed | |||
| thus, the following basic operation should be considered for applying | that it is important that this rule not be violated, as 1) it would | |||
| NC to CCNx/NDN. Nevertheless, such security considerations should be | open denial-of-service (DoS) attacks, 2) it invalidates existing | |||
| congestion control approaches following this rule, and 3) it would | ||||
| reduce the efficiency of existing consumer mobility approaches. | ||||
| Thus, the following basic operation should be considered for applying | ||||
| NC to CCNx/NDN. Nevertheless, such security considerations must be | ||||
| addressed if this rule were to be violated. | addressed if this rule were to be violated. | |||
| 6.2.1. Scope of NC | 6.2.1. Scope of NC | |||
| It should be discussed whether data forwarder can perform in-network | An open question is whether data forwarder can perform in-network re- | |||
| re-coding with data packets that are being received in transit, or if | coding with data packets that are being received in transit, or if | |||
| only the data that matches an interest can be subject to NC | only the data that matches an interest can be subject to NC | |||
| operations. In the latter case, encoding or re-coding is performed | operations. In the latter case, encoding or re-coding is performed | |||
| to generate the coded packet at any forwarder that is able to respond | to generate the coded packet at any forwarder that is able to respond | |||
| to the interest. This could occur when each coded packet has a | to the interest. This could occur when each coded packet has a | |||
| unique name and interest has the full name. On the other hand, if | unique name and interest has the full name. On the other hand, if | |||
| interest has a partial name without any coding vector information or | interest has a partial name without any coding vector information or | |||
| coded packets have a same name, the former case may occur; re-coding | coded packets have a same name, the former case may occur; re-coding | |||
| occurs anywhere in the network where it is possible to modify the | occurs anywhere in the network where it is possible to modify the | |||
| received coded packet and forward it. As CCNx/NDN comprises | received coded packet and forward it. As CCNx/NDN comprises | |||
| mechanisms for ensuring the integrity of the data during transfer, | mechanisms for ensuring the integrity of the data during transfer, | |||
| in-network re-coding introduces complexities in the network that | in-network re-coding introduces complexities in the network that | |||
| would require the consideration of the integrity mechanisms to still | needs consideration for the integrity mechanisms to still work. | |||
| work. Similarly, in-network caching of coded packets at routers may | Similarly, in-network caching of coded packets at forwarders may be | |||
| be valuable; however, the routers would require some mechanisms to | valuable; however, the forwarders would require some mechanisms to | |||
| validate the coded packets (see Section 8). | validate the coded packets (see Section 8). | |||
| 6.2.2. Consumer Operation | 6.2.2. Consumer Operation | |||
| To obtain NC benefits (possibly associated with in-network caching), | To obtain NC benefits (possibly associated with in-network caching), | |||
| the consumer is required to issue interests that direct the router | the consumer is required to issue interests that direct the forwarder | |||
| (or publisher) to forward innovative packets if available. When | (or producer) to respond with innovative packets if available. In | |||
| issuing an interest specifying a unique name with g-id and the coding | the case where each coded packet may have a unique name (as described | |||
| vector for a coded packet, the consumer could appropriately receive | in Section 6.1), by issuing an interest specifying a unique name with | |||
| an innovative packet if it is available at some forwarders. However, | g-id and the coding vector for a coded packet, the consumer could | |||
| the consumer is required to know the naming structure (through a | appropriately receive an innovative packet if it is available at some | |||
| specific name resolution scheme for instance) in order to specify the | forwarders. | |||
| exact name of the coded packet to be retrieved. In this end-to-end | ||||
| coding case, if the consumer wants to adjust some coding parameters | In order to specify the exact name of the coded packet to be | |||
| at the publisher, some specific scheme would be required to be used. | retrieved, the consumer is required to know the valid naming scheme. | |||
| From a practical viewpoint, it is desirable for the consumer | ||||
| application to automatically construct the right name components | ||||
| without depending on any application specifications. To this end, | ||||
| the consumer application may retrieve and refer to a manifest [1] | ||||
| that enumerates the content objects including coded packets, or may | ||||
| use some coding scheme specifier as a name component to construct the | ||||
| name components of interests to request innovative packets. | ||||
| Conversely, the consumer without decoding capability (e.g., specific | Conversely, the consumer without decoding capability (e.g., specific | |||
| sensor node) may want to receive only the source packets. As | sensor node) may want to receive only the source packets. As | |||
| described in Section 6.1, because the coded packet can have a name | described in Section 6.1, because the coded packet can have a name | |||
| that is explicitly different from source packets, issuing interests | that is explicitly different from source packets, issuing interests | |||
| for retrieving source packets is possible. In NDN, if the interest | for retrieving source packets is possible. | |||
| has only the name prefix, as in the case of /NDN.com/file-A, without | ||||
| any selectors, a forwarder may return a matching coded packet. | ||||
| 6.2.3. Router Operation | 6.2.3. Forwarder Operation | |||
| If the router constantly responds to the incoming interests by | If the forwarder constantly responds to the incoming interests by | |||
| returning non-innovative packets, the consumer(s) cannot decode and | returning non-innovative packets, the consumer(s) cannot decode and | |||
| obtain the source packets for all time. This issue could happen when | obtain the source packets for all time. This issue could happen when | |||
| 1) incoming interests for coded packets do not specify some coding | 1) incoming interests for coded packets do not specify some coding | |||
| parameters such as the coding vectors to be used, and 2) the router | parameters such as the coding vectors to be used, and 2) the | |||
| does not have a sufficient number of linearly independent source or | forwarder does not have a sufficient number of linearly independent | |||
| coded packets (possibly in the CS) to use for re-coding. In this | source or coded packets (possibly in the CS) to use for re-coding. | |||
| case, the router is required to determine whether or not it can | In this case, the forwarder is required to determine whether or not | |||
| generate innovative packets to be forwarded to the interface(s) at | it can generate innovative packets to be forwarded to the | |||
| which the interests arrived. An approach to deal with this issue is | interface(s) at which the interests arrived. An approach to deal | |||
| that the router maintains a tally of the interests for a specific | with this issue is that the forwarder maintains a tally of the | |||
| name, generation ID and the incoming interface(s), in order to record | interests for a specific name, generation ID and the incoming | |||
| how many degrees of freedom have already been provided [10]. As such | interface(s), in order to record how many degrees of freedom have | |||
| a scheme requires state management (and potentially timers) in | already been provided [10]. As such a scheme requires state | |||
| routers, scalability and practicality should be considered. In | management (and potentially timers) in forwarders, scalability and | |||
| addition, some transport mechanism of in-network loss detection and | practicality must be considered. In addition, some transport | |||
| recovery [15] [35] at router as well as a consumer-driven mechanism | mechanism for in-network loss detection and recovery [15] [37] at | |||
| could be indispensable for enabling fast loss recovery and enhancing | forwarder as well as a consumer-driven mechanism could be | |||
| NC gains. After determining that an innovative packet cannot be | indispensable for enabling fast loss recovery and realising NC gains. | |||
| provided, according to the FIB, the router relays the received | If a forwarder cannot either return a matching innovative packet from | |||
| interests to the upstream router(s) or publisher to obtain innovative | its local content store, nor produce on-the-fly a recoded packet that | |||
| packets. In this context, to retrieve innovative packet effectively | is innovative, it is important that the forwarder not simply return a | |||
| and quickly, an appropriate setting of the FIB and efficient interest | non-innovative packet but instead do a forwarding lookup in its FIB | |||
| forwarding strategies should also be considered. | and forward the Interest toward the producer or upstream forwarder | |||
| that can provide an innovative packet. In this context, to retrieve | ||||
| innovative packet effectively and quickly, an appropriate setting of | ||||
| the FIB and efficient interest forwarding strategies should also be | ||||
| considered. | ||||
| In another possible case, when receiving interests only for source | In another possible case, when receiving interests only for source | |||
| packets, the router may attempt to decode and obtain all the source | packets, the forwarder may attempt to decode and obtain all the | |||
| packets and store them (if the full cache capacity are available), | source packets and store them (if the full cache capacity are | |||
| thus enabling a faster response to the interests. As re-coding or | available), thus enabling a faster response to the interests. As re- | |||
| decoding results in an extra computational overhead, the router is | coding or decoding results in an extra computational overhead, the | |||
| required to determine how to respond to received interests according | forwarder is required to determine how to respond to received | |||
| to the use case (e.g., a delay-sensitive or delay-tolerant | interests according to the use case (e.g., a delay-sensitive or | |||
| application) and the router situation, such as available cache space | delay-tolerant application) and the forwarder situation, such as | |||
| and computational capability. | available cache space and computational capability. | |||
| 6.2.4. Publisher Operation | 6.2.4. Producer Operation | |||
| Before performing NC for specified content in CCNx/NDN, the publisher | Before performing NC for specified content in CCNx/NDN, the producer | |||
| is responsible for splitting the overall content into small content | is responsible for splitting the overall content into small content | |||
| objects to avoid packet fragmentation that could cause unnecessary | objects to avoid packet fragmentation that could cause unnecessary | |||
| packet processing and degraded throughput. The size of the content | packet processing and degraded throughput. The size of the content | |||
| objects should be within the allowable packet size in order to avoid | objects should be within the allowable packet size in order to avoid | |||
| packet fragmentation in CCNx/NDN network. The publisher performs the | packet fragmentation in CCNx/NDN network. The producer performs the | |||
| encoding operation for a set of the small content objects, and the | encoding operation for a set of the small content objects, and the | |||
| naming process for the coded packets. | naming process for the coded packets. | |||
| If the producer takes the lead in determining the used coding vectors | If the producer takes the lead in determining what coding vectors to | |||
| and generating the coding packets, there exists two possible end-to- | use in generating the coding packets, there are three general | |||
| end coding cases; 1) consumers obtain the names of the coded packets | strategies for naming and producing the coded packets: | |||
| through a certain mechanism, and send the corresponding interests | ||||
| toward the publisher to obtain the coded packets that have already | 1. consumers themselves understand in detail the naming conventions | |||
| been generated at the publisher; and 2) the publisher determines the | used for coded packets and thereby can send the corresponding | |||
| coding vectors after receiving the interests specifying them. In the | interests toward the producer to obtain coded packets whose | |||
| former case, although the consumers cannot flexibly specify a coding | coding parameters have already been determined by the producer. | |||
| vector for generating the coded packet to obtain, the latency for | ||||
| obtaining the coded packet can be reduced as compared that in the | 2. the producer determines the coding vectors and generates the | |||
| latter case wherein additional NC operations are required to be | coded packets after receiving interests specifying the packets | |||
| performed after receiving the interests. The common benefit in such | the consumer wished to receive. | |||
| end-to-end coding cases is that if the publisher adds a signature on | ||||
| the coded packets, data validation becomes possible throughout as in | 3. The naming scheme for specifying the coding vectors and | |||
| the case of normal CCNx/NDN operations. According to the application | corresponding coded packets is explicitly represented via a | |||
| requirement for latency, such an NC operation strategy should be | "Manifest" (e.g., FLIC [24]) that can be obtained by the consumer | |||
| considered. | and used to select among the available coding vectors and their | |||
| corresponding packets, and thereby send the corresponding | ||||
| interests. | ||||
| In the first case, although the consumers cannot flexibly specify a | ||||
| coding vector for generating the coded packet to obtain, the latency | ||||
| for obtaining the coded packet is less than in the latter two cases. | ||||
| For the second case, there is a latency penalty for the additional NC | ||||
| operations performed after receiving the interests. For the third | ||||
| case, the coded packets to be included in the manifest must be pre- | ||||
| computed by the producer (since the manifest references coded packets | ||||
| by their hashes, not their names), but the producer can select which | ||||
| to include the manifest, and produce multiple manifests either in | ||||
| advance or on demand with different coding tradeoffs if so desired. | ||||
| A common benefit the first two approaches to end-to-end coding is | ||||
| that if the producer adds a signature on the coded packets, data | ||||
| validation becomes possible throughout (as is the case with CCNx/NDN | ||||
| operation in the absence of NC). The third approach of using a | ||||
| manifest trades off the additional latency incurred by the need to | ||||
| fetch the manifest against the efficiency of needing a signature only | ||||
| on the manifest and not on each individual coded packet. | ||||
| 6.2.5. Backward Compatibility | 6.2.5. Backward Compatibility | |||
| NC operations should be applied in addition to the regular network | NC operations should be applied in addition to the regular network | |||
| behavior. Hence, nodes should be able to not support network coding | behavior. Hence, nodes should be able to not support network coding | |||
| (not only in forwarding the packets, but also in the caching | (not only in forwarding the packets, but also in the caching | |||
| mechanism). NC operations should function alongside regular network | mechanism). NC operations should function alongside regular network | |||
| operations. An NC framework should be compatible with a regular | operations. An NC framework should be compatible with a regular | |||
| framework in order to facilitate backward compatibility and smooth | framework in order to facilitate backward compatibility and smooth | |||
| migration from one framework to the other. | migration from one framework to the other. | |||
| 6.3. In-network Caching | 6.3. In-network Caching | |||
| Caching is a useful technique used for improving throughput and | Caching is a useful technique used for improving throughput and | |||
| latency in various applications. In-network caching in CCNx/NDN | latency in various applications. In-network caching in CCNx/NDN | |||
| essentially provides support at network level and is highly | essentially provides support at network level and is highly | |||
| beneficial owing to the involved exploitation of NC for enabling | beneficial owing to the involved exploitation of NC for enabling | |||
| effective multicast transmission [36], multipath data retrieval [10] | effective multicast transmission [38], multipath data retrieval [10] | |||
| [11], fast loss recovery [15]. However, there remain several issues | [11], fast loss recovery [15]. However, there remain several issues | |||
| to be considered. | to be considered. | |||
| There generally exist limitations in the CS capacity, and the caching | There generally exist limitations in the CS capacity, and the caching | |||
| policy affects the consumer's performances [28] [33] [34]. It is | policy affects the consumer's performance [30] [35] [36]. It is thus | |||
| thus crucial for routers to determine which content objects should be | crucial for forwarders to determine which content objects should be | |||
| cached and discarded. As delay-sensitive applications often do not | cached and which discarded. As delay-sensitive applications often do | |||
| require an in-network cache for a long period owing to their real- | not require an in-network cache for a long period owing to their | |||
| time constraints, routers have to know the necessity for caching | real-time constraints, forwarders have to know the necessity for | |||
| received content objects to save the caching volume. In CCNx, this | caching received content objects to save the caching volume. In | |||
| could be made possible by setting a Recommended Cache Time (RCT) in | CCNx, this could be made possible by setting a Recommended Cache Time | |||
| the optional header of the data packet at the publisher side. The | (RCT) in the optional header of the data packet at the producer side. | |||
| RCT serves as a guideline for the CS cache in determining how long to | The RCT serves as a guideline for the CS cache in determining how | |||
| retain the content object. When the RCT is set as zero, the router | long to retain the content object. When the RCT is set as zero, the | |||
| recognizes that caching the content object is meaningless. | forwarder recognizes that caching the content object is not useful. | |||
| Conversely, the router may cache it when the RCT has a greater value. | Conversely, the forwarder may cache it when the RCT has a greater | |||
| In NDN, the TLV type of FreshnessPeriod could be used. | value. In NDN, the TLV type of FreshnessPeriod could be used. | |||
| One key aspect of in-network caching is whether or not routers can | One key aspect of in-network caching is whether or not forwarders can | |||
| cache coded packets in their CS. They may be caching the coded | cache coded packets in their CS. They may be caching the coded | |||
| packets without having the ability to perform a validation of the | packets without having the ability to perform a validation of the | |||
| content objects. Therefore, the caching of the coded packets would | content objects. Therefore, the caching of the coded packets would | |||
| require some mechanism to validate the coded packets (see Section 8). | require some mechanism to validate the coded packets (see Section 8). | |||
| In the case wherein the coded packets have the same name, it would | In the case wherein the coded packets have the same name, it would | |||
| also require some mechanism to identify them. | also require some mechanism to identify them. | |||
| 6.4. Seamless Consumer Mobility | 6.4. Seamless Consumer Mobility | |||
| A key feature of CCNx/NDN is that it is sessionless, which enables | A key feature of CCNx/NDN is that it is sessionless, which enables | |||
| the consumer and router to send multiple interests to different | the consumer and forwarder to send multiple interests toward | |||
| copies of the content in parallel, by using multiple interfaces at | different copies of the content in parallel, by using multiple | |||
| the same time in an asynchronous manner. Through the multipath data | interfaces at the same time in an asynchronous manner. Through the | |||
| retrieval, the consumer could obtain the content from multiple copies | multipath data retrieval, the consumer could obtain the content from | |||
| that are distributed while using the aggregate capacity of multiple | multiple copies that are distributed while using the aggregate | |||
| interfaces used. For the link between the consumer and the multiple | capacity of multiple interfaces. For the link between the consumer | |||
| copies, the consumer can perform a certain rate adaptation mechanism | and the multiple copies, the consumer can perform a certain rate | |||
| for video streaming [11] or congestion control for content | adaptation mechanism for video streaming [11] or congestion control | |||
| acquisition [12]. | for content acquisition [12]. | |||
| NC adds a reliability layer network to CCNx in a distributed and | NC adds a reliability layer to CCNx in a distributed and asynchronous | |||
| asynchronous manner, because NC provides a mechanism for ensuring | manner, because NC provides a mechanism for ensuring that the | |||
| that the interests sent to multiple copies of the content in parallel | interests sent to multiple copies of the content in parallel retrieve | |||
| retrieve innovative packets, even in the case of packet losses on | innovative packets, even in the case of packet losses on some of the | |||
| some of the paths/networks to these copies. This obviously applies | paths/networks to these copies. This applies to consumer mobility | |||
| to consumer mobility events [11], wherein the consumer may connect | events [11], wherein the consumer could receive additional degrees of | |||
| between multiple access points (APs) before a consumer mobility event | freedom with any innovative packet if at least one available | |||
| (make-before-break handoff). In the case of such a consumer mobility | interface exists during the mobility event. An interest forwarding | |||
| event, the consumer is first connected to the previous AP, then to | strategy at the consumer (and possibly forwarder) for efficiently | |||
| both the previous and next APs, and then finally only to the next | obtaining innovative packets would be required for the consumer to | |||
| APs. With CCNx, the consumer only sends interests on the available | achieve seamless consumer mobility. | |||
| interfaces. By combining NC with CCNx/NDN, the requesting of coded | ||||
| packets ensures that during the phase wherein it is connected to the | ||||
| previous and the next APs at the same time, it would not receive | ||||
| duplicate data, but does not miss out any content either. The | ||||
| consumer would receive additional degrees of freedom with any | ||||
| innovative packet it receives on either interface. From this | ||||
| perspective, an interest forwarding strategy at the consumer (and | ||||
| possibly router) for efficiently obtaining innovative packets should | ||||
| be considered for the consumer to achieve seamless consumer mobility. | ||||
| 7. Challenges | 7. Challenges | |||
| This section presents several primary challenges and research items | This section presents several primary challenges and research items | |||
| to be considered when applying NC in CCNx/NDN. | to be considered when applying NC in CCNx/NDN. | |||
| 7.1. Adoption of Convolutional Coding | 7.1. Adoption of Convolutional Coding | |||
| Several block coding approaches have been proposed thus far; however, | Several block coding approaches have been proposed thus far; however, | |||
| there is still no sufficient discussion and application of the | there is still not sufficient discussion and application of the | |||
| convolutional coding approach (e.g., sliding or elastic window | convolutional coding approach (e.g., sliding or elastic window | |||
| coding) in CCNx/NDN. Convolutional coding is often appropriate for | coding) in CCNx/NDN. Convolutional coding is often appropriate for | |||
| situations wherein a fully or partially reliable delivery of | situations wherein a fully or partially reliable delivery of | |||
| continuous data flows is required, and especially when these data | continuous data flows is required, and especially when these data | |||
| flows feature realtime constraints. As in [38], on an end-to-end | flows feature realtime constraints. As in [40], on an end-to-end | |||
| coding basis, it would be advantageous for continuous content flow to | coding basis, it would be advantageous for continuous content flow to | |||
| adopt sliding window coding in CCNx/NDN. In this case, the publisher | adopt sliding window coding in CCNx/NDN. In this case, the producer | |||
| is required to appropriately set coding parameters and let the | is required to appropriately set coding parameters and let the | |||
| consumer know the information, and the consumer is required to send | consumer know the information, and the consumer is required to send | |||
| interest (i.e., feedback information) regarding the data reception | interests augmented with feedback information regarding the data | |||
| and/or decoding status. As CCNx/NDN advocates hop-by-hop | reception and/or decoding status. As CCNx/NDN utilises hop-by-hop | |||
| communication, it would be worth discussing and investigating how | forwarding state, it would be worth discussing and investigating how | |||
| convolutional coding can be applied in a hop-by-hop manner and its | convolutional coding can be applied in a hop-by-hop manner and what | |||
| benefits. In particular, in the case wherein in-network re-coding | benefits might accrue. In particular, in the case wherein in-network | |||
| could occur at routers, both the encoding window and CS management | re-coding could occur at forwarders, both the encoding window and CS | |||
| would be required, and the corresponding feasibility and practicality | management would be required, and the corresponding feasibility and | |||
| should be considered. | practicality should be considered. | |||
| 7.2. Rate and Congestion Control | 7.2. Rate and Congestion Control | |||
| The addition of redundancy using repair packets may result in further | The addition of redundancy using repair packets may result in further | |||
| network congestion and could adversely affect the overall throughput | network congestion and could adversely affect the overall throughput. | |||
| performance. In particular, in a situation wherein fair bandwidth | In particular, in a situation wherein fair bandwidth sharing is more | |||
| sharing is more desirable, each streaming flow must adapt to the | desirable, each streaming flow must adapt to the network conditions | |||
| network conditions to fairly consume the available link bandwidth. | to fairly consume the available link bandwidth. It is thus necessary | |||
| It is thus necessary that each content flow cooperatively implements | that each content flow cooperatively implement congestion control to | |||
| congestion control to adjust the consumed bandwidth to stabilize the | adjust the consumed bandwidth [23]. From this perspective, although | |||
| network condition (i.e., to achieve a low packet loss rate, delay, | a forwarder-supported approach would be effective, an effective | |||
| and jitter) [22]. From this perspective, although a router-supported | deployment approach that provides benefits under partial deployment | |||
| approach would be effective, an effective deployment scenario is | is required. | |||
| required. | ||||
| As described in Section 6.4, NC can contribute to seamless consumer | As described in Section 6.4, NC can contribute to seamless consumer | |||
| mobility by obtaining innovative packets without receiving duplicated | mobility by obtaining innovative packets without receiving duplicated | |||
| packets through multipath data retrieval. It can be challenging to | packets through multipath data retrieval. It can be challenging to | |||
| develop an effective rate and congestion control mechanism in order | develop an effective rate and congestion control mechanism in order | |||
| to achieve seamless consumer mobility while improving the overall | to achieve seamless consumer mobility while improving the overall | |||
| throughput or latency by fully exploiting NC operations. | throughput or latency by fully exploiting NC operations. | |||
| 7.3. Security | 7.3. Security | |||
| While CCNx/NDN introduces new security issues at the networking layer | While CCNx/NDN introduces new security issues at the networking layer | |||
| that are different from the IP network, such as a cache poisoning and | that are different from the IP network, such as a cache poisoning and | |||
| pollution attack, a DoS attack using interest packets, some security | pollution attacks, a DoS attack using interest packets, some security | |||
| approaches are already provided [23] [24]. The application of NC in | approaches are already provided [25] [26]. The application of NC in | |||
| CCNx/NDN impacts the security mechanisms of CCNx/NDN. | CCNx/NDN brings two potential security aspects that need to be dealt | |||
| with. | ||||
| CCNx/NDN is designed to prevent modification of the data packets; the | ||||
| data packet for a specific name can be self-authenticated, can be | ||||
| validated on the delivery path, and may also be cached at untrusted | ||||
| routers. NC may bring up a security issue related to data integrity | ||||
| when performing in-network re-coding, as attackers could inject | ||||
| invalid data packets, and fill the CSs at the routers with the | ||||
| invalid content objects (cache poisoning attack). On the assumption | ||||
| that each coded packet has the valid signature, the straightforward | ||||
| approach would comprise the routers verifying the signature within | ||||
| the coded packets in transit and only transmitting and storing the | ||||
| validated coded packets. However, as performing a signature | ||||
| verification by the routers may be infeasible at line speed, some | ||||
| mechanisms should be considered for distributing and reducing the | ||||
| load of signature verification, in order to maintain in-network cache | ||||
| benefits such as latency and network-load reduction. | ||||
| In addition, to maintain the in-network cache efficiency, routers | ||||
| with CS should take caution when caching validated coded packets. As | ||||
| coded packets are unpopular in general use, they could be targeted by | ||||
| a cache pollution attack that requests less popular content objects | ||||
| more frequently to undermine popularity-based caching by skewing the | ||||
| content popularity. Denial of Service (DoS) attacks may also target | ||||
| the routers and/or the publisher performing NC in order to impose a | ||||
| higher computation load owing to the NC operations. NC also offers a | ||||
| new surface of attack; if the coding vector is exposed at the network | ||||
| layer, it would have to be protected (and validated) in order to | ||||
| prevent modifications by an attacker (and allow for verification) on | ||||
| the path of the packet. | ||||
| On the other hand, NC could be used to mitigate privacy issues CCNx/ | The first is in-network re-coding at forwarders. Some mechanism for | |||
| NDN introduces. For instance, assuming that consumers can use | ensuring the integrity of the coded packets newly produced by in- | |||
| multipath data retrieval and caching in CCNx/NDN with NC, cache | network re-coding is required in order for consumers or other | |||
| privacy and anonymity set for consumers can be improved in addition | forwarders to deal with valid coded packets. To this end, there are | |||
| to caching performance owing to the diversity of the caching content | some possible approaches described in Section 8, but there may be | |||
| objects along different paths. | more effective method with lower complexity and computation overhead. | |||
| In this context, it can be a challenge that coping with the security | The second is that attackers maliciously request and inject coded | |||
| issues as low computation overhead as possible while facilitating the | packets, which could amplify some attacks. As coded packets are | |||
| NC operations in CCNx/NDN. From the perspective of both feasibility | unpopular in general use, they could be targeted by a cache pollution | |||
| and practicability, more effective approaches with consideration of | attack that requests less popular content objects more frequently to | |||
| security would be required in order to accelerate the deployment of | undermine popularity-based caching by skewing the content popularity. | |||
| CCNx/NDN with NC. | Such an attack needs to be dealt with in order to maintain the in- | |||
| network cache efficiency. By injecting invalid coded packets with | ||||
| the goal of filling the CSs at the forwarders with them, the cache | ||||
| poisoning attack could be effectual depending on the exact integrity | ||||
| coverage on coded packets. On the assumption that each coded packet | ||||
| has the valid signature, the straightforward approach would comprise | ||||
| the forwarders verifying the signature within the coded packets in | ||||
| transit and only transmitting and storing the validated coded | ||||
| packets. However, as performing a signature verification by the | ||||
| forwarders may be infeasible at line speed, some mechanisms should be | ||||
| considered for distributing and reducing the load of signature | ||||
| verification, in order to maintain in-network cache benefits such as | ||||
| latency and network-load reduction. | ||||
| 7.4. Routing Scalability | 7.4. Routing Scalability | |||
| In CCNx/NDN, a name-based routing protocol without a resolution | In CCNx/NDN, a name-based routing protocol without a resolution | |||
| process streamlines the routing process and reduces the overall | process streamlines the routing process and reduces the overall | |||
| latency. In IP routing, the growth in the routing table size has | latency. In IP routing, the growth in the routing table size has | |||
| become a concern. It is thus necessary to use a hierarchical naming | become a concern. It is thus necessary to use a hierarchical naming | |||
| scheme in order to improve the routing scalability by enabling the | scheme in order to improve the routing scalability by enabling the | |||
| aggregation of the routing information. | aggregation of the routing information. | |||
| It is required to enable consumers to efficiently obtain innovative | To realize the benefits of NC, consumers need to efficiently obtain | |||
| packets using multipath retrieval in a fully distributed manner, and | innovative packets using multipath retrieval mechanisms of CCNx/NDN. | |||
| thus fully leverage NC in CCNx/NDN to improve throughput or reduce | This would require some efficient routing mechanism to appropriately | |||
| latency. This would require some efficient routing mechanism to | set the FIB and also an efficient interest forwarding strategy. Such | |||
| appropriately set the FIB and also an efficient interest forwarding | routing coordination may create routing scalability issues. It would | |||
| strategy. Such routing coordination may create routing scalability | be challenging to achieve effective and scalable routing for | |||
| issues. It would be challenging to achieve effective and scalable | interests requesting coded packets as well as to simplify the routing | |||
| routing for interests requesting coded packets as well as to simplify | process. | |||
| the routing process. | ||||
| 8. Security Considerations | 8. Security Considerations | |||
| In-network re-coding is a prominent operation of NC; however, it may | In-network re-coding is a distinguishing feature of NC. Only valid | |||
| lead to cache poisoning attacks that inject invalid coded packets to | coded packets produced by in-network re-coding must be requested and | |||
| the network. To address this issue, there exist some possible | utilized (and possibly stored). To this end, there exist some | |||
| approaches. First, as a signature verification approach, the | possible approaches. First, as a signature verification approach, | |||
| exploitation of multi-signature capability could be applied. This | the exploitation of multi-signature capability could be applied. | |||
| allows not only the original content publisher but also some routers | This allows not only the original content producer but also some | |||
| responsible for in-network re-coding to have their own unique signing | forwarders responsible for in-network re-coding to have their own | |||
| key. Each router of the group signs newly generated coded packet in | unique signing key. Each forwarder of the group signs newly | |||
| order for other nodes to be able to validate the data with the | generated coded packet in order for other nodes to be able to | |||
| signature. The CS may verify the signature within the coded packet | validate the data with the signature. The CS may verify the | |||
| before storing it to avoid invalid data caching. Second, as a | signature within the coded packet before storing it to avoid invalid | |||
| consumer-dependent approach, the consumer puts a restriction on the | data caching. Second, as a consumer-dependent approach, the consumer | |||
| matching rule using only the name of the requested data. The | puts a restriction on the matching rule using only the name of the | |||
| interest ambiguity can be clarified by specifying both the name and | requested data. The interest ambiguity can be clarified by | |||
| the key identifier (the publisher's public key digest) used for | specifying both the name and the key identifier (the producer's | |||
| matching to the requested data. This KeyId restriction is built in | public key digest) used for matching to the requested data. This | |||
| the CCNx design [1]. Only the requested data packet satisfying the | KeyId restriction is built in the CCNx design [1]. Only the | |||
| interest with the KeyId restriction would be forwarded and stored in | requested data packet satisfying the interest with the KeyId | |||
| the CS, thus resulting in a reduction in the chances of cache | restriction would be forwarded and stored in the CS, thus resulting | |||
| poisoning. Moreover, in the CCNx design, there exists the rule that | in a reduction in the chances of cache poisoning. Moreover, in the | |||
| the CS obeys in order to avoid amplifying invalid data; if an | CCNx design, there exists the rule that the CS obeys in order to | |||
| interest has a KeyID restriction, the CS must not reply unless it | avoid amplifying invalid data; if an interest has a KeyID | |||
| knows that the signature on the matching content object is correct. | restriction, the CS must not reply unless it knows that the signature | |||
| If the CS cannot verify the signature, the interest may be treated as | on the matching content object is correct. If the CS cannot verify | |||
| a cache miss and forwarded to the upstream router(s). Third, as a | the signature, the interest may be treated as a cache miss and | |||
| certificate chain management approach (possibly without certificate | forwarded to the upstream forwarder(s). Third, as a certificate | |||
| authority), some mechanism such as [30] could be used to establish a | chain management approach (possibly without certificate authority), | |||
| trustworthy data delivery path. This approach adopts the hop-by-hop | some mechanism such as [32] could be used to establish a trustworthy | |||
| data delivery path. This approach adopts the hop-by-hop | ||||
| authentication mechanism, wherein forwarding-integrated hop-by-hop | authentication mechanism, wherein forwarding-integrated hop-by-hop | |||
| certificate collection is performed to provide suspension certificate | certificate collection is performed to provide suspension certificate | |||
| chains such that the data retrieval is trustworthy. | chains such that the data retrieval is trustworthy. | |||
| Depending on the adopted caching strategy such as cache replacement | Depending on the adopted caching strategy such as cache replacement | |||
| policies, routers should also take caution when storing and retaining | policies, forwarders should also take caution when storing and | |||
| the coded packets in the CS as they could be targeted by cache | retaining the coded packets in the CS as they could be targeted by | |||
| pollution attacks. In order to mitigate the cache pollution attacks' | cache pollution attacks. In order to mitigate the cache pollution | |||
| impact, routers should check the content request frequencies to | attacks' impact, forwarders should check the content request | |||
| detect the attack and may limit requests by ignoring some of the | frequencies to detect the attack and may limit requests by ignoring | |||
| consecutive requests. The routers can then decide to apply or change | some of the consecutive requests. The forwarders can then decide to | |||
| to the other cache replacement mechanism. | apply or change to the other cache replacement mechanism. | |||
| The routers or publishers require careful attention to the DoS | The forwarders or producers require careful attention to the DoS | |||
| attacks aiming at provoking the high load of NC operations by using | attacks aiming at provoking the high load of NC operations by using | |||
| the interests for coded packets. In order to mitigate such attacks, | the interests for coded packets. In order to mitigate such attacks, | |||
| the routers could adopt a rate-limiting approach. For instance, they | the forwarders could adopt a rate-limiting approach. For instance, | |||
| could monitor the PIT size growth for coded data per content to | they could monitor the PIT size growth for coded data per content to | |||
| detect the attacks, and limit the interest arrival rate when | detect the attacks, and limit the interest arrival rate when | |||
| necessary. If the NC application wishes to secure an interest | necessary. If the NC application wishes to secure an interest | |||
| (considered as the NC actuator) in order to prevent such attacks, the | (considered as the NC actuator) in order to prevent such attacks, the | |||
| application should consider using an encrypted wrapper and an | application should consider using an encrypted wrapper and an | |||
| explicit protocol. | explicit protocol. | |||
| 9. Informative References | 9. Acknowledgements | |||
| The authors would like to thank ICNRG and NWCRG members, especially | ||||
| Marie-Jose Montpetit, David Oran, Vincent Roca, and Thierry Turletti, | ||||
| for their valuable comments and suggestions on this document. | ||||
| 10. Informative References | ||||
| [1] Mosko, M. and et al., "Content-Centric Networking (CCNx) | [1] Mosko, M. and et al., "Content-Centric Networking (CCNx) | |||
| Semantics", RFC 8569, July 2019, | Semantics", RFC 8569, July 2019, | |||
| <https://tools.ietf.org/html/rfc8569>. | <https://tools.ietf.org/html/rfc8569>. | |||
| [2] Cai, N. and R. Yeung, "Secure network coding", Proc. | [2] Cai, N. and R. Yeung, "Secure network coding", Proc. | |||
| International Symposium on Information Theory | International Symposium on Information Theory | |||
| (ISIT), IEEE, June 2002. | (ISIT), IEEE, June 2002. | |||
| [3] Lima, L., Gheorghiu, S., Barros, J., Medard, M., and A. | [3] Lima, L., Gheorghiu, S., Barros, J., Medard, M., and A. | |||
| skipping to change at page 20, line 43 ¶ | skipping to change at page 20, line 37 ¶ | |||
| Computer Networks, Elsevier, August 2016. | Computer Networks, Elsevier, August 2016. | |||
| [15] Matsuzono, K., Asaeda, H., and T. Turletti, "Low Latency | [15] Matsuzono, K., Asaeda, H., and T. Turletti, "Low Latency | |||
| Low Loss Streaming using In-Network Coding and Caching", | Low Loss Streaming using In-Network Coding and Caching", | |||
| Proc. Infocom, IEEE, May 2017. | Proc. Infocom, IEEE, May 2017. | |||
| [16] Jacobson, V., Smetters, D., Thornton, J., Plass, M., | [16] Jacobson, V., Smetters, D., Thornton, J., Plass, M., | |||
| Briggs, N., and R. Braynard, "Networking Named Content", | Briggs, N., and R. Braynard, "Networking Named Content", | |||
| Proc. CoNEXT, ACM, December 2009. | Proc. CoNEXT, ACM, December 2009. | |||
| [17] Mosko, M. and et al., "Content-Centric Networking (CCNx) | [17] Wissingh, B. and et al., "Information-Centric Networking | |||
| (ICN): Content-Centric Networking (CCNx) and Named Data | ||||
| Networking (NDN) Terminology", RFC 8793, June 2020, | ||||
| <https://tools.ietf.org/html/rfc8793>. | ||||
| [18] Mosko, M. and et al., "Content-Centric Networking (CCNx) | ||||
| Messages in TLV Format", RFC 8609, July 2019, | Messages in TLV Format", RFC 8609, July 2019, | |||
| <https://tools.ietf.org/html/rfc8609>. | <https://tools.ietf.org/html/rfc8609>. | |||
| [18] Zhang, L., Afanasyev, A., Burke, J., Jacobson, V., Claffy, | [19] Zhang, L., Afanasyev, A., Burke, J., Jacobson, V., Claffy, | |||
| K., Crowley, P., Papadopoulos, C., Wang, L., and B. Zhang, | K., Crowley, P., Papadopoulos, C., Wang, L., and B. Zhang, | |||
| "Named data networking", ACM Comput. Commun. Rev., vol. | "Named data networking", ACM Comput. Commun. Rev., vol. | |||
| 44, no. 3, July 2014. | 44, no. 3, July 2014. | |||
| [19] NDN Packet Format, "NDN Packet Format Specification 0.3 | [20] NDN Packet Format, "NDN Packet Format Specification 0.3 | |||
| documentation", Sept. 2019, | documentation", Sept. 2019, | |||
| <https://named-data.net/doc/NDN-packet-spec/current/>. | <https://named-data.net/doc/NDN-packet-spec/current/>. | |||
| [20] Koetter, R. and M. Medard, "An Algebraic Approach to | [21] Koetter, R. and M. Medard, "An Algebraic Approach to | |||
| Network Coding", IEEE/ACM Trans. on Networking, vol. 11, | Network Coding", IEEE/ACM Trans. on Networking, vol. 11, | |||
| no 5, Oct. 2003. | no 5, Oct. 2003. | |||
| [21] Adamson, B. and et al., "Taxonomy of Coding Techniques for | [22] Adamson, B. and et al., "Taxonomy of Coding Techniques for | |||
| Efficient Network Communications", RFC 8406, June 2018, | Efficient Network Communications", RFC 8406, June 2018, | |||
| <https://tools.ietf.org/html/rfc8406>. | <https://tools.ietf.org/html/rfc8406>. | |||
| [22] Kuhn, N. and et al., "Coding and Congestion Control in | [23] Kuhn, N., Lochin, E., Michel, F., and M. Welzl, "Coding | |||
| Transport", Work in Progress, draft-irtf-nwcrg-coding-and- | and Congestion Control in Transport", Work in Progress, | |||
| congestion-04, Oct. 2020. | draft-irtf-nwcrg-coding-and-congestion-09, June 2021. | |||
| [23] Kutscher, D. and et al., "Information-Centric Networking | [24] Tschudin, C., Wood, C., Mosko, M., and D. Oran, "File-Like | |||
| ICN Collections (FLIC)", Work in Progress, draft-irtf- | ||||
| icnrg-flic-02, Nov. 2019. | ||||
| [25] Kutscher, D. and et al., "Information-Centric Networking | ||||
| (ICN) Research Challenges", RFC 7927, July 2016. | (ICN) Research Challenges", RFC 7927, July 2016. | |||
| [24] Pentikousis, K. and et al., "Information-Centric | [26] Pentikousis, K. and et al., "Information-Centric | |||
| Networking: Evaluation and Security Considerations", | Networking: Evaluation and Security Considerations", | |||
| RFC 7945, July 2019. | RFC 7945, July 2019. | |||
| [25] Watson, M. and et al., "Forward Error Correction (FEC) | [27] Watson, M. and et al., "Forward Error Correction (FEC) | |||
| Framework", RFC 6363, Oct. 2011. | Framework", RFC 6363, Oct. 2011. | |||
| [26] Thomos, N. and P. Frossard, "Toward one Symbol Network | [28] Thomos, N. and P. Frossard, "Toward one Symbol Network | |||
| Coding Vectors", IEEE Communications letters, vol. 16, no. | Coding Vectors", IEEE Communications letters, vol. 16, no. | |||
| 11, November 2012. | 11, November 2012. | |||
| [27] Lucani, D., Pedersen, M., Heide, J., and F. Fitzek, | [29] Lucani, D., Pedersen, M., Heide, J., and F. Fitzek, | |||
| "Fulcrum Network Codes: A Code for Fluid Allocation of | "Fulcrum Network Codes: A Code for Fluid Allocation of | |||
| Complexity", available at http://arxiv.org/abs/1404.6620, | Complexity", available at http://arxiv.org/abs/1404.6620, | |||
| April 2014. | April 2014. | |||
| [28] Perino, D. and M. Varvello, "A reality check for content | [30] Perino, D. and M. Varvello, "A reality check for content | |||
| centric networking", Proc. SIGCOMM Workshop on | centric networking", Proc. SIGCOMM Workshop on | |||
| Information-centric networking (ICN'11), ACM, August 2011. | Information-centric networking (ICN'11), ACM, August 2011. | |||
| [29] Wu, Q., Li, Z., Tyson, G., Uhlig, S., Kaafar, M., and G. | [31] Wu, Q., Li, Z., Tyson, G., Uhlig, S., Kaafar, M., and G. | |||
| Xie, "Privacy-Aware Multipath Video Caching for Content- | Xie, "Privacy-Aware Multipath Video Caching for Content- | |||
| Centric Networks", IEEE Journal of Selected Area | Centric Networks", IEEE Journal of Selected Area | |||
| (JSAC) vol. 38, no. 8, June 2016. | (JSAC) vol. 38, no. 8, June 2016. | |||
| [30] Li, R., Asaeda, H., and J. Wu, "DCAuth: Data-Centric | [32] Li, R., Asaeda, H., and J. Wu, "DCAuth: Data-Centric | |||
| Authentication for Secure In-Network Big-Data Retrieval", | Authentication for Secure In-Network Big-Data Retrieval", | |||
| IEEE Trans. on Network Science and Engineering vol. 7, no. | IEEE Trans. on Network Science and Engineering vol. 7, no. | |||
| 1, September 2018. | 1, September 2018. | |||
| [31] Wu, Y., Chou, P., and K. Jain, "A comparison of network | [33] Wu, Y., Chou, P., and K. Jain, "A comparison of network | |||
| coding and tree packing", Proc. ISIT, IEEE, June 2004. | coding and tree packing", Proc. ISIT, IEEE, June 2004. | |||
| [32] Ho, T., Medard, M., Koetter, R., Karger, R., Effros, D., | [34] Ho, T., Medard, M., Koetter, R., Karger, R., Effros, D., | |||
| Shi, M., and B. Leong, "A Random Linear Network Coding | Shi, M., and B. Leong, "A Random Linear Network Coding | |||
| Approach to Multicast", IEEE Trans. Information | Approach to Multicast", IEEE Trans. Information | |||
| Theory, vol. 52, no.10, October 2006. | Theory, vol. 52, no.10, October 2006. | |||
| [33] Podlipnig, S. and L. Osz, "A Survey of Web Cache | [35] Podlipnig, S. and L. Osz, "A Survey of Web Cache | |||
| Replacement Strategies", Proc. ACM Computing Surveys vol. | Replacement Strategies", Proc. ACM Computing Surveys vol. | |||
| 35, no. 4, December 2003. | 35, no. 4, December 2003. | |||
| [34] Rossini, G. and D. Rossi, "Evaluating CCN multi-path | [36] Rossini, G. and D. Rossi, "Evaluating CCN multi-path | |||
| interest forwarding strategies", Elsevier Computer | interest forwarding strategies", Elsevier Computer | |||
| Communication, vol.36, no. 7, April 2013. | Communication, vol.36, no. 7, April 2013. | |||
| [35] Carofiglio, G., Muscariello, L., Papalini, M., Rozhnova, | [37] Carofiglio, G., Muscariello, L., Papalini, M., Rozhnova, | |||
| N., and X. Zeng, "Leveraging ICN In-network Control for | N., and X. Zeng, "Leveraging ICN In-network Control for | |||
| Loss Detection and Recovery in Wireless Mobile networks", | Loss Detection and Recovery in Wireless Mobile networks", | |||
| Proc. ICN ACM, September 2016. | Proc. ICN ACM, September 2016. | |||
| [36] Ali, M. and U. Niesen, "Coding for Caching: Fundamental | [38] Ali, M. and U. Niesen, "Coding for Caching: Fundamental | |||
| Limits and Practical Challenges", IEEE Communications | Limits and Practical Challenges", IEEE Communications | |||
| Magazine vol. 54, no. 8, August 2016. | Magazine vol. 54, no. 8, August 2016. | |||
| [37] Koetter, R. and F. Kschischang, "An algebraic approach to | [39] Koetter, R. and F. Kschischang, "An algebraic approach to | |||
| network coding", IEEE Trans. Netw. vol.11, no.5, October | network coding", IEEE Trans. Netw. vol.11, no.5, October | |||
| 2008. | 2008. | |||
| [38] Tournoux, P., Lochin, E., Lacan, J., Bouabdallah, A., and | [40] Tournoux, P., Lochin, E., Lacan, J., Bouabdallah, A., and | |||
| V. Roca, "On-the-Fly Erasure Coding for Real-Time Video | V. Roca, "On-the-Fly Erasure Coding for Real-Time Video | |||
| Applications", IEEE Trans. Multimeda vol.13, no.4, August | Applications", IEEE Trans. Multimeda vol.13, no.4, August | |||
| 2011. | 2011. | |||
| Authors' Addresses | Authors' Addresses | |||
| Kazuhisa Matsuzono | Kazuhisa Matsuzono | |||
| National Institute of Information and Communications Technology | National Institute of Information and Communications Technology | |||
| 4-2-1 Nukui-Kitamachi | 4-2-1 Nukui-Kitamachi | |||
| Koganei, Tokyo 184-8795 | Koganei, Tokyo 184-8795 | |||
| End of changes. 101 change blocks. | ||||
| 438 lines changed or deleted | 441 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/ | ||||