30 likes | 167 Views
Server. EP1. EP2. cci_bind(nic1, 5, 2000, &service1, &fd1); cci_bind(nic2, 5, 2000, &service2, &fd2); //service1 == service2 because port equality. CCI CM. NIC 1: 192.168.1.1. NIC 2: 192.168.1.2. // both connections go through CM. But // client app does not know/care. In one
E N D
Server EP1 EP2 cci_bind(nic1, 5, 2000, &service1, &fd1); cci_bind(nic2, 5, 2000, &service2, &fd2); //service1 == service2 because port equality CCI CM NIC 1: 192.168.1.1 NIC 2: 192.168.1.2 // both connections go through CM. But // client app does not know/care. In one // case it says “connect me to NIC1”, in the // other, it says “connect to me server” // connects only to NIC 1 – server is only // given 1 choice (NIC 1) cci_connect(ep3, “device://192.168.1.1”, 2000, …); // connects to either NIC 1 or NIC 2 – server // decides cci_connect(ep3, “host://192.168.1.1”, 2000, …); NIC 3: 192.168.1.3 NIC 4: 192.168.1.4 CCI CM EP3 EP4 Client
cci_bind(nic1, 5, 2000, &service1, &fd1); cci_bind(nic2, 5, 2000, &service2, &fd2); //service1 == service2 because port equality Server //scenario 2 //client cci_connect(ep3, “ip://192.168.1.1/?server_device=nic2”, 2000, …); // server cci_get_conn_request(service1, &req); //req contains only nic2 cci_accept(req, ep2, &connection); EP1 CCI CM EP2 NIC 1: 192.168.1.1 NIC 2: 192.168.1.2 //scenario 1 //client cci_connect(ep3, “ip://192.168.1.1/”, 2000, …); // server cci_get_conn_request(service1, &req); //req contains array of devices: nic1 // and nic2; decides to accept on ep2 cci_accept(req, ep2, &connection); NIC 3: 192.168.1.3 NIC 4: 192.168.1.4 EP3 EP4 CCI CM Client
URIs • Parameters may cause an error or be ignored • E.g., Patrick’s CCI won’t allow server_device or client_device • Jeff’s CCI may allow them • Let’s revisit the idea of the *_device params someday – let’s not deadlock on this today • Any server device • ip://<host> • ip://<host>?server_device=* • ip://<host>?client_device=* • Server device implied by hostname / IP address • ip://<host>?server_device=this • Specific server device • ip://<host>?server_device=eth0 • ip://<host>?server_device=192.168.1.1 • Specific client device • ip://<host>?client_device=eth0 • ip://<host>?client_device=192.168.1.3