Using PubSub For Scheduling in Azure SDN
Qi Zhang (Microsoft - Azure Networking)
Using PubSub For Scheduling in Azure SDN Qi Zhang (Microsoft - - - PowerPoint PPT Presentation
Using PubSub For Scheduling in Azure SDN Qi Zhang (Microsoft - Azure Networking) Azure Networking Regional Cable Azure Region A Network Consumers CDN Regional Network Carrier Microsoft Edge Enterprise, SMB, WAN mobile Azure
Qi Zhang (Microsoft - Azure Networking)
DC Hardware Services Intra-Region WAN Backbone Edge and ExpressRoute CDN Last Mile
Management
applications and content
(Network Watcher, Network Performance Monitoring)
Enterprise DC/Corpnet Consumers Regional Network Microsoft WAN Edge ExpressRoute CDN Enterprise, SMB, mobile Azure Region ‘A’ Azure Region ‘B’ Regional Network Regional Network Regional Network Internet Exchanges Cable Carrier
One of the largest private networks in the world
DCs and Network sites not exhaustive
United States United States Canada Mexico Venezuela Colombia Peru Bolivia Brazil Argentina Atlanta Ocean Algeria Mali Niger Nigeria Chad Libya Egypt Sudan Ethiopi a Dr Congo Angola Zambia Nambia South Africa Greenland Svalbard Sweden Norway United Kingdom France Poland Ukraine Turkey Saudi Arabia Iran Kazakistan India Russia Russia China Myanmar (Burma) Indian Ocean Indonesia Australia Pacific Ocean Pacific Ocean
Data center Owned Capacity Moving to Owned Leased Capacity Edge Site
Azure SDN
Basis of all NW virtualization in
Control Plane
Centralized, hierarchical, highly scalable and available controllers
Data Plane
Host agent, drivers
vNIC vNIC vNIC vNIC vNIC vNIC
Commodity HW Central Controllers Key to flexibility and scale is SDN Management API
SmartNIC
Host Agents
Controller Agent 1 Agent i Agent N PubSub
Publish flow Notification flow
Secure per customer virtual datacenter in the cloud Instantiate and configure complex topologies in minutes Rich security and networking services
Internet Cross premises Connectivity
Virtual Network Virtual Network Virtual Network Virtual Network Virtual Network
VNet Peering
Host Node 3 Host Node 2
VM-SW1 VM-SW2 Host Node 1 VM2
Payload, including CA, is encapsulated Traverses physical network
. . . . . .
VM1
CA 10.0.0.1 CA 10.0.0.4 CA 10.0.0.6 CA 10.0.0.7 CA 10.0.0.7 CA 10.0.0.4 CA 10.0.0.1
VM-SW3
CA PA 10.0.0.1 10.1.1.2 10.0.0.4 10.1.1.3 10.0.0.6 10.1.3.3 10.0.0.7 10.1.5.2 10.1.5.2 10.1.1.2 Payload 10.0.0.7 10.0.0.1 Payload 10.0.0.7 10.0.0.1 Payload CA PA 10.0.0.1 10.1.5.3 10.0.0.7 10.1.1.4 10.0.0.4 10.1.3.2
Directory Service
Data traffic Control msgs
PA 10.1.1.2 PA 10.1.1.4 PA 10.1.1.3 PA 10.1.3.3 PA 10.1.3.2 PA 10.1.5.3 PA 10.1.5.2
Challenges:
Directory Service VNet Controller Agent 1 Agent i Agent N VNet Controller Agent 1 Agent i Agent N PubSub
VNet Controller
PubSub
Agent Agent
Region A / VNET A Region B / VNET B PubSub
VNet Controller
{ id: “policy-123”, service: “xstore”, subscription: “{guid}, accounts: [ “users”, “wiki.*” ], storage_type: “blob”, access: “rw” } METADATA (resource A): { subscription: “{guid}, account: “users”, storage_type: “blob” } METADATA (resource B): { subscription: “{guid}, account: “users”, storage_type: “table” } METADATA (resource C): { subscription: “{guid}, account: “wikimain”, storage_type: “blob” }
BLOCK Service Tunnel Policy
Resource “Metadata” Resource “Metadata” Resource “Metadata” Resource A Resource B Resource C
Agent VNetPolicyCache
NRP
Storage FE Policy
PubSub Host
Root
Publish
CreateNode UpdateNode
Notification
Created, Deleted DataChanged ChildrenChanged
Subscribe
watcher bulkwatcher
PK1 PKi PKn a1 a2 a3 n b1 b2 b3 b4 b5
… … Query
GetNodeInfo
Publisher Subscriber
W W
Partition Key Partition Key
SDN PubSub Service
4 Microservices:
Stateless Service
Stateful Service
Partition Key Partition Key
SDN PubSub Service
4 Microservices:
Stateless Service
Stateful Service
Publisher (Vnet Controller) Subscriber Agent) 1 2 3 4 5 6 1 2 3 4 5 6
PK: /Vnet/{VnetId1}, Path: /mappings/ipv4/{CA1} Data (bond message): {PA1} /Vnet/{VnetId1} MadariService_02 PK: /Vnet/{VnetId1}, Path: /mappings/ipv4/{CA1} Data (bond message): {PA1} PK: /Vnet/{VnetId2} Path: / /Vnet/{VnetId2} MadariService_03 SetBulkWatcher: PK: /Vnet/{VnetId2} <notifications> <notifications>
MadariService_01 MadariService_02 MadariService_03 Selector Service AddPartitionKey(“baz”)
Partition Key Madari Instance “foo” MadariService_01 “bar” MadariService_02 ….. ….. “baz” MadariService_01 Madari Instance Total Data Size MadariService_01 1.05G MadariService_02 1.9G MadariService_03 1.6G
1 2 3
NotificationService_03 NotificationService_08
….. ….. …..
Subscriber I Subscriber II
….. ….. …..
vnet1 vnet2 vnet1 vnet3
Root vnet 1 vnet 2
MadariService_02
Root vnet 3 vnet 4
MadariService_04
A B C D A C B D
Subscriber III vnet1
Fabric ring
n1 n2 n3 n4 n5 n6 n7 n8 n9
n10 n11 n12 n13 n14 n15
Tenant1 Tenant2 Tenant3 Cluster3 Cluster2 Cluster1
Madari.ReliablePublisher.RSL Madari.ReliablePublisher.ServiceFabric
Madari.MadariFrontEnd.Native
Madari.Subscriber.Native
IMOS Repo Commit hooks Lib Runtime Worker Handler
Persist reliable tasks Commit hooks triggered Execute handler Mark objects modified Pick up tasks Delete executed tasks on success Retry on failure
Regional PubSub Resource Scope Publisher Subscriber CA-PA mapping regional VNet Controller Agent DataExfil policy global NRP Agent Regional PubSub Regional PubSub Global PubSub
Resource Scope => PubSub Service Scope
DataExfil policy CA->PA CA->PA CA->PA
PubSub (AZ01) PubSub (AZ02) PubSub (AZ03) Region A PubSub (AZ01) PubSub (AZ02) PubSub (AZ03) Region B Replication Service
Global PubSub
Routing Service Replication Service Madari Service Selector Service 1 8 5 4 3 2 Global PubSub
/DataExfil/Policies/ {policyid}
6 7 Remote Regional P/S 8
/DataExfil/Policies/ {policyid}
Op Id Status Operation Replication Details
1001 Replicated [add] /DataExfil/Policies/Policy1 {Dest1:Y, Dest2:Y, Dest3:Y } 1002 Replicating [update] /DataExfil/Policies/Policy1 {Dest1:Y, Dest2:N, Dest3:Y } 1003 Committed [remove] /DataExfil/Policies/Policy1 {Dest1:N, Dest2:N, Dest3:N }
Operation Tracking Table Request to Partition 1 Dest1: req1002 Dest 2: req1001 Dest 3: req1001 Replication Queue Destination Tracker Partition 1 Madariservice/01 Replicationservice/01
n1 n2 n3 n4 n5 Tenant1 uswest n1 n2 n3 n4 n5 Tenant2 useast n1 n2 n3 n4 n5 Tenant5 europewest n1 n2 n3 n4 n5 Tenant3 uswestcentral n1 n2 n3 n4 n5 Tenant4 asiasoutheast vnet1 vnet2 vnet3 vnet4 vnet5
KPI Write throughput 10k req/s Read throughput 42k req/s End to End latency 10ms/300ms (50%/99%) Max subscribers 500K
Thank you!