%% fig-alt: "Context-aware routing utility evaluation showing source node evaluating three potential carriers with utility scores: Carrier 1 with U=0.8 (high mobility, frequent contacts) selected as best choice, Carrier 2 with U=0.3 (low mobility, rare contacts) as lower utility option, and Carrier 3 with U=0.1 (low battery, wrong direction) as worst choice for delivering to destination"
%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#2C3E50', 'primaryTextColor': '#fff', 'primaryBorderColor': '#16A085', 'lineColor': '#16A085', 'secondaryColor': '#E67E22', 'tertiaryColor': '#7F8C8D', 'fontSize': '16px'}}}%%
graph LR
S[Source] --> Decision{Evaluate<br/>Utility}
Decision -->|U=0.8| C1[Carrier 1<br/>High mobility<br/>Frequent contacts]
Decision -->|U=0.3| C2[Carrier 2<br/>Low mobility<br/>Rare contacts]
Decision -->|U=0.1| C3[Carrier 3<br/>Low battery<br/>Wrong direction]
C1 -->|Best choice| D[Destination]
C2 -.Lower utility.- D
C3 -.Worst choice.- D
style S fill:#2C3E50,stroke:#16A085,color:#fff
style Decision fill:#16A085,stroke:#2C3E50,color:#fff
style C1 fill:#16A085,stroke:#2C3E50,color:#fff
style C2 fill:#E67E22,stroke:#16A085,color:#fff
style C3 fill:#7F8C8D,stroke:#16A085,color:#fff
style D fill:#2C3E50,stroke:#16A085,color:#fff
257 DTN Social Routing
257.1 Learning Objectives
By the end of this chapter, you will be able to:
- Apply Context-Aware Routing: Use utility functions based on mobility, colocation, and resources
- Design SocialCast Protocols: Implement social network-based forwarding with bounded replication
- Calculate Utility Functions: Combine colocation probability, mobility scores, and resource levels
- Optimize Forwarding Decisions: Select carriers based on delivery likelihood rather than flooding
- Evaluate Trade-offs: Balance delivery ratio, latency, and resource consumption
257.2 Prerequisites
Before diving into this chapter, you should be familiar with:
- DTN Fundamentals: Understanding store-carry-forward is essential for social routing
- DTN Epidemic Routing: Knowledge of flooding-based routing helps appreciate why social routing is more efficient
- Multi-Hop Fundamentals: Multi-hop concepts provide background for forwarding decisions
Social Routing - The Smart Strategy:
Instead of telling everyone (epidemic routing), tell people who are likely to meet the destination. Like asking “Can you deliver this message?” only to people who work near the recipient’s office.
SocialCast uses social patterns: - If Node A frequently encounters Node B, A has high “utility” for delivering to B - Forward messages only to higher-utility carriers - Bounded replication (create only 5-10 copies, not unlimited) - Result: 88% delivery with 200% overhead (vs 95% delivery with 1000% overhead in epidemic routing)
| Term | Simple Explanation | Everyday Analogy |
|---|---|---|
| PRoPHET | Forward to nodes with high encounter history | Give message to people who often see recipient |
| Utility Function | Score measuring delivery likelihood | Probability mailman reaches your address |
| Context-Aware | Using location, mobility, relationships for decisions | Asking directions from locals, not tourists |
DTN Series: - DTN Fundamentals - Store-carry-forward basics - DTN Epidemic Routing - Flooding-based protocols - DTN Applications - Real-world DTN deployments
Background: - Multi-Hop Fundamentals - Multi-hop communication - Ad-hoc Fundamentals - Ad-hoc network basics
Learning: - Simulations Hub - DTN simulators
257.3 Context-Aware Routing
When node mobility is predictable or observable, smarter forwarding decisions can be made using context information.
257.3.1 Context-Aware Routing (CAR) Concept
Rather than blindly replicating packets, CAR uses utility functions to select best carriers based on:
- Mobility patterns: Where do nodes typically move?
- Colocation history: Which nodes frequently encounter destination?
- Social relationships: Friend networks, interest groups
- Resources: Battery, buffer space
257.3.2 Utility Function Design
Basic Utility Function:
\[ U(X, D) = \alpha \cdot P_{colocation}(X, D) + \beta \cdot Mobility(X) + \gamma \cdot Resources(X) \]
Where: - \(U(X, D)\) = Utility of node X for delivering to destination D - \(P_{colocation}(X, D)\) = Probability X will encounter D - \(Mobility(X)\) = Mobility score (higher = visits more locations) - \(Resources(X)\) = Battery level, buffer space - \(\alpha, \beta, \gamma\) = Weighting parameters
Colocation Prediction (Kalman Filter):
CAR uses Kalman filter to predict future encounters based on past history:
def predict_colocation(node_x, node_d, history):
"""
Predict probability node_x will encounter node_d
based on past encounter history using Kalman filter
"""
# Historical encounter frequency
encounters = sum(1 for t in history if met(node_x, node_d, t))
total_windows = len(history)
# Kalman filter state
# (Simplified - real implementation more complex)
predicted_rate = encounters / total_windows
# Adjust for time since last encounter
time_since_last = time_now() - last_encounter_time(node_x, node_d)
decay_factor = exp(-time_since_last / DECAY_CONSTANT)
return predicted_rate * decay_factor257.3.3 CAR vs Epidemic Routing
Example Scenario:
Performance Comparison:
| Metric | Epidemic | CAR |
|---|---|---|
| Delivery Ratio | 95% | 88% |
| Overhead (copies) | 15.3 | 3.2 |
| Average Latency | 450s | 520s |
| Energy per Delivery | High | Medium |
Trade-off: - CAR: Slightly lower delivery ratio, much lower overhead - Best when: Resources constrained, predictable mobility
257.4 SocialCast: Social-Based DTN Routing
SocialCast extends CAR by exploiting social network structures for packet dissemination.
257.6 Knowledge Check
257.7 Visual Reference Gallery
257.8 Summary
This chapter covered context-aware and social-based DTN routing:
- Context-Aware Routing (CAR): Uses utility functions combining colocation probability, mobility patterns, social relationships, and resources to make intelligent forwarding decisions, reducing overhead to 200-350% while maintaining 88-93% delivery
- Utility Function Design: The formula U(X, D) = alpha * P_colocation + beta * Mobility + gamma * Resources provides a mathematical framework for carrier selection
- Colocation Prediction: Kalman filters use past encounter history to predict future contact probabilities, enabling “smart” forwarding
- SocialCast Protocol: Creates bounded gamma replicas that “climb” to higher-utility carriers over time, exploiting social network structures for publish-subscribe in DTN
- Performance Optimization: gamma = 5-10 replicas typically achieves 88-93% delivery with 200-350% overhead, compared to epidemic’s 95% delivery with 800-1200% overhead
- IoT Suitability: SocialCast works well for IoT due to natural device clustering, predictable mobility patterns, resource efficiency, and local decision scalability
257.9 What’s Next
The next chapter explores DTN Applications, covering real-world deployments including wildlife tracking (ZebraNet), rural connectivity (DakNet), military tactical networks, and hybrid infrastructure-DTN systems.
257.4.1 SocialCast Concepts
Key Insight: People with similar interests tend to be colocated periodically.
Application: Publish-subscribe in DTN - Publishers: Generate content - Subscribers: Want to receive content matching interests - Carriers: Mobile nodes with high utility transport messages
%% fig-alt: "SocialCast publish-subscribe architecture showing publisher creating gamma replicas distributed to carriers with increasing utility scores (U=0.6, 0.7, 0.8), replicas upgrading from lower to higher utility carriers, and highest utility carrier 3 delivering content to multiple subscribers" %%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#2C3E50', 'primaryTextColor': '#fff', 'primaryBorderColor': '#16A085', 'lineColor': '#16A085', 'secondaryColor': '#E67E22', 'tertiaryColor': '#7F8C8D', 'fontSize': '16px'}}}%% graph TD Pub[Publisher<br/>Creates Content] --> Rep{Create γ<br/>Replicas} Rep --> C1[Carrier 1<br/>U=0.6] Rep --> C2[Carrier 2<br/>U=0.7] Rep --> C3[Carrier 3<br/>U=0.8] C1 -->|Upgrade| C2 C2 -->|Upgrade| C3 C3 -->|Deliver| Sub1[Subscriber 1] C3 -->|Deliver| Sub2[Subscriber 2] style Pub fill:#2C3E50,stroke:#16A085,color:#fff style Rep fill:#16A085,stroke:#2C3E50,color:#fff style C1 fill:#E67E22,stroke:#16A085,color:#fff style C2 fill:#E67E22,stroke:#16A085,color:#fff style C3 fill:#16A085,stroke:#2C3E50,color:#fff style Sub1 fill:#2C3E50,stroke:#16A085,color:#fff style Sub2 fill:#2C3E50,stroke:#16A085,color:#fff