WO2016153997A1 - Methods to support message routing at service layer - Google Patents

Methods to support message routing at service layer Download PDF

Info

Publication number
WO2016153997A1
WO2016153997A1 PCT/US2016/023136 US2016023136W WO2016153997A1 WO 2016153997 A1 WO2016153997 A1 WO 2016153997A1 US 2016023136 W US2016023136 W US 2016023136W WO 2016153997 A1 WO2016153997 A1 WO 2016153997A1
Authority
WO
WIPO (PCT)
Prior art keywords
service layer
cse
service
routing
message
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
PCT/US2016/023136
Other languages
French (fr)
Inventor
Lijun Dong
Guang Lu
Chonggang Wang
Hongkun Li
Qing Li
Rocco Di Girolamo
Catalina M. Mladin
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Convida Wireless LLC
Original Assignee
Convida Wireless LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Convida Wireless LLC filed Critical Convida Wireless LLC
Priority to US15/558,648 priority Critical patent/US10645004B2/en
Publication of WO2016153997A1 publication Critical patent/WO2016153997A1/en
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/12Shortest path evaluation
    • H04L45/124Shortest path evaluation using a combination of metrics
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/302Route determination based on requested QoS
    • H04L45/306Route determination based on the nature of the carried application
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/42Centralised routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/325Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the network layer [OSI layer 3], e.g. X.25
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/70Services for machine-to-machine communication [M2M] or machine type communication [MTC]

Definitions

  • ASN Application Service Node
  • AE Application Entity
  • Middle Node is a Node that contains one CSE and contains zero or more AEs. There may be zero or more MNs in the Field Domain of the oneM2M System.
  • An AE on an ASN, an MN or an IN performs registration locally with the corresponding CSE in order to use M2M services offered by that CSE.
  • An AE on an ADN performs registration with the CSE on an MN or an IN in order to use M2M services offered by that CSE.
  • An IN-AE performs registration with the corresponding CSE on an IN in order to use M2M services offered by that IN CSE.
  • the AE Following a successful registration of an AE to a CSE, the AE is able to access, assuming access privilege is granted, the resources in all the CSEs that are potential targets of request from the Registrar CSE.
  • MN-CSE shall be able to be registered to at most one other CSE (MN-CSE or IN- CSE).
  • An MN-CSE shall be able to support only a single registration towards another MN-CSE or an IN-CSE.
  • a concatenation (registration chain) of multiple uni-directional registrations shall not form a loop.
  • E.g. two MN-CSEs A and B cannot register with each other.
  • Figure 4 shows the existing procedure of an originator accessing a resource at the Hosting CSE, which is multiple hops away.
  • the Originator of the Request accesses a resource.
  • the Originator of the Request may be an AE or a CSE.
  • Registrar CSE, Transit CSE(s) and the Hosting CSE are different entities.
  • Transit-1 CSE e.g. MN-CSE
  • Registrar CSE e.g. MN-CSE
  • - Forwards the request to an IN-CSE if the Registrar CSE is registered with IN-CSE and if configured through policies to do so.
  • Transit-(N+1) CSE e.g. another MN-CSE
  • Transit-N CSE another Transit-(N+1) CSE
  • Hosting CSE checks the Access Control Privileges for accessing the resource and depending on the expected result content respond with a success or failure Response.
  • CSEs 102 can use policies to govern routing of M2M requests to the next hop towards its target. Routing, through these policies, can be based, for example, on the target CSE, target M2M domain, specific types of resources if applicable, priority of a request, etc.
  • Service Exposure Component 504 exposes services to AEs 106.
  • Network Service Utilization Component 506 consumes services from the NSE 108.
  • Remote Service Exposure Component 502 connects Services from different M2M environments.
  • Routing Information Protocol was one of the earliest intra- AS Internet routing protocols (Interior Gateway Protocol, IGP) and is still in widespread use today (another example of IGP is Open Shortest Path First, OSPF).
  • IGP Interior Gateway Protocol
  • OSPF Open Shortest Path First
  • the version of RIP specified in RFC 1048 uses hop count as a cost metric, that is, each link has a cost of 1.
  • RIP uses the term hop, which is the number of subnets traversed along the shortest path from source router to destination subnet, including the destination subnet.
  • Figure 6 shows a portion of an autonomous system.
  • Each router maintains a RIP table known as a routing table.
  • a router's routing table includes both the router's distance vector and the router's forwarding table.
  • the routing table has three columns. The first column is for the destination subnet, the second column indicates the identity of the next router along the shortest path to the destination subnet, and the third column indicates the number of hops to get to the destination subnet along the shortest path.
  • Table 1 shows the routing table for router D of Figure 6.
  • router D receives from router A the advertisement shown in Table 2.
  • This advertisement is nothing other than the routing table information from router A.
  • This information in particular, that subnet z is only four hops away from router A.
  • Router D upon receiving this advertisement, merges the advertisement with the old routing table.
  • router D learns that there is now a path through router A to subnet z that is shorter than the path through router B.
  • router D updates its routing table to account for the shorter shortest path, as shown in Table 2.
  • a Service Layer Message Routing Service can be supported by a service layer entity (such as a CSE).
  • a service layer entity can be capable of routing the service layer messages to reach the target with optimal performance, e.g. shortest service layer distance, shortest network layer distance, least end-to- end delay, highest reliability etc.
  • the proposed Service Layer Message Routing Service can have one or more of the following three functions:
  • Maintain Service Layer Neighbor This function takes charge of finding and updating the Service Layer Neighbors of the Service Layer entity due to registration or policy configuration.
  • This function takes charge of building the Service Layer routing table, which routes a Service Layer message from a Service Layer entity to the other Service Layer entities with the optimal performance that is desired by the message originator. In one embodiment, this function is carried out when the first function (Maintain Service Layer Neighbor) is complete.
  • Route Service Layer Message This function takes charge of routing/forwarding a service layer message by the Service Layer entity towards other service layer entities based on the Service Layer routing table. In one embodiment, this function is carried out when the second function (Build Service Layer Routing Table) is complete.
  • each intermediate service layer entity can be aware of how to forward a service layer message to achieve best required performance for message delivery.
  • the proposed Message Routing Service can achieve the overall optimal performance for various service layer metrics, with Service Layer routing involving multiple Service Layer hops.
  • a service layer message (either request or response message) can be associated with a service layer routing metric, such that the Service Layer Message Routing Service on an intermediate service layer entity will route the message based on the metric.
  • Figure 1 is a diagram that shows a oneM2M architecture.
  • Figure 2 is a diagram that shows oneM2M Common Service Functions.
  • Figure 3 is a diagram that shows configurations supported by oneM2M
  • Figure 4 shows the existing procedure of an originator accessing a resource at the Hosting CSE, which is multiple hops away.
  • Figure 5 is a diagram that shows a oneM2M Services Architecture.
  • Figure 6 is a diagram that shows a portion of an autonomous system.
  • Figure 7 is a diagram that illustrates a use case of one embodiment.
  • Figure 8 is a diagram of an example of Service Layer Topology Due to
  • Figure 9 is a diagram of a High Level Architecture of Message Routing Service.
  • Figure 10 is a diagram of a Message Flow of Weight Measurement.
  • Figure 11 is a diagram of an updated Service Layer Topology
  • Figure 12 is a diagram of Highlighted Routes for Request and Response Message.
  • Figure 13 is a diagram of Message Flow of Routing Service Layer Message.
  • Figure 14 is a diagram of a oneM2M Message Routing CSF Embodiment
  • Figure 15 is a diagram of a New Procedure of Originator accessing a resource at the Hosting CSE (Multiple Hops)
  • Figure 17 is a diagram of a ⁇ neighbor> Resource.
  • Figure 18 is a diagram of a ⁇ measurement> Resource
  • Figure 19 is a diagram of a ⁇ routingTable> Resource.
  • Figure 20 is a diagram of a ⁇ routingEntry> Resource.
  • Figure 21 is a diagram of oneM2M Message Routing Service Component Embodiment
  • Figure 22-24 are diagrams of requests to the Message Routing Service
  • Figures 25A-B are diagrams that illustrates a graphical user interfaces related to service layer messaging.
  • FIG 26A is a diagram of an example machine-to machine (M2M) or Internet of Things (IoT) communication system in which one or more disclosed embodiments of IoT event management systems and methods may be implemented.
  • M2M machine-to machine
  • IoT Internet of Things
  • Figure 26B is a system diagram of an example architecture that may be used within the M2M/IoT communications system illustrated in Figure 26A.
  • Figure 26C is a system diagram of an example M2M / IoT terminal or gateway device that may be used within the communications system illustrated in Figure 26A.
  • Figure 26D is a block diagram of an example computing system in which aspects of the communication system of Figure 26A may be embodied.
  • FIG. 7 is a diagram of a use case with a phone as a service layer entity that may need to register to multiple other service layer entities, e.g. the Home Wifi Access Point, the LTE eNB covering the home area, Data Server 704 hosted in Amazon Cloud, Facebook Server 706 etc.
  • This use case is beyond the registration limitations specified in current version of the oneM2M Functional Architecture.
  • the phone service layer entity 702 could be an ASN-CSE in the oneM2M Functional Architecture.
  • the Home Wifi Access Point could be an MN-CSE in the oneM2M Functional Architecture.
  • the LTE eNB could be an MN-CSE in the oneM2M Functional Architecture.
  • the Data Server hosted in Amazon Cloud could be an IN-CSE in the oneM2M Functional Architecture.
  • the Facebook Server 706 could be an IN-CSE in the oneM2M
  • the Phone service layer 702 registers to the Home Wifi Access Point, the LTE eNB for certain services, for example, Communication Management and Delivery Handling, Network Service Exposure, Security etc.
  • the phone 702 may have many applications running on it, as well as integrated sensors.
  • There are multiple Server SLs deployed, which manage different types of data for example, the service layer in the Data Server 704 hosted in Amazon Cloud may manage and store the data related to nature (temperature, humidity, noise, traffic, etc.), the service layer in Facebook Server 706 may manage and store the data related to social life (social applications, advertisement, etc.).
  • the phone service layer 702 registers to the service layers in the Data Server hosted in Amazon Cloud 704 and Facebook Server 706 for the services, such as Data Management and Repository, Subscription and Notification, Location, etc. for different types of data and applications.
  • a node of an M2M network e.g., a server, gateway, device, or other computer system
  • software i.e., computer-executable instructions
  • a node of an M2M network e.g., a server, gateway, device, or other computer system
  • a service layer entity may need to register to multiple service layer entities for different services or applications. Furthermore, based on the pre- configured M2M request routing policies, a service layer entity may be configured to provide message routing to other service layer entities even they do not have registration relationship. On the other hand, a service layer entity can be requested by other service layer entities to provide message routing without full registration relationship.
  • the service layer entities may form a mesh routing topology.
  • Figure 8 shows an example of Service Layer routing topology due to the registration relationship or pre- configured routing policies.
  • the message routing at the Service Layer is no longer as simply hierarchically linear as the example shown in Figure 4.
  • An intermediate service layer entity decides which next service layer entity would be the best candidate to forward a message to the target.
  • an ASN-AE A 802 wants to target a resource hosted in IN-CSE F 804.
  • the request message will be processed as following:
  • ASN-CSE A 806 receives the request message from ASN-AE A 802, it finds out that the message is not targeting itself. ASN-CSE A 806 needs to decide which next CSE it will forward the request, which could be ASN-CSE B 808, MN-CSE B, MN-CSE A 812. However, right now, ASN-CSE A 806 lacks of the capability of making this decision to find the best next CSE (i.e. choose among ASN-CSE B 808, MN-CSE B 810, MN-CSEA 812) to forward the message. ASN-CSE A may randomly choose MN-CSE B to forward the request message.
  • MN-CSE B 810 When MN-CSE B 810 receives the request message from ASN-CSE A 806, it finds out that it is not targeting itself. MN-CSE B only registers to IN-CSE A 814, thus based on the oneM2M Functional Architecture, MN-CSE B 810 will forward the message to IN-CSE A 814.
  • IN-CSE A 814 When IN-CSE A 814 receives the request message from MN-CSE B 810 , it finds out that it is not targeting itself. IN-CSE A 814 needs to decide which next CSE it will forward the request, which could be IN-CSE D 816 and IN-CSE E 818. However, right now, IN- CSE A 814 lacks of the capability of making this decision to find the best next CSE to forward the message. IN-CSE A 814 may randomly choose IN-CSE E 818 to forward the request message.
  • IN-CSE E 818 When IN-CSE E 818 receives the request message from IN-CSEA 814, it finds out that it is not targeting itself. IN-CSE E 818 needs to decide which next CSE it will forward the request, which could be IN-CSE F 804 since it is the target CSE.
  • IN-CSE F 804 When IN-CSE F 804 receives the request message from IN-CSE E 818, it finds out that the request message is targeting itself. IN-CSE F 804 will handle the request and prepare the response message for the originator ADN-AE A 802.
  • the routing path may not be the optimal or best one according to different message delivery requirement.
  • an intermediate service layer entity is not able to make the optimal choice in selecting the next service layer entity in order to reach the target with the best performance, e.g. shortest service layer distance, shortest roundtrip delay, highest overall reliability etc.
  • the underlying network layer routing between each adjacent service layer entity pairs is taken care by the network layer routing protocols, i.e. there might be multiple network layer nodes (routers) involved between each adjacent service layer entity pairs.
  • a node of an M2M network e.g., a server, gateway, device, or other computer system
  • software i.e., computer-executable instructions
  • a node of an M2M network e.g., a server, gateway, device, or other computer system
  • the Network Layer routing protocols do not consider any Service Layer specific information, such as node sleeping schedule, node service capability, etc. Thus the performance achieved would not be optimal based on those service layer metrics.
  • the service layer messages could be forwarded by multiple service layer entities as well as the service layer topology shown in Figure 8.
  • the Network Layer routing protocols can only provide the routing by the underlying network routers between each pair of the two adjacent service layer entities (e.g. between ASN-CSE A 806 and MN-CSE B 810, between MN- CSE B 810 and IN-CSE A 814 etc.).
  • the Network Layer routing protocols cannot provide the overall optimal performance considering all the Service Layer hops involved in a service layer message delivery.
  • Figure 9 is a diagram of a Service Layer Message Routing Service 902 at the Service Layer.
  • the Service Layer Message Routing Service 902 is sometimes referred to as Message Routing Service 902 for simplicity.
  • the Service Layer Message Routing Service 902 the capability that an originator service layer entity helps route and forward Service Layer message to the target service layer entity.
  • the Message Routing Service 902 is a service that a registrar entity (e.g. an IN-CSE) may provide to a registree entity (e.g. an MN- CSE), and vice versa.
  • the Message Routing Service 902 may also be considered as a special service for entities without registration relationship.
  • the Message Routing Service 902 can be mutual and bidirectional.
  • the registree entity can automatically provide the Message Routing Service 902 for the registrar entity as well.
  • the service can be set up as unidirectional.
  • the Message Routing Service 902 as bidirectional. The described mechanisms apply to both bidirectional and unidirectional routing service.
  • the proposed Message Routing Service 902 running on an service layer entity can have three components.
  • Figure 9 shows the high level architecture of the Message Routing
  • the 'Maintain Service Layer Neighbor' Component 904 collects and maintains the service layer neighbors' information.
  • the neighbor information can be utilized to build service layer routing tables, as the 'Build Service Layer Routing Table' Component 906.
  • the service layer message from the previous service layer entity can be routed to the next service layer entity, which is taken care of by the 'Route Service Layer Message' Component 908.
  • a node of an M2M network e.g., a server, gateway, device, or other computer system
  • software i.e., computer-executable instructions
  • a node of an M2M network e.g., a server, gateway, device, or other computer system
  • a service layer entity A is considered as a service layer neighbor to another service layer entity B under the following circumstances:
  • An service layer entity A registers to another service layer entity B for all the services of B.
  • the service layer entity B as a registrar entity, forwards the service layer entity A's message.
  • the service layer entity A as a registree entity, also forwards the service layer entity B's message.
  • a service layer entity maintains the information of the service layer entities that have registered to itself, as well as those itself has registered to.
  • all registree entities and registrar entities of the service layer entity are its service layer neighbors.
  • a service layer entity A requests another service layer entity B only for the Message Routing Service provided by the service layer entity B. After granting this service, the service layer entity B forwards the service layer entity A's message. If we consider the Message Routing Service 902 as bidirectional, then the service layer entity A also helps forward the service layer entity B's message.
  • a service layer entity maintains all the granted services from other service layer entities. For those service layer entities that have granted the Message Routing Service 902 to the service layer entity, they are considered as its service layer neighbors.
  • a service layer entity A maintains the information of the service layer entities that are contained in the routing polices.
  • the routing polices regulate how service layer entity routes messages for other service layer entities, which are considered as its service layer neighbors. If the Message Routing Service 902 is
  • the service layer entity A can inform other service layer entities about the pre- configured routing polices such that other service layer entities also help routing messages from the service layer entity A.
  • the routing weight between a pair of Service Layer entities can be different.
  • the following shows some examples of measurement metrics:
  • Service Layer Hop can be defined as the number of service layer hops between two service layer entities. For a pair of service layer neighbors, the weight is always 1.
  • End-to-End Delay can be defined as the time duration from the time instant that one service layer entity sends out a probing message to the time instant that the service layer entity receives the confirmation regarding the probing message (a virtual resource named probing can be proposed to be accessed in a RESTful way. When the virtual resource is accessed, the probing is carried out). It may be measured by a source service layer entity sending a probing message (e.g. a Ping message) to another service layer entity, which confirms the receipt of the probing message to the source service layer entity. The source service layer entity calculates the end-by-end delay by subtracting the two times when the probing message was sent and the confirmation message from the other service layer entity arrived.
  • a probing message e.g. a Ping message
  • Average Message Buffering Capability can be defined as the average buffer size of the two service layer entities.
  • the buffer size can be obtained by a service layer entity sending a retrieval message to another service layer entity.
  • the average data buffer size will be averaged between the buffer sizes of the two service layer entities.
  • Note (1) the existing shortest path algorithm should be adapted to find the path with the largest total weight.
  • Note (2) because we are considering that the Message Routing Service 902 is bidirectional, thus the metric is chosen as average data buffering capability. If we consider the Message Routing Service 902 is unidirectional, the metric is chosen as data buffering capability of the neighbor. On service layer link between two service layer entities, the weight could be different.
  • the Note (1) also applies to the following metrics: average node capacity, average node processing capability.
  • the Note (2) also applies to the following metrics: average node capacity, average node sleeping period, average node processing capability.
  • Average Node Capacity can indicate whether the service layer entity is resource constrained or not. If a service layer entity is resource constrained, then it can be determined that the service layer entity has a low weight based on the node capacity metric. Alternatively, if a service layer entity is not resource constrained, then it can be determined that the service layer entity has a high weight based on the node capacity metric.
  • the average node capacity of a path between two service layer entities can be an average between the node capacities of the two service layer entities.
  • Average Node Sleeping Period can be defined as how long a service layer entity sleeps. For example if a service layer entity sleeps 15 minutes every hour, then the node sleeping period is defined as 15 minutes.
  • the average node capacity of a path between two service layer entities can be an average between the sleeping periods of the two entities.
  • Average Node Processing Capability can be defined as how quickly the service layer entity is able to process a service layer message (i.e. waiting time plus the processing time). The average node processing capability will be average between the node processing capacities of the two service layer entities.
  • Figure 10 shows a diagram of a procedure of the weight measurement for a pair of neighbors (measurement can also be carried out by multicasting from one service layer entity 1002 to its service layer neighbors):
  • a service layer entity 1002 is triggered to measure a weight based on a metric that has not been carried out or needs to be updated.
  • the trigger could be that the service layer entity 1002 wants to obtain and update the weights for all or some neighbors for a provisioned or a new metric.
  • a triggering factor could be a new neighbor is established due to a new registration relationship.
  • a metric may be provisioned and known to the service layer entity that the weight based on this metric can be measured after the service layer entity registration to other service layer entities is done.
  • a metric may be known to the service layer entity 1002 when the service layer entity finds the metric contained in a request or response message that it does not have measurement or routing table maintained for the service layer entity 1002 (the details will be shown in the following sections).
  • the service layer entity 1002 decides on how to do the measurement, as discussed earlier, by sending a traceroute command, or by sending a probing message, retrieval message etc.
  • a service layer entity 1002 can also subscribe to the context information of its service layer neighbor, for example, message buffering capacity, node capacity, node sleeping period, node processing capacity.
  • the service layer entity will receive notifications of the information update, a service layer entity 1002 will also update the neighbor information when the neighbor deregisters, becomes offline, etc.
  • the service layer entity sends the measurement command, probing message or retrieval message to each of the service layer neighbors, either by unicasting, or multicasting.
  • the service layer entity sends the measurement command, probing message or retrieval message to each of the service layer neighbors, either by unicasting, or multicasting.
  • a probing message or retrieval message may be used to obtain measurement for multiple metrics.
  • the service layer neighbor 1004 responds the measurement command or confirms the receipt of the probing message to the service layer entity 1002.
  • step 004 of Figure 10 the service layer entity 1002 calculates or extracts the weight from the response message, and records it.
  • the service layer entity 1002 also informs the weight and the corresponding metric to service layer neighbor.
  • the weight between the two neighbors can be the same for both directions.
  • the service layer neighbor 1004 does not need to carry out the measurement procedure again.
  • the service layer neighbor 1002 records the weight and the metric.
  • Each service layer entity can keep records of the neighbors' information as shown in Table 4, where each row corresponds to a service layer neighbor of the service layer entity 1002.
  • Each service layer neighbor 1004 can be uniquely identified by a service layer identifier.
  • a service layer identifier For example, it could be the CSE-ID, CSEBase in the oneM2M Functional
  • Neighbor Type indicates how the service layer entity is considered as a service layer neighbor of the current service layer entity. As discussed in the beginning of this section, the service layer neighbor could be:
  • the current service layer entity registers to the service layer entity as in the full registration scenario.
  • the current service layer entity is registered by the service layer by the service layer entity in the full registration scenario.
  • Measurement indicates the weight value and the corresponding metric. Note the measurement can be multiple if multiple metrics are used.
  • a service layer entity may maintain multiple routing tables based on what metrics are used.
  • the routing table for a particular metric can have the fields as shown in Table 5:
  • Target service layer Entity can indicate the service layer identifier of the destination service layer entity.
  • Next service layer Entity can indicate the next service layer entity that a message should be forwarded to reach the target service layer entity.
  • Total weight can indicate the total weight between the current service layer entity and the target service layer entity, which is the sum of the weight between each neighboring service layer entities on the path.
  • Metric can indicate the metric that the routing table is based on. Note, the value of the metric field needs to be universal among all service layer entities. In other words, every service layer entity has the same understanding on a metric and its name/identifier.
  • Valid time can indicate how long the routing entry is considered to be valid.
  • a service layer entity can build the routing table by following the procedures (in the following example we use the metric of Service Layer Distance and the service layer routing topology shown in Figure 8 as the example to show how the routing table is built):
  • Each service layer entity (for example ASN-CSE A in Figure 8) puts all its neighbors into the routing table, each of which corresponds to a target service layer entity entry.
  • the next service layer entity is the neighbor itself, and the total weight is 1 as shown in Table 6 and Table 7.
  • the valid time field and metric are not illustrated.
  • We consider the metric is Service Layer Hop.
  • We consider the routing entries are valid during the routing table building process.
  • Each service layer entity retrieves or subscribes to the routing table in its neighbor service layer entities.
  • ASN-CSE A 806 retrieves the routing table in ASN- CSE B 808, MN-CSE B 810, MN-CSE A 802.
  • each service layer entity can process each entity based on the following rules:
  • the service layer entity entry is added automatically.
  • the distance attribute is updated corresponding to the received one (received distance + the distance between the service layer entity and the neighboring CSE).
  • the next service layer entity is updated to the neighbor service layer entity where the routing table is from. For example, the entry ASN-CSE C 824, IN-CSE C 812 in the routing table of MN-CSE A shown in Table 7, is a new entry to ASN-CSE A 806. Then ASN-CSE C 824, IN-CSE C are added to the routing table of ASN-CSE A 806.
  • the next service layer Entity is MN-CSE A 814, the distance is set to 2.
  • ASN-CSE A 806 receives a notification of the update on the routing table on MN-CSE A 820 in Table . Similarly, a new entry IN-CSE B 822 in bold in Table 10 is added to the routing table of ASN-CSE A 806.
  • ASN-CSE B ASN-CSE B 1
  • ASN-CSE A 806 receives the routing table on ASN-CSE B 808 shown in Table 11. There is an entry IN-CSE B shown in purple, which has a lower distance than the existing one, then the next service layer entity is updated to ASN-CSE B 808 and the distance is updated to 2 as shown in Table 12
  • a Stability timer can be started. If after the Stability timer expires and still the neighbor service layer entity is sending the same higher distance then the total weight is updated into its routing table. For example, ASN-CSE B 808 deregistered from MN-CSE B 810, thus the service layer topology is updated to the one shown in Figure 1. 1 The total weight to ASN-CSE B 808 can be updated to Infinity as shown in Table 13 When the neighbor IN-CSE A receives this updated routing table from MN-CSE B, it finds that there is a matching entry ASN-CSE B 808 with higher total weight than the current on as shown in Table 14.
  • IN-CSE A 814 can set up a Stability timer. Before the Stability timer expires, the MN- CSE B 810 already updates the routing entry of ASN-CSE B 808 to the one shown in Table 15. and notifies IN-CSE A 814. But the total weight is still higher than the previous one shown in Table 14, the Stability timer is refreshed. IN-CSE A retrieves the routing table from MN-CSE B 810 multiple times. When the Stability timer expires, it finds that the total weight keeps the same as 3, then the routing entry of ASN-CSE B 808 is updated as the one shown in Table 16.
  • FIG. 11 may be implemented in the form of software (i.e., computer-executable instructions) stored in a memory of, and executing on a processor of, a node of an M2M network (e.g., a server, gateway, device, or other computer system), such as one of those illustrated in Figures 26C or 26D described below.
  • software i.e., computer-executable instructions
  • a node of an M2M network e.g., a server, gateway, device, or other computer system
  • Table 17 shows an example of the stable routing table on ASN-CSE A 806. Note this routing table is still based on the service layer topology shown in Figure 8.
  • ASN-CSE B ASN-CSE B 1
  • a service layer message (either request or response message) can be associated with a service layer routing metric. If the service layer routing metric presents, it indicates the service layer message source wants the message to be delivered to achieve the best performance according to the specified metric.
  • the service layer routing metric could be the ones and/or combination of them listed above, i.e. Service Layer Hop, Network Layer Hop, End-to-End Delay, etc.
  • reqMetric resMetric
  • reqMetric can indicate the metric based on which the request originator wants the request message to be routed by intermediate service layer entities. This parameter is optional, if it is left empty, then the default metric is 'Service Layer Hop'.
  • a registrar entity may indicate its preferred routing metric in the registration response message to its registree entity. The registree entity may use this a reference to configure the reqMetric.
  • resMetric can indicate the metric based on which the request originator wants the corresponding response message to be routed. This parameter is optional, if it is left empty, then the default metric is 'Service Layer Hop'.
  • the target service layer entity of the request message can also include a new parameter, called resMetric, which can indicate the metric based on which the response will be routed.
  • This parameter is optional, if it is left empty, then the default metric is 'Service Layer Hop.
  • the target service layer entity can set up this parameter in the response message based on the resMetric parameter in the request message. Or the target service layer may overwrite the original setting from the request originator, and set it up from its own knowledge and decision.
  • ASN-AE A 802 sends a request message targeting IN-CSE F 804.
  • ASN-AE A 802 indicates that it wants the request service to be routed to IN-CSE F 804 with the metric of Service Layer Hop, thus the reqMetric parameter is set to 'Service Layer Hop'. It leaves the resMetric parameter to be empty.
  • the service layer entity can be triggered to perform the measurement based on the metric and build the routing table.
  • the service layer entity may keep the message in the queue until the routing table for the target is built based on the metric. In an alternative way, the service layer entity may return with an error (unsupported routing metric).
  • the service layer entity AN CSE A 806 is the registrar CSE, i.e. the first CSE that receives the message.
  • the service layer entities AN CSE B 808 and IN-CSE-B 822 are the intermediate nodes forwarding the request message based on 'Service Layer Hop', the service layer entities MN-CSE A 820, IN CSE C 812 and IN CSE E 818 are the intermediate nodes forwarding the response message based on the metric 'Network Layer Hop'.
  • FIG. 12 may be implemented in the form of software (i.e., computer-executable instructions) stored in a memory of, and executing on a processor of, a node of an M2M network (e.g., a server, gateway, device, or other computer system), such as one of those illustrated in Figures 26C or 26D described below.
  • software i.e., computer-executable instructions
  • a node of an M2M network e.g., a server, gateway, device, or other computer system
  • Figure 13 shows the message flow of the service layer routing of the request message and the corresponding response message:
  • step 01 of Figure 13 ASN-AE A 802 sends the request message targeting IN- CSE 802.
  • ASN-CSE A 806 (it is the registrar CSE of ASN-AE A 802, which is colored in blue) receives the request message from ASN-AE A 802.
  • ASN-CSE A 806 processes the request message, and finds it is not targeted for itself. Thus it checks the reqMetric parameter, and uses the routing table that is maintained for that metric. Based on the target in the request message, ASN-CSE A 806 finds the next service layer entity to forward the request message is ASN-CSE B 810.
  • step 03 of Figure 13 the request message is forwarded to ASN-CSE B 810 by ASN-CSE A 806.
  • ASN-CSE B 810 receives the request message from ASN-CSE A 806.
  • ASN-CSE B 810 processes the request message, and finds it is not targeted for itself. Thus it checks the reqMetric parameter, and uses the routing table that is maintained for that metric. Based on the target in the request message, ASN-CSE B 810 finds the next service layer entity to forward the request message is IN-CSE B 822.
  • step 05 of Figure 13 the request message is forwarded to IN-CSE B 822 by ASN-CSE B 808.
  • IN-CSE B 822 receives the request message from ASN- CSE B 808.
  • IN-CSE B 822 processes the request message, and finds it is not targeted for itself. Thus it checks the reqMetric parameter, and uses the routing table that is maintained for that metric. Based on the target in the request message, IN-CSE B 822 finds the next service layer entity to forward the request message is IN-CSE F 802.
  • step 07 of Figure 13 the request message is forwarded to IN-CSE F 804 by IN-CSE B 822.
  • IN-CSE F 804 receives the request message from IN- CSE B 822.
  • IN-CSE F 804 processes the request message, and finds it is targeted for itself. Thus it takes actions based on the request and prepare the response message. Because the resMetric parameter was left empty in the request message, IN-CSE F 804 may decide on the resMetric parameter to be put in the response. For example, IN-CSE F 804 sets the resMetric parameter to be 'Network Layer Hop'. Based on this metric and the target of the response message, IN-CSE F 804 finds the next service layer entity to send the response message is IN-CSE E 818.
  • step 09 of Figure 13 the response message is sent to IN-CSE E 818 from IN- CSE F 804.
  • IN-CSE E 818 receives the response message from IN- CSE F 804.
  • IN-CSE E 818 processes the response message, and finds it is not targeted for itself. Thus it checks the resMetric parameter, and uses the routing table that is maintained for that metric. Based on the target in the response message, IN-CSE E 818 finds the next service layer entity to forward the response message is IN-CSE C 812.
  • step 11 of Figure 13 the response message is forwarded to IN-CSE C 812 from IN-CSE E 818.
  • IN-CSE C 812 receives the response message from IN- CSE E 818.
  • IN-CSE C 812 processes the response message, and finds it is not targeted for itself. Thus it checks the resMetric parameter, and uses the routing table that is maintained for that metric. Based on the target in the response message, IN-CSE C 812 finds the next service layer entity to forward the response message is MN-CSE A 820.
  • step 13 of Figure 13 the response message is forwarded to MN-CSE A 820 from IN-CSE C 812.
  • MN-CSE A 820 receives the response message from IN-CSE C 812. MN-CSE A 820 processes the response message, and finds it is not targeted for itself. Thus it checks the resMetric parameter, and uses the routing table that is maintained for that metric. Based on the target in the response message, MN-CSE A 802 finds the next service layer entity to forward the response message is ASN-CSE A 806.
  • step 15 of Figure 13 the response message is forwarded to ASN-CSE A 806 from lN-CSE-C 812..
  • ASN-CSE A 806 receives the response message from MN-CSE C 812.
  • ASN-CSE A 806 processes the response message, and finds it is not targeted for itself, but it is targeted for an AE that is registered by ASN-CSE A 806. Thus ASN-CSE A 806 simply forwards the response message to ASN-AE A 806.
  • step 17 of Figure 13 the response message is forwarded to ASN-AE A 802 from ASN-CSE A 806.
  • the entities performing the steps illustrated in Figure 13 are logical entities that may be implemented in the form of software (i.e., computer-executable instructions) stored in a memory of, and executing on a processor of, a network node or computer system such as those illustrated in Figure 26C or Figure 26D. That is, the method(s) illustrated in Figure 13 may be implemented in the form of software (i.e., computer-executable instructions) stored in a memory of a network node, such as the node or computer system illustrated in Figure 26C or Figure 26D, which computer executable instructions, when executed by a processor of the node, perform the steps illustrated in Figure 13. It is also understood that any transmitting and receiving steps illustrated in Figure 13 may be performed by
  • oneM2M defines the capabilities supported by the oneM2M Service Layer.
  • the oneM2M Service Layer is instantiated as a Capability Services Entity (CSE) 102 which comprises a set of Capability Service Functions (CSF) 1402.
  • CSE Capability Services Entity
  • CSF Capability Service Functions
  • the proposed Messaging Routing Service could be hosted in a CSE as a oneM2M CSF 1404 as shown in Figure 14.
  • An AE or CSE will communicate with the Message Routing CSF 1404 via the Mca, Mcc and Mcc' reference point to build service layer routing table, i.e. request retrieval of or subscribe to other CSEs' routing tables.
  • a CSE 102 will use the Message Routing CSF to forward service layer messages via the Mca, Mcc, and Mcc' reference point.
  • the Message Routing CSF 1404 will communicate with the underlying network service entities via Men reference point to measure the weight to the service layer neighbors based on difference metrics.
  • Users could be in the form of an AE 106 to interface with the Message Routing Service for routing request message from the user and response message back to the user.
  • FIG 14 may be implemented in the form of software (i.e., computer-executable instructions) stored in a memory of, and executing on a processor of, a node of an M2M network (e.g., a server, gateway, device, or other computer system), such as one of those illustrated in Figures 26C or 26D described below.
  • software i.e., computer-executable instructions
  • a node of an M2M network e.g., a server, gateway, device, or other computer system
  • reqMetric is a metric based on which the request Originator wants the request message to be routed by Transit CSEs. This parameter is optional as shown in Figure 14. If it is left empty, then the default metric could be 'Service Layer Hop'.
  • Figure 15 shows the new procedure of an Originator accessing a resource at the Hosting CSE based on the proposed Message Routing Service, which is multiple hops away.
  • the Originator 1502 of the Request accesses a resource.
  • the Originator 1502 of the Request may be an AE or a CSE.
  • Originator 1502 is a member of Originator 1502
  • Transit-N CSE 1508 receiving the Request [0156]
  • Transit-N CSE 1508 receiving the Response [0159]
  • the entities performing the steps illustrated in Figure 15 are logical entities that may be implemented in the form of software (i.e., computer-executable instructions) stored in a memory of, and executing on a processor of, a network node or computer system such as those illustrated in Figure 26C or Figure 26D. That is, the method(s) illustrated in Figure 15 may be implemented in the form of software (i.e., computer-executable instructions) stored in a memory of a network node, such as the node or computer system illustrated in Figure 26C or Figure 26D, which computer executable instructions, when executed by a processor of the node, perform the steps illustrated in Figurel5. It is also understood that any transmitting and receiving steps illustrated in Figure 15 may be performed by
  • ⁇ neighbor> 1604 stores the service layer neighbor's information and the measurement between the local CSE and the neighbor based on different metrics. It has a child resource ⁇ measurement> 1706 and the ⁇ subscriptiori> 1708 child resource same as defined in the oneM2M Functional Architecture. Table 19 shows the attributes of t ⁇ neighbor> resource.
  • Figure 18 shows the child resource ⁇ measurement>
  • Table 20 shows the attribute of the ⁇ measurement> child resource.
  • the ⁇ measurement> resource has the
  • the ⁇ routingTable> 1902 as shown in Figure 19 stores the service layer routing tables based on different metrics. It has a child resource ⁇ routingEntry> 1904 and the ⁇ subscriptiori> child resource as defined in the oneM2M Functional Architecture. Table 22 shows the attributes of ihe ⁇ routingTable> resource 1902.
  • Figure 20 shows the child resource ⁇ routingEntry> 1904.
  • Table 22 shows the attribute of the ⁇ routingEntry> child resource 1904.
  • the ⁇ routingEntry> resource 1904 has the
  • target 1 WO Indicates the target AE or CSE that is
  • routing entry is about.
  • nextCSE RW Indicates the next CSE that service layer messages should be forwarded towards the target CSE.
  • the resource content shall provide the information as defined above.
  • the resource content shall provide the information as defined in above.
  • Figure 21 also shows implementation architecture of Message Routing Service in the oneM2M Service Component Architecture the oneM2M Functional Architecture.
  • a service layer message originator in the forms of such as AE 106 or CSE 102 will talk to the
  • Message Routing Service Component 2102 via the Mca or Msc reference point to build service layer routing table, i.e. request retrieval of or subscribe to other CSEs' routing tables.
  • Message Routing Service Component 2102 will communicate with the underlying network service entities via Msc reference point through Network Service Utilization Component 506 to measure the weight to the service layer neighbors based on difference metrics.
  • the functionality illustrated in Figure 21 may be implemented in the form of software (i.e., computer-executable instructions) stored in a memory of, and executing on a processor of, a node of an M2M network (e.g., a server, gateway, device, or other computer system), such as one of those illustrated in Figures 26C or 26D described below.
  • This service capability provides the capability to get the weight on the service layer link between service layer neighbors based on different metrics. Pre-conditions
  • the Originator can be an AE or CSE, and the Originator wants to get the weight between itself and its neighbors.
  • Figure 22 is a diagram of a request to the Message Routing Service Component.
  • This service capability is used to get the weight on the service layer link to a service layer neighbor.
  • the service capability aligns with the ⁇ measurement> resource and maps to the Retrieve procedure for the resource.
  • getSLRoutingTable [0190] This service capability provides the capability to get the service layer routing table from a service layer neighbor.
  • the Originator can be an AE or CSE, and the Originator wants to get the routing table based on a metric from a service layer neighbor.
  • Figure 23 is a diagram of issuing the request to the Message Routing Service Component
  • the Originator has no access right to retrieve the routing table(s).
  • This service capability is used to get the routing table(s) of a service layer neighbor.
  • the service capability aligns with the ⁇ routingTable> resource and maps to the
  • This service capability provides the capability to route a service layer message to the next CSE towards the Receiver based on the maintained routing table.
  • the Originator can be an AE or CSE, and the Originator wants to a service layer message to be routed or forwarded towards the Receiver.
  • Signature - routeSLMessage
  • This service capability is used to perform service layer routing.
  • the service capability aligns with the ⁇ routingTable> resource and maps to the Execute procedure for the resource.
  • any transmitting and receiving steps illustrated in Figures 22-24 may be performed by communication circuitry of the node under control of the processor of the node and the computer-executable instructions (e.g., software) that it executes.
  • FIG. 25A is a diagram that illustrates an interface 2500 that allows a user to enable service layer messaging 2502, enable service layer messaging for a node 2504 and select the service layer messaging metric 2506.
  • GUIs Graphical User Interfaces
  • FIG. 25B shows an alternate user interface 2510.
  • User interface 2510 can be located at a hosting node (e.g. an M2M Gateway, an M2M Server) to display information related to message routing including:
  • a hosting node e.g. an M2M Gateway, an M2M Server
  • interfaces 2500 and 2510 can be produced using displays such as those shown in Figures 26C-D described below.
  • FIG. 26A is a diagram of an example machine-to machine (M2M), Internet of
  • IoT Internet of Things
  • WoT Web of Things
  • M2M technologies provide building blocks for the IoTAVoT, and any M2M device, M2M gateway, M2M server, or M2M service platform may be a component or node of the IoTAVoT as well as an IoTAVoT service layer, etc.
  • Communication system 10 can be used to implement functionality of the disclosed embodiments and can include functionality and logical entities such as message routing service 902, maintain service layer neighbor component 904, build service layer routing table component 906, route service layer message component 908, CSE 102, AE 106, NSE 108, remote service exposure component 502, service exposure component 506, phone 702, servers 704 and 706, service layer entities including service layer entities 802, 804, 806, 808, 810, 812, 814, 816, 818, 820, 822, 824 1002, 1004, 1502, 1508, 1510, and CSFs 1404 including message routing CSF 1404, message routing service component 2102, as well as logical entities to create and use service layer messaging resources of Figures 16-20 and to produce the user interfaces 2500 and 2510.
  • message routing service 902 maintain service layer neighbor component 904, build service layer routing table component 906, route service layer message component 908, CSE 102, AE 106, NSE 108, remote service exposure component 502, service exposure component 506, phone 702, servers 704 and 706, service layer entities including
  • the M2M/ IoT/WoT communication system 10 includes a communication network 12.
  • the communication network 12 may be a fixed network (e.g., Ethernet, Fiber, ISDN, PLC, or the like) or a wireless network (e.g., WLAN, cellular, or the like) or a network of heterogeneous networks.
  • the communication network 12 may be comprised of multiple access networks that provide content such as voice, data, video, messaging, broadcast, or the like to multiple users.
  • the communication network 12 may employ one or more channel access methods, such as code division multiple access (CDMA), time division multiple access (TDMA), frequency division multiple access (FDMA), orthogonal FDMA (OFDMA), single-carrier FDMA (SC-FDMA), and the like.
  • CDMA code division multiple access
  • TDMA time division multiple access
  • FDMA frequency division multiple access
  • OFDMA orthogonal FDMA
  • SC-FDMA single-carrier FDMA
  • the communication network 12 may comprise other networks such as a core network, the Internet, a sensor network, an industrial control network, a personal area network, a fused personal network, a satellite network, a home network, or an enterprise network for example.
  • the M2M/ IoT/WoT communication system 10 may include the Infrastructure Domain and the Field Domain.
  • the Infrastructure Domain refers to the network side of the end-to-end M2M deployment
  • the Field Domain refers to the area networks, usually behind an M2M gateway.
  • the Field Domain and Infrastructure Domain may both comprise a variety of different network nodes (e.g., servers, gateways, device, and the like).
  • the Field Domain may include M2M gateways 14 and terminal devices 18. It will be appreciated that any number of M2M gateway devices 14 and M2M terminal devices 18 may be included in the M2M/ IoTAVoT communication system 10 as desired.
  • Each of the M2M gateway devices 14 and M2M terminal devices 18 are configured to transmit and receive signals, using communications circuitry, via the communication network 12 or direct radio link.
  • a M2M gateway 14 allows wireless M2M devices (e.g. cellular and non-cellular) as well as fixed network M2M devices (e.g., PLC) to communicate either through operator networks, such as the communication network 12 or direct radio link.
  • the M2M terminal devices 18 may collect data and send the data, via the communication network 12 or direct radio link, to an
  • M2M application 20 or other M2M devices 18.
  • the M2M terminal devices 18 may also receive data from the M2M application 20 or an M2M terminal device 18. Further, data and signals may be sent to and received from the M2M application 20 via an M2M service layer 22, as described below.
  • M2M terminal devices 18 and gateways 14 may communicate via various networks including, cellular, WLAN, WPAN (e.g., Zigbee, 6L0WPAN, Bluetooth), direct radio link, and wireline for example.
  • WPAN e.g., Zigbee, 6L0WPAN, Bluetooth
  • Exemplary M2M terminal devices 18 include, but are not limited to, tablets, smart phones, medical devices, temperature and weather monitors, connected cars, smart meters, game consoles, personal digital assistants, health and fitness monitors, lights, thermostats, appliances, garage doors and other actuator-based devices, security devices, and smart outlets.
  • the illustrated M2M service layer 22 in the field domain provides services for the M2M application 20, M2M gateway devices 14, and M2M terminal devices 18 and the communication network 12.
  • Communication network 12 can be used to implement functionality of the disclosed embodiments and can include functionality and logical entities such as message routing service 902, maintain service layer neighbor component 904, build service layer routing table component 906, route service layer message component 908, CSE 102, AE 106, NSE 108, remote service exposure component 502, service exposure component 506, phone 702, servers 704 and 706, service layer entities including service layer entities 802, 804, 806, 808, 810, 812, 814, 816, 818, 820, 822, 824 1002, 1004, 1502, 1508, 1510, and CSFs 1404 including message routing CSF 1404, message routing service component 2102, as well as logical entities to create and use service layer messaging resources of Figures 16- 20 and to produce the user interfaces 2500 and 2510.
  • the M2M service layer 22 may be implemented by one or more servers, computers, devices, virtual machines (e.g. cloud/ storage farms, etc.) or the like, including for example the devices illustrated in figures 26C and 26D described below. It will be understood that the M2M service layer 22 may communicate with any number of M2M applications, M2M gateways 14, M2M terminal devices 18, and communication networks 12 as desired.
  • the M2M service layer 22 may be implemented by one or more nodes of the network, which may comprises servers, computers, devices, or the like.
  • the M2M service layer 22 provides service capabilities that apply to M2M terminal devices 18, M2M gateways 14, and M2M applications 20.
  • the functions of the M2M service layer 22 may be implemented in a variety of ways, for example as a web server, in the cellular core network, in the cloud, etc.
  • M2M service layer 22' provides services for the M2M application 20' and the underlying communication network 12' in the infrastructure domain.
  • M2M service layer 22' also provides services for the M2M gateways 14 and M2M terminal devices 18 in the field domain. It will be understood that the M2M service layer 22' may communicate with any number of M2M applications, M2M gateways and M2M devices. The M2M service layer 22' may interact with a service layer by a different service provider. The M2M service layer 22' by one or more nodes of the network, which may comprises servers, computers, devices, virtual machines (e.g., cloud computing/storage farms, etc.) or the like.
  • the M2M service layers 22 and 22' provide a core set of service delivery capabilities that diverse applications and verticals can leverage. These service capabilities enable M2M applications 20 and 20' to interact with devices and perform functions such as data collection, data analysis, device management, security, billing, service/device discovery etc. Essentially, these service capabilities free the applications of the burden of implementing these functionalities, thus simplifying application development and reducing cost and time to market.
  • the service layers 22 and 22' also enable M2M applications 20 and 20' to communicate through various networks 12 and 12' in connection with the services that the service layers 22 and 22' provide.
  • the methods of the present application may be implemented as part of a service layer 22 and 22'.
  • the service layer 22 and 22' is a software middleware layer that supports value-added service capabilities through a set of Application Programming Interfaces (APIs) and underlying networking interfaces.
  • APIs Application Programming Interfaces
  • Both ETSI M2M and oneM2M use a service layer that may contain the connection methods of the present application.
  • ETSI M2M's service layer is referred to as the Service Capability Layer (SCL) .
  • SCL Service Capability Layer
  • the SCL may be implemented within an M2M device (where it is referred to as a device SCL (DSCL)), a gateway (where it is referred to as a gateway SCL (GSCL)) and/or a network node (where it is referred to as a network SCL (NSCL)).
  • the oneM2M service layer supports a set of Common Service Functions (CSFs) (i.e. service capabilities).
  • CSFs Common Service Functions
  • An instantiation of a set of one or more particular types of CSFs is referred to as a Common Services Entity (CSE) which can be hosted on different types of network nodes (e.g. infrastructure node, middle node, application-specific node).
  • connection methods of the present application can implemented as part of an M2M network that uses a Service Oriented Architecture (SOA ) and/or a resource-oriented architecture (ROA) to access services such as the connection methods of the present application.
  • SOA Service Oriented Architecture
  • M2M applications 20 and 20' may be used in conjunction with the disclosed systems and methods.
  • the M2M applications 20 and 20' may include the applications that interact with the UE or gateway and may also be used in conjunction with other disclosed systems and methods.
  • the logical entities such as message routing service 902, maintain service layer neighbor component 904, build service layer routing table component
  • service layer message component 908, CSE 102, AE 106, NSE 108, remote service exposure component 502, service exposure component 506, phone 702, servers 704 and 706, service layer entities including service layer entities 802, 804, 806, 808, 810, 812, 814, 816, 818, 820, 822, 824 1002, 1004, 1502, 1508, 1510, and CSFs 1404 including message routing CSF 1404, message routing service component 2102, as well as logical entities to create and use service layer messaging resources of Figures 16-20 and to produce the user interfaces 2500 and 2510 may be hosted within a M2M service layer instance hosted by an M2M node, such as an M2M server, M2M gateway, or M2M device, as shown in Figure 26B.
  • M2M node such as an M2M server, M2M gateway, or M2M device
  • the M2M applications 20 and 20' may include applications in various industries such as, without limitation, transportation, health and wellness, connected home, energy management, asset tracking, and security and surveillance.
  • the M2M service layer running across the devices, gateways, servers and other nodes of the system, supports functions such as, for example, data collection, device management, security, billing, location tracking/geofencing, device/service discovery, and legacy systems integration, and provides these functions as services to the M2M applications 20 and 20'.
  • the service layers 22 and 22' define a software middleware layer that supports value-added service capabilities through a set of Application Programming Interfaces
  • ETSI M2M ETSI M2M's service layer is referred to as the Service Capability Layer
  • the SCL may be implemented in a variety of different nodes of the ETSI M2M architecture.
  • an instance of the service layer may be implemented within an M2M device (where it is referred to as a device SCL (DSCL)), a gateway (where it is referred to as a gateway SCL (GSCL)) and/or a network node (where it is referred to as a network SCL
  • the oneM2M service layer supports a set of Common Service Functions (CSFs) (i.e., service capabilities).
  • CSFs Common Service Functions
  • An instantiation of a set of one or more particular types of CSFs is referred to as a Common Services Entity (CSE) which can be hosted on different types of network nodes (e.g. infrastructure node, middle node, application-specific node).
  • CSE Common Services Entity
  • an instance of the service layer may be implemented as a logical entity (e.g., software, computer-executable instructions, and the like) executing either on one or more standalone nodes in the network, including servers, computers, and other computing devices or nodes, or as part of one or more existing nodes.
  • a service layer or component thereof may be implemented in the form of software running on a network node (e.g., server, computer, gateway, device or the like) having the general architecture illustrated in Figure 26C or
  • logical entities such as message routing service 902, maintain service layer neighbor component 904, build service layer routing table component 906, route service layer message component 908, CSE 102, AE 106, NSE 108, remote service exposure component 502, service exposure component 506, phone 702, servers 704 and 706, service layer entities including service layer entities 802, 804, 806, 808, 810, 812, 814, 816, 818, 820, 822, 824 1002, 1004, 1502, 1508, 1510, and CSFs 1404 including message routing CSF 1404, message routing service component 2102, as well as logical entities to create and use service layer messaging resources of Figures 16-20 and to produce the user interfaces 2500 and 2510 can implemented as part of an M2M network that uses a Service Oriented Architecture (SOA ) and/or a Resource-Oriented Architecture (ROA) to access services of the present application.
  • SOA Service Oriented Architecture
  • ROA Resource-Oriented Architecture
  • FIG. 26C is a block diagram of an example hardware/software architecture of a M2M network node 30, such as an M2M device 18, an M2M gateway 14, an M2M server, or the like.
  • the node 30 can execute or include logical entities such as message routing service
  • service layer neighbor component 902 maintain service layer neighbor component 904, build service layer routing table component 906, route service layer message component 908, CSE 102, AE 106, NSE 108, remote service exposure component 502, service exposure component 506, phone 702, servers
  • service layer entities including service layer entities 802, 804, 806, 808, 810, 812,
  • the device 30 can be part of an M2M network as shown in Figure 26A-B or part of a non-M2M network.
  • the M2M node 30 may include a processor 32, non-removable memory 44, removable memory 46, a speaker/microphone 38, a keypad 40, a display, touchpad, and/or indicators 42, a power source 48, a global positioning system (GPS) chipset 50, and other peripherals 52.
  • the node 30 may also include communication circuitry, such as a transceiver 34 and a transmit/receive element 36. It will be appreciated that the M2M node 30 may include any sub-combination of the foregoing elements while remaining consistent with an embodiment.
  • This node may be a node that implements the SMSF functionality described herein.
  • the processor 32 may be a general purpose processor, a special purpose processor, a conventional processor, a digital signal processor (DSP), a plurality of
  • the processor 32 may execute computer-executable instructions stored in the memory (e.g., memory 44 and/or memory 46) of the node in order to perform the various required functions of the node.
  • the processor 32 may perform signal coding, data processing, power control, input/output processing, and/or any other functionality that enables the M2M node 30 to operate in a wireless or wired environment.
  • the processor 32 may run application-layer programs (e.g., browsers) and/or radio access-layer (RAN) programs and/or other communications programs.
  • the processor 32 may also perform security operations such as authentication, security key agreement, and/or cryptographic operations, such as at the access- layer and/or application layer for example.
  • the processor 32 is coupled to its communication circuitry (e.g., transceiver 34 and transmit/receive element 36).
  • the processor 32 through the execution of computer executable instructions, may control the communication circuitry in order to cause the node 30 to communicate with other nodes via the network to which it is connected.
  • the processor 32 may control the communication circuitry in order to perform the transmitting and receiving steps described herein and in the claims. While Figure 26C depicts the processor 32 and the transceiver 34 as separate components, it will be appreciated that the processor 32 and the transceiver 34 may be integrated together in an electronic package or chip.
  • the transmit/receive element 36 may be configured to transmit signals to, or receive signals from, other M2M nodes, including M2M servers, gateways, device, and the like.
  • the transmit/receive element 36 may be an antenna configured to transmit and/or receive RF signals.
  • the transmit/receive element 36 may support various networks and air interfaces, such as WLAN, WPAN, cellular, and the like.
  • the transmit/receive element 36 may be an emitter/detector configured to transmit and/or receive IR, UV, or visible light signals, for example.
  • the transmit receive element 36 may be configured to transmit and receive both RF and light signals. It will be appreciated that the transmit/receive element 36 may be configured to transmit and/or receive any combination of wireless or wired signals.
  • the M2M node 30 may include any number of transmit/receive elements 36. More specifically, the M2M node 30 may employ MIMO technology. Thus, in an embodiment, the M2M node 30 may include two or more transmit/receive elements 36 (e.g., multiple antennas) for transmitting and receiving wireless signals.
  • the transceiver 34 may be configured to modulate the signals that are to be transmitted by the transmit/receive element 36 and to demodulate the signals that are received by the transmit/receive element 36.
  • the M2M node 30 may have multi-mode capabilities.
  • the transceiver 34 may include multiple transceivers for enabling the M2M node 30 to communicate via multiple RATs, such as UTRA and IEEE 802.1 1, for example.
  • the processor 32 may access information from, and store data in, any type of suitable memory, such as the non-removable memory 44 and/or the removable memory 46.
  • the processor 32 may store session context in its memory, as described above.
  • the nonremovable memory 44 may include random-access memory (RAM), read-only memory (ROM), a hard disk, or any other type of memory storage device.
  • the removable memory 46 may include a subscriber identity module (SIM) card, a memory stick, a secure digital (SD) memory card, and the like.
  • SIM subscriber identity module
  • SD secure digital
  • the processor 32 may access information from, and store data in, memory that is not physically located on the M2M node 30, such as on a server or a home computer.
  • the processor 32 may be configured to control lighting patterns, images, or colors on the display or indicators 42 to reflect the status of an M2M service layer session migration or sharing or to obtain input from a user or display information to a user about the node's session migration or sharing capabilities or settings.
  • the display may show information with regard to a session state.
  • the current disclosure defines a RESTful user/application API in the oneM2M embodiment.
  • a graphical user interface which may be shown on the display, may be layered on top of the API to allow a user to interactively establish and manage an E2E session, or the migration or sharing thereof, via the underlying service layer session functionality described herein.
  • the processor 32 may receive power from the power source 48, and may be configured to distribute and/or control the power to the other components in the M2M node 30.
  • the power source 48 may be any suitable device for powering the M2M node 30.
  • the power source 48 may include one or more dry cell batteries (e.g., nickel-cadmium (NiCd), nickel-zinc (NiZn), nickel metal hydride (NiMH), lithium-ion (Li-ion), etc.), solar cells, fuel cells, and the like.
  • the processor 32 may also be coupled to the GPS chipset 50, which is configured to provide location information (e.g., longitude and latitude) regarding the current location of the M2M node 30. It will be appreciated that the M2M node 30 may acquire location information by way of any suitable location-determination method while remaining consistent with an embodiment.
  • location information e.g., longitude and latitude
  • the processor 32 may further be coupled to other peripherals 52, which may include one or more software and/or hardware modules that provide additional features, functionality and/or wired or wireless connectivity.
  • the peripherals 52 may include an accelerometer, an e-compass, a satellite transceiver, a sensor, a digital camera (for photographs or video), a universal serial bus (USB) port, a vibration device, a television transceiver, a hands free headset, a Bluetooth® module, a frequency modulated (FM) radio unit, a digital music player, a media player, a video game player module, an Internet browser, and the like.
  • an accelerometer an e-compass, a satellite transceiver, a sensor, a digital camera (for photographs or video), a universal serial bus (USB) port, a vibration device, a television transceiver, a hands free headset, a Bluetooth® module, a frequency modulated (FM) radio unit, a digital music player, a media player, a video game player module, an
  • FIG. 26D is a block diagram of an exemplary computing system 90 which may also be used to implement one or more nodes of an M2M network, such as an M2M server, gateway, device, or other node.
  • Computing system 90 may comprise a computer or server and may be controlled primarily by computer readable instructions, which may be in the form of software, wherever, or by whatever means such software is stored or accessed.
  • Computing system 90 can execute or include logical entities such as message routing service 902, maintain service layer neighbor component 904, build service layer routing table component 906, route service layer message component 908, CSE 102, AE 106, NSE 108, remote service exposure component 502, service exposure component 506, phone 702, servers 704 and 706, service layer entities including service layer entities 802, 804, 806, 808, 810, 812, 814, 816, 818, 820, 822,
  • logical entities such as message routing service 902, maintain service layer neighbor component 904, build service layer routing table component 906, route service layer message component 908, CSE 102, AE 106, NSE 108, remote service exposure component 502, service exposure component 506, phone 702, servers 704 and 706, service layer entities including service layer entities 802, 804, 806, 808, 810, 812, 814, 816, 818, 820, 822,
  • Computing system 90 can be an M2M device, user equipment, gateway, UE/GW or any other nodes including nodes of the mobile care network, service layer network application provider, terminal device 18 or an M2M gateway device 14 for example.
  • Such computer readable instructions may be executed within a processor, such as central processing unit (CPU) 91, to cause computing system 90 to do work.
  • CPU central processing unit
  • central processing unit 91 is implemented by a single-chip CPU called a single-chip CPU called a
  • CPU 91 and/or coprocessor 81 may receive, generate, and process data related to the disclosed systems and methods for E2E M2M service layer sessions, such as receiving session credentials or authenticating based on session credentials.
  • CPU 91 fetches, decodes, and executes instructions, and transfers information to and from other resources via the computer's main data-transfer path, system bus 80.
  • system bus 80 Such a system bus connects the components in computing system 90 and defines the medium for data exchange.
  • System bus 80 typically includes data lines for sending data, address lines for sending addresses, and control lines for sending interrupts and for operating the system bus.
  • An example of such a system bus 80 is the PCI (Peripheral Component Interconnect) bus.
  • RAM random access memory
  • ROM read only memory
  • Such memories include circuitry that allows information to be stored and retrieved.
  • ROMs 93 generally contain stored data that cannot easily be modified. Data stored in RAM 82 can be read or changed by CPU 91 or other hardware devices. Access to RAM 82 and/or ROM 93 may be controlled by memory controller 92.
  • Memory controller 92 may provide an address translation function that translates virtual addresses into physical addresses as instructions are executed. Memory controller 92 may also provide a memory protection function that isolates processes within the system and isolates system processes from user processes. Thus, a program running in a first mode can access only memory mapped by its own process virtual address space; it cannot access memory within another process's virtual address space unless memory sharing between the processes has been set up.
  • computing system 90 may contain peripherals controller 83 responsible for communicating instructions from CPU 91 to peripherals, such as printer 94, keyboard 84, mouse 95, and disk drive 85.
  • peripherals controller 83 responsible for communicating instructions from CPU 91 to peripherals, such as printer 94, keyboard 84, mouse 95, and disk drive 85.
  • Display 86 which is controlled by display controller 96, is used to display visual output generated by computing system 90. Such visual output may include text, graphics, animated graphics, and video. Display 86 may be implemented with a CRT-based video display, an LCD-based flat-panel display, gas plasma-based flat-panel display, or a touch-panel. Display controller 96 includes electronic components required to generate a video signal that is sent to display 86.
  • computing system 90 may contain communication circuitry, such as for example a network adaptor 97, that may be used to connect computing system 90 to an external communications network, such as network 12 of Figure 26A and Figure 26B, to enable the computing system 90 to communicate with other nodes of the network.
  • a network adaptor 97 may be used to connect computing system 90 to an external communications network, such as network 12 of Figure 26A and Figure 26B, to enable the computing system 90 to communicate with other nodes of the network.
  • User equipment can be any device used by an end-user to communicate. It can be a hand-held telephone, a laptop computer equipped with a mobile broadband adapter, or any other device.
  • the UE can be implemented as the M2M terminal device 18 of Figures 26 A-B or the device 30 of Figure 26C.
  • any or all of the systems, methods, and processes described herein may be embodied in the form of computer executable instructions (i.e., program code) stored on a computer-readable storage medium which instructions, when executed by a machine, such as a node of an M2M network, including for example an M2M server, gateway, device or the like, perform and/or implement the systems, methods and processes described herein.
  • a machine such as a node of an M2M network, including for example an M2M server, gateway, device or the like, perform and/or implement the systems, methods and processes described herein.
  • Logical entities such as message routing service 902, maintain service layer neighbor component 904, build service layer routing table component 906, route service layer message component 908, CSE 102, AE 106, NSE 108, remote service exposure component 502, service exposure component 506, phone 702, servers 704 and 706, service layer entities including service layer entities 802, 804, 806, 808, 810, 812, 814, 816, 818, 820, 822, 824 1002, 1004, 1502, 1508, 1510, and CSFs 1404 including message routing CSF 1404, message routing service component 2102, as well as logical entities to create and use service layer messaging resources of Figures 16-20 and to produce the user interfaces 2500 and 2510 may be embodied in the form of the computer executable instructions stored on a computer-readable storage medium.
  • Computer readable storage media include both volatile and nonvolatile, removable and nonremovable media implemented in any non-transitory (i.e., tangible or physical) method or technology for storage of information, but such computer readable storage media do not includes signals.
  • Computer readable storage media include, but are not limited to, RAM, ROM,
  • EEPROM electrically erasable programmable read-only memory
  • flash memory or other memory technology
  • CD-ROM compact disc-read only memory
  • DVD digital versatile disks
  • magnetic cassettes magnetic tape
  • magnetic disk storage or other magnetic storage devices, or any other tangible or physical medium which can be used to store the desired information and which can be accessed by a computer.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

A Service Layer Message Routing Service at the Service Layer entity is capable of routing the service layer messages to reach the target with optimal performance, e.g. shortest service layer distance, shortest network layer distance, least end-to-end delay, highest reliability etc. The service layer Message Routing Service can have the following three functions; Maintain Service Layer Neighbor can take charge of finding and updating the service layer Neighbors of the service layer entity due to registration or policy configuration; Build Service Layer Routing Table can take charge of building the Service Layer routing table, which routes a service layer message from a service layer entity to the other service layer entities with the optimal performance that is desired by the message originator; and Route Service Layer Message can take charge of routing/forwarding a service layer message by the service layer entity towards other service layer entities based on the service layer routing table.

Description

METHODS TO SUPPORT MESSAGE ROUTING AT SERVICE LAYER
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This Application claims the benefit of U.S. Provisional Patent Application Serial No. 62/136,002 , filed March 30, 2015, the disclosure of which is hereby incorporated by reference as if set forth in its entirety.
BACKGROUND
[0002] Machine-to-machine (M2M) technologies allow devices to communicate more directly with each other using wired and wireless communications systems. M2M technologies enable further realization of the Internet of Things (IoT), a system of uniquely identifiable objects and virtual representations of such objects that communicate over a network, such as the Internet. IoT may facilitate communication with even mundane everyday objects, such as products in a grocery store, and thereby reduce costs and waste by improving knowledge of such objects. For example, stores may maintain very precise inventory data by being able to communicate with, or obtain data from, objects that may be in inventory or may have been sold. As will be appreciated, the IoT has the potential to include many millions of devices.
[0003] oneM2M includes technical specifications which address the need for a common M2M Service Layer that can be readily embedded within various hardware and software, and relied upon to connect the myriad of devices in the field with M2M application servers worldwide.
[0004] Figure 1 shows an oneM2M architecture. "oneM2M-TS-0001 oneM2M Functional Architecture-V- 1.6.1" hereafter "oneM2M functional architecture" defines a Service Layer called a Common Service Entity (CSE) 102. The purpose of the Service Layer is to provide "horizontal" services that can be utilized by different "vertical" M2M systems and applications, such as e-Health, fleet management, and smart homes.
[0005] The CSE 102 supports four reference points. The Mca reference point interfaces with the Application Entity (AE) 106. The Mcc reference point interfaces with another CSE 110 within the same service provider domain and the Mcc' reference point interfaces with another CSE in a different service provider domain 104. The Men reference point interfaces with the underlying network service entity (NSE) 108. An NSE provides underlying network services to the CSEs, such as device management, location services and device triggering. CSE 102 contains multiple logical functions called "Common Service Functions (CSFs)", such as "Discovery", "Data Management & Repository". Figure 2 illustrates the CSFs under development at oneM2M.
[0006] The oneM2M architecture enables the following types of Nodes:
[0007] Application Service Node (ASN) is a Node that contains one CSE and contains at least one Application Entity (AE). Example of physical mapping: an ASN could reside in an
M2M Device.
[0008] Application Dedicated Node (ADN) is a Node that contains at least one AE and does not contain a CSE. There may be zero or more ADNs in the Field Domain of the oneM2M System. Example of physical mapping: an Application Dedicated Node could reside in a constrained M2M Device.
[0009] Middle Node (MN) is a Node that contains one CSE and contains zero or more AEs. There may be zero or more MNs in the Field Domain of the oneM2M System. Example of physical mapping: a MN could reside in an M2M Gateway.
[0010] Infrastructure Node (IN) is a Node that contains one CSE and contains zero or more AEs. There is exactly one IN in the Infrastructure Domain per oneM2M Service Provider. A CSE in an IN may contain CSE functions not applicable to other node types. Example of physical mapping: an IN could reside in an M2M Service Infrastructure.
[0011] Non-oneM2M Node (NoDN) is a Node that does not contain oneM2M Entities (neither AEs nor CSEs). Such Nodes represent devices attached to the oneM2M system for interworking purposes, including management.
[0012] The possible configurations of inter-connecting the various entities supported within the oneM2M system are illustrated in Figure 3.
Registration
[0013] An AE on an ASN, an MN or an IN performs registration locally with the corresponding CSE in order to use M2M services offered by that CSE. An AE on an ADN performs registration with the CSE on an MN or an IN in order to use M2M services offered by that CSE. An IN-AE performs registration with the corresponding CSE on an IN in order to use M2M services offered by that IN CSE.
[0014] The CSE on an ASN performs registration with the CSE in the MN in order to be able to use M2M Services offered by the CSE in the MN. As a result of successful ASN-CSE registration with the MN-CSE, the CSEs on the ASN and the MN establish a relationship allowing them to exchange information. [0015] The CSE on an MN performs registration with the CSE of another MN in order to be able to use M2M Services offered by the CSE in the other MN. As a result of successful MN-CSE registration with the other MN-CSE, the CSEs on the MNs establish a relationship allowing them to exchange information.
[0016] The CSE on an ASN or on an MN perform registration with the CSE in the IN in order to be able to use M2M Services offered by the CSE in the IN. As a result of successful ASN/MN registration with the IN-CSE, the CSEs on ASN/MN and IN establish a relationship allowing them to exchange information.
[0017] Following a successful registration of an AE to a CSE, the AE is able to access, assuming access privilege is granted, the resources in all the CSEs that are potential targets of request from the Registrar CSE.
[0018] The followings are some registration regulations specified in the oneM2M Functional Architecture:
• An AE shall not be registered to more than one CSE (ASN-CSE, MN-CSE or IN-CSE).
• An ASN-CSE shall be able to be registered to at most one other CSE (MN-CSE or IN- CSE).
• An MN-CSE shall be able to be registered to at most one other CSE (MN-CSE or IN- CSE).
• An MN-CSE shall be able to support only a single registration towards another MN-CSE or an IN-CSE.
• A concatenation (registration chain) of multiple uni-directional registrations shall not form a loop. E.g. two MN-CSEs A and B, cannot register with each other. Three MN- CSEs A, B and C, where A registers to B, and B registers to C, then C cannot register to A.
Procedure of Accessing Resources (Multiple Hops)
[0019] Figure 4 shows the existing procedure of an originator accessing a resource at the Hosting CSE, which is multiple hops away.
[0020] The Originator of the Request accesses a resource. The Originator of the Request may be an AE or a CSE. Registrar CSE, Transit CSE(s) and the Hosting CSE are different entities.
[0021] Registrar CSE:
Forwards the Request to a Transit-1 CSE (e.g. MN-CSE) that the Registrar CSE is registered with, if configured through policies to do so; or - Forwards the request to an IN-CSE if the Registrar CSE is registered with IN-CSE and if configured through policies to do so.
[0022] Transit-N CSE:
- Forwards the request to the Hosting CSE if it is registered with the Hosting CSE; or
- Forwards the Request to another Transit-(N+1) CSE (e.g. another MN-CSE) that the Transit-N CSE is registered with; or
- Forwards the request to an IN-CSE if the Transit-N CSE is registered with the IN- CSE.
[0023] In case the Request reaches the IN-CSE, the IN-CSE:
- Performs the processing defined under 'Hosting CSE' below if the targeted resource is hosted on IN-CSE;
- Forwards the request to another IN-CSE if the resource belongs to another M2M SP; or
- Forwards the request to the Hosting CSE if the latter is known (e.g. announcements) by the IN-CSE.
[0024] Hosting CSE checks the Access Control Privileges for accessing the resource and depending on the expected result content respond with a success or failure Response.
M2M Requests Routing Policies
[0025] CSEs 102 can use policies to govern routing of M2M requests to the next hop towards its target. Routing, through these policies, can be based, for example, on the target CSE, target M2M domain, specific types of resources if applicable, priority of a request, etc.
[0026] These policies are not defined in the oneM2M Functional Architecture. It is the responsibility of M2M SP and the CSE administrator to ensure the appropriateness of these policies for routing purposes.
oneM2M Service Architecture
[0027] The M2M Service Architecture described in the oneM2M Functional
Architecture augments the oneM2M Functional Architecture by specifying M2M Services provided to M2M Application and M2M Service Providers.
[0028] The following components are defined as shown in Figure 5. Service Exposure Component 504 exposes services to AEs 106. Network Service Utilization Component 506 consumes services from the NSE 108. Remote Service Exposure Component 502 connects Services from different M2M environments.
Internet routing protocols [0029] Routing Information Protocol (RIP) was one of the earliest intra- AS Internet routing protocols (Interior Gateway Protocol, IGP) and is still in widespread use today (another example of IGP is Open Shortest Path First, OSPF). The version of RIP specified in RFC 1048 uses hop count as a cost metric, that is, each link has a cost of 1. RIP uses the term hop, which is the number of subnets traversed along the shortest path from source router to destination subnet, including the destination subnet. Figure 6 shows a portion of an autonomous system.
[0030] The maximum cost of a path is limited to 15, thus limiting the use of RIP to autonomous systems that are fewer than 15 hops in diameter. In RIP, routing updates are exchanged between neighbors approximately every 30 seconds using a RIP advertisement.
[0031] Each router maintains a RIP table known as a routing table. A router's routing table includes both the router's distance vector and the router's forwarding table. The routing table has three columns. The first column is for the destination subnet, the second column indicates the identity of the next router along the shortest path to the destination subnet, and the third column indicates the number of hops to get to the destination subnet along the shortest path. Table 1 shows the routing table for router D of Figure 6.
Table
Figure imgf000006_0001
[0032] Now suppose that 30 seconds later, router D receives from router A the advertisement shown in Table 2. This advertisement is nothing other than the routing table information from router A. This information, in particular, that subnet z is only four hops away from router A. Router D, upon receiving this advertisement, merges the advertisement with the old routing table. In particular, router D learns that there is now a path through router A to subnet z that is shorter than the path through router B. Thus, router D updates its routing table to account for the shorter shortest path, as shown in Table 2.
Table 2 Advertisement from router A
Destination Subnet Next Router Number of Hops to Destination Table ter A
Figure imgf000007_0001
SUMMARY
[0033] A Service Layer Message Routing Service can be supported by a service layer entity (such as a CSE). With the Service Layer Message Routing Service, a service layer entity can be capable of routing the service layer messages to reach the target with optimal performance, e.g. shortest service layer distance, shortest network layer distance, least end-to- end delay, highest reliability etc.
[0034] The proposed Service Layer Message Routing Service can have one or more of the following three functions:
1. Maintain Service Layer Neighbor: This function takes charge of finding and updating the Service Layer Neighbors of the Service Layer entity due to registration or policy configuration.
2. Build Service Layer Routing Table: This function takes charge of building the Service Layer routing table, which routes a Service Layer message from a Service Layer entity to the other Service Layer entities with the optimal performance that is desired by the message originator. In one embodiment, this function is carried out when the first function (Maintain Service Layer Neighbor) is complete.
3. Route Service Layer Message: This function takes charge of routing/forwarding a service layer message by the Service Layer entity towards other service layer entities based on the Service Layer routing table. In one embodiment, this function is carried out when the second function (Build Service Layer Routing Table) is complete.
[0035] With the service layer Message Routing Service, instead of randomly forwarding a service layer message, each intermediate service layer entity can be aware of how to forward a service layer message to achieve best required performance for message delivery. The proposed Message Routing Service can achieve the overall optimal performance for various service layer metrics, with Service Layer routing involving multiple Service Layer hops. [0036] A service layer message (either request or response message) can be associated with a service layer routing metric, such that the Service Layer Message Routing Service on an intermediate service layer entity will route the message based on the metric.
[0037] Details of ROA and SOA oneM2M embodiments of the Service Layer Message Routing Service, as well as the new resources, procedures to support the Message Routing Service are described.
[0038] This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter. Furthermore, the claimed subject matter is not limited to limitations that solve any or all disadvantages noted in any part of this disclosure.
BRIEF DESCRIPTION OF THE DRAWINGS
[0039] A more detailed understanding may be had from the following description, given by way of example in conjunction with the accompanying drawings wherein:
[0040] Figure 1 is a diagram that shows a oneM2M architecture.
[0041] Figure 2 is a diagram that shows oneM2M Common Service Functions.
[0042] Figure 3 is a diagram that shows configurations supported by oneM2M
Architecture.
[0043] Figure 4 shows the existing procedure of an originator accessing a resource at the Hosting CSE, which is multiple hops away.
[0044] Figure 5 is a diagram that shows a oneM2M Services Architecture.
[0045] Figure 6 is a diagram that shows a portion of an autonomous system.
[0046] Figure 7 is a diagram that illustrates a use case of one embodiment.
[0047] Figure 8 is a diagram of an example of Service Layer Topology Due to
Registration Relationship for Routing.
[0048] Figure 9 is a diagram of a High Level Architecture of Message Routing Service.
[0049] Figure 10 is a diagram of a Message Flow of Weight Measurement.
[0050] Figure 11 is a diagram of an updated Service Layer Topology
[0051] Figure 12 is a diagram of Highlighted Routes for Request and Response Message.
[0052] Figure 13 is a diagram of Message Flow of Routing Service Layer Message.
[0053] Figure 14 is a diagram of a oneM2M Message Routing CSF Embodiment [0054] Figure 15 is a diagram of a New Procedure of Originator accessing a resource at the Hosting CSE (Multiple Hops)
[0055] Figure 17 is a diagram of a <neighbor> Resource.
[0056] Figure 18 is a diagram of a <measurement> Resource
[0057] Figure 19 is a diagram of a <routingTable> Resource.
[0058] Figure 20 is a diagram of a <routingEntry> Resource.
[0059] Figure 21 is a diagram of oneM2M Message Routing Service Component Embodiment
[0060] Figure 22-24 are diagrams of requests to the Message Routing Service
Component.
[0061] Figures 25A-B are diagrams that illustrates a graphical user interfaces related to service layer messaging.
[0062] Figure 26A is a diagram of an example machine-to machine (M2M) or Internet of Things (IoT) communication system in which one or more disclosed embodiments of IoT event management systems and methods may be implemented.
[0063] Figure 26B is a system diagram of an example architecture that may be used within the M2M/IoT communications system illustrated in Figure 26A.
[0064] Figure 26C is a system diagram of an example M2M / IoT terminal or gateway device that may be used within the communications system illustrated in Figure 26A.
[0065] Figure 26D is a block diagram of an example computing system in which aspects of the communication system of Figure 26A may be embodied.
DETAILED DESCRIPTION OF ILLUSTRATIVE EMBODIMENTS
[0066] Figure 7 is a diagram of a use case with a phone as a service layer entity that may need to register to multiple other service layer entities, e.g. the Home Wifi Access Point, the LTE eNB covering the home area, Data Server 704 hosted in Amazon Cloud, Facebook Server 706 etc. This use case is beyond the registration limitations specified in current version of the oneM2M Functional Architecture.
[0067] The phone service layer entity 702 could be an ASN-CSE in the oneM2M Functional Architecture. The Home Wifi Access Point could be an MN-CSE in the oneM2M Functional Architecture. The LTE eNB could be an MN-CSE in the oneM2M Functional Architecture. The Data Server hosted in Amazon Cloud could be an IN-CSE in the oneM2M Functional Architecture. The Facebook Server 706 could be an IN-CSE in the oneM2M
Functional Architecture as well.
[0068] The Phone service layer 702 registers to the Home Wifi Access Point, the LTE eNB for certain services, for example, Communication Management and Delivery Handling, Network Service Exposure, Security etc. The phone 702 may have many applications running on it, as well as integrated sensors. There are multiple Server SLs deployed, which manage different types of data, for example, the service layer in the Data Server 704 hosted in Amazon Cloud may manage and store the data related to nature (temperature, humidity, noise, traffic, etc.), the service layer in Facebook Server 706 may manage and store the data related to social life (social applications, advertisement, etc.). The phone service layer 702 registers to the service layers in the Data Server hosted in Amazon Cloud 704 and Facebook Server 706 for the services, such as Data Management and Repository, Subscription and Notification, Location, etc. for different types of data and applications.
[0069] It is understood that the functionality illustrated in Figure 7 may be
implemented in the form of software (i.e., computer-executable instructions) stored in a memory of, and executing on a processor of, a node of an M2M network (e.g., a server, gateway, device, or other computer system), such as one of those illustrated in Figures 26C or 26D described below.
[0070] As shown in Figure 7, a service layer entity may need to register to multiple service layer entities for different services or applications. Furthermore, based on the pre- configured M2M request routing policies, a service layer entity may be configured to provide message routing to other service layer entities even they do not have registration relationship. On the other hand, a service layer entity can be requested by other service layer entities to provide message routing without full registration relationship.
[0071] As a result, the service layer entities may form a mesh routing topology. Figure 8 shows an example of Service Layer routing topology due to the registration relationship or pre- configured routing policies. The message routing at the Service Layer is no longer as simply hierarchically linear as the example shown in Figure 4. An intermediate service layer entity decides which next service layer entity would be the best candidate to forward a message to the target.
[0072] As the example shown in Figure 8, an ASN-AE A 802 wants to target a resource hosted in IN-CSE F 804. The request message will be processed as following:
[0073] When ASN-CSE A 806 receives the request message from ASN-AE A 802, it finds out that the message is not targeting itself. ASN-CSE A 806 needs to decide which next CSE it will forward the request, which could be ASN-CSE B 808, MN-CSE B, MN-CSE A 812. However, right now, ASN-CSE A 806 lacks of the capability of making this decision to find the best next CSE (i.e. choose among ASN-CSE B 808, MN-CSE B 810, MN-CSEA 812) to forward the message. ASN-CSE A may randomly choose MN-CSE B to forward the request message.
[0074] When MN-CSE B 810 receives the request message from ASN-CSE A 806, it finds out that it is not targeting itself. MN-CSE B only registers to IN-CSE A 814, thus based on the oneM2M Functional Architecture, MN-CSE B 810 will forward the message to IN-CSE A 814.
[0075] When IN-CSE A 814 receives the request message from MN-CSE B 810 , it finds out that it is not targeting itself. IN-CSE A 814 needs to decide which next CSE it will forward the request, which could be IN-CSE D 816 and IN-CSE E 818. However, right now, IN- CSE A 814 lacks of the capability of making this decision to find the best next CSE to forward the message. IN-CSE A 814 may randomly choose IN-CSE E 818 to forward the request message.
[0076] When IN-CSE E 818 receives the request message from IN-CSEA 814, it finds out that it is not targeting itself. IN-CSE E 818 needs to decide which next CSE it will forward the request, which could be IN-CSE F 804 since it is the target CSE.
[0077] When IN-CSE F 804 receives the request message from IN-CSE E 818, it finds out that the request message is targeting itself. IN-CSE F 804 will handle the request and prepare the response message for the originator ADN-AE A 802.
[0078] In summary, there could be multiple potential service layer routing paths for the request message from ASN-AE A 802 to IN-CSE F 804, e.g. ASN-AE A 802->ASN-CSE A 806->MN-CSE B 810->IN-CSE A 814->IN-CSE E 818->IN-CSE F 804. However, the routing path may not be the optimal or best one according to different message delivery requirement. Thus an intermediate service layer entity is not able to make the optimal choice in selecting the next service layer entity in order to reach the target with the best performance, e.g. shortest service layer distance, shortest roundtrip delay, highest overall reliability etc. Note, the underlying network layer routing between each adjacent service layer entity pairs is taken care by the network layer routing protocols, i.e. there might be multiple network layer nodes (routers) involved between each adjacent service layer entity pairs.
[0079] It is understood that the functionality illustrated in Figure 8 may be
implemented in the form of software (i.e., computer-executable instructions) stored in a memory of, and executing on a processor of, a node of an M2M network (e.g., a server, gateway, device, or other computer system), such as one of those illustrated in Figures 26C or 26D described below.
[0080] Currently the service layer message routing specified in the oneM2M Functional Architecture is hop-by -hop based on service layer registration relationship. This can cause sub- optimal message deliveries. The routing protocols that are used at the Network Layer, such as RIP are not applicable to the Service Layer for the following reasons:
[0081] The Network Layer routing protocols do not consider any Service Layer specific information, such as node sleeping schedule, node service capability, etc. Thus the performance achieved would not be optimal based on those service layer metrics.
[0082] The service layer messages could be forwarded by multiple service layer entities as well as the service layer topology shown in Figure 8. The Network Layer routing protocols can only provide the routing by the underlying network routers between each pair of the two adjacent service layer entities (e.g. between ASN-CSE A 806 and MN-CSE B 810, between MN- CSE B 810 and IN-CSE A 814 etc.). The Network Layer routing protocols cannot provide the overall optimal performance considering all the Service Layer hops involved in a service layer message delivery.
[0083] Figure 9 is a diagram of a Service Layer Message Routing Service 902 at the Service Layer. The Service Layer Message Routing Service 902 is sometimes referred to as Message Routing Service 902 for simplicity. The Service Layer Message Routing Service 902 the capability that an originator service layer entity helps route and forward Service Layer message to the target service layer entity. In general, the Message Routing Service 902 is a service that a registrar entity (e.g. an IN-CSE) may provide to a registree entity (e.g. an MN- CSE), and vice versa. The Message Routing Service 902 may also be considered as a special service for entities without registration relationship.
[0084] By default, the Message Routing Service 902 can be mutual and bidirectional. When a registrar entity grants access of this Message Routing Service to its registree entity, the registree entity can automatically provide the Message Routing Service 902 for the registrar entity as well. Note, although this could be the default setting of the Message Routing Service 902, the service can be set up as unidirectional. For illustration purposes, in the following, we regard the Message Routing Service 902 as bidirectional. The described mechanisms apply to both bidirectional and unidirectional routing service.
[0085] The proposed Message Routing Service 902 running on an service layer entity can have three components. Figure 9 shows the high level architecture of the Message Routing
Service 902. The 'Maintain Service Layer Neighbor' Component 904 collects and maintains the service layer neighbors' information. The neighbor information can be utilized to build service layer routing tables, as the 'Build Service Layer Routing Table' Component 906. The service layer message from the previous service layer entity can be routed to the next service layer entity, which is taken care of by the 'Route Service Layer Message' Component 908.
[0086] It is understood that the functionality illustrated in Figure 9 may be
implemented in the form of software (i.e., computer-executable instructions) stored in a memory of, and executing on a processor of, a node of an M2M network (e.g., a server, gateway, device, or other computer system), such as one of those illustrated in Figures 26C or 26D described below.
Maintain Service Layer Neighbor Component 904
[0087] In one embodiment, a service layer entity A is considered as a service layer neighbor to another service layer entity B under the following circumstances:
(1) Full Registration: An service layer entity A registers to another service layer entity B for all the services of B. The service layer entity B as a registrar entity, forwards the service layer entity A's message. The service layer entity A as a registree entity, also forwards the service layer entity B's message.
For the full registration scenario, a service layer entity maintains the information of the service layer entities that have registered to itself, as well as those itself has registered to. As a result, all registree entities and registrar entities of the service layer entity are its service layer neighbors.
(2) Flexible Service Request: a service layer entity A requests another service layer entity B only for the Message Routing Service provided by the service layer entity B. After granting this service, the service layer entity B forwards the service layer entity A's message. If we consider the Message Routing Service 902 as bidirectional, then the service layer entity A also helps forward the service layer entity B's message.
For the flexible service request scenario, a service layer entity maintains all the granted services from other service layer entities. For those service layer entities that have granted the Message Routing Service 902 to the service layer entity, they are considered as its service layer neighbors.
(3) Policy configuration: a service layer entity A is preconfigured with certain policies that it will help routing another service layer entity B's messages as described.
[0088] For the policy configuration scenario, a service layer entity A maintains the information of the service layer entities that are contained in the routing polices. The routing polices regulate how service layer entity routes messages for other service layer entities, which are considered as its service layer neighbors. If the Message Routing Service 902 is
bidirectional, the service layer entity A can inform other service layer entities about the pre- configured routing polices such that other service layer entities also help routing messages from the service layer entity A.
[0089] Based on different measurement metrics, the routing weight between a pair of Service Layer entities can be different. The following shows some examples of measurement metrics:
[0090] Service Layer Hop can be defined as the number of service layer hops between two service layer entities. For a pair of service layer neighbors, the weight is always 1.
[0091] Network Layer Hop can be defined as the number of the underlying network layer hops between two service layer entities. For a pair of service layer neighbors, although the weight based on Service Layer distance is only 1, the weight based on network layer hop can be more than 1. In other words, there could be multiple network layer hops between two service layer entities. This weight can be measured by a service layer entity, for instance, to send a traceroute request to one of its service layer neighbors. The traceroute response will contain the list of network layer nodes between the two service layer neighbors.
[0092] End-to-End Delay can be defined as the time duration from the time instant that one service layer entity sends out a probing message to the time instant that the service layer entity receives the confirmation regarding the probing message (a virtual resource named probing can be proposed to be accessed in a RESTful way. When the virtual resource is accessed, the probing is carried out). It may be measured by a source service layer entity sending a probing message (e.g. a Ping message) to another service layer entity, which confirms the receipt of the probing message to the source service layer entity. The source service layer entity calculates the end-by-end delay by subtracting the two times when the probing message was sent and the confirmation message from the other service layer entity arrived.
[0093] Average Message Buffering Capability can be defined as the average buffer size of the two service layer entities. The buffer size can be obtained by a service layer entity sending a retrieval message to another service layer entity. The average data buffer size will be averaged between the buffer sizes of the two service layer entities. Note (1), the existing shortest path algorithm should be adapted to find the path with the largest total weight. Note (2), because we are considering that the Message Routing Service 902 is bidirectional, thus the metric is chosen as average data buffering capability. If we consider the Message Routing Service 902 is unidirectional, the metric is chosen as data buffering capability of the neighbor. On service layer link between two service layer entities, the weight could be different. The Note (1) also applies to the following metrics: average node capacity, average node processing capability. The Note (2) also applies to the following metrics: average node capacity, average node sleeping period, average node processing capability.
[0094] Average Node Capacity can indicate whether the service layer entity is resource constrained or not. If a service layer entity is resource constrained, then it can be determined that the service layer entity has a low weight based on the node capacity metric. Alternatively, if a service layer entity is not resource constrained, then it can be determined that the service layer entity has a high weight based on the node capacity metric. The average node capacity of a path between two service layer entities can be an average between the node capacities of the two service layer entities.
[0095] Average Node Sleeping Period can be defined as how long a service layer entity sleeps. For example if a service layer entity sleeps 15 minutes every hour, then the node sleeping period is defined as 15 minutes. The average node capacity of a path between two service layer entities can be an average between the sleeping periods of the two entities.
[0096] Average Node Processing Capability can be defined as how quickly the service layer entity is able to process a service layer message (i.e. waiting time plus the processing time). The average node processing capability will be average between the node processing capacities of the two service layer entities.
[0097] Figure 10 shows a diagram of a procedure of the weight measurement for a pair of neighbors (measurement can also be carried out by multicasting from one service layer entity 1002 to its service layer neighbors):
[0098] In step 001 of Figure 10, a service layer entity 1002 is triggered to measure a weight based on a metric that has not been carried out or needs to be updated. The trigger could be that the service layer entity 1002 wants to obtain and update the weights for all or some neighbors for a provisioned or a new metric. For example, a triggering factor could be a new neighbor is established due to a new registration relationship. A metric may be provisioned and known to the service layer entity that the weight based on this metric can be measured after the service layer entity registration to other service layer entities is done.
[0099] A metric may be known to the service layer entity 1002 when the service layer entity finds the metric contained in a request or response message that it does not have measurement or routing table maintained for the service layer entity 1002 (the details will be shown in the following sections). The service layer entity 1002 decides on how to do the measurement, as discussed earlier, by sending a traceroute command, or by sending a probing message, retrieval message etc. a service layer entity 1002 can also subscribe to the context information of its service layer neighbor, for example, message buffering capacity, node capacity, node sleeping period, node processing capacity. The service layer entity will receive notifications of the information update, a service layer entity 1002 will also update the neighbor information when the neighbor deregisters, becomes offline, etc.
[00100] In step 002 of Figure 10, the service layer entity sends the measurement command, probing message or retrieval message to each of the service layer neighbors, either by unicasting, or multicasting. In Figure 10, we only show the example of unicasting from the service layer entity 1002 to its service layer neighbor 1004. Note, a probing message or retrieval message may be used to obtain measurement for multiple metrics.
[0100] In step 003 of Figure 10, the service layer neighbor 1004 responds the measurement command or confirms the receipt of the probing message to the service layer entity 1002.
[0101] In step 004 of Figure 10, the service layer entity 1002 calculates or extracts the weight from the response message, and records it.
[0102] In step 005 of Figure 10, the service layer entity 1002 also informs the weight and the corresponding metric to service layer neighbor. For bidirectional operation of the Message Routing Service 902, the weight between the two neighbors can be the same for both directions. The service layer neighbor 1004 does not need to carry out the measurement procedure again.
[0103] In step 006 of Figure 10, the service layer neighbor 1002 records the weight and the metric.
[0104] It is understood that the entities performing the steps illustrated in Figure 10 are logical entities that may be implemented in the form of software (i.e., computer-executable instructions) stored in a memory of, and executing on a processor of, a network node or computer system such as those illustrated in Figure 26C or Figure 26D. That is, the method(s) illustrated in Figure 10 may be implemented in the form of software (i.e., computer-executable instructions) stored in a memory of a network node, such as the node or computer system illustrated in Figure 26C or Figure 26D, which computer executable instructions, when executed by a processor of the node, perform the steps illustrated in Figure 10 It is also understood that any transmitting and receiving steps illustrated in Figure 10 may be performed by
communication circuitry of the node under control of the processor of the node and the computer-executable instructions (e.g., software) that it executes. [0105] Each service layer entity can keep records of the neighbors' information as shown in Table 4, where each row corresponds to a service layer neighbor of the service layer entity 1002.
[0106] Each service layer neighbor 1004 can be uniquely identified by a service layer identifier. For example, it could be the CSE-ID, CSEBase in the oneM2M Functional
Architecture.
[00101] Neighbor Type indicates how the service layer entity is considered as a service layer neighbor of the current service layer entity. As discussed in the beginning of this section, the service layer neighbor could be:
- A full registrar of the current service layer entity. The current service layer entity registers to the service layer entity as in the full registration scenario.
-A full registree of the current service layer entity. The current service layer entity is registered by the service layer by the service layer entity in the full registration scenario.
-An service layer entity granting access and providing the Message Routing Service to another service layer entity in the flexible service request scenario.
-An service layer entity providing the Message Routing Service to another service layer entity due to the pre-configured routing polices.
[0107] Measurement indicates the weight value and the corresponding metric. Note the measurement can be multiple if multiple metrics are used.
Table 4 service layer Neighbor Record
Figure imgf000017_0001
Build Service Layer Routing Table Component 906
[0108] A service layer entity may maintain multiple routing tables based on what metrics are used. The routing table for a particular metric can have the fields as shown in Table 5:
[0109] Target service layer Entity can indicate the service layer identifier of the destination service layer entity.
[0110] Next service layer Entity can indicate the next service layer entity that a message should be forwarded to reach the target service layer entity. [0111] Total weight can indicate the total weight between the current service layer entity and the target service layer entity, which is the sum of the weight between each neighboring service layer entities on the path.
[0112] Metric can indicate the metric that the routing table is based on. Note, the value of the metric field needs to be universal among all service layer entities. In other words, every service layer entity has the same understanding on a metric and its name/identifier.
[0113] Valid time can indicate how long the routing entry is considered to be valid.
Table 5 service layer Routing Table
Figure imgf000018_0001
[0114] A service layer entity can build the routing table by following the procedures (in the following example we use the metric of Service Layer Distance and the service layer routing topology shown in Figure 8 as the example to show how the routing table is built):
[0115] Each service layer entity (for example ASN-CSE A in Figure 8) puts all its neighbors into the routing table, each of which corresponds to a target service layer entity entry. The next service layer entity is the neighbor itself, and the total weight is 1 as shown in Table 6 and Table 7. In the following routing tables, the valid time field and metric are not illustrated. We consider the metric is Service Layer Hop. We consider the routing entries are valid during the routing table building process.
Table 6 Routing Table on ASN-CSE A (1)
Figure imgf000018_0002
Table 7 Routing Table on MN-CSE A (1)
Figure imgf000018_0003
[0116] Each service layer entity retrieves or subscribes to the routing table in its neighbor service layer entities. For example ASN-CSE A 806 retrieves the routing table in ASN- CSE B 808, MN-CSE B 810, MN-CSE A 802.
[0117] On receiving the routing table from the neighbor service layer entities, each service layer entity can process each entity based on the following rules:
[0118] If there is no route entry matching the one received then the service layer entity entry is added automatically. The distance attribute is updated corresponding to the received one (received distance + the distance between the service layer entity and the neighboring CSE). The next service layer entity is updated to the neighbor service layer entity where the routing table is from. For example, the entry ASN-CSE C 824, IN-CSE C 812 in the routing table of MN-CSE A shown in Table 7, is a new entry to ASN-CSE A 806. Then ASN-CSE C 824, IN-CSE C are added to the routing table of ASN-CSE A 806. The next service layer Entity is MN-CSE A 814, the distance is set to 2. Shortly, ASN-CSE A 806 receives a notification of the update on the routing table on MN-CSE A 820 in Table . Similarly, a new entry IN-CSE B 822 in bold in Table 10 is added to the routing table of ASN-CSE A 806.
Table 8 Routing Table on ASN-CSE A (2)
Figure imgf000019_0001
Table 9 Routing Table on MN-CSE A (2)
Figure imgf000019_0002
Table 10 Routing Table on ASN-CSE A (3)
target service next service total weight
layer Entity layer Entity
ASN-CSE B ASN-CSE B 1
MN-CSE B MN-CSE B 1
MN-CSE A MN-CSE A 1
ASN-CSE C MN-CSE A 2
IN-CSE C MN-CSE A 2 IN-CSE B MN-CSE A
[0119] If there are matching entries but the distance attribute is lower than the one already stored in the routing resource, then the routing is updated with the new route. For example, ASN-CSE A 806 receives the routing table on ASN-CSE B 808 shown in Table 11. There is an entry IN-CSE B shown in purple, which has a lower distance than the existing one, then the next service layer entity is updated to ASN-CSE B 808 and the distance is updated to 2 as shown in Table 12
Table 11 Routing Table on ASN-CSE B (1)
Figure imgf000020_0001
Table 12 Routing Table on ASN-CSE A (4)
Figure imgf000020_0002
[0120] If there is a matching entry but the total weight attribute is higher than the one already in its routing resource, then a Stability timer can be started. If after the Stability timer expires and still the neighbor service layer entity is sending the same higher distance then the total weight is updated into its routing table. For example, ASN-CSE B 808 deregistered from MN-CSE B 810, thus the service layer topology is updated to the one shown in Figure 1. 1 The total weight to ASN-CSE B 808 can be updated to Infinity as shown in Table 13 When the neighbor IN-CSE A receives this updated routing table from MN-CSE B, it finds that there is a matching entry ASN-CSE B 808 with higher total weight than the current on as shown in Table 14. Then IN-CSE A 814 can set up a Stability timer. Before the Stability timer expires, the MN- CSE B 810 already updates the routing entry of ASN-CSE B 808 to the one shown in Table 15. and notifies IN-CSE A 814. But the total weight is still higher than the previous one shown in Table 14, the Stability timer is refreshed. IN-CSE A retrieves the routing table from MN-CSE B 810 multiple times. When the Stability timer expires, it finds that the total weight keeps the same as 3, then the routing entry of ASN-CSE B 808 is updated as the one shown in Table 16.
[0121] It is understood that the functionality illustrated in Figure 11 may be implemented in the form of software (i.e., computer-executable instructions) stored in a memory of, and executing on a processor of, a node of an M2M network (e.g., a server, gateway, device, or other computer system), such as one of those illustrated in Figures 26C or 26D described below.
Table 13 Routing Table on MN-CSE B (1 )
Figure imgf000021_0001
[0122] After many rounds of iterations and updates, the routing table on each service layer entity will be converged and stable. Table 17 shows an example of the stable routing table on ASN-CSE A 806. Note this routing table is still based on the service layer topology shown in Figure 8.
Table 17 Routing Table on ASN-CSE A (Stable) target service next service total weight
layer Entity layer Entity
ASN-CSE B ASN-CSE B 1
MN-CSE B MN-CSE B 1
MN-CSE A MN-CSE A 1
ASN-CSE C MN-CSE A 2
IN-CSE C MN-CSE A 2
IN-CSE B ASN-CSE B 2
IN-CSE A MN-CSE B 2
IN-CSE D MN-CSE B 3
IN-CSE E ASN-CSE B 3
IN-CSE F ASN-CSE B 3
Route Service Layer Message Component 908
[0123] A service layer message (either request or response message) can be associated with a service layer routing metric. If the service layer routing metric presents, it indicates the service layer message source wants the message to be delivered to achieve the best performance according to the specified metric. The service layer routing metric could be the ones and/or combination of them listed above, i.e. Service Layer Hop, Network Layer Hop, End-to-End Delay, etc. Thus two new parameters named reqMetric, resMetric can be added to the request message:
[0124] reqMetric can indicate the metric based on which the request originator wants the request message to be routed by intermediate service layer entities. This parameter is optional, if it is left empty, then the default metric is 'Service Layer Hop'. Note, a registrar entity may indicate its preferred routing metric in the registration response message to its registree entity. The registree entity may use this a reference to configure the reqMetric.
[0125] resMetric can indicate the metric based on which the request originator wants the corresponding response message to be routed. This parameter is optional, if it is left empty, then the default metric is 'Service Layer Hop'.
[0126] On the other hand, the target service layer entity of the request message can also include a new parameter, called resMetric, which can indicate the metric based on which the response will be routed. This parameter is optional, if it is left empty, then the default metric is 'Service Layer Hop. The target service layer entity can set up this parameter in the response message based on the resMetric parameter in the request message. Or the target service layer may overwrite the original setting from the request originator, and set it up from its own knowledge and decision. [0127] In Figure 12, ASN-AE A 802 sends a request message targeting IN-CSE F 804. In the request message, ASN-AE A 802 indicates that it wants the request service to be routed to IN-CSE F 804 with the metric of Service Layer Hop, thus the reqMetric parameter is set to 'Service Layer Hop'. It leaves the resMetric parameter to be empty. Note when a request or response message reaches a service layer entity, if the reqMetric or resMetric included in the request or response message is not supported currently by the service layer entity, then the service layer entity can be triggered to perform the measurement based on the metric and build the routing table. The service layer entity may keep the message in the queue until the routing table for the target is built based on the metric. In an alternative way, the service layer entity may return with an error (unsupported routing metric). After the routing table is built, the future service layer messages containing the same metric can be routed. In summary, in Figure 12, the service layer entity AN CSE A 806 is the registrar CSE, i.e. the first CSE that receives the message. The service layer entities AN CSE B 808 and IN-CSE-B 822 are the intermediate nodes forwarding the request message based on 'Service Layer Hop', the service layer entities MN-CSE A 820, IN CSE C 812 and IN CSE E 818 are the intermediate nodes forwarding the response message based on the metric 'Network Layer Hop'.
[0128] It is understood that the functionality illustrated in Figure 12 may be implemented in the form of software (i.e., computer-executable instructions) stored in a memory of, and executing on a processor of, a node of an M2M network (e.g., a server, gateway, device, or other computer system), such as one of those illustrated in Figures 26C or 26D described below.
[0129] Figure 13 shows the message flow of the service layer routing of the request message and the corresponding response message:
[0130] In step 01 of Figure 13, ASN-AE A 802 sends the request message targeting IN- CSE 802.
[0131] In step 02 of Figure 13, ASN-CSE A 806 (it is the registrar CSE of ASN-AE A 802, which is colored in blue) receives the request message from ASN-AE A 802. ASN-CSE A 806 processes the request message, and finds it is not targeted for itself. Thus it checks the reqMetric parameter, and uses the routing table that is maintained for that metric. Based on the target in the request message, ASN-CSE A 806 finds the next service layer entity to forward the request message is ASN-CSE B 810.
[0132] In step 03 of Figure 13, the request message is forwarded to ASN-CSE B 810 by ASN-CSE A 806. [0133] In step 04 of Figure 13, ASN-CSE B 810 receives the request message from ASN-CSE A 806. ASN-CSE B 810 processes the request message, and finds it is not targeted for itself. Thus it checks the reqMetric parameter, and uses the routing table that is maintained for that metric. Based on the target in the request message, ASN-CSE B 810 finds the next service layer entity to forward the request message is IN-CSE B 822.
[0134] In step 05 of Figure 13, the request message is forwarded to IN-CSE B 822 by ASN-CSE B 808.
[0135] In step 06 of Figure 13, IN-CSE B 822 receives the request message from ASN- CSE B 808. IN-CSE B 822 processes the request message, and finds it is not targeted for itself. Thus it checks the reqMetric parameter, and uses the routing table that is maintained for that metric. Based on the target in the request message, IN-CSE B 822 finds the next service layer entity to forward the request message is IN-CSE F 802.
[0136] In step 07 of Figure 13, the request message is forwarded to IN-CSE F 804 by IN-CSE B 822.
[0137] In step 08 of Figure 13, IN-CSE F 804 receives the request message from IN- CSE B 822. IN-CSE F 804 processes the request message, and finds it is targeted for itself. Thus it takes actions based on the request and prepare the response message. Because the resMetric parameter was left empty in the request message, IN-CSE F 804 may decide on the resMetric parameter to be put in the response. For example, IN-CSE F 804 sets the resMetric parameter to be 'Network Layer Hop'. Based on this metric and the target of the response message, IN-CSE F 804 finds the next service layer entity to send the response message is IN-CSE E 818.
[0138] In step 09 of Figure 13, the response message is sent to IN-CSE E 818 from IN- CSE F 804.
[0139] In step 10 of Figure 13, IN-CSE E 818 receives the response message from IN- CSE F 804. IN-CSE E 818 processes the response message, and finds it is not targeted for itself. Thus it checks the resMetric parameter, and uses the routing table that is maintained for that metric. Based on the target in the response message, IN-CSE E 818 finds the next service layer entity to forward the response message is IN-CSE C 812.
[0140] In step 11 of Figure 13, the response message is forwarded to IN-CSE C 812 from IN-CSE E 818.
[0141] In step 12 of Figure 13, IN-CSE C 812 receives the response message from IN- CSE E 818. IN-CSE C 812 processes the response message, and finds it is not targeted for itself. Thus it checks the resMetric parameter, and uses the routing table that is maintained for that metric. Based on the target in the response message, IN-CSE C 812 finds the next service layer entity to forward the response message is MN-CSE A 820.
[0142] In step 13 of Figure 13, the response message is forwarded to MN-CSE A 820 from IN-CSE C 812.
[0143] In step 14 of Figure 13, MN-CSE A 820 receives the response message from IN-CSE C 812. MN-CSE A 820 processes the response message, and finds it is not targeted for itself. Thus it checks the resMetric parameter, and uses the routing table that is maintained for that metric. Based on the target in the response message, MN-CSE A 802 finds the next service layer entity to forward the response message is ASN-CSE A 806.
[0144] In step 15 of Figure 13, the response message is forwarded to ASN-CSE A 806 from lN-CSE-C 812..
[0145] In step 16 of Figure 13, ASN-CSE A 806 receives the response message from MN-CSE C 812. ASN-CSE A 806 processes the response message, and finds it is not targeted for itself, but it is targeted for an AE that is registered by ASN-CSE A 806. Thus ASN-CSE A 806 simply forwards the response message to ASN-AE A 806.
[0146] In step 17 of Figure 13, the response message is forwarded to ASN-AE A 802 from ASN-CSE A 806.
[0147] It is understood that the entities performing the steps illustrated in Figure 13 are logical entities that may be implemented in the form of software (i.e., computer-executable instructions) stored in a memory of, and executing on a processor of, a network node or computer system such as those illustrated in Figure 26C or Figure 26D. That is, the method(s) illustrated in Figure 13 may be implemented in the form of software (i.e., computer-executable instructions) stored in a memory of a network node, such as the node or computer system illustrated in Figure 26C or Figure 26D, which computer executable instructions, when executed by a processor of the node, perform the steps illustrated in Figure 13. It is also understood that any transmitting and receiving steps illustrated in Figure 13 may be performed by
communication circuitry of the node under control of the processor of the node and the computer-executable instructions (e.g., software) that it executes.
oneM2M ROA Embodiment of Message Routing Service
[0148] oneM2M defines the capabilities supported by the oneM2M Service Layer. The oneM2M Service Layer is instantiated as a Capability Services Entity (CSE) 102 which comprises a set of Capability Service Functions (CSF) 1402. As one embodiment, the proposed Messaging Routing Service could be hosted in a CSE as a oneM2M CSF 1404 as shown in Figure 14. [0149] An AE or CSE will communicate with the Message Routing CSF 1404 via the Mca, Mcc and Mcc' reference point to build service layer routing table, i.e. request retrieval of or subscribe to other CSEs' routing tables. A CSE 102 will use the Message Routing CSF to forward service layer messages via the Mca, Mcc, and Mcc' reference point. The Message Routing CSF 1404 will communicate with the underlying network service entities via Men reference point to measure the weight to the service layer neighbors based on difference metrics.
[0150] Users could be in the form of an AE 106 to interface with the Message Routing Service for routing request message from the user and response message back to the user.
[0151] It is understood that the functionality illustrated in Figure 14 may be implemented in the form of software (i.e., computer-executable instructions) stored in a memory of, and executing on a processor of, a node of an M2M network (e.g., a server, gateway, device, or other computer system), such as one of those illustrated in Figures 26C or 26D described below.
New Request Parameter
[0152] It is proposed that the existing Request message is enhanced with a new parameter. Requests over the Mca and Mcc reference points, from an Originator to a Receiver can contain the new parameter, reqMetric, as an optional parameter. reqMetric is a metric based on which the request Originator wants the request message to be routed by Transit CSEs. This parameter is optional as shown in Figure 14. If it is left empty, then the default metric could be 'Service Layer Hop'.
Table 18 New Parameter in Request Message
Request message parameter\Operation Create: Retrieve Update Delete Notify reqMetric - the metric used to route the
O O
request message o o o
New Procedure of Accessing Resources (Multiple Hops)
[0153] Figure 15 shows the new procedure of an Originator accessing a resource at the Hosting CSE based on the proposed Message Routing Service, which is multiple hops away.
[0154] The Originator 1502 of the Request accesses a resource. The Originator 1502 of the Request may be an AE or a CSE.
[0155] Originator 1502:
o Set up the reqMetric parameter in the Request.
o Based on the reqMetric set up in the Request and corresponding routing table maintained locally, decides the next Transit CSE (e.g. Registrar CSE) to send in the Request towards to the Hosting CSE 1510. o Process the Response when it arrives.
[0156] Transit-N CSE 1508 receiving the Request:
o Based on the reqMetric set up in the Request and corresponding routing table maintained locally, decides the next Transit CSE to forward the Request towards to the Hosting CSE.
[0157] In case the Request reaches the IN-CSE, the IN-CSE:
o Performs the processing defined under 'Hosting CSE' below if the targeted
resource is hosted on IN-CSE;
o Based on the reqMetric set up in the Request and corresponding routing table maintained locally, decides another IN-CSE as the next CSE to forward the Request towards to the Hosting CSE.
[0158] Hosting CSE 1510:
o Checks the Access Control Privileges for accessing the resource and depending on the expected result content respond with a success or failure Response.
[0159] Transit-N CSE 1508 receiving the Response:
o Forward the Response towards to the Originator 1502.
[0160] It is understood that the entities performing the steps illustrated in Figure 15 are logical entities that may be implemented in the form of software (i.e., computer-executable instructions) stored in a memory of, and executing on a processor of, a network node or computer system such as those illustrated in Figure 26C or Figure 26D. That is, the method(s) illustrated in Figure 15 may be implemented in the form of software (i.e., computer-executable instructions) stored in a memory of a network node, such as the node or computer system illustrated in Figure 26C or Figure 26D, which computer executable instructions, when executed by a processor of the node, perform the steps illustrated in Figurel5. It is also understood that any transmitting and receiving steps illustrated in Figure 15 may be performed by
communication circuitry of the node under control of the processor of the node and the computer-executable instructions (e.g., software) that it executes.
New Resources
[0161] In order to support the Message Routing Service proposed above, two new resources are proposed to add under <CSEBase> 1602 as shown in Figure 16. <neighbor> 1604, and <routingTable> 1606.
<neighbor> Resource 1604 [0162] The <neighbor> 1604 as shown in Figure 17 stores the service layer neighbor's information and the measurement between the local CSE and the neighbor based on different metrics. It has a child resource <measurement> 1706 and the <subscriptiori> 1708 child resource same as defined in the oneM2M Functional Architecture. Table 19 shows the attributes of t <neighbor> resource.
Figure imgf000028_0001
<measurement> Resource
[0163] Figure 18 shows the child resource <measurement>, Table 20 shows the attribute of the <measurement> child resource. The <measurement> resource has the
<subscriptiori> child resource as defined in the oneM2M Functional Architecture.
Table 20 Attribute of <measurement>
Figure imgf000028_0002
<routingTable> Resource 1902
[0164] The <routingTable> 1902 as shown in Figure 19 stores the service layer routing tables based on different metrics. It has a child resource <routingEntry> 1904 and the <subscriptiori> child resource as defined in the oneM2M Functional Architecture. Table 22 shows the attributes of ihe<routingTable> resource 1902.
Figure imgf000029_0001
<routingEntry> Resource 1904
[0165] Figure 20 shows the child resource <routingEntry> 1904. Table 22 shows the attribute of the <routingEntry> child resource 1904. The <routingEntry> resource 1904 has the
<subscriptiori> child resource as defined in the oneM2M Functional Architecture.
Table 22 Attribute of <routingEntry
Attributes of Multiplier mm
RO/ Description
< rontingEntry■ 1>
target 1 WO Indicates the target AE or CSE that is
routing entry is about.
nextCSE RW Indicates the next CSE that service layer messages should be forwarded towards the target CSE.
total weight RW Indicates the total weight between the local
CSE and the target CSE.
New Resource Procedures
Procedures for <neighbor> Resource
Create <neighbor>
[0166] This procedure shown in Table 23 is used to create a specific <neighbor> resource in the hosting CSE.
Table 23 <neighbor> CREATE
<// eigli hor> C R A I '
Associated Reference Mcc, Mca and Mcc'
Point
Information in Request All parameters defined in table 8.1.2.1-1 in the oneM2M message Functional Architecture apply with the specific details for:
Content. The resource content shall provide the information as defined above.
Processing at Originator According to clause 10.1.1.1 in the oneM2M Functional before sending Request Architecture.
Processing at Receiver According to clause 10.1.1.1 in the oneM2M Functional
Architecture.
Information in Response All parameters defined in table 8.1.2.1-1 in the oneM2M message Functional Architecture apply with the specific details for:
Content: Address of the created <neighbor> resource, according to clause 10.1.1.1 in the oneM2M Functional Architecture.
Processing at Originator According to clause 10.1.1.1 in the oneM2M Functional after receiving Response Architecture.
Exceptions According to clause 10.1.1.1 in the oneM2M Functional
Architecture.
Retrieve <neighbor>
[0167] This procedure shown in Table 24 used for retrieving the representation of a
<neighbor> resource.
Figure imgf000030_0002
Update <neighbor>
[0168] This procedure shown in Table 25 is used for updating the attributes of a <neighbor> resource.
Figure imgf000030_0001
Processing at According to clause 10.1.3 in the oneM2M Functional Architecture. Originator before
sending Request
Processing at
According to clause 10.1.3 in the oneM2M Functional Architecture. Receiver
Information in
According to clause 10.1.3 in the oneM2M Functional Architecture. Response message
Processing at
Originator after According to clause 10.1.3 in the oneM2M Functional Architecture. receiving Response
Exceptions According to clause 10.1.3 in the oneM2M Functional Architecture.
Delete <neighbor>
[0169] This procedure shown in Table 26 is used for deleting a <neighbor> resource.
Figure imgf000031_0001
Procedures for <measurement> Resource
Create <measurement>
[0170] This procedure shown in Table 27 is used to create a specific <measurement> resource in the hosting CSE.
Table 27 <measuremenf> CREATE
Figure imgf000031_0002
Processing at Receiver According to clause 10.1.1.1 in the oneM2M Functional
Architecture.
Information in Response All parameters defined in table 8.1.2.1-1 in the oneM2M message Functional Architecture apply with the specific details for:
Content: Address of the created <measurement> resource, according to clause 10.1.1.1 in the oneM2M Functional
Architecture.
Processing at Originator According to clause 10.1.1.1 in the oneM2M Functional after receiving Response Architecture.
Exceptions According to clause 10.1.1.1 in the oneM2M Functional
Architecture.
Retrieve <measurement>
[0171] This procedure shown in Table 28 is used for retrieving the representation of a
<measurement> resource.
Figure imgf000032_0002
Update <measurement>
[0172] This procedure shown in Table 29 is used for updating the attributes of a
<measurement> resource.
Table 29 <measurement> UPDATE
Figure imgf000032_0001
Section 1.3.1.1.1 which need be updated.
Processing at
Originator before According to clause 10.1.3 in the oneM2M Functional Architecture. sending Request
Processing at
According to clause 10.1.3 in the oneM2M Functional Architecture. Receiver
Information in
According to clause 10.1.3 in the oneM2M Functional Architecture. Response message
Processing at
Originator after According to clause 10.1.3 in the oneM2M Functional Architecture. receiving Response
Exceptions According to clause 10.1.3 in the oneM2M Functional Architecture.
Delete <measurement>
[0173] This procedure shown in Table 30 is used for deleting a <measurement> resource.
Table 30 <measurement> DELETE
Figure imgf000033_0001
Procedures for <routingTable> Resource
Create <routingTable>
[0174] This procedure shown in Table 31 is used to create a specific <routingTable> resource in the hosting CSE.
<roiithiiihibh» CHEAT E
Associated Reference Mcc, Mca and Mcc'
Point
Information in Request All parameters defined in table 8.1.2.1-1 in the oneM2M message Functional Architecture with the specific details for:
Content. The resource content shall provide the information as defined in above.
Processing at Originator According to clause 10.1.1.1 in the oneM2M Functional before sending Request Architecture.
Processing at Receiver According to clause 10.1.1.1 in the oneM2M Functional
Architecture.
Information in Response All parameters defined in table 8.1.2.1-1 in the oneM2M message Functional Architecture apply with the specific details for:
Content: Address of the created <routingTable> resource, according to clause 10.1.1.1 in the oneM2M Functional
Architecture.
Processing at Originator According to clause 10.1.1.1 in the oneM2M Functional after receiving Response Architecture.
Exceptions According to clause 10.1.1.1 in the oneM2M Functional
Architecture.
Retrieve <routingTable>
[0175] This procedure shown in Table 32 is used for retrieving the representation of a
<routingTable> resource.
Figure imgf000034_0002
Update <routingTable>
[0176] This procedure shown in Table 33 is used for updating the attributes of a
<routingTable> resource.
Figure imgf000034_0001
Processing at
Originator before According to clause 10.1.3 in the oneM2M Functional Architecture. sending Request
Processing at
According to clause 10.1.3 in the oneM2M Functional Architecture. Receiver
Information in
According to clause 10.1.3 in the oneM2M Functional Architecture. Response message
Processing at
Originator after According to clause 10.1.3 in the oneM2M Functional Architecture. receiving Response
Exceptions According to clause 10.1.3 in the oneM2M Functional Architecture.
Delete <routingTable>
[0177] This procedure shown in Table 34 is used for deleting a <routingTable> resource.
Table 34 <routingTable> DELETE
Figure imgf000035_0002
Procedures for <routingEntry> Resource
Create <routingEntry>
[0178] This procedure shown in Table 35is used to create a specific <routingEntry> resource in the hosting CSE.
Figure imgf000035_0001
Processing at Originator According to clause 10.1.1.1 in the oneM2M Functional before sending Request Architecture.
Processing at Receiver According to clause 10.1.1.1 in the oneM2M Functional
Architecture.
Information in Response All parameters defined in table 8.1.2.1-1 in the oneM2M message Functional Architecture apply with the specific details for:
Content: Address of the created <routingEntry> resource, according to clause 10.1.1.1 in the oneM2M Functional
Architecture.
Processing at Originator According to clause 10.1.1.1 in the oneM2M Functional after receiving Response Architecture.
Exceptions According to clause 10.1.1.1 in the oneM2M Functional
Architecture.
Retrieve <routingEntry>
[0179] This procedure shown in Table 37 is used for retrieving the representation of a
<routingEntry> resource.
Table 36 <routin Entry> RETRIEVE
Figure imgf000036_0002
Update <routingEntry>
[0180] This procedure shown in Table 37is used for updating the attributes of a
<routingEntry> resource.
Figure imgf000036_0001
Content: attributes of the <routingEntry> resource as defined in above which need be updated.
Processing at
Originator before According to clause 10.1.3 in the oneM2M Functional Architecture. sending Request
Processing at
According to clause 10.1.3 in the oneM2M Functional Architecture. Receiver
Information in
According to clause 10.1.3 in the oneM2M Functional Architecture. Response message
Processing at
Originator after According to clause 10.1.3 in the oneM2M Functional Architecture. receiving Response
Exceptions According to clause 10.1.3 in the oneM2M Functional Architecture.
Delete <routingEntry>
[0181] This procedure shown inTable 38 is used for deleting a <routingEntry> resource.
Figure imgf000037_0001
oneM2M SOA Embodiment of Messaging Routing Service
[0182] Figure 21 also shows implementation architecture of Message Routing Service in the oneM2M Service Component Architecture the oneM2M Functional Architecture. A service layer message originator in the forms of such as AE 106 or CSE 102 will talk to the
Message Routing Service Component 2102 via the Mca or Msc reference point to build service layer routing table, i.e. request retrieval of or subscribe to other CSEs' routing tables. The
Message Routing Service Component 2102 will communicate with the underlying network service entities via Msc reference point through Network Service Utilization Component 506 to measure the weight to the service layer neighbors based on difference metrics. [0183] It is understood that the functionality illustrated in Figure 21 may be implemented in the form of software (i.e., computer-executable instructions) stored in a memory of, and executing on a processor of, a node of an M2M network (e.g., a server, gateway, device, or other computer system), such as one of those illustrated in Figures 26C or 26D described below.
Service Capabilities
getSLNeighborWeight
[0184] This service capability provides the capability to get the weight on the service layer link between service layer neighbors based on different metrics. Pre-conditions
[0185] The Originator can be an AE or CSE, and the Originator wants to get the weight between itself and its neighbors.
Si nature - etSLNei hborWei ht
Figure imgf000038_0001
Service Interactions
[0186] The interactions of service capabilities required for this service capability:
1. Issue the request to the Message Routing Service Component to perform the operation as shown in Figure 22
[0187] Figure 22 is a diagram of a request to the Message Routing Service Component.
Post-Conditions
Not Applicable.
Exceptions
[0188] The Originator has no access right to retrieve the weight.
Polices for Use
Message Exchange Patterns: In-Out
Transaction Pattern: Participation allowed oneM2M Resource Interworking
[0189] This service capability is used to get the weight on the service layer link to a service layer neighbor. The service capability aligns with the <measurement> resource and maps to the Retrieve procedure for the resource. getSLRoutingTable [0190] This service capability provides the capability to get the service layer routing table from a service layer neighbor.
Pre-conditions
[0191] The Originator can be an AE or CSE, and the Originator wants to get the routing table based on a metric from a service layer neighbor.
Si nature - etSLRoutin Table
Figure imgf000039_0001
Service Interactions
The interactions of service capabilities required for this service capability:
1. Issue the request to the Message Routing Service Component to perform
operation as shown in Figure 23
Figure 23 is a diagram of issuing the request to the Message Routing Service Component
Post-Conditions
Not Applicable.
Exceptions
The Originator has no access right to retrieve the routing table(s). Polices for Use
Message Exchange Patterns: In-Out
Transaction Pattern: Participation allowed oneM2M Resource Interworking
[0192] This service capability is used to get the routing table(s) of a service layer neighbor. The service capability aligns with the <routingTable> resource and maps to the
Retrieve procedure for the resource. routeSLMessage
[0193] This service capability provides the capability to route a service layer message to the next CSE towards the Receiver based on the maintained routing table.
Pre-conditions
[0194] The Originator can be an AE or CSE, and the Originator wants to a service layer message to be routed or forwarded towards the Receiver. Signature - routeSLMessage
Figure imgf000040_0001
Service Interactions
[0195] The interactions of service capabilities required for this service capability include issuing the request to the Message Routing Service Component to perform the operation as shown in Figure 24.
Post-Conditions
Not Applicable.
Exceptions
The Originator has no access right to use the routing tables. Polices for Use
Message Exchange Patterns: In-Out
Transaction Pattern: Participation allowed oneM2M Resource Interworking
[0196] This service capability is used to perform service layer routing. The service capability aligns with the <routingTable> resource and maps to the Execute procedure for the resource.
[0197] It is understood that the entities performing the steps illustrated in Figures 22-24 are logical entities that may be implemented in the form of software (i.e., computer-executable instructions) stored in a memory of, and executing on a processor of, a network node or computer system such as those illustrated in Figure 26C or Figure 26D. That is, the method(s) illustrated in Figures 22-24 may be implemented in the form of software (i.e., computer- executable instructions) stored in a memory of a network node, such as the node or computer system illustrated in Figure 26C or Figure 26D, which computer executable instructions, when executed by a processor of the node, perform the steps illustrated in Figures 22-24 . It is also understood that any transmitting and receiving steps illustrated in Figures 22-24 may be performed by communication circuitry of the node under control of the processor of the node and the computer-executable instructions (e.g., software) that it executes.
[0198] Interfaces, such as Graphical User Interfaces (GUIs), can be used to assist user to control and/or configure functionalities related to the service layer messaging. Figure 25A is a diagram that illustrates an interface 2500 that allows a user to enable service layer messaging 2502, enable service layer messaging for a node 2504 and select the service layer messaging metric 2506.
[0199] Figure 25B shows an alternate user interface 2510. User interface 2510 can be located at a hosting node (e.g. an M2M Gateway, an M2M Server) to display information related to message routing including:
• The request and response message routing metrics configured by the user 2512.
• The intermediate Service Layer nodes that route the request message based on their local routing tables 2514.
• The intermediate Service Layer nodes that route the corresponding response message based on their local routing tables 2516.
[0200] It is to be understood that interfaces 2500 and 2510 can be produced using displays such as those shown in Figures 26C-D described below.
Example M2M/IoT/WoT Communication System
[0201] The various techniques described herein may be implemented in connection with hardware, firmware, software or, where appropriate, combinations thereof. Such hardware, firmware, and software may reside in apparatuses located at various nodes of a communication network. The apparatuses may operate singly or in combination with each other to effect the methods described herein. As used herein, the terms "apparatus," "network apparatus," "node,"
"device," and "network node" may be used interchangeably.
[0202] Figure 26A is a diagram of an example machine-to machine (M2M), Internet of
Things (IoT), or Web of Things (WoT) communication system 10 in which one or more disclosed embodiments may be implemented. Generally, M2M technologies provide building blocks for the IoTAVoT, and any M2M device, M2M gateway, M2M server, or M2M service platform may be a component or node of the IoTAVoT as well as an IoTAVoT service layer, etc.
Communication system 10 can be used to implement functionality of the disclosed embodiments and can include functionality and logical entities such as message routing service 902, maintain service layer neighbor component 904, build service layer routing table component 906, route service layer message component 908, CSE 102, AE 106, NSE 108, remote service exposure component 502, service exposure component 506, phone 702, servers 704 and 706, service layer entities including service layer entities 802, 804, 806, 808, 810, 812, 814, 816, 818, 820, 822, 824 1002, 1004, 1502, 1508, 1510, and CSFs 1404 including message routing CSF 1404, message routing service component 2102, as well as logical entities to create and use service layer messaging resources of Figures 16-20 and to produce the user interfaces 2500 and 2510.
[0203] As shown in Figure 26 A, the M2M/ IoT/WoT communication system 10 includes a communication network 12. The communication network 12 may be a fixed network (e.g., Ethernet, Fiber, ISDN, PLC, or the like) or a wireless network (e.g., WLAN, cellular, or the like) or a network of heterogeneous networks. For example, the communication network 12 may be comprised of multiple access networks that provide content such as voice, data, video, messaging, broadcast, or the like to multiple users. For example, the communication network 12 may employ one or more channel access methods, such as code division multiple access (CDMA), time division multiple access (TDMA), frequency division multiple access (FDMA), orthogonal FDMA (OFDMA), single-carrier FDMA (SC-FDMA), and the like. Further, the communication network 12 may comprise other networks such as a core network, the Internet, a sensor network, an industrial control network, a personal area network, a fused personal network, a satellite network, a home network, or an enterprise network for example.
[0204] As shown in Figure 26 A, the M2M/ IoT/WoT communication system 10 may include the Infrastructure Domain and the Field Domain. The Infrastructure Domain refers to the network side of the end-to-end M2M deployment, and the Field Domain refers to the area networks, usually behind an M2M gateway. The Field Domain and Infrastructure Domain may both comprise a variety of different network nodes (e.g., servers, gateways, device, and the like).
For example, the Field Domain may include M2M gateways 14 and terminal devices 18. It will be appreciated that any number of M2M gateway devices 14 and M2M terminal devices 18 may be included in the M2M/ IoTAVoT communication system 10 as desired. Each of the M2M gateway devices 14 and M2M terminal devices 18 are configured to transmit and receive signals, using communications circuitry, via the communication network 12 or direct radio link. A M2M gateway 14 allows wireless M2M devices (e.g. cellular and non-cellular) as well as fixed network M2M devices (e.g., PLC) to communicate either through operator networks, such as the communication network 12 or direct radio link. For example, the M2M terminal devices 18 may collect data and send the data, via the communication network 12 or direct radio link, to an
M2M application 20 or other M2M devices 18. The M2M terminal devices 18 may also receive data from the M2M application 20 or an M2M terminal device 18. Further, data and signals may be sent to and received from the M2M application 20 via an M2M service layer 22, as described below. M2M terminal devices 18 and gateways 14 may communicate via various networks including, cellular, WLAN, WPAN (e.g., Zigbee, 6L0WPAN, Bluetooth), direct radio link, and wireline for example.
[0205] Exemplary M2M terminal devices 18 include, but are not limited to, tablets, smart phones, medical devices, temperature and weather monitors, connected cars, smart meters, game consoles, personal digital assistants, health and fitness monitors, lights, thermostats, appliances, garage doors and other actuator-based devices, security devices, and smart outlets.
[0206] Referring to Figure 26B, the illustrated M2M service layer 22 in the field domain provides services for the M2M application 20, M2M gateway devices 14, and M2M terminal devices 18 and the communication network 12. Communication network 12 can be used to implement functionality of the disclosed embodiments and can include functionality and logical entities such as message routing service 902, maintain service layer neighbor component 904, build service layer routing table component 906, route service layer message component 908, CSE 102, AE 106, NSE 108, remote service exposure component 502, service exposure component 506, phone 702, servers 704 and 706, service layer entities including service layer entities 802, 804, 806, 808, 810, 812, 814, 816, 818, 820, 822, 824 1002, 1004, 1502, 1508, 1510, and CSFs 1404 including message routing CSF 1404, message routing service component 2102, as well as logical entities to create and use service layer messaging resources of Figures 16- 20 and to produce the user interfaces 2500 and 2510. The M2M service layer 22 may be implemented by one or more servers, computers, devices, virtual machines (e.g. cloud/ storage farms, etc.) or the like, including for example the devices illustrated in figures 26C and 26D described below. It will be understood that the M2M service layer 22 may communicate with any number of M2M applications, M2M gateways 14, M2M terminal devices 18, and communication networks 12 as desired. The M2M service layer 22 may be implemented by one or more nodes of the network, which may comprises servers, computers, devices, or the like. The M2M service layer 22 provides service capabilities that apply to M2M terminal devices 18, M2M gateways 14, and M2M applications 20. The functions of the M2M service layer 22 may be implemented in a variety of ways, for example as a web server, in the cellular core network, in the cloud, etc.
[0207] Similar to the illustrated M2M service layer 22, there is the M2M service layer
22' in the Infrastructure Domain. M2M service layer 22' provides services for the M2M application 20' and the underlying communication network 12' in the infrastructure domain.
M2M service layer 22' also provides services for the M2M gateways 14 and M2M terminal devices 18 in the field domain. It will be understood that the M2M service layer 22' may communicate with any number of M2M applications, M2M gateways and M2M devices. The M2M service layer 22' may interact with a service layer by a different service provider. The M2M service layer 22' by one or more nodes of the network, which may comprises servers, computers, devices, virtual machines (e.g., cloud computing/storage farms, etc.) or the like.
[0208] Referring also to Figure 26B, the M2M service layers 22 and 22' provide a core set of service delivery capabilities that diverse applications and verticals can leverage. These service capabilities enable M2M applications 20 and 20' to interact with devices and perform functions such as data collection, data analysis, device management, security, billing, service/device discovery etc. Essentially, these service capabilities free the applications of the burden of implementing these functionalities, thus simplifying application development and reducing cost and time to market. The service layers 22 and 22' also enable M2M applications 20 and 20' to communicate through various networks 12 and 12' in connection with the services that the service layers 22 and 22' provide.
[0209] The methods of the present application may be implemented as part of a service layer 22 and 22'. The service layer 22 and 22' is a software middleware layer that supports value-added service capabilities through a set of Application Programming Interfaces (APIs) and underlying networking interfaces. Both ETSI M2M and oneM2M use a service layer that may contain the connection methods of the present application. ETSI M2M's service layer is referred to as the Service Capability Layer (SCL) . The SCL may be implemented within an M2M device (where it is referred to as a device SCL (DSCL)), a gateway (where it is referred to as a gateway SCL (GSCL)) and/or a network node (where it is referred to as a network SCL (NSCL)). The oneM2M service layer supports a set of Common Service Functions (CSFs) (i.e. service capabilities). An instantiation of a set of one or more particular types of CSFs is referred to as a Common Services Entity (CSE) which can be hosted on different types of network nodes (e.g. infrastructure node, middle node, application-specific node). Further, connection methods of the present application can implemented as part of an M2M network that uses a Service Oriented Architecture (SOA ) and/or a resource-oriented architecture (ROA) to access services such as the connection methods of the present application.
[0210] In some embodiments, M2M applications 20 and 20' may be used in conjunction with the disclosed systems and methods.. The M2M applications 20 and 20' may include the applications that interact with the UE or gateway and may also be used in conjunction with other disclosed systems and methods.
[0211] In one embodiment, the logical entities such as message routing service 902, maintain service layer neighbor component 904, build service layer routing table component
906, route service layer message component 908, CSE 102, AE 106, NSE 108, remote service exposure component 502, service exposure component 506, phone 702, servers 704 and 706, service layer entities including service layer entities 802, 804, 806, 808, 810, 812, 814, 816, 818, 820, 822, 824 1002, 1004, 1502, 1508, 1510, and CSFs 1404 including message routing CSF 1404, message routing service component 2102, as well as logical entities to create and use service layer messaging resources of Figures 16-20 and to produce the user interfaces 2500 and 2510 may be hosted within a M2M service layer instance hosted by an M2M node, such as an M2M server, M2M gateway, or M2M device, as shown in Figure 26B. For example, the logical entities such as such as message routing service 902, maintain service layer neighbor component 904, build service layer routing table component 906, route service layer message component 908, CSE 102, AE 106, NSE 108, remote service exposure component 502, service exposure component 506, phone 702, servers 704 and 706, service layer entities including service layer entities 802, 804, 806, 808, 810, 812, 814, 816, 818, 820, 822, 824 1002, 1004, 1502, 1508, 1510, and CSFs 1404 including message routing CSF 1404, message routing service component 2102, as well as logical entities to create and use service layer messaging resources of Figures 16- 20 and to produce the user interfaces 2500 and 2510 may comprise an individual service capability within the M2M service layer instance or as a sub-function within an existing service capability.
[0212] The M2M applications 20 and 20' may include applications in various industries such as, without limitation, transportation, health and wellness, connected home, energy management, asset tracking, and security and surveillance. As mentioned above, the M2M service layer, running across the devices, gateways, servers and other nodes of the system, supports functions such as, for example, data collection, device management, security, billing, location tracking/geofencing, device/service discovery, and legacy systems integration, and provides these functions as services to the M2M applications 20 and 20'.
[0213] Generally, the service layers 22 and 22' define a software middleware layer that supports value-added service capabilities through a set of Application Programming Interfaces
(APIs) and underlying networking interfaces. Both the ETSI M2M and oneM2M architectures define a service layer. ETSI M2M's service layer is referred to as the Service Capability Layer
(SCL). The SCL may be implemented in a variety of different nodes of the ETSI M2M architecture. For example, an instance of the service layer may be implemented within an M2M device (where it is referred to as a device SCL (DSCL)), a gateway (where it is referred to as a gateway SCL (GSCL)) and/or a network node (where it is referred to as a network SCL
(NSCL)). The oneM2M service layer supports a set of Common Service Functions (CSFs) (i.e., service capabilities). An instantiation of a set of one or more particular types of CSFs is referred to as a Common Services Entity (CSE) which can be hosted on different types of network nodes (e.g. infrastructure node, middle node, application-specific node). The Third Generation
Partnership Project (3GPP) has also defined an architecture for machine-type communications (MTC). In that architecture, the service layer, and the service capabilities it provides, are implemented as part of a Service Capability Server (SCS). Whether embodied in a DSCL, GSCL, or NSCL of the ETSI M2M architecture, in a Service Capability Server (SCS) of the 3GPP MTC architecture, in a CSF or CSE of the oneM2M architecture, or in some other node of a network, an instance of the service layer may be implemented as a logical entity (e.g., software, computer-executable instructions, and the like) executing either on one or more standalone nodes in the network, including servers, computers, and other computing devices or nodes, or as part of one or more existing nodes. As an example, an instance of a service layer or component thereof may be implemented in the form of software running on a network node (e.g., server, computer, gateway, device or the like) having the general architecture illustrated in Figure 26C or Figure 26D described below.
[0214] Further, logical entities such as message routing service 902, maintain service layer neighbor component 904, build service layer routing table component 906, route service layer message component 908, CSE 102, AE 106, NSE 108, remote service exposure component 502, service exposure component 506, phone 702, servers 704 and 706, service layer entities including service layer entities 802, 804, 806, 808, 810, 812, 814, 816, 818, 820, 822, 824 1002, 1004, 1502, 1508, 1510, and CSFs 1404 including message routing CSF 1404, message routing service component 2102, as well as logical entities to create and use service layer messaging resources of Figures 16-20 and to produce the user interfaces 2500 and 2510 can implemented as part of an M2M network that uses a Service Oriented Architecture (SOA ) and/or a Resource-Oriented Architecture (ROA) to access services of the present application.
[0215] Figure 26C is a block diagram of an example hardware/software architecture of a M2M network node 30, such as an M2M device 18, an M2M gateway 14, an M2M server, or the like. The node 30 can execute or include logical entities such as message routing service
902, maintain service layer neighbor component 904, build service layer routing table component 906, route service layer message component 908, CSE 102, AE 106, NSE 108, remote service exposure component 502, service exposure component 506, phone 702, servers
704 and 706, service layer entities including service layer entities 802, 804, 806, 808, 810, 812,
814, 816, 818, 820, 822, 824 1002, 1004, 1502, 1508, 1510, and CSFs 1404 including message routing CSF 1404, message routing service component 2102, as well as logical entities to create and use service layer messaging resources of Figures 16-20 and to produce the user interfaces 2500 and 2510. The device 30 can be part of an M2M network as shown in Figure 26A-B or part of a non-M2M network. As shown in Figure 26C, the M2M node 30 may include a processor 32, non-removable memory 44, removable memory 46, a speaker/microphone 38, a keypad 40, a display, touchpad, and/or indicators 42, a power source 48, a global positioning system (GPS) chipset 50, and other peripherals 52. The node 30 may also include communication circuitry, such as a transceiver 34 and a transmit/receive element 36. It will be appreciated that the M2M node 30 may include any sub-combination of the foregoing elements while remaining consistent with an embodiment. This node may be a node that implements the SMSF functionality described herein.
[0216] The processor 32 may be a general purpose processor, a special purpose processor, a conventional processor, a digital signal processor (DSP), a plurality of
microprocessors, one or more microprocessors in association with a DSP core, a controller, a microcontroller, Application Specific Integrated Circuits (ASICs), Field Programmable Gate Array (FPGAs) circuits, any other type of integrated circuit (IC), a state machine, and the like. In general, the processor 32 may execute computer-executable instructions stored in the memory (e.g., memory 44 and/or memory 46) of the node in order to perform the various required functions of the node. For example, the processor 32 may perform signal coding, data processing, power control, input/output processing, and/or any other functionality that enables the M2M node 30 to operate in a wireless or wired environment. The processor 32 may run application-layer programs (e.g., browsers) and/or radio access-layer (RAN) programs and/or other communications programs. The processor 32 may also perform security operations such as authentication, security key agreement, and/or cryptographic operations, such as at the access- layer and/or application layer for example.
[0217] As shown in Figure 26C, the processor 32 is coupled to its communication circuitry (e.g., transceiver 34 and transmit/receive element 36). The processor 32, through the execution of computer executable instructions, may control the communication circuitry in order to cause the node 30 to communicate with other nodes via the network to which it is connected. In particular, the processor 32 may control the communication circuitry in order to perform the transmitting and receiving steps described herein and in the claims. While Figure 26C depicts the processor 32 and the transceiver 34 as separate components, it will be appreciated that the processor 32 and the transceiver 34 may be integrated together in an electronic package or chip.
[0218] The transmit/receive element 36 may be configured to transmit signals to, or receive signals from, other M2M nodes, including M2M servers, gateways, device, and the like.
For example, in an embodiment, the transmit/receive element 36 may be an antenna configured to transmit and/or receive RF signals. The transmit/receive element 36 may support various networks and air interfaces, such as WLAN, WPAN, cellular, and the like. In an embodiment, the transmit/receive element 36 may be an emitter/detector configured to transmit and/or receive IR, UV, or visible light signals, for example. In yet another embodiment, the transmit receive element 36 may be configured to transmit and receive both RF and light signals. It will be appreciated that the transmit/receive element 36 may be configured to transmit and/or receive any combination of wireless or wired signals.
[0219] In addition, although the transmit/receive element 36 is depicted in Figure 26C as a single element, the M2M node 30 may include any number of transmit/receive elements 36. More specifically, the M2M node 30 may employ MIMO technology. Thus, in an embodiment, the M2M node 30 may include two or more transmit/receive elements 36 (e.g., multiple antennas) for transmitting and receiving wireless signals.
[0220] The transceiver 34 may be configured to modulate the signals that are to be transmitted by the transmit/receive element 36 and to demodulate the signals that are received by the transmit/receive element 36. As noted above, the M2M node 30 may have multi-mode capabilities. Thus, the transceiver 34 may include multiple transceivers for enabling the M2M node 30 to communicate via multiple RATs, such as UTRA and IEEE 802.1 1, for example.
[0221] The processor 32 may access information from, and store data in, any type of suitable memory, such as the non-removable memory 44 and/or the removable memory 46. For example, the processor 32 may store session context in its memory, as described above. The nonremovable memory 44 may include random-access memory (RAM), read-only memory (ROM), a hard disk, or any other type of memory storage device. The removable memory 46 may include a subscriber identity module (SIM) card, a memory stick, a secure digital (SD) memory card, and the like. In other embodiments, the processor 32 may access information from, and store data in, memory that is not physically located on the M2M node 30, such as on a server or a home computer. The processor 32 may be configured to control lighting patterns, images, or colors on the display or indicators 42 to reflect the status of an M2M service layer session migration or sharing or to obtain input from a user or display information to a user about the node's session migration or sharing capabilities or settings. In another example, the display may show information with regard to a session state. The current disclosure defines a RESTful user/application API in the oneM2M embodiment. A graphical user interface, which may be shown on the display, may be layered on top of the API to allow a user to interactively establish and manage an E2E session, or the migration or sharing thereof, via the underlying service layer session functionality described herein. [0222] The processor 32 may receive power from the power source 48, and may be configured to distribute and/or control the power to the other components in the M2M node 30. The power source 48 may be any suitable device for powering the M2M node 30. For example, the power source 48 may include one or more dry cell batteries (e.g., nickel-cadmium (NiCd), nickel-zinc (NiZn), nickel metal hydride (NiMH), lithium-ion (Li-ion), etc.), solar cells, fuel cells, and the like.
[0223] The processor 32 may also be coupled to the GPS chipset 50, which is configured to provide location information (e.g., longitude and latitude) regarding the current location of the M2M node 30. It will be appreciated that the M2M node 30 may acquire location information by way of any suitable location-determination method while remaining consistent with an embodiment.
[0224] The processor 32 may further be coupled to other peripherals 52, which may include one or more software and/or hardware modules that provide additional features, functionality and/or wired or wireless connectivity. For example, the peripherals 52 may include an accelerometer, an e-compass, a satellite transceiver, a sensor, a digital camera (for photographs or video), a universal serial bus (USB) port, a vibration device, a television transceiver, a hands free headset, a Bluetooth® module, a frequency modulated (FM) radio unit, a digital music player, a media player, a video game player module, an Internet browser, and the like.
[0225] Figure 26D is a block diagram of an exemplary computing system 90 which may also be used to implement one or more nodes of an M2M network, such as an M2M server, gateway, device, or other node. Computing system 90 may comprise a computer or server and may be controlled primarily by computer readable instructions, which may be in the form of software, wherever, or by whatever means such software is stored or accessed. Computing system 90 can execute or include logical entities such as message routing service 902, maintain service layer neighbor component 904, build service layer routing table component 906, route service layer message component 908, CSE 102, AE 106, NSE 108, remote service exposure component 502, service exposure component 506, phone 702, servers 704 and 706, service layer entities including service layer entities 802, 804, 806, 808, 810, 812, 814, 816, 818, 820, 822,
824 1002, 1004, 1502, 1508, 1510, and CSFs 1404 including message routing CSF 1404, message routing service component 2102, as well as logical entities to create and use service layer messaging resources of Figures 16-20 and to produce the user interfaces 2500 and 2510.
Computing system 90 can be an M2M device, user equipment, gateway, UE/GW or any other nodes including nodes of the mobile care network, service layer network application provider, terminal device 18 or an M2M gateway device 14 for example. Such computer readable instructions may be executed within a processor, such as central processing unit (CPU) 91, to cause computing system 90 to do work. In many known workstations, servers, and personal computers, central processing unit 91 is implemented by a single-chip CPU called a
microprocessor. In other machines, the central processing unit 91 may comprise multiple processors. Coprocessor 81 is an optional processor, distinct from main CPU 91, that performs additional functions or assists CPU 91. CPU 91 and/or coprocessor 81 may receive, generate, and process data related to the disclosed systems and methods for E2E M2M service layer sessions, such as receiving session credentials or authenticating based on session credentials.
[0226] In operation, CPU 91 fetches, decodes, and executes instructions, and transfers information to and from other resources via the computer's main data-transfer path, system bus 80. Such a system bus connects the components in computing system 90 and defines the medium for data exchange. System bus 80 typically includes data lines for sending data, address lines for sending addresses, and control lines for sending interrupts and for operating the system bus. An example of such a system bus 80 is the PCI (Peripheral Component Interconnect) bus.
[0227] Memories coupled to system bus 80 include random access memory (RAM) 82 and read only memory (ROM) 93. Such memories include circuitry that allows information to be stored and retrieved. ROMs 93 generally contain stored data that cannot easily be modified. Data stored in RAM 82 can be read or changed by CPU 91 or other hardware devices. Access to RAM 82 and/or ROM 93 may be controlled by memory controller 92. Memory controller 92 may provide an address translation function that translates virtual addresses into physical addresses as instructions are executed. Memory controller 92 may also provide a memory protection function that isolates processes within the system and isolates system processes from user processes. Thus, a program running in a first mode can access only memory mapped by its own process virtual address space; it cannot access memory within another process's virtual address space unless memory sharing between the processes has been set up.
[0228] In addition, computing system 90 may contain peripherals controller 83 responsible for communicating instructions from CPU 91 to peripherals, such as printer 94, keyboard 84, mouse 95, and disk drive 85.
[0229] Display 86, which is controlled by display controller 96, is used to display visual output generated by computing system 90. Such visual output may include text, graphics, animated graphics, and video. Display 86 may be implemented with a CRT-based video display, an LCD-based flat-panel display, gas plasma-based flat-panel display, or a touch-panel. Display controller 96 includes electronic components required to generate a video signal that is sent to display 86.
[0230] Further, computing system 90 may contain communication circuitry, such as for example a network adaptor 97, that may be used to connect computing system 90 to an external communications network, such as network 12 of Figure 26A and Figure 26B, to enable the computing system 90 to communicate with other nodes of the network.
[0231] User equipment (UE) can be any device used by an end-user to communicate. It can be a hand-held telephone, a laptop computer equipped with a mobile broadband adapter, or any other device. For example, the UE can be implemented as the M2M terminal device 18 of Figures 26 A-B or the device 30 of Figure 26C.
[0232] It is understood that any or all of the systems, methods, and processes described herein may be embodied in the form of computer executable instructions (i.e., program code) stored on a computer-readable storage medium which instructions, when executed by a machine, such as a node of an M2M network, including for example an M2M server, gateway, device or the like, perform and/or implement the systems, methods and processes described herein.
Specifically, any of the steps, operations or functions described above, including the operations of the gateway, UE, UE/GW, or any of the nodes of the mobile core network, service layer or network application provider, may be implemented in the form of such computer executable instructions. Logical entities such as message routing service 902, maintain service layer neighbor component 904, build service layer routing table component 906, route service layer message component 908, CSE 102, AE 106, NSE 108, remote service exposure component 502, service exposure component 506, phone 702, servers 704 and 706, service layer entities including service layer entities 802, 804, 806, 808, 810, 812, 814, 816, 818, 820, 822, 824 1002, 1004, 1502, 1508, 1510, and CSFs 1404 including message routing CSF 1404, message routing service component 2102, as well as logical entities to create and use service layer messaging resources of Figures 16-20 and to produce the user interfaces 2500 and 2510 may be embodied in the form of the computer executable instructions stored on a computer-readable storage medium. Computer readable storage media include both volatile and nonvolatile, removable and nonremovable media implemented in any non-transitory (i.e., tangible or physical) method or technology for storage of information, but such computer readable storage media do not includes signals. Computer readable storage media include, but are not limited to, RAM, ROM,
EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other tangible or physical medium which can be used to store the desired information and which can be accessed by a computer.
[0233] In describing preferred embodiments of the subject matter of the present disclosure, as illustrated in the Figures, specific terminology is employed for the sake of clarity. The claimed subject matter, however, is not intended to be limited to the specific terminology so selected, and it is to be understood that each specific element includes all technical equivalents that operate in a similar manner to accomplish a similar purpose.
[0234] This written description uses examples to disclose the invention, including the best mode, and also to enable any person skilled in the art to practice the invention, including making and using any devices or systems and performing any incorporated methods. The patentable scope of the invention is defined by the claims, and may include other examples that occur to those skilled in the art. Such other examples are intended to be within the scope of the claims if they have elements that do not differ from the literal language of the claims, or if they include equivalent elements with insubstantial differences from the literal language of the claims.

Claims

What is Claimed:
1. An apparatus comprising a processor and a memory, the apparatus further including computer-executable instructions stored in the memory of the apparatus which, when executed by the processor of the apparatus, cause the apparatus to:
build a service layer message routing table using a service layer specific capacity to determine at least one distance metric; and
route service layer messages using the service layer message routing table, wherein the routing of the service layer messages is a higher layer routing above any network layer routing.
2. The apparatus of claim 1, further comprising network layer routing below the routing of the service layer messages.
3. The apparatus of claim 2, wherein the network layer routing is Internet Protocol (IP) routing.
4. The apparatus of claim 1, wherein the service layer specific capacity concerns service layer sleep mode.
5. The apparatus of claim 1, wherein the service layer specific capacity concerns the ability of a service layer entity to process messages.
6. The apparatus of claim 1, wherein the service layer specific capacity concerns buffering capacity.
7. The apparatus of claim 1, wherein the service layer specific capacity concerns a node capacity indicating whether a service layer entity is resource constrained.
The apparatus of claim 1, wherein the apparatus includes a Common Service Entity
(CSE)
9. The apparatus of claim 8, wherein the CSE includes a message routing Common Service Function (CSF).
10. The apparatus of claim 1, wherein the service layer specific capacity for the routing of one of the service layer messages is selected using a "reqMetric" field in the one of the service layer messages.
11. The apparatus of claim 1 , wherein the service layer specific capacity for the routing of a response to one of the service layer messages is selected using a "resMetric" field in the one of the service layer messages.
12. An apparatus comprising a processor and a memory, the apparatus further including computer-executable instructions stored in the memory of the apparatus which, when executed by the processor of the apparatus, cause the apparatus to:
determine a service layer capacity as a metric for routing a service layer request message; send the service layer request message including a field that indicates the service layer capacity as the metric.
13. The apparatus of claim 12, wherein the service layer request message includes a field that indicates a second metric for the routing of a response message to the service layer request message.
14. An apparatus comprising a processor and a memory, the apparatus further including computer-executable instructions stored in the memory of the apparatus which, when executed by the processor of the apparatus, cause the apparatus to:
obtain service layer neighbor information, wherein the service layer neighbor information including at least one service layer specific capacity; and
build a service layer message routing table using a service layer specific capacity to determine at least one distance metric.
15. The apparatus of claim 14, wherein sendee layer specific capacity is a service layer message buffering capacity.
16. The apparatus of claim 14, wherein service layer specific capacity is a service layer node capacity.
17. The apparatus of claim 14, wherein sendee layer specific capacity is a service layer node sleeping period.
18. The apparatus of claim 14, wherein sendee layer specific capacity is a service layer node processing capacity.
19. The apparatus of claim 14, wherein the service layer information includes service layer registration information.
20. The apparatus of claim 14, further comprising update the service layer neighbor information and the service layer routing table when a neighbor deregisters.
21. The apparatus of claim 14, further comprising subscribing to the context information of a service layer neighbor and receiving notifications of service layer information.
22. The apparatus of claim 14, further comprising transferring service layer routing metrics with another location.
23. The apparatus of claim 22, wherein the transferring includes sending a service layer traceroute command.
24. The apparatus of claim 22, wherein the transferring includes sending a service layer retrieval message.
PCT/US2016/023136 2015-03-20 2016-03-18 Methods to support message routing at service layer Ceased WO2016153997A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US15/558,648 US10645004B2 (en) 2015-03-20 2016-03-18 Methods to support message routing at service layer

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201562136002P 2015-03-20 2015-03-20
US62/136,002 2015-03-20

Publications (1)

Publication Number Publication Date
WO2016153997A1 true WO2016153997A1 (en) 2016-09-29

Family

ID=55702082

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2016/023136 Ceased WO2016153997A1 (en) 2015-03-20 2016-03-18 Methods to support message routing at service layer

Country Status (2)

Country Link
US (1) US10645004B2 (en)
WO (1) WO2016153997A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109997114A (en) * 2016-10-07 2019-07-09 康维达无线有限责任公司 Service layer resource management for universal interworking and scalability

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10149226B2 (en) * 2016-03-15 2018-12-04 King Fahd University Of Petroleum And Minerals ID-based routing protocol for wireless network with a grid topology
US10887420B2 (en) * 2016-10-06 2021-01-05 Convida Wireless, Llc Profile based content and services
US10771570B2 (en) * 2018-10-15 2020-09-08 Citrix Systems, Inc. Scalable message passing architecture a cloud environment

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009020980A1 (en) * 2007-08-06 2009-02-12 Microsoft Corporation Fitness based routing

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5754790A (en) * 1996-05-01 1998-05-19 3Com Corporation Apparatus and method for selecting improved routing paths in an autonomous system of computer networks
JP3723076B2 (en) * 2000-12-15 2005-12-07 富士通株式会社 IP communication network system having illegal intrusion prevention function
US7174387B1 (en) * 2001-04-26 2007-02-06 Cisco Technology Inc. Methods and apparatus for requesting link state information
US7239606B2 (en) * 2001-08-08 2007-07-03 Compunetix, Inc. Scalable configurable network of sparsely interconnected hyper-rings
EP2319269B1 (en) * 2008-08-27 2014-05-07 Telefonaktiebolaget L M Ericsson (publ) Routing mechanism for distributed hash table based overlay networks
US8942113B2 (en) * 2009-05-07 2015-01-27 Verizon Patent And Licensing Inc. System and method for dynamically adjusting routing metrics based on power consumption
WO2012087184A1 (en) * 2010-12-20 2012-06-28 Telefonaktiebolaget Lm Ericsson (Publ) Energy efficient routing and switching
US9386501B2 (en) * 2012-10-26 2016-07-05 Dialogic Corporation Systems and methods for implementing customized routing in a modularized processing environment
US10298497B2 (en) * 2014-06-19 2019-05-21 Convida Wireless, Llc Context-aware content publication and resolution

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009020980A1 (en) * 2007-08-06 2009-02-12 Microsoft Corporation Fitness based routing

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109997114A (en) * 2016-10-07 2019-07-09 康维达无线有限责任公司 Service layer resource management for universal interworking and scalability
CN109997114B (en) * 2016-10-07 2023-09-29 康维达无线有限责任公司 Service layer resource management for universal interoperability and scalability
US11799711B2 (en) 2016-10-07 2023-10-24 Convida Wireless, Llc Service layer resource management for generic interworking and extensibility
US12177061B2 (en) 2016-10-07 2024-12-24 Convida Wireless, Llc Service layer resource management for generic interworking and extensibility

Also Published As

Publication number Publication date
US20180109453A1 (en) 2018-04-19
US10645004B2 (en) 2020-05-05

Similar Documents

Publication Publication Date Title
US12500956B2 (en) End-to-end M2M service layer sessions
US10404601B2 (en) Load balancing in the internet of things
KR102046700B1 (en) Message bus service directory
US10462260B2 (en) Context-aware and proximity-aware service layer connectivity management
KR102017408B1 (en) Network and application management with service layer capabilities
CN112217905A (en) Service layer session migration and sharing
US10645004B2 (en) Methods to support message routing at service layer
US20220050726A1 (en) Advanced resource link binding management
US10992578B2 (en) Message retargeting in machine-to-machine service layer communications
EP3320650B1 (en) Service layer anycast and somecast
US20220124008A1 (en) Automated Service Layer Message Flow Management In A Communications Network
CN113302899B (en) Automatic service layer message flow management in communication networks

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 16715666

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 15558648

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 16715666

Country of ref document: EP

Kind code of ref document: A1