netutil.cc
ip分片並傳送函式解析
1、mtu是通訊協議某一層上面所能通過的最大資料大小
2、分片過程:
將ip資料部分劃分為fragment片,每片大小mtu,最後一片大小datalen % mtu(因為可能不足mtu)
劃分好的每片長度fdatalen
for (fragment = 1; fragment * mtu < datalen + mtu; fragment++)
u8 *fpacket = (u8 *) safe_malloc(headerlen + mtu);
memcpy(fpacket, packet, headerlen + mtu);
ip = (struct ip *) fpacket;
// create fragments and send them建立分片並傳送
for (fragment = 1; fragment * mtu < datalen + mtu; fragment++)
free(fpacket);
return res;
}傳送函式
上面分割好的ip分片fpacket被拷貝到eth_frame + 14的位置
memcpy(eth_frame + 14, packet, packetlen);
之後傳送出去
/* send an ip packet over an ethernet handle. */
int send_ip_packet_eth(const struct eth_nfo *eth, const u8 *packet, unsigned int packetlen) else
res = eth_send(ethsd, eth_frame, 14 + packetlen);
/* no need to close ethsd due to caching */
free(eth_frame);
return res;
}
mycat學習 4 分片JOIN,分片規則
mycat 支援跨分片join,主要有四種方法 1 全域性表 字典表 變動不頻繁,資料量總體變化不大,資料規模不大很少超過10w條記錄 可以做為全域性表 特性 1 全域性表的插入,更新操作會實時在所有節點上執行,保持各個分片的資料一致性。沒有太激烈的update操作。2 全域性表查詢只從乙個節點獲取...
Elasticsearch 學習之 分片未分配原因
分片未分配的原因主要有 1 index created 由於建立索引的api導致未分配。2 cluster recovered 由於完全集群恢復導致未分配。3 index reopened 由於開啟open或關閉close乙個索引導致未分配。4 dangling index imported 由於匯...
redis學習記錄08 分片
redis的分片 sharding或者partitioning 技術是指將資料分散到多個redis例項中的方法,分片之後,每個redis擁有一部分原資料集的子集。在資料量非常大時,這種技術能夠將資料量分散到若干主機的redis例項上,進而減輕單台redis例項的壓力。分片技術能夠以更易擴充套件的方式...